[RISOLTO] GdrCD 5.5 sdoppiare il $_SESSION['tag']
[RISOLTO] GdrCD 5.5 sdoppiare il $_SESSION['tag'] postato il 01/07/2022 22:00:09 nel forum programmazione, open source e hosting e modificato da haruka il 03/07/2022 15:35:08
Cerco di spiegare, non credo sia semplice.
Vorrei far sì che nella chat ci fossero due valori che vengono mantenuti all'invio della azione in chat.
In pratica, una sorta di secondo tag, che in realtà non è un tag vero e proprio ma un checkbox.
in frame_chat.inc.php
mi sono creata questo segno di spunta:
<div class="casella_chat" id="tagchat">
<input type="checkbox" name="inpvt" value="0" id="inpvt">
<br /><span class="casella_info">
PVT
</span>
</div>
...
<script>
$('#inpvt').on('change', function(){
this.value = this.checked ? 1 : 0;
// alert(this.value);
}).change();
</script>
che in accordo con il codice modificato in ref_header.inc.php
mi scrive i valori 1 o 0 nella tabella chat, in un nuovo campo che ho chiamato inprivato.
Questa parte funziona.
Ho quindi modificato il mio case 'P' (per ora solo quello) per avere questa parte di codice:
$add_chat.= '<div id="chat_row_'.$row['inprivato'].'" class="chat_row_'.$row['tipo'].'">';
In pratica cosa succede, che le mie azioni di parlato ora non hanno solo la classe, ma anche l'id, che regolarmente è 1 o 0. Se è 1, ho fatto in modo via css che il background della stringa di chat sia più scuro, in modo che risalti subito a colpo d'occhio come differente dal resto della giocata.
Il problema si pone dopo l'invio della stringa in chat: perdo quello che ho chiamato:
$_SESSION['inpvt']
sdoppiando in pratica il
$_SESSION['tag']
Ho usato
$_SESSION['tag'] = gdrcd_filter('in',$_POST['tag']);
$_SESSION['inpvt'] = gdrcd_filter('in',$_POST['inpvt']);
e
sdoppiato
$tag_n_beyond=gdrcd_filter('in',$_POST['tag']);
in
$tag_n_beyond=gdrcd_filter('in',$_POST['tag']);
$inprivato= gdrcd_filter('in',$_POST['inpvt']);
e ovunque compare
$_SESSION['tag']=$tag_n_beyond;
ho fatto seguire:
$_SESSION['tag']=$tag_n_beyond;
$_SESSION['inpvt']=$inprivato;
Ma il tag_n_beyond lo conserva. inprivato no.
Non riesco a capire cosa sbaglio.
Ah, in login.inc.php
sotto
$_SESSION['tag'] = "";
ho settato
$_SESSION['tag'] = "";
$_SESSION['inpvt'] = "";
Ma questi valori vanno inseriti anche da qualche altra parte? Mi sono persa...
Pagine → 1
01/07/2022 23:35:46
Ciao!
Allora, premetto che non sono una programmatrice né niente, ma con questo problema ci ho litigato anche io per un po' (poi una utente mi ha dato un suggerimento, quindi non posso prendermi meriti!). Però ecco, io ho trovato la soluzione per il mio problema che però riguardava un campo simile in tutto e per tutto al tag, quindi testuale. Non so se andrà bene anche per la checkbox, ma intanto ti segnalo la cosa!
In fondo a ref_header dovresti trovare una cosa del genere:
if((gdrcd_filter('get', $_POST['op']) == 'take_action') || (gdrcd_filter('get', $_POST['op']) == 'new_chat_message')) {
if($PARAMETERS['mode']['skillsystem'] == 'ON') {
echo 'parent.document.getElementById('chat_form_actions').reset();';
}
echo 'parent.document.getElementById('chat_form_messages').reset();
parent.document.getElementById('chat_form_messages').elements["tag"].value=''.$_SESSION["tag"].'';';
}//if
In cui dice agli altri campi di resettarsi e al tag di mantenere quanto scritto precedentemente. Quindi andrebbe aggiunto qualcosa come:
if ((gdrcd_filter('get',$_POST['op'])=='take_action')||(gdrcd_filter('get',$_POST['op'])=='new_chat_message'))
{
if($PARAMETERS['mode']['skillsystem']=='ON')
{
echo 'parent.document.getElementById(\'chat_form_actions\').reset();';
}
echo 'parent.document.getElementById(\'chat_form_messages\').reset();
parent.document.getElementById(\'chat_form_messages\').elements["tag"].value=\''.$_SESSION["tag"].'\';
parent.document.getElementById(\'chat_form_messages\').elements["inpvt"].value=\''.$_SESSION["inpvt"].'\';';
}//if
Con l'ultimo punto e virgola solo alla fine, così. Non so, fai una prova e vedi se può funzionare anche per te!
01/07/2022 23:49:35
Intanto grazie mille perché ci stavo davvero impazzendo :D
non funziona col checkbox (mai na gioia :P) ma vedrò magari di raggirare in qualche modo il problema. Già che ho capito dove metter le mani è tantissimo *__*
01/07/2022 23:58:54 e modificato da haruka il 02/07/2022 00:04:31
Ho ovviato così, magari serve a qualcun altro :)
in frame_chat_inc.php
<div class="casella_chat" id="inpvt">
<select name="inpvt" id="inpvt">
<option value='' disabled selected style='display:none;'>--</option>
<option value="1">sì</option>
<option value="0">no</option>
</select>
<br /><span class="casella_info">
PVT
</span>
</div>
(a questo punto il codice javascript in fondo
<script>
$('#inpvt').on('change', function(){
this.value = this.checked ? 1 : 0;
// alert(this.value);
}).change();
</script>
l'ho rimosso perché non serviva più).
mutationstaff ha scritto:
e come suggerito da mutationstaff
in fondo a ref_header.inc.php
ci va
echo 'parent.document.getElementById(\'chat_form_messages\').reset();
parent.document.getElementById(\'chat_form_messages\').elements["tag"].value=\''.$_SESSION["tag"].'\';
parent.document.getElementById(\'chat_form_messages\').elements["inpvt"].value=\''.$_SESSION["inpvt"].'\';';
Ovviamente i passaggi fatti nel post di apertura vanno fatti a loro volta.
Grazie ancora, me contenta *__*
02/07/2022 00:06:46
Figurati, sono contenta di esserti stata utile <3
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!
Wuthering Waves ↗
Project Entropy ↗
RAID Shadow Legends ↗
World of Tanks ↗