[RISOLTO] gdrcd 5.5.1 - terzo genere e sezioni scheda
[RISOLTO] gdrcd 5.5.1 - terzo genere e sezioni scheda postato il 30/07/2021 18:42:12 nel forum programmazione, open source e hosting e modificato da alejandra il 05/08/2021 21:13:44
Eccomi di nuovo qui a scassare le pelotas ^^"
Nella vecchia versione 5.2 ero riuscita ad inserire nella scelta del genere del personaggio anche il genere X (per intersex, non binary, etc...) oltre ad aver messo anche la possibilità di aprire storia, descrizione fisica, affetti e note master che si aprivano in una nuova pagina (grazie ad una patch) ma nel trasportare tutto in 5.5.1 non riesco ad ottenere la stessa cosa. Qualcuno sa spiegarmi come si fa come se avessi 6 anni?
Pagine → 1
02/08/2021 09:51:43
alejandra ha scritto: ...
Per inserire, in fase di iscrizione, un qualsiasi nuovo genere, non devi fare altro che modificare in themes/{theme_scelto}/home/iscrizione.php questa porzione di codice:
<!-- Genere -->
<div class="form_label">
<?php echo gdrcd_filter('out', $MESSAGE['register']['fields']['gender']); ?>
</div>
<div class="form_field">
<select name="genere">
<option value="m" <?php if(gdrcd_filter('get', $_POST['genere']) == 'm') {
echo 'SELECTED';
} ?> >
<?php echo gdrcd_filter('out', $MESSAGE['register']['fields']['gender_m']); ?>
</option>
<option value="f" <?php if(gdrcd_filter('get', $_POST['genere']) == 'f') {
echo 'SELECTED';
} ?> >
<?php echo gdrcd_filter('out', $MESSAGE['register']['fields']['gender_f']); ?>
</option>
</select>
</div>
aggiungendo una nuova opzione alla selezione, ricordandoti poi di modificare anche il IT-it.vocabulary.php aggiungendo il nuovo genere.
Ad esempio, puoi fare così:
<!-- Genere -->
<div class="form_label">
<?php echo gdrcd_filter('out', $MESSAGE['register']['fields']['gender']); ?>
</div>
<div class="form_field">
<select name="genere">
<option value="m" <?php if(gdrcd_filter('get', $_POST['genere']) == 'm') {
echo 'SELECTED';
} ?> >
<?php echo gdrcd_filter('out', $MESSAGE['register']['fields']['gender_m']); ?>
</option>
<option value="f" <?php if(gdrcd_filter('get', $_POST['genere']) == 'f') {
echo 'SELECTED';
} ?> >
<?php echo gdrcd_filter('out', $MESSAGE['register']['fields']['gender_f']); ?>
</option>
<option value="x" <?php if(gdrcd_filter('get', $_POST['genere']) == 'x') {
echo 'SELECTED';
} ?> >
<?php echo gdrcd_filter('out', $MESSAGE['register']['fields']['gender_x']); ?>
</option>
</select>
</div>
e poi in IT-it.vocabulary.php così:
$MESSAGE['register']['fields']['gender_m'] = 'Uomo';
$MESSAGE['register']['fields']['gender_f'] = 'Donna';
$MESSAGE['register']['fields']['gender_x'] = 'Genere X';
Questo per quanto concerne l'iscrizione.
Successivamente, PER COME RAGIONA GDRCD, devi necessariamente andare a modificare la tabella delle razze (per intenderci, razza) in DB aggiungendo anche la dicitura per il tuo nuovo genere.
Una cosa del genere:
ALTER TABLE razza
ADD COLUMN sing_x char(50) default '' not null AFTER sing_f;
E quindi popolare questo campo per tutte le razze.
Oppure aggiungere in Gestione > Gestione Razze (il file è pages/gestione_razze.inc.php ) un input per una nuova razza, cambiando questa riga:
<div class='form_label'>
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['name_sm']); ?>
</div>
<div class='form_field'>
<input name="sing_m" value="<?php echo $loaded_record['sing_m']; ?>" />
</div>
<div class='form_label'>
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['name_sf']); ?>
</div>
<div class='form_field'>
<input name="sing_f" value="<?php echo $loaded_record['sing_f']; ?>" />
</div>
in questa:
<div class='form_label'>
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['name_sm']); ?>
</div>
<div class='form_field'>
<input name="sing_m" value="<?php echo $loaded_record['sing_m']; ?>" />
</div>
<div class='form_label'>
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['name_sf']); ?>
</div>
<div class='form_field'>
<input name="sing_f" value="<?php echo $loaded_record['sing_f']; ?>" />
</div>
<div class='form_label'>
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['name_sx']); ?>
</div>
<div class='form_field'>
<input name="sing_x" value="<?php echo $loaded_record['sing_x']; ?>" />
</div>
Questo comporterebbe due altre modifiche. Sempre nello stesso file (pages/gestione_razze.inc.php) bisogna modificare le query che vanno ad aggiungere/modificare la razza, quindi:
if($_POST['op'] == 'insert') {
/*Processo le informazioni ricevute dal form*/
$is_visible = ((isset($_POST['visible']) == true) && ($_POST['visible'] == 'is_visible')) ? 1 : 0;
$is_available = ((isset($_POST['available']) == true) && ($_POST['available'] == 'is_available')) ? 1 : 0;
$immagine = ($_POST['immagine'] == "") ? "standard_razza.png" : gdrcd_filter('in', $_POST['immagine']);
$icon = ($_POST['icon'] == "") ? "standard_razza.png" : gdrcd_filter('in', $_POST['icon']);
/*Eseguo l'inserimento*/
gdrcd_query("INSERT INTO razza (nome_razza, sing_m, sing_f, sing_x, descrizione, visibile, iscrizione, immagine, icon, bonus_car0, bonus_car1, bonus_car2, bonus_car3, bonus_car4, bonus_car5, url_site) VALUES ('".gdrcd_filter('in', $_POST['nome'])."', '".gdrcd_filter('in', $_POST['sing_m'])."', '".gdrcd_filter('in', $_POST['sing_f'])."',
'".gdrcd_filter('in', $_POST['sing_x'])."', '".gdrcd_filter('in', $_POST['descrizione'])."', ".$is_visible.", ".$is_available.", '".$immagine."', '".$icon."', ".gdrcd_filter('num', $_POST['car0']).", ".gdrcd_filter('num', $_POST['car1']).", ".gdrcd_filter('num', $_POST['car2']).", ".gdrcd_filter('num', $_POST['car3']).", ".gdrcd_filter('num', $_POST['car4']).", ".gdrcd_filter('num', $_POST['car5']).", '".gdrcd_filter('in', $_POST['url_site'])."')");
?>
<div class="warning">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['inserted']); ?>
</div>
<!-- Link di ritorno alla visualizzazione di base -->
<div class="link_back">
<a href="main.php?page=gestione_razze">
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['link']['back']); ?>
</a>
</div>
<?php
}
/* Cancellatura in un record */
if($_POST['op'] == 'erase') {
/*Eseguo la cancellatura*/
gdrcd_query("DELETE FROM razza WHERE id_razza=".gdrcd_filter('num', $_POST['id_record'])." LIMIT 1");
/*Aggiorno i personaggi*/
gdrcd_query("UPDATE personaggio SET id_razza=1000 WHERE id_razza=".gdrcd_filter('num', $_POST['id_record'])."");
?>
<div class="warning">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['deleted']); ?>
</div>
<!-- Link di ritorno alla visualizzazione di base -->
<div class="link_back">
<a href="main.php?page=gestione_razze">
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['link']['back']); ?>
</a>
</div>
<?php
}
/*Modifica di un record*/
if($_POST['op'] == 'modify') {
/*Processo le informazioni ricevute dal form*/
$is_visible = ((isset($_POST['visible']) == true) && ($_POST['visible'] == 'is_visible')) ? 1 : 0;
$is_available = ((isset($_POST['available']) == true) && ($_POST['available'] == 'is_available')) ? 1 : 0;
$immagine = ($_POST['immagine'] == "") ? "standard_razza.png" : gdrcd_filter('in', $_POST['immagine']);
$icon = ($_POST['icon'] == "") ? "standard_razza.png" : gdrcd_filter('in', $_POST['icon']);
/*Eseguo l'aggiornamento*/
gdrcd_query("UPDATE razza SET nome_razza ='".gdrcd_filter('in', $_POST['nome'])."', sing_m ='".gdrcd_filter('in', $_POST['sing_m'])."', sing_f ='".gdrcd_filter('in', $_POST['sing_f'])."', sing_x ='".gdrcd_filter('in', $_POST['sing_x'])."', descrizione ='".gdrcd_filter('in', $_POST['descrizione'])."', iscrizione = ".$is_available.", visibile = ".$is_visible.", icon = '".gdrcd_filter('in', $icon)."', immagine = '".gdrcd_filter('in', $immagine)."', bonus_car0 = ".gdrcd_filter('num', $_POST['car0']).", bonus_car1 = ".gdrcd_filter('num', $_POST['car1']).", bonus_car2 = ".gdrcd_filter('num', $_POST['car2']).", bonus_car3 = ".gdrcd_filter('num', $_POST['car3']).", bonus_car4 = ".gdrcd_filter('num', $_POST['car4']).", bonus_car5 = ".gdrcd_filter('num', $_POST['car5']).", url_site ='".gdrcd_filter('in', $_POST['site'])."' WHERE id_razza = ".gdrcd_filter('num', $_POST['id_record'])." LIMIT 1");
?>
<div class="warning">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['modified']); ?>
</div>
<!-- Link di ritorno alla visualizzazione di base -->
<div class="link_back">
<a href="main.php?page=gestione_razze">
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['races']['link']['back']); ?>
</a>
</div>
<?php
}
e poi, ovviamente, aggiornare il vocabolario:
$MESSAGE['interface']['administration']['races']['name_sm'] = 'Singolare maschile';
$MESSAGE['interface']['administration']['races']['name_sf'] = 'Singolare femminile';
$MESSAGE['interface']['administration']['races']['name_sx'] = 'Singolare X';
Io ho messo ovunque X per farti capire la Razza così come l'hai semplificata tu, ma puoi cambiarla come credi. Ma cerca di cambiare solo dove la cosa è descrittiva, per il resto (tipo i campi in DB) mantieni il singolo carattere come riferimento (x, a, b, etc).
Di rimando, dovrei modificare tutte le pagine in cui usi il genere o il nome della razza con genere impostando la possibilità che venga scelto anche quello nuovo.
Così, a primo acchito, mi viene da pensare:
- scheda.inc.php;
- presenti_estesi.inc.php;
- user_razze.php;
- user_razze.inc.php;
Poi, dipende da come hai aggiornato tu i file. Ma grosso modo si tratterà sempre di impostare il caso del nuovo genere.
Kasa.
02/08/2021 09:53:00
alejandra ha scritto: ... oltre ad aver messo anche la possibilità di aprire storia, descrizione fisica, affetti e note master che si aprivano in una nuova pagina (grazie ad una patch)...
Qui, invece, non ho compreso la richiesta:
aprire la scheda in una nuova scheda del Browser o in una nuova pagina di GDRCD e/o cosa?
Ti chiedo di essere un poco più specifica, se è possibile.
Kasa.
03/08/2021 10:36:41
kasa ha scritto: [quote]alejandra ha scritto: ... oltre ad aver messo anche la possibilità di aprire storia, descrizione fisica, affetti e note master che si aprivano in una nuova pagina (grazie ad una patch)...
Qui, invece, non ho compreso la richiesta:
aprire la scheda in una nuova scheda del Browser o in una nuova pagina di GDRCD e/o cosa?
Ti chiedo di essere un poco più specifica, se è possibile.
Kasa.[/quote]
Intanto di nuovo grazie per l'aiuto e scusa per la poca chiarezza ^^". Praticamente in basso alla scheda avevo dei pulsanti (storia; descrizione; affetti; note master) che aprivano, ad esempio, la storia del pg in una nuova pagina del gdr invece di far vedere tutto in sequenza nella stessa pagina come è di default.
03/08/2021 10:56:24
alejandra ha scritto: ...
Tipo una nuova finestra all'interno del GDR (tipo modale) o in una nuova pagina del blocco centrale?
Kasa.
03/08/2021 11:01:06
kasa ha scritto: [quote]alejandra ha scritto: ...
Tipo una nuova finestra all'interno del GDR (tipo modale) o in una nuova pagina del blocco centrale?
Kasa.[/quote]
Ok qui pecco d'ignoranza. Quando clicco sul pulsante rimango nella scheda del pg ma è come se si aprisse una nuova sezione un po' come quando vai in inventario o nello zaino
03/08/2021 11:31:24
nel file scheda.inc.php c'è questo
<div class="profilo_voce">
<div class="profilo_voce_label">
<?php echo gdrcd_filter('out', $PARAMETERS['names']['race']['sing']); ?>:
</div>
<div class="profilo_voce_valore">
<?php if((empty($personaggio['sing_f']) == false) || (empty($personaggio['sing_m']) == false){
echo ($personaggio['sesso'] == 'f') ? gdrcd_filter('out', $personaggio['sing_f']) : gdrcd_filter('out', $personaggio['sing_m']);
} else {
echo gdrcd_filter('out', $PARAMETERS['names']['race']['sing'].' '.$MESSAGE['interface']['sheet']['profile']['no_race']);
} ?>
</div>
</div>
come posso aggiungere sign_x? c'ho provato ma mi sa che l'ho fatto nel modo sbagliato ç_ç
04/08/2021 11:56:27
alejandra ha scritto: ...
In questo modo:
<div class="profilo_voce_valore">
<?php if( (empty($personaggio['sing_'.$personaggio['sesso']]) == false) ) {
echo gdrcd_filter('out', $personaggio['sing_'.$personaggio['sesso']]);
} else {
echo gdrcd_filter('out', $PARAMETERS['names']['race']['sing'].' '.$MESSAGE['interface']['sheet']['profile']['no_race']);
} ?>
</div>
Se hai seguito i passaggi, dovrebbe funzionarti senza problemi. Ovviamente, nella query di selezione dei dati del personaggio, devi inserire anche sing_x tra i campi selezionati.
Ti faccio notare questo passaggio, giusto per farti capire il perchè ho fatto così:
$personaggio['sing_'.$personaggio['sesso']]);
In base al genere del personaggio (che può essere m, f o x), io vado a prendere la relativa nomenclatura razziale senza dover iniziare a fare i singoli controlli if per ogni caso. È un metodo un poco meno brigoso per fare questo genere di controlli.
Kasa.
04/08/2021 12:01:20
alejandra ha scritto:
Ok qui pecco d'ignoranza. Quando clicco sul pulsante rimango nella scheda del pg ma è come se si aprisse una nuova sezione un po' come quando vai in inventario o nello zaino
Per quanto riguarda questo aspetto, la soluzione meno complessa è creare delle nuove pagine dedicate a questi singoli aspetti, come potrebbero essere un scheda_descrizione.inc.php o un scheda_note.inc.php (basandoti eventualmente sulle altre pagine dedicate già presenti, come scheda_log.inc.php e via dicendo ), e poi inserire i bottoni o nel menù sotto al titolo della pagina o dove preferisci tu ( anche qui, basandoti sui bottoni già esistenti ).
Kasa.
05/08/2021 16:39:04
kasa ha scritto: [quote]alejandra ha scritto: ...
In questo modo:
<div class="profilo_voce_valore">
<?php if( (empty($personaggio['sing_'.$personaggio['sesso']]) == false) ) {
echo gdrcd_filter('out', $personaggio['sing_'.$personaggio['sesso']]);
} else {
echo gdrcd_filter('out', $PARAMETERS['names']['race']['sing'].' '.$MESSAGE['interface']['sheet']['profile']['no_race']);
} ?>
</div>
Se hai seguito i passaggi, dovrebbe funzionarti senza problemi. Ovviamente, nella query di selezione dei dati del personaggio, devi inserire anche sing_x tra i campi selezionati.
Ti faccio notare questo passaggio, giusto per farti capire il perchè ho fatto così:
$personaggio['sing_'.$personaggio['sesso']]);
In base al genere del personaggio (che può essere m, f o x), io vado a prendere la relativa nomenclatura razziale senza dover iniziare a fare i singoli controlli if per ogni caso. È un metodo un poco meno brigoso per fare questo genere di controlli.
Kasa.[/quote]
Perfetto <3
riscontro solo un unico problema adesso

praticamente quando uso Amministra mi fa vedere solo f e m ma non la x
05/08/2021 16:54:30 e modificato da kasa il 05/08/2021 16:55:10
alejandra ha scritto: ...
Purtroppo GDRCD non ha un metodo di integrazione automatica dei nuovi generi e bisogna modificare a mano i vari punti in cui vengono trattati questi.
La sezione pages/scheda_gst.inc.php e una di queste.
Sarà sufficiente, in ogni caso, modificare questa riga:
<div class='form_field'>
<select name="modifica_sesso">
<option value="m" <?php if ($record['sesso'] == 'm')
{
echo 'selected';
} ?> />
m</option>
<option value="f" <?php if ($record['sesso'] == 'f')
{
echo 'selected';
} ?> />
f</option>
</select>
</div>
aggiungendo l'opzione per il genere x, in modo analogo a come è stato fatto per l'iscrizione, in themes/{theme_scelto}/home/iscrizione.php.
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!
Project Entropy ↗
Exclusive Villa GdR ↗
Raja Dunia ↗
World of Tanks ↗
Hero Wars ↗
Cafuné ↗
Fallen Gods ↗
CRSED: F.O.A.D. ↗
Crossout ↗