[GDRCD] Problemini con il forum
[GDRCD] Problemini con il forum postato il 12/12/2016 11:45:03 nel forum programmazione, open source e hosting e modificato da gdr-online.com il 10/01/2019 11:24:26
Ho riscontrato un paio di problemi con il forum, per cui chiederei la grande cortesia di una zampotta :(
La premessa è che ho già provveduto a mettere in modale tanto il forum quanto le schede dei personaggi.
Problema 1
Andando in un qualsiasi topic la funziona di modificare un post e quella di rispondere in un topic funzionano correttamente. Quando però si va a modificare un messaggio, dopo succede una cosa strana con queste due funzioni.
Se vado a modificare un post, me lo modifica correttamente e mi fa tornare al topic. Peccato che, se poi clicco su "rispondi" mi spara l'errore "bacheca non trovata".
Facendo prove, ho notato che l'errore è nell'indirizzo che "assume" il link associato al tasto rispondi. Ipotizzando - in esempio - che prima di modificare un qualsiasi post del topic l'indirizzo (funzionante, che permette davvero di rispondere) collegato alla pressione del tasto "rispondi sia" .../popup.php?page=forum&op=composer&what=184&where=5, una volta modificato un post e tornati, dopo la modifica, alla visualizzazione del topic, l'indirizzo legato a "rispondi" diventa .../popup.php?page=forum&op=composer&what=184&where=0. Cliccandolo, da appunto "bacheca non trovata. Chiudendo la modale, ricaricando il forum e tornando a quel topic il tasto rispondi torna a funzionare correttamente.
Sapete dirmi come mai e suggerirmi una soluzione?
Problema 2
Come detto, ho messo il forum in modale e le schede in modale. Cosa succede, però? Succede che se, aperto il forum, io clicco sul nome di un pg che ha scritto un post nel forum, mi apre sì la modale della scheda, correttamente. Ma me la apre NELLA modale del forum, senza possibilità di farla uscire da quella. C'è un modo per ovviare la cosa e far aprire la modale "nella land" e non nella modale del forum?
Spero di essermi spiegata :\
grazie per ogni aiuto che vorrete fornirmi! :)
Pagine → 1
13/12/2016 02:20:53
Ciao!
Per il primo errore hai dedotto bene: non viene passato l'appropriato riferimento all'interno del link. Se ho modo di sbirciarmi bene il file ti posso dare qualche indicazione più precisa.
Per la seconda questione, il problema è che le pagine all'interno della modale sono in realtà all'interno di un iframe e quindi sono a loro volta delle pagine a se stanti, per cui hanno la propria funzione della modale al loro interno e via dicendo.
Per far utilizzare la modale del main invece, dovresti anteporre alla funzione javascript la dicitura parent.
Ad esempio:
<a href="parent.modalWindow('scheda.php?pg=...
14/12/2016 00:21:54
Grazie mille! <3
specifico di aver modificato la funzione così
<a href="javascript:parent.modalWindow...
e in effetti funziona benissimo! :3
se poi ti venisse l'ispirazione per il forum te ne sarei davvero grata! :3
pensi che sia un "bug" [virgolette d'obbligo] legato alle modali o in generali di GDRCD?
14/12/2016 03:35:53
irenes ha scritto: Grazie mille! <3
specifico di aver modificato la funzione così
<a href="javascript:parent.modalWindow...
Figurati ;-)
Comunque vero, dimenticanza mia del javascript: davanti. Buona così 👍
pensi che sia un "bug" [virgolette d'obbligo] legato alle modali o in generali di GDRCD?
Ho dato una sbirciata alla versione corrente del file del forum, sembra che i link siano corretti su tutti i redirect a colpo d'occhio, forse utilizzi una versione più vecchia di GDRCD ?
14/12/2016 21:01:40
Allora... io uso l'ultima versione di GDRCD.
Ho provato a togliere la modale e rimettere il codice nel forum (senza modale, senza passare per js e il file popup).
E da lo stesso errore che dicevo prima: se vai in un topic, modifichi un post, dopo la modifica ti rimanda correttamente al topic. A quel punto, però, se clicchi su "rispondi" ti da "bacheca non trovata"
:\
14/12/2016 22:11:54
Il problema dovrebbe essere che nel link del modifica non viene passato al form dove modifichi il post il parametro where che è quello che identifica il topic ma solo il what che è quello che identifica il post.
Prendo un link di un modifica di un post sulla versione che ho io in locale è composto così:
http://applications.lan/github/GDRCD/main.php?page=forum&op=modifica&what=3
il form che modifica il post ha come input hidden questi a riga 170 e successive:
<input type="hidden"
name="op"
value="edit" />
<input type="hidden"
name="araldo"
value="<?php echo gdrcd_filter('num',$_REQUEST['where']); ?>" />
<input type="hidden"
name="messaggio_padre"
value="<?php echo gdrcd_filter('num',$row['id_messaggio_padre']); ?>" />
<input type="hidden"
name="id_messaggio"
value="<?php echo gdrcd_filter('num',$_REQUEST['what']); ?>" />
non venendo passato nulla
gdrcd_filter('num',$_REQUEST['where']);
diventa 0;
e quindi il redirect a righe 116 e successive :
if ($row['id_messaggio_padre'] == -1)
{
gdrcd_redirect('main.php?page=forum&op=read&what='.gdrcd_filter('num',$_POST['id_messaggio']).'&where='.gdrcd_filter('num',$_POST['araldo']));
}
else
{
gdrcd_redirect('main.php?page=forum&op=read&what='.gdrcd_filter('num',$row['id_messaggio_padre']).'&where='.gdrcd_filter('num',$_POST['araldo']));
}
si ritroverà con $_POST['araldo'] 0.
Le soluzioni possibili sono diverse, la più semplice anche se non è la maigliore stilisticamente è modificare i due link a righe 454 e 510 passando anche il parametro where nel link
08/02/2017 18:29:24
I due link indicati ora sono così'
<a href="popup.php?page=forum&op=modifica&what=<?php echo $row['id_messaggio'];?>&where=<?php echo gdrcd_filter('num',$_POST['araldo']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['forums']['link']['edit']); ?></a>
...
<a href="popup.php?page=forum&op=visit&what=<?php echo $araldo; ?>">
Il problema persiste sempre. Cosa sbaglio? :\
09/02/2017 00:15:00 e modificato da rematore il 09/02/2017 00:33:37
irenes ha scritto:
page=forum&op=composer&what=184&where=5, una volta modificato un post e tornati, dopo la modifica, alla visualizzazione del topic, l'indirizzo legato a "rispondi" diventa .../popup.php?page=forum&op=composer&what=184&where=0. Cliccandolo, da appunto "bacheca non trovata. Chiudendo la modale, ricaricando il forum e tornando a quel topic il tasto rispondi torna a funzionare correttamente.
Ciao, l'errore "bacheca non trovata" esce perché il parametro where che identifica l'id_araldo corrispondente è settato a zero come hai scritto tu. Questo è causato dal fatto che viene passato attraverso una $_REQUEST e non viene invece prelevato dal db come dovrebbe essere.
Questo codice dovrebbe risolvere il tuo problema. Come sempre fai un backup del tuo file forum.inc.php così da ricaricarlo in caso di errore.
Una volta fatto il backup, apri il file forum.inc.php quindi sostituisci questo blocco di codice effettua le modifiche come segue.
circa riga 99 - sostituisci questa query
$row = gdrcd_query("SELECT autore, titolo, messaggio, id_messaggio_padre FROM messaggioaraldo WHERE id_messaggio=".gdrcd_filter('num',$_POST['id_messaggio'])."");
con questa
$row = gdrcd_query("SELECT autore, titolo, messaggio, id_messaggio_padre, id_araldo FROM messaggioaraldo WHERE id_messaggio=" . gdrcd_filter('num', $_POST['id_messaggio']) . "");
circa riga 116 - sostituisci questa questa condizione
if ($row['id_messaggio_padre'] == -1)
{
gdrcd_redirect('main.php?page=forum&op=read&what='.gdrcd_filter('num',$_POST['id_messaggio']).'&where='.gdrcd_filter('num',$_POST['araldo']));
}
else
{
gdrcd_redirect('main.php?page=forum&op=read&what='.gdrcd_filter('num',$row['id_messaggio_padre']).'&where='.gdrcd_filter('num',$_POST['araldo']));
}
con questa
if ($row['id_messaggio_padre'] == -1) {
gdrcd_redirect('main.php?page=forum&op=read&what=' . gdrcd_filter('num', $_POST['id_messaggio']) . '&where=' . gdrcd_filter('num', $row['id_araldo']));
} else {
gdrcd_redirect('main.php?page=forum&op=read&what=' . gdrcd_filter('num', $row['id_messaggio_padre']) . '&where=' . gdrcd_filter('num', $row['id_araldo']));
}
19/02/2017 22:16:28
scordai di rispondere: grazie mille! funziona! ^^
22/02/2017 16:19:45
ok, problemucolo.
dopo aver eliminato un messaggio succede la stessa roba.
Ovvero: elimini un messaggio, lo fa correttamente, solo che già il "link_back" indica un where=0. Ti fa però correttamente tornare al 3d. Se però, a quel punto, clicchi su "rispondi" ti da "bacheca inesistente". Come si fixa questo problema? :\ Ho provato a mutuare la soluzione per il mdofica messaggi ma... non va <.<" forse non so dove agire, boh <.<
22/02/2017 17:35:50
Prova così...
apri il file forum.inc.php cerca questa query (riga 186 circa)
$postData = gdrcd_query("SELECT id_messaggio_padre AS padre, autore FROM messaggioaraldo WHERE id_messaggio=" . $postID);
e sostituiscila con questa
$postData = gdrcd_query("SELECT id_messaggio_padre AS padre, id_araldo, autore FROM messaggioaraldo WHERE id_messaggio=" . $postID);
quindi scorri un po' sotto e sostituisci questo
$back = 'forum&op=read&what=' . (int) $postData['padre'];
con questo
$back = 'forum&op=read&what=' . (int) $postData['padre'] . '&where=' . (int) $postData['id_araldo'];
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Wuthering Waves ↗
New Orleans ↗
Tibia ↗
Project Entropy ↗
Tiles Survive ↗
The Coven ↗
World of Tanks ↗
Hero Wars ↗
Raja Dunia ↗