GDRCD 5.5 - Link modale stampato in chat
GDRCD 5.5 - Link modale stampato in chat postato il 16/08/2021 16:04:38 nel forum programmazione, open source e hosting
Ciao a tutti, ho un problemino che non so come risolvere e spero che qualcuni qui riesca a delucidarmi un pochino il tutto.
Sto cercando di far stampare in chat, tramite form, un link che, se cliccato, apra una modale -di quelle gia' integrate in gdrcd-.
Riesco a far stampare un link semplice senza problemi, ma purtroppo inserendo le specifiche javascript nell'url mi blocca completamente il form e non diventa possibile cliccare l'input submit.
Nello specifico questa è la stringa di codice:
$chat_dice_skill = '<a href="javascript:parent.modalWindow(\'p\', \'Titolo\', \'popup.php?page=modalechat\', \'400\', \'420\')">Link</a>';
Il problema che ho identificato riguarda proprio le "\" inserite. Se le tolgo e sostituisco le ' con " ad esempio, la stringa viene stampata correttamente salvo che, ovviamente, il javascript non funziona più.
Qualche suggerimento per bypassare tutto questo problema?
Ah, PS: ho anche provato a trasformare il tutto in bbcode per l'insert, ma il problema rimane tale e quale
Pagine → 1
17/08/2021 23:26:43 e modificato da kgviigdr il 17/08/2021 23:27:24
Premesso che è da tanto che non metto mano a GDRCD e che mi baso molto sulla memoria, a volte ho visto che ha dato problemi nel momento in cui si inserisce direttamente all'interno del href il javascript.
Per cui, prova a mettere questo, ma non ti assicuro niente 😅
$chat_dice_skill = '<a href="javascript:void(0)" onClick="parent.modalWindow(\'p\', \'Titolo\', \'popup.php?page=modalechat\', \'400\', \'420\')">Link</a>';
Inoltre, la console del browser ti da qualche errore quando premi sul link da te inserito? E che intendi per "mi blocca completamente il form"?
18/08/2021 14:50:15
grazie per la risposta :)
Il problema credo siano proprio le slash \ e non il javascript in se'. Se ad esempio non metto le slash e trasformo le ' in ", la stringa mi viene stampata in chat, con tanto di link (solo che chiaramente non funziona il link).
Con le \ mi si blocca il form nel senso che il tasto invia non funziona piu e non viene stampata la riga in chat, tanto meno inserita nel database..
23/08/2021 11:45:24
Scusa il ritardo.
Allora, ho provato ad inserire quanto hai scritto te all'interno del ref_header, e restituisce questo errore (simile al tuo, probabilmente), oltre al blocco che dicevi te (e che ho finalmente capito)
GDRCD MySQLi Error [File: ref_header.inc.php; Line: 575]
Error Code: 1064
Error String: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'p', 'Titolo', 'popup.php?page=modalechat', '400', '420')">Link')' at line 1
Error Detail: INSERT INTO chat ( stanza, imgs, mittente, destinatario, ora, tipo, testo ) VALUES (2, 'm;standard_razza.png', 'Test', '', NOW(), 'P', 'pippoLink')
C'è quindi un problema con l'inserimento del testo all'interno del DB.
Premesso che farò delle prove e delle ricerche più approfondite più avanti, e premesso che non so come si attivi la modale (ossia, viene stampata in automatico il link quando si usa un potere, ad esempio?) ti suggerisco comunque di fare una cosa di questo tipo, che è molto ma molto generica:
fai in modo che nel db non venga inserito il link, ma una stringa che possa essere facilmente, ad esempio "$$modalechat/$$".
Una volta che questa è inserita, vai su function e crei una funzione (puoi usare come base quella che ti converte il <> in parlato, volendo) che ti converta quel "$$modalechat/$$" nel link "di partenza" (ossia <a href="javascript:parent.modalWindow('p,' 'Titolo', 'popup.php?page=modalechat', '400', '420')">Link</a>).
Poi in ref_header aggiungi nella parte della "stampa" dove serve la funzione che hai appena creato, e questa dovrebbe di conseguenza permetterti di vedere in chat il link funzionante.
Se non si capisce qualcosa, scusami, tra qualche giorno in casi vedo di riscrivere meglio.
25/08/2021 11:47:42
Confermo quanto dice @kgviigdr: non è proprio una saggia idea salvare in DB l'intera funzione di apertura della Modale, oltre ad essere poco pratico il tutto per via delle implicazioni che potrebbe avere il leggere dei tag provenienti da questi record.
Ricorrere a dei placeholder, così come suggerito, è una soluzione più che plausibile, oppure puoi prevedere delle colonne nella tabella delle azioni che se compilati aggiungono al messaggio varie funzionalità, come quella appunto della Modale, ma i cui controlli sono separati rispetto alla lettura del testo dell'azione.
Kasa.
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Cafuné ↗
Exclusive Villa GdR ↗
Tibia ↗
Enlisted ↗