Aiuto per Presenti Estesi
Aiuto per Presenti Estesi postato il 17/09/2022 10:56:24 nel forum programmazione, open source e hosting
Ciao a tutt*,
Sto utilizzando il pacchetto di GDRCD 5.6.0.5, cercando di personalizzarlo al meglio in base alle mie esigenze e senza dover toccare nulla del codice perché non sono una programmatrice (SIGH).
Scrivo per chiedere aiuto riguardo la formattazione della lista presenti/elenco presenti estesi: di default quando clicco per vedere l’elenco dei presenti in land mi cambia schermata e mi incolonna i nomi uno sotto l’altro, senza tabella e niente, a rischio di un effetto ottico povero o disordinato. A me, invece, piacerebbe inserire una tabella per dare un senso di ordine all’elenco, inserendovi se è possibile anche il mini avatar di chat.
Ogni volta che ci provo, però, non ottengo successo: nella migliore delle ipotesi non cambia nulla o mi compare l’avviso di “fatal error” e, puntualmente, azzero ogni cambiamento.
Come posso fare?
Inoltre, per quanto riguarda la lista laterale, vorrei mantenere solo il nome utente senza il resto delle specifiche che vorrei si visualizzasse solo tra i presenti estesi. Riguardo ciò, come posso togliere sessopg/razza/ecc ecc senza recare danni al codice?
Spero possiate aiutarmi, sono disperata! Grazie!
Pagine → 1
30/09/2022 11:16:40 e modificato da blancks il 30/09/2022 11:22:20
sallys ha scritto: ... sto lavroando al GDRCD 5.6.0.2, non al 0.5 ma non credo sia troppo differente
Quando cambia soltanto il numero di versione più a destra significa che sono stati fixati dei problemi, ma generalmente non cambia nulla come funzionamento o funzionalità presenti, quindi diciamo che normalmente stiamo parlando quasi della stessa cosa 👍
Tramite Github è anche possibile vedere precisamente le modifiche tra una versione e l'altra, così che sia possibile portarsi dietro i bugfix sviluppati sul progetto principale o magari anche semplicemente per verificare che non sia cambiato nulla di rilevante in uno specifico file:
https://github.com/GDRCD/GDRCD/compare/5.6.0.3...5.6.0.5 ↗
Tornando all'argomento principale, londonstar, nella lista dei presenti piccolina puoi eliminare tutte le icone di cui hai parlato commentando il codice in un paio di zone.
La prima parte devi commentare da riga 46 a riga 67
https://github.com/GDRCD/GDRCD/blob/master/pages/presenti.inc.php#L45 ↗
Dovresti fare in questo modo:
//Livello di accesso del PG (utente, master, admin, superuser)
/*
... resto del codice in mezzo
*/
//Nome pg e link alla sua scheda
Allo stesso modo devi editare anche da riga 113 a riga 134, dove troverai due commenti guida identici all'esempio che ti ho mostrato.
Per quanto riguarda i presenti_estesi la lista viene generata con dei tag html che in breve hanno questa struttura:
<ul>
<li>Nome PG 1</li>
<li>Nome PG 2</li>
<li>Nome PG etc.</li>
</ul>
La primissima cosa che ti suggerisco di fare è di cambiare il tag <ul> col tag <table> e i singoli tag <li> con i tag <tr> e subito dentro un unico <td>.
Al solito, ecco un paio di esempi:
Questo:
echo '<ul class="elenco_presenti">';
In:
echo '<table class="elenco_presenti">';
(poi ricordati di trovare la chiusura verso fondo file, che sarà scritta come </ul> e di cambiarla in modo analogo con </table>)
Questo:
echo '<li class="mappa">'.gdrcd_filter('out', $mappa_corrente).'</li>';
In:
echo '<tr class="mappa"><td>'.gdrcd_filter('out', $mappa_corrente).'</td></tr>';
Tutti gli altri <li> che trovi dovrai modificarli allo stesso modo.
A fine procedura dovresti trovarti con la tabella di base da cui partire per poter aggiungere quello che preferisci
Piccola nota: pur modificando i tags come ti ho detto potresti non vedere "visivamente" la tabella perchè manca una configurazione dei bordi. In quel caso dovresti assegnare sia al tag <table> sia ai tags <td> una proprietà css di questo tipo:
border: solid 1px black;
Se sbagli qualcosa non demordere e posta comunque il risultato, che vediamo in caso dove sono gli errori e di aiutarti a capire come risolverli ;)
11/10/2022 14:26:02
Non so come ringraziarvi per gli interventi e le ENORMI delucidazioni riguardo le mie difficoltà. Mi rimetto a lavoro con queste nuove e preziosissime guide e spero di non dovervi disturbare più! Ma in ogni caso, vi ringrazio ancora mille volte.
Vi tengo in aggiornamento!
12/10/2022 15:51:29 e modificato da londonstar il 12/10/2022 15:54:08
Rieccomi da queste parti. Come previsto, sono costretta a smuovere le acque di nuovo perchè qualcosa non va nel verso giusto per quanto riguarda la pagina dei presenti estesi.
La parte riguardante l'elenco laterale dei presenti e la "rimozione" delle icone, ecc ecc si è risolto in brevissimo tempo. Il commento suggerito da Blancks è andato a buon fine :)
Adesso posto, invece, il codice e il css per quanto riguarda i presenti estesi. Il risultato ottenuto è il nome degli utenti uno di fianco all'altro e fuori dalla mappa principale, in alto a destra. Provando a spostarmi in altre chat, il risultato rimane uguale: icone, mp e nome utente se ne stanno in alto a destra senza seguire il luogo esatto, all'interno della chat.
<!-- Box presenti-->
<div class="pagina_presenti_estesa">
<div class="page_title">
<h2><?php echo gdrcd_filter('out', $MESSAGE['interface']['logged_users']['page_title']); ?></h2>
</div>
<div class="presenti_estesi">
<?php
/** * Abilitazione tooltip
* @author Blancks
*/
if ($PARAMETERS['mode']['user_online_state'] == 'ON') {
echo '<div id="descriptionLoc"></div>';
}
//Carico la lista presenti.
/** * Fix della query per includere l'uso dell'orario di uscita per capire istantaneamente quando il pg non è più connesso
* @author Blancks
*/
$query = "SELECT personaggio.nome, personaggio.cognome, personaggio.permessi, personaggio.sesso, personaggio.id_razza, razza.sing_m, razza.sing_f, razza.icon, personaggio.disponibile, personaggio.online_status, personaggio.is_invisible, personaggio.ultima_mappa, personaggio.ultimo_luogo, personaggio.posizione, personaggio.ora_entrata, personaggio.ora_uscita, personaggio.ultimo_refresh, mappa.stanza_apparente, mappa.nome as luogo, mappa_click.nome as mappa FROM personaggio LEFT JOIN mappa ON personaggio.ultimo_luogo = mappa.id LEFT JOIN mappa_click ON personaggio.ultima_mappa = mappa_click.id_click LEFT JOIN razza ON personaggio.id_razza = razza.id_razza WHERE personaggio.ora_entrata > personaggio.ora_uscita AND DATE_ADD(personaggio.ultimo_refresh, INTERVAL 4 MINUTE) > NOW() ORDER BY personaggio.is_invisible, personaggio.ultima_mappa, personaggio.ultimo_luogo, personaggio.nome";
$result = gdrcd_query($query, 'result');
echo '<table class="elenco_presenti">';
$ultimo_luogo_corrente = '';
$mappa_corrente = '';
while ($record = gdrcd_query($result, 'fetch')) {
//Stampo il nome del luogo
if ($record['is_invisible'] == 1) {
$luogo_corrente = $MESSAGE['status_pg']['invisible'][1];
} else {
if ($record['mappa'] != $mappa_corrente) {
$mappa_corrente = $record['mappa'];
echo '<tr class="mappa"><td>'.gdrcd_filter('out', $mappa_corrente).'</td></tr>';
}//if
if (empty($record['stanza_apparente'])) {
$luogo_corrente = $record['luogo'];
} else {
$luogo_corrente = $record['stanza_apparente'];
}//else
}
//Stampo il nome del luogo solo per il primo PG che vi e' posizionato
if (empty($luogo_corrente) === true) {
#echo 'ok';
/*if ($record['mappa']>=0){
$luogo_corrente = $PARAMETERS['names']['maps_location'];
} else {
$luogo_corrente = $PARAMETERS['names']['base_location'];
}//else*/
if ($ultimo_luogo_corrente != $luogo_corrente) {
$ultimo_luogo_corrente = $luogo_corrente;
echo '<tr class="luogo"><td>'.gdrcd_filter('out', $luogo_corrente).'</td></tr>';
} //if
} else {
if ($ultimo_luogo_corrente != $luogo_corrente) {
$ultimo_luogo_corrente = $luogo_corrente;
if ($record['is_invisible'] == 0) {
if (($PARAMETERS['mode']['mapwise_links'] == 'OFF')) { #||($record['ultima_mappa']==$_SESSION['mappa'])
echo '<tr class="luogo"><td><a href="main.php?dir='.$record['ultimo_luogo'].'&map_id='.$record['ultima_mappa'].'">'.gdrcd_filter('out', $luogo_corrente).'</a></td></tr>';
} else {
echo '<tr class="luogo"><td>'.gdrcd_filter('out', $luogo_corrente).'</td></tr>';
}
} else {
echo '<tr class="luogo"><td>'.gdrcd_filter('out', $luogo_corrente).'</td></tr>';
}//else
}
}//if
/** * Parametro di personalizzazione di uno stato online via tooltip
* @author Blancks
*/
$online_state = '';
if ($PARAMETERS['mode']['user_online_state'] == 'ON' && ! empty($record['online_status']) && $record['online_status'] != null) {
$record['online_status'] = trim(nl2br(gdrcd_filter('in', $record['online_status'])));
$record['online_status'] = strtr($record['online_status'], ["\n\r" => '', "\n" => '', "\r" => '', '"' => '"']);
$online_state = 'onmouseover="show_desc(event, \''.$record['online_status'].'\');" onmouseout="hide_desc();""';
}
//Stampo il PG
echo '<tr class="presente"'.$online_state.'>';
//Entrata, uscita PG
//Controllo da quanto il pg e' loggato
$activity = gdrcd_check_time($record['ora_entrata']);
//Se e' loggato da meno di 2 minuti
if ($activity <= 2) {
//Lo segnalo come appena entrato
echo '<img class="presenti_ico" src="imgs/icons/enter.gif" alt="'.gdrcd_filter('out', $MESSAGE['status_pg']['enter']).'" title="'.gdrcd_filter('out', $MESSAGE['status_pg']['enter']).'" />';
} else {
//Altrimenti e' semplicemente loggato
echo '<img class="presenti_ico" src="imgs/icons/blank.png" alt="'.gdrcd_filter('out', $MESSAGE['status_pg']['logged']).'" title="'.gdrcd_filter('out', $MESSAGE['status_pg']['logged']).'" />';
}//else
switch ($record['permessi']) {
case USER:
$alt_permessi = '';
break;
case GUILDMODERATOR:
$alt_permessi = $PARAMETERS['names']['guild_name']['lead'];
break;
case GAMEMASTER:
$alt_permessi = $PARAMETERS['names']['master']['sing'];
break;
case MODERATOR:
$alt_permessi = $PARAMETERS['names']['moderators']['sing'];
break;
case SUPERUSER:
$alt_permessi = $PARAMETERS['names']['administrator']['sing'];
break;
}//else
//Livello di accesso del PG (utente, master, admin, superuser)
echo '<img class="presenti_ico" src="imgs/icons/permessi'.$record['permessi'].'.gif" alt="'.gdrcd_filter('out', $alt_permessi).'" title="'.gdrcd_filter('out', $alt_permessi).'" />';
//Icona stato di disponibilità. E' sensibile se la riga che sto stampando corrisponde all'utente loggato.
$change_disp = ($record['disponibile'] + 1) % 3;
echo '<img class="presenti_ico" src="imgs/icons/disponibile'.$record['disponibile'].'.png" alt="'.gdrcd_filter('out', $MESSAGE['status_pg']['availability'][$record['disponibile']]).'" title="'.gdrcd_filter('out', $MESSAGE['status_pg']['availability'][$record['disponibile']]).'" />';
//Icona della razza pg
if ($record['icon'] == '') {
$record['icon'] = 'standard_razza.png';
}
echo '<img class="presenti_ico" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/races/'.$record['icon'].'" alt="'.gdrcd_filter('out', $record['sing_'.$record['sesso']]).'" title="'.gdrcd_filter('out', $record['sing_'.$record['sesso']]).'" />';
//Icona del genere del pg
echo '<img class="presenti_ico" src="imgs/icons/testamini'.$record['sesso'].'.png" alt="'.gdrcd_filter('out', $MESSAGE['status_pg']['gender'][$record['sesso']]).'" title="'.gdrcd_filter('out', $MESSAGE['status_pg']['gender'][$record['sesso']]).'" />';
//Nome pg e link alla sua scheda
echo '<a href="main.php?page=messages_center&op=create&destinatario='.gdrcd_filter('url', $record['nome']).'" class="link_sheet">MP</a> ';
//Nome pg e link alla sua scheda
echo ' <a href="main.php?page=scheda&pg='.$record['nome'].'" class="link_sheet gender_'.$record['sesso'].'">'.gdrcd_filter('out', $record['nome']);
if (empty($record['cognome']) === false) {
echo ' '.gdrcd_filter('out', $record['cognome']);
}
echo '</a> ';
echo '</tr>';
}//while
echo '</table>';
?>
</div>
</div>
<!-- Chiusura finestra del gioco -->
ECCO IL CSS
/****************************************************************************/
/* STILE DELLA FINESTRA PRESENTI */
/* HELP: Da qui è possibile modificare:
- I font ed i colori dei presenti
- Le dimensioni e la posizione della finestra dei presenti
- Lo sfondo della finestra dei presenti */
/*Frame dei presenti*/
div.presenti iframe.iframe_presenti {
width: 180px;
height: 520px;
border: none;
overflow: auto;
background-color: transparent;
}
div.presenti iframe.iframe_presenti body.transparent_body {
background-color: none;
}
div.luogo {
margin: 10px 0 0 0;
font-size: 13px;
font-weight: bolder;
}
div.presente {
font-weight: normal;
font-size: 12px;
}
div.link_presenti {
margin-top: 20px;
}
/*Icone di stato dei presenti*/
div.pagina_presenti img.sesso_ico,
div.pagina_presenti img.status_ico,
div.pagina_presenti img.disponibile,
div.pagina_presenti_estesa img.sesso_ico,
div.pagina_presenti_estesa img.status_ico,
div.pagina_presenti_estesa img.disponibile {
margin: 0 2px 0 0;
}
div.pagina_presenti img.disponibile_switch {
}
/*Link nella colonna presenti */
div.pagina_presenti a,
div.pagina_presenti a:visited,
div.pagina_presenti_estesa a,
div.pagina_presenti_estesa a:visited {
border: none;
}
div.pagina_presenti a:hover,
div.pagina_presenti_estesa a:hover {
border: none;
}
/*Testo nella colonna presenti*/
div.pagina_presenti table.elenco_presenti,
div.pagina_presenti_estesa table.elenco_presenti {
list-style-type: none;
list-style-position: inside;
padding: 0px;
margin: 0px;
text-align: left;
}
/*Nomi dei luoghi*/
div.pagina_presenti table.elenco_presenti td.luogo,
div.pagina_presenti_estesa table.elenco_presenti td.luogo {
font-size: 11px;
font-weight: bold;
margin: 3px 0 1px 8px;
text-transform: uppercase;
}
div.pagina_presenti_estesa table.elenco_presenti td.mappa {
font-size: 11px;
font-weight: bold;
margin: 3px 0 1px 0;
text-transform: uppercase;
border:1x solid red;
}
/* Nomi dei personaggi */
div.pagina_presenti ul.elenco_presenti li.presente,
div.pagina_presenti_estesa ul.elenco_presenti li.presente {
font-size: 11px;
margin: 0 0 0 5px;
}
div.pagina_presenti_estesa div.presenti_estesi {
margin-left: 150px;
}
/*Icone presenti*/
img.presenti_ico {
margin-left: 2px;
width: 10px;
height: 10px;
border: none;
}
table, td {
border:1px solid red;
}
quest'ultima voce del css, che riprendo in grassetto, mi segna il border solo attorno al nome delle chat e modifica quello delle tabelle di altre pagine, come il border della tabella della abilità all'interno della scheda del pg, ad esempio e le bacheche:
table, td {
border:1px solid red;
}
vi ringrazio ancora una volta della pazienza ç_ç
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!
New Orleans ↗
Foundation Galactic Frontier ↗
World of Warship ↗
Tibia ↗