Simple Machines Community Forum

SMF Support => Language Specific Support => Italiano (Italian) => Topic started by: laudia on December 10, 2012, 03:17:53 PM

Title: opzione devi registrarti
Post by: laudia on December 10, 2012, 03:17:53 PM
ciao a tutti,
volevo fare in modo che per vedere il link nei post bisogna registrarsi o fare login e ho scovato questo

http://custom.simplemachines.org/mods/index.php?mod=342

ma, vorrei, che sia solo per i link esterni e non quelli del mio dominio e se ci fosse qualcosa di simile ma per le email che vengono inserite nel post.
Come posso fare questo?

grazie in anticipo
Title: Re: opzione devi registrarti
Post by: emanuele on December 10, 2012, 03:44:18 PM
Non mi ricordo più se lo fa, prova: http://custom.simplemachines.org/mods/index.php?mod=2861

Invece per i link interni non ricordo vi sia nulla...ma magari ricordo male (ce ne sono almeno 3 o 4 di mod simili che fanno tutti più o meno la stessa cosa).
Title: Re: opzione devi registrarti
Post by: laudia on December 11, 2012, 03:48:05 AM
grazie emanuele, la mod che mi dici mi sembra che funzioni anche con le email ma ci sono troppe opzioni che non mi servono e non voglio aggiungere troppo codice che non mi serve. Io vorrei solo per link e email gli altri 3 o 4 che dici quali sono?
magari nel codice del mod che ti ho detto all' inizio si può aggiungere una funzione che lo faccia anche per le email senza dover aggiungere altro codice di cose che non mi servono
// Registered Links
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(.*?)</a>#i', $txt['no_view_links'] . "\n" . ' <a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>', $message);
}

// End Registered Links
Title: Re: opzione devi registrarti
Post by: emanuele on December 11, 2012, 08:13:45 AM
Sei sicura che non le mascheri già così?
Title: Re: opzione devi registrarti
Post by: laudia on December 11, 2012, 08:53:34 AM
non sò ma da quanto ho capito è solo per url ma, leggendo meglio la sezione supporto o visto questo
in Subs.php
<search position="replace"><![CDATA[
'tag' => 'email',
'type' => 'unparsed_content',
'content' => '<a href="mailto:$1">$1</a>',
]]></search>
<add><![CDATA[
'tag' => 'email',
'type' => 'unparsed_content',
'content' => $user_info['is_guest'] ? '<span style="color: red">[<a href="' . $scripturl . '?action=register">Register</a>&nbsp;or&nbsp;<a href="' . $scripturl . '?action=login">Login</a>' . $txt['no_view_email'] . ']</span>' : '<a href="mailto:$1">$1</a>',
]]></add> 


ora non ho il tempo per provarlo ma che dici devo aggiungerlo o non serve
Title: Re: opzione devi registrarti
Post by: emanuele on December 11, 2012, 09:54:29 AM
Siccome una mail che clicchi usa lo stesso tag di un link, e se quello che hai postato sopra è il codice del mod, non dovrebbe essere necessario modificare un bel nulla e dovrebbe già nascondere anche le mail.
Title: Re: opzione devi registrarti
Post by: laudia on December 11, 2012, 12:58:55 PM
ok meglio così. Ho provato a modificarlo per far uscire:
[Devi Registrarti o Accedi per vedere questo link]
// Registered Links
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
}
// End Registered Links


dimmi se ho fatto qualche errore ma, comunque c' è un modo per far uscire la parola "link" quando si tratta di link e "email" quando si tratta di email?

Passando ai link interni che al contrario vorrei che fossero visibili se non c' è soluzione pensavo che un alternativa valida sarebbe fare in modo di nascondere i link solo in alcune sezioni e in altre no, così almeno per discussioni importanti con link che attirano utenti gli incentivo a registrarsi spostando le discussioni in tali sezioni. Come faccio questo? magari con un semplice checkbox nell' opzione modifica sezione cosi da poter scegliere in quale si e in quale non attivarlo.
Title: Re: opzione devi registrarti
Post by: emanuele on December 12, 2012, 08:29:21 AM
Quote from: laudia on December 11, 2012, 12:58:55 PM
dimmi se ho fatto qualche errore
Se funziona ed esce quello che vuoi non hai ci dovrebbero essere errori. :P

Quote from: laudia on December 11, 2012, 12:58:55 PM
ma, comunque c' è un modo per far uscire la parola "link" quando si tratta di link e "email" quando si tratta di email
mmm...prova, non ho idea se funziona:
// Registered Links
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(http.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
$message = preg_replace('#<a href="(mailto.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_mails'] . ']</span>', $message);
}
// End Registered Links

E poi aggiungi:
$txt['no_view_mails']
a modifications.english.php e modifications.italian.php copiando quello che è $txt['no_view_links'] e mettendogli mail.

Quote from: laudia on December 11, 2012, 12:58:55 PM
Passando ai link interni che al contrario vorrei che fossero visibili se non c' è soluzione pensavo che un alternativa valida sarebbe fare in modo di nascondere i link solo in alcune sezioni e in altre no, così almeno per discussioni importanti con link che attirano utenti gli incentivo a registrarsi spostando le discussioni in tali sezioni. Come faccio questo? magari con un semplice checkbox nell' opzione modifica sezione cosi da poter scegliere in quale si e in quale non attivarlo.
Onestamente ogni volta in cui capito su una pagina che mi chiede di registrarmi per vedere qualcosa, chiudo talmente velocemente che non mi resta nemmeno nella cronologia del browser. :P
Quando si tratta di board non c'è niente di semplice, perché come minmo richiede la modifica del database (dovrai pure salvare l'informazione da qualche parte), del template (purtroppo la pagina di gestione delle board è piuttosto "hard-coded") e ovviamente condizionali per verificare se la restrizione deve essere applciata o no (anche se questo alla fine è il minimo).
A mano che non vuoi il tutto "hard-coded" e allora può bastare qualcosa del tipo:

// Registered Links
global $board;
if ($user_info['is_guest'] && !isset($board) || (in_array($board, array(1, 2, 3)))
{
$message = preg_replace('#<a href="(.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
}
// End Registered Links
Title: Re: opzione devi registrarti
Post by: laudia on December 12, 2012, 01:31:05 PM
ok funziona tranne per i link video ma è sicuramente per via di un altra mod chè ho installato ma mi va bene così. Non esce come volevo ma con un pò di prove e modifiche ce lo fatta
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(http.*?)</a>#i', '<span style="color: green">[' . $txt['no_view_d'] . "\n" . '<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
$message = preg_replace('#<a href="(mailto.*?)</a>#i', '<span style="color: green">[' . $txt['no_view_d'] . "\n" . '<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_mails'] . ']</span>', $message);
}
// End Registered Links


Per il secondo codice che mi hai detto potrebbe andare bene ma purtroppo il problema e che se tra qualche mese voglio toglierlo o inserirlo in altre sezioni mi devo ricordare il file in cui è inserito e modificarlo manualmente invece, mettendo un checkbox se in futuro vedo che non dà i risultati sperati mi basterà togliere la spunta dal checkbox senza dover cancellare nulla o almeno potrò fare delle prove nel caso in alcune sezioni da risultati e in altre no senza modificare ogni volta il codice. Ho anche prettyurl quindi il numero della board non è semplice vederlo.

QuoteQuando si tratta di board non c'è niente di semplice, perché come minmo richiede la modifica del database (dovrai pure salvare l'informazione da qualche parte), del template (purtroppo la pagina di gestione delle board è piuttosto "hard-coded") e ovviamente condizionali per verificare se la restrizione deve essere applciata o no (anche se questo alla fine è il minimo).
Aggiungere il checkbox in modifica sezione con anche la descrizione riesco anch' io a inserirlo sotto le altre opzioni del forum ma, non sono in grado di collegarlo alla funzione. Io da non esperta pensavo bastasse inserire il check e collegarlo con il mod del tipo, se mod-no-view è abilitata nella sezione esegui funzione. Si può fare così o la cosa è molto più complessa?
Title: Re: opzione devi registrarti
Post by: laudia on December 14, 2012, 06:43:18 AM
emanuele ci sto solo provando quindi per il check
$txt['no_view_title'] = 'Nascondi link e email';
$txt['no_view_desc'] = 'Se abilitato, gli utenti non registrati non vedrenno link e email nella sezinone.';


e aggiungo tra le opzioni di modifica sezione
echo '
<tr>
<td>
<b>', $txt['no_view_title'], '</b><br />
', $txt['no_view_desc'], '<br /><br />
</td>
<td valign="top" align="right">
<input type="checkbox" name="no_view"', $context['board']['no_view'] ? ' checked="checked"' : '', ' class="check" />
</td>
</tr>';


e sulla funzione detta prima
if (!empty($options['no_view']) && ($user_info['is_guest'])

è la prima volta che ci provo senza aver studiato nulla su codici e simili, quindi non giudicare, sicuramente non  funziona ma che dici ci sono andata vicino? Come lo modifico per far si che funzioni?

Title: Re: opzione devi registrarti
Post by: emanuele on December 14, 2012, 07:46:33 AM
Quote from: emanuele on December 12, 2012, 08:29:21 AM
Quando si tratta di board non c'è niente di semplice, perché come minmo richiede la modifica del database (dovrai pure salvare l'informazione da qualche parte), del template (purtroppo la pagina di gestione delle board è piuttosto "hard-coded") e ovviamente condizionali per verificare se la restrizione deve essere applciata o no (anche se questo alla fine è il minimo).
Guarda, per dirti come farlo farei prima a scriverlo...ma al momento non posso.
Purtroppo non ho nemmeno un buon esempio da darti, il massimo è questo mod: http://custom.simplemachines.org/mods/index.php?mod=2838
Guarda tutte le modifiche apportate a ManageBoards, Subs-Boards, ManageBoards.template, per aggiungere l'opzione, poi per controllarla...non mi ricordo più... l'ho detto che non è un buon esempio... ::)
Title: Re: opzione devi registrarti
Post by: laudia on December 14, 2012, 03:55:21 PM
comunque avrei sempre bisogno di aiuto.
Prendendo esempio da quello che mi hai detto e con http://custom.simplemachines.org/mods/index.php?mod=1745 che avevo instalato che fà una cosa simile ma al contrario con l' intero post ho cercato di eseguire tutte le modifiche che credo mi servino cambiando il nome con no_view ma le uniche modifiche che mi danno errore sono quelle in Subs-Boards cioè mi esce

Unknown column 'no_view' in 'field list'

e quando cerco di spuntare l' opzione per la modifica mi esce anche la scritta che mi dice di aggiornare il database.
Non credo di essere in grado di farlo senza aiuto.

Cercando tra i mod o scoperto questo http://custom.simplemachines.org/mods/index.php?mod=1566 e ho pensato ad un alternativa se propio non hai tenpo per aiutarmi con le sezioni. Questo mod crea dei tag bbc pulsante, ho provato a crearne uno [hide] ma lo nasconde soltanto il testo quindi non si vede nulla, magari è più semplice far si che un nuovo tag pulsante faccia  o sia collegato alla funzione che abbiamo detto prima per email/link.
Magari scriverò una regola nel forum che un certo tipo di link e email devono avere quel tag, anche se preferirei gestire io la cosa ma se tramite le sezioni è troppo complicato...
Emanuele che dice questo è più semplice o ugualmente complesso?
Title: Re: opzione devi registrarti
Post by: emanuele on December 14, 2012, 04:02:37 PM
Quote from: laudia on December 14, 2012, 03:55:21 PM
Subs-Boards cioè mi esce

Unknown column 'no_view' in 'field list'
Apputo, devi creare una nuova colonna "no_view" (di tipo tinyint dovrebbe andar bene). nella tabella boards. ;)
Title: Re: opzione devi registrarti
Post by: laudia on December 15, 2012, 06:50:51 AM
come già detto non sono un espera e quindi non saprei da dove iniziare, ciò provato ma...
Ho bisogno di questa funzione e se conosci un modo alternativo per gestirla in modo semplice senza dover andare a modificare ogni volta il codice mi faresti davvere un piacere enorme.
Vorrei iniziare una cosa nel forum e senza questa modifica non avrebbe senso farla poichè non porterebbe nessun beneficio in merito a nuovi utenti. Soluzioni?
Title: Re: opzione devi registrarti
Post by: emanuele on December 15, 2012, 02:50:44 PM
Aggiungere una colonna alla tabella è forse più semplice di quello che hai già fatto...vai in phpmyadmin, trova la tabella, entraci, vai in "struttura" ed inserisci una nuova colonna, nome (presumo) "no_view" e tipo "tinyint".
Title: Re: opzione devi registrarti
Post by: laudia on December 15, 2012, 03:49:55 PM
ok, tabella board, arrivo a inserisci ma non c'è nessuna opzione per inerire nuova colonna ci sono un sacco di opzioni con campo, tipo, funzione e valore. Comunque ci riprovo domani alla luce del solo
Title: Re: opzione devi registrarti
Post by: emanuele on December 15, 2012, 03:52:33 PM
Usa il menù in alto: prima "structure" (struttura) e poi "insert" (inserisci).
Title: Re: opzione devi registrarti
Post by: laudia on December 16, 2012, 04:40:54 AM
per fortuna è in italiano phpmyadmin ma, credo di aver capito, giù nella pagina struttura c' è Aggiungi campi e cliccando esegui, nella pagina che esce bisogna inserire : Campo, tipo, lunghezza/valori, predefinito, codifica caratteri, attributi, null, indice, auto_increment, commenti.

Quindi come procedo? abbiamo detto
Campo:  no_view
tipo: tinyint
e negli altri campi...
Title: Re: opzione devi registrarti
Post by: emanuele on December 16, 2012, 04:49:11 AM
Sostanzialmente irrilevanti.
Lasciali come sono.
Title: Re: opzione devi registrarti
Post by: laudia on December 16, 2012, 05:07:08 AM
ok niente più errore, per vedere se funziona sulla funzione al posto di
      if ($user_info['is_guest'])
devo mettere...
ovviamente se utente è guest e viene abilitato no_view
Title: Re: opzione devi registrarti
Post by: emanuele on December 16, 2012, 08:26:12 AM
mmm...ok, ora che mi hai fatto questa domanda mi viene da pensare che sarebbe stato più facile usare un permesso piuttosto che un'opzione per la board, ad ogni modo credo sia fattibile anche con l'opzione.

E' una cosa un po' brutta da farsi, ma credo sia l'unica.
Hai già aggiunto nella funzione loadBoard il codice per recuperare no_view dal database?
Se no, devi aggiungere il campo no_view alla seconda query di quella funzione (è la più "grossa") e poi appena sotto dove c'è $board_info = array( dovrai aggiungere qualcosa tipo 'hide_links_to_guests' => !empy($row['no_view']),
Fatto questo, l'if che dici dovresti cambiarlo in:
global $board_info;
if (isset($board_info) && $board_info['hide_links_to_guests'])
Title: Re: opzione devi registrarti
Post by: laudia on December 16, 2012, 12:08:43 PM
ok aggiungendo  'hide_links_to_guests' => !empy($row['no_view']),  mi dà errore empy o una cosa del genere cosi ho provato a modificarlo togliendo empy
'hide_links_to_guests' => $row['no_view'],

e in teoria funzione ma si nasconde e si vede per tutti non solo per gli ospiti nella sezione dove lo attivo
Title: Re: opzione devi registrarti
Post by: laudia on December 16, 2012, 12:33:16 PM
ok mi sono accorta solo ora che mancava una t
'hide_links_to_guests' => !empty($row['no_view']),

ma il risultato è lo stesso
Title: Re: opzione devi registrarti
Post by: emanuele on December 16, 2012, 12:43:00 PM
Maledetta tastiera! :P

global $board_info;
if ($user_info['is_guest'] && isset($board_info) && $board_info['hide_links_to_guests'])
Title: Re: opzione devi registrarti
Post by: laudia on December 16, 2012, 01:03:33 PM
perfetto funziona, grazie mille. Ora manca solo una verifica, se metto tutte le modifiche che ho fatto su un file tipo mod mi potresti controllare se ho aggiunto cose che non servono o, ti chiedo troppo. ovviamente con calma dato che il tutto sembra funzionare perfettamente
Title: Re: opzione devi registrarti
Post by: emanuele on December 16, 2012, 02:17:59 PM
Provo.
Title: Re: opzione devi registrarti
Post by: laudia on December 17, 2012, 04:31:05 AM
allora queste credo siano tutte o almeno quelle che mi ricordo di aver messo ovviamente più la colonna nel phpmyadmin. fammi sapere se ho aggiunto cose che non servono. Grazie di nuovo per l' aiuto.
Title: Re: opzione devi registrarti
Post by: laudia on December 20, 2012, 03:11:22 PM
emanuele, solo ora guardando nel registro errori, insieme a tanti altri ho trovato questo errore

8: Undefined index: hide_links_to_guests
File: xxxxx/Sources/Subs.php
Riga: 2430

sarebbe la riga che mi hai detto di aggiungere ma, comunque funziona perfettamente, devo ignorarla?
Title: Re: opzione devi registrarti
Post by: emanuele on December 20, 2012, 05:34:12 PM
mmm...curioso...
Prova a cambiare in:
!empty($board_info['hide_links_to_guests'])
Title: Re: opzione devi registrarti
Post by: laudia on December 21, 2012, 07:53:37 AM
ok sembra non esca più questo errore, grazie. Appena mi dici se nel file che ti ho messo in allegato c'è qualche errore o devo cancellare o cambiare qualcosa che ho inserito, metterò come risolto così creo un altro topic per vedere se si possono risolvere gli altri errori che ho trovato nel registro errori.
Title: Re: opzione devi registrarti
Post by: emanuele on December 21, 2012, 07:55:53 AM
Non trattenere il fiato mentre aspetti che lo controlli... ::)
Magari durante le feste (se gli altri vanno in ferie :P).
Title: Re: opzione devi registrarti
Post by: laudia on December 21, 2012, 08:07:55 AM
fai con comodo, magari più tardi inizio già il topic per risolvere gli altri errori