Shoutbox

Aperto da KBII, Mercoledì - 02 Ottobre 2013 - 11:50

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

KBII

Ciao cari!  ;D
Da qualche tempo a questa parte ho un problema con lo Shoutbox di simpleportal
Un semplice shoutbox che usiamo per scambiare qualche battuta veloce sulla home.
Succede che quando si preme "Invia" lo shoutbox non si refresha, rimane la freccia circolare in alto a dx che indica l'elaborazione in corso e basta.
Se si refresha l'intera pagina, o si cambia sezione e si ritorna, lo shout appare aggiornato.
Ho già provato a cancellare tutti gli shout tramite sezione apposita nell'amministrazione, ma non cambia.
Ho provato vari browser, soliti noti più efficienti, ma non ho ottenuto risultati.

Cosa potrebbe essere? Lo cancello e lo ricreo?

emanuele

L'XML sembra a posto anche se c'è qualche problema nel template (hai tre coppie di tag </body></html>, una sarebbe sufficiente :P).
Dovrei provare con un account...ne hai uno di prova? O:-)

KBII

Non so di che parli quando dici che ho tre coppie di tag, ma mi fido.  ;D

L'account test sì, ma te lo pm.

emanuele

Ricevuto.

Dammi qualche momento perché sto già facendo troppe cose contemporaneamente... xD

emanuele

Così ad occhio è un problema di encoding: ogni volta che c'è uno shout (anche già presente nella shoutbox, non necessariamente quello appena aggiuto) che contiene caratteri "speciali" (quindi incluse varie vocali accentate), nell'xml ritornato dopo aver premuto il pulsante "shout", il tag <content> risulta vuoto, quindi vuol dire che il testo si perde da qualche parte.
Ora non resta che individuare il "qualche parte" e la causa del problema...

Il charset mostrato nell'header delle pagine è ISO.
Per prima cosa, quindi, prova a controllare il database e le varie tabelle per vedere:
1) il charset del databae (di solito è visibile nella prima pagina di phpmyadmin),
2) la collation delle varie tabelle.
Ha sempre avuto questo problema?
Se no, è stato fatto recentemente qualcosa? Da voi o dal vostro host? (Magari anche a vostra insaputa?)

KBII

Io, personalmente, a parte qualche aggiornamento alle versioni con Nico non ho fatto altro. Chi gestisce i servers di sicuro ha fatto qualcosa in quanto ora offrono dei servers speciali per non so cosa.
Può essere abbiano spostato "gli sfigati" altrove.
Di fatto il mio sito è molto più lento di prima.
Per quallo che riguarda lo shout sarà qualche mese che è così. All'inizio davo la colpa ai browsers del pc che ogni tanto ne hanno una, ma poi ho visto che non si risolveva ed ho scritto qui.

Collation: uft8_general_ci
Charset (?): latin_swedish_ci (se è quello che intendevi)

Grazie.

emanuele

In effetti reagisce moooolto con calma a volte e ieri sera ho beccato anche un paio di errori che mi pare dicessero host non raggiungibile o simili.

Ok, ora andiamo un po' più in profondità: quando entri in phpmyadmin, guarda tutte le tabelle, hanno tutte la stessa "collation"? O quella degli shout ne ha una differente?
Poi, entra nella tabella smf_messages (vai in "struttura" o "structure") e guarda la collation della colonna "body". Quindi entra nella tabella degli shout (al momento non ricordo quale sia) e guarda la collation della colonna...boh...quella che contiene gli shout. Sorry, non ho SP sottomano al momento... :( Ma sono sicuro che i nomi sono facili da indovinare. ;)

KBII

La collation delle tabelle non è visibile, devo fare la query per vederla e non ho idea di come si faccia.  ???

emanuele

#8
E' nella pagina con la lista delle tabelle, sulla destra prima della dimensione.

ETA: e già che ci sei, guarda in Settings.php se c'è la riga:
$db_character_set = 'utf8';
Se non c'è *non* aggiungerla (ancora).

KBII

Prima del campo dimensione ho il campo "Codifica caratteri" e tutte sono su Latin1_swedish_ci. (ma non sono due cose diverse: charset e collation?)
Dentro la Settings.php nella root non c'è quella specifica.

emanuele

Indubbiamente, sono due cose diverse...mi sa che quello è un errore di traduzione di phpmyadmin, nella versione inglese quel campo è chiamato collation.

Quindi ricapitolando:
* charset di mysql latin_swedish_ci
* collation del database uft8_general_ci
* collation di tabella e campi latin_swedish_ci
* SMF ISO-8859-1

Wild guess e dubito funzioni, comunque al momento è l'unica cosa che mi "puzza", quindi proviamo...

Prova ad aprire il file PortalShoutbox.template.php, alla fine c'è la funzione template_shoutbox_xml, rimpiazzala completamente con la seguente:
function template_shoutbox_xml()
{
global $context, $txt, $smcFunc;

echo '<', '?xml version="1.0" encoding="', $context['character_set'], '"?', '>
<smf>
<shoutbox>', $context['SPortal']['shoutbox']['id'], '</shoutbox>';

if ($context['SPortal']['updated'])
{
echo '
<updated>1</updated>
<error>', empty($context['SPortal']['shouts']) ? $txt['sp_shoutbox_no_shout'] : 0, '</error>
<warning>', !empty($context['SPortal']['shoutbox']['warning']) ? $smcFunc['htmlspecialchars']($context['SPortal']['shoutbox']['warning']) : 0, '</warning>
<reverse>', !empty($context['SPortal']['shoutbox']['reverse']) ? 1 : 0, '</reverse>';

foreach ($context['SPortal']['shouts'] as $shout)
echo '
<shout>
<id>', $shout['id'], '</id>
<author>', $smcFunc['htmlspecialchars']($shout['author']['link']), '</author>
<time>', $smcFunc['htmlspecialchars']($shout['time']), '</time>
<timeclean>', $smcFunc['htmlspecialchars'](strip_tags($shout['time'])), '</timeclean>
<delete>', !empty($shout['delete_link_js']) ? $smcFunc['htmlspecialchars']($shout['delete_link_js']) : 0, '</delete>
<content>', $smcFunc['htmlspecialchars']($shout['text']), '</content>
<is_me>', $shout['is_me'] ? 1 : 0, '</is_me>
</shout>';
}
else
echo '
<updated>0</updated>';

echo '
</smf>';
}

KBII

Fatto.
Sembra andare meglio e lo proverò nei prossimi giorni.
Provalo pure tu se vuoi.
Intanto grazie!!

PS: Di fatto che è cambiato?

emanuele

Ho rimpiazzato htmlspecialchars con la versione di SMF: $smcFunc['htmlspecialchars'] che dovrebbe occuparsi del charset invece di usare quello di default di php.

KBII

Quindi mi stai dicendo che SMF e SMP userebbero due proprie funzioni di gestione dei caratteri? Un problema che dovrebbe presentarsi per quasi tutti gli europei meno gli inglesi. Oppure sarebbe stato meglio non avere il swedish_ci?

Tanto per curiosità.  ;D

Darknico

Citazione di: KBII il Venerdì - 11 Ottobre 2013 - 11:27
Quindi mi stai dicendo che SMF e SMP userebbero due proprie funzioni di gestione dei caratteri? Un problema che dovrebbe presentarsi per quasi tutti gli europei meno gli inglesi. Oppure sarebbe stato meglio non avere il swedish_ci?

Tanto per curiosità.  ;D

Beh, SP è una mod nata dopo SMF, non è detto che utilizzino correttamente le funzioni native di SMF a quanto pare xD (e forse questa funzione è nata con SMF 2.0 ma SP esiste dalla versione 1.1.x)
Non supporto privatamente, non risponderei e ci rimarreste male....

Discussioni simili (3)