[GDRCD 5.4] - Messaggi stile WA
20/07/2021 14:18:02
Yes, pari pari. Vedo che il problema si presenta sempre dopo il mio messaggio di benvenuto. Vado a vedere se c'è qualche tag che è inavvertitamente rimasto aperto o che...
20/07/2021 14:30:35
haruka ha scritto: Yes, pari pari. Vedo che il problema si presenta sempre dopo il mio messaggio di benvenuto. Vado a vedere se c'è qualche tag che è inavvertitamente rimasto aperto o che...
E' il codice html del messaggio di benvenuto che viene inserito in database che crea il problema.
Ma l'ho validato qui:
https://validator.w3.org/#validate_by_input
ed è a posto...
20/07/2021 14:34:02
haruka ha scritto: ...
Se tu provi a fare un Ispeziona Elemento puntando sul testo dell'anteprima del messaggio di benvenuto, quella che compare come messaggio troncato in indexnew.inc.php , cosa ti viene fuori?
Kasa.
20/07/2021 14:53:04
Eccolo qua, credo tu abbia centrato il problema.
<td class="elementi_elenco_preview">
<div>
<a href="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=Mohs">Lo staff è lieto di darti il benvenuto e ti augura buon divertimento! <br><br>
<span style="colo...
</a>
</div>
</td>
</tr>
<tr>
<td class=" checkmessaggi"="">
<form action="main.php?page=messages_center_new" method="post">
<div class="form_submit">
<input type="hidden" name="op" value="eliminatutto">
<input type="hidden" name="dest" value="Hlin">
<input type="image" src="imgs/icons/erase.png" style="width:20px; height:20px; margin-top: 20px;">
</div>
</form>
</span></a></div></td>
Mentre col mio, quello che appunto ti dicevo funziona,
<td class="elementi_elenco_preview">
<div>
<a href="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=Mohs"><i><b style="color:#1a7aba;">Oggetto messaggio: Messaggio di benvenuto</b></i><br>Lo staff è lieto di darti il benvenuto e ti augura buon divertimento! <br><br>
<span style="colo...
</a>
</div>
</td>
<td style=" display:none;"="">
<div class="controlli_elenco" style="display:none;">
<div class="controllo_elenco">
<!-- reply -->
<form action="main.php?page=messages_center_new" method="post">
<input type="hidden" name="reply_dest" value="">
<input type="hidden" name="genitore" value="">
<input type="hidden" name="op" value="reply">
<input type="submit" value="Rispondi">
</form>
</div>
</div>
</span></a></div></td>
20/07/2021 15:42:48
haruka ha scritto: ...
Risolto l'inghippo.
Come avevamo immaginato, il problema è legato a dei tag HTML presenti all'interno del messaggio di benvenuto che non vengono chiusi correttamente nel momento in cui viene tagliato il messaggio per dare un anteprima nella lista dei messaggi in messages/indexnew.inc.php .
Non venendo chiusi correttamente, essendo appunto il testo tagliato, gli altri TAG HTML entrano in conflitto con quelli rimasti appesi e quindi spostano la riga successiva e la trattano come se appartenesse alla riga precedente, incolonnandoli male.
Il motivo per il quale funziona nel tuo metodo è legato alla presenza di qualche refuso delle varie modifiche, come ad esempio appunto le linee di codice dedicate al pulsante di risposta, che vanno a fare da tappabuchi al tag appeso, lasciando l'incolonnamento giusto. Ma, di per sé, è un errore.
In questo caso, il consiglio è di utilizzare la funzione nativa di PHP strip_tags() nelle Anteprime, in modo da evitare di lasciare aperti dei TAG HTML. Questa funzione rimuove tutti i tag e lascia la stringa linda e pulita.
Quindi, a livello di codice, la parte dedicata all'anteprima passa da essere così:
<td class="elementi_elenco_preview">
<div>
<a href="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=<?php echo $row['personaggio_conversazione'] ?>"><?php echo gdrcd_filter('out', substr($row['testo'], 0, 100)); ?>
...
</a>
</div>
</td>
a così:
<td class="elementi_elenco_preview">
<div>
<a href="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=<?php echo $row['personaggio_conversazione'] ?>"><?php echo gdrcd_filter('out', strip_tags(substr($row['testo'], 0, 100))); ?>
...
</a>
</div>
</td>
E il problema si risolve.
Kasa.
20/07/2021 16:13:09
Perfetto e confermo.
23/07/2021 12:11:59
Buongiorno!
Scusate se vi scomodo per una bazzeccola, ma non riesco a capire come fare per modificare il formato della data nella pagina di lettura di una conversazione - readnew.inc.php per intenderci.
Mi spiego meglio: solo in questa pagina il formato della data risulta essere anno/mese/giorno, ma io vorrei che risultasse uniforme col resto della land dove le date appaiono tutte col formato giorno/mese/anno a cui siamo abituati tutti.
Ho spulciato anche negli altri file, ma non ho trovato il punto in cui poter mettere mano al problema.
Premetto che non ho modificato il codice se non per adattarlo graficamente e ho spostato il riquadro per rispondere in basso invece che in alto, come proposto nella patch originale.
Sto utilizzando il pacchetto sulla versione 5.4 del gdrcd e, a parte questo "problema", funziona tutto correttamente.
Grazie mille in anticipo!
23/07/2021 12:27:04
nobara ha scritto: ...
Per forzare l'allineamento delle date, puoi utilizzare le funzioni gdrcd_format_date() e gdrcd_format_time() in includes/funzioni.inc.php .
Il file pages/messages/readnew.inc.php andrebbe corretto, sostituendo questo:
echo '
<div class="read_message_box_conversation">
<div class="infos '.$side_infos.'">
<span class="title">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['sender']).': </span>
<span class="body">'.gdrcd_filter('out', $row['mittente']).'</span>
</div>
<div class="read_message_box_conversation_text '.$side_message_box_text.'">
'.nl2br(gdrcd_bbcoder(gdrcd_filter('out', $row['testo']))).'
</div>
<div class="infos '.$side_infos.'">
<span class="title">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['date']).': </span>
<span class="body">'.gdrcd_filter('out', $data_spedito).'</span>
<span class="title">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['time']).': </span>
<span class="body">'.gdrcd_filter('out', $ora_spedito).'</span>
'.$letto_box.'
</div>
<div class="infos '.$side_infos.' actions">
'.implode(' ', $actions_box).'
</div>
</div>';
con questo:
echo '
<div class="read_message_box_conversation">
<div class="infos '.$side_infos.'">
<span class="title">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['sender']).': </span>
<span class="body">'.gdrcd_filter('out', $row['mittente']).'</span>
</div>
<div class="read_message_box_conversation_text '.$side_message_box_text.'">
'.nl2br(gdrcd_bbcoder(gdrcd_filter('out', $row['testo']))).'
</div>
<div class="infos '.$side_infos.'">
<span class="title">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['date']).': </span>
<span class="body">'.gdrcd_filter('out', gdrcd_format_date($data_spedito)).'</span>
<span class="title">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['time']).': </span>
<span class="body">'.gdrcd_filter('out', gdrcd_format_time($ora_spedito)).'</span>
'.$letto_box.'
</div>
<div class="infos '.$side_infos.' actions">
'.implode(' ', $actions_box).'
</div>
</div>';
Così dovrebbe funzionare.
Kasa.
23/07/2021 14:37:54 e modificato da nobara il 23/07/2021 14:38:29
kasa ha scritto:
Grazie mille, sei stato gentilissimo ed ora il formato è quello "corretto"!
23/10/2021 23:54:14
Salve!
Scusate se riprendo in mano questa conversazione, ma sto sbattendo la testa su una cosetta.
Attualmente, indexnew fa in modo da mostrarmi un'icona diversa del messaggio (letto o non letto) a seconda che il destinatario abbia appunto aperto il messaggio o meno. Tuttavia, non distingue se il destinatario sia l'utente loggato oppure un altro pg. In questo modo l'icona è uguale sia che sia tu ad aver mandato il messaggio e l'altro non abbia ancora letto, sia quando tu devi ancora aprire il messaggio. Questo crea un attimo confusione perché di fatto quando magari sei impegnato a scrivere a più pg contemporaneamente e gli stessi ti rispondono in tempo reale, potresti avere due o più icone "non letto" che però a volte corrispondono a "nuovo messaggio che tu devi ancora leggere" e altre a "messaggio che hai mandato e l'altro non ha ancora aperto", e questo ti costringe poi ad aprire tutte le conversazioni "non letto" per scoprire chi ti ha risposto e chi no.
Ho provato a modificare
<?php
if($row['letto'] == 0) { ?>
<img src="imgs/icons/mail_new.png" class="colonna_elengo_messaggi_icon">
<?php
} else { ?>
<img src="imgs/icons/mail_read.png" class="colonna_elengo_messaggi_icon">
<?php
} ?>
del pacchetto originale con
if($row['destinatario'] == $_SESSION['login'] && $row['letto'] == 0) {?>
<img src="imgs/icons/mail_new.gif" class="colonna_elengo_messaggi_icon">
<?php } elseif ($row['destinatario'] != $_SESSION['login'] && $row['letto'] == 0) { ?>
<img src="imgs/icons/mail_new.png" class="colonna_elengo_messaggi_icon">
<?php } elseif ($row['letto'] == 1) { ?>
<img src="imgs/icons/mail_read.png" class="colonna_elengo_messaggi_icon">
<?php
} ?>
ma non cambia nulla, continua a farmi vedere mail_new.png sia che il destinatario NON sia l'utente loggato, sia quando invece lo è (e dovrebbe farmi vedere mail_new.gif). CREDO che non "legga" proprio l'if riferito al destinatario, e credo lo faccia per via delle query in alto? Però non saprei proprio come ottenere ciò che sto cercando di fare e sono ad un punto morto, qualcuno ha suggerimenti?
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Tiles Survive ↗
Crossout ↗
Fallen Gods ↗
Neverness to Everness ↗
Project Entropy ↗
The Coven ↗
RAID Shadow Legends ↗
Foundation Galactic Frontier ↗