GDRCD (5.1 modificato) - Diario Pg
GDRCD (5.1 modificato) - Diario Pg postato il 27/09/2021 11:31:04 nel forum programmazione, open source e hosting
Salve a tutti!
A tempo perso, poiché non la reputo una modifica da effettuare a breve termine, mi ha sfiorata l'idea di creare un diario del Pg che sia più funzionale rispetto all'avere una pagina unica che raccoglie tutta la parte txt.
Mi spiego meglio:
Se la sezione "Diario" seguisse grossomodo l'impostazione dei Topic delle bacheche, con relativa Creazione nuovo argomento/modifica/eliminazione con annessa data, di certo renderebbe più semplice la consultazione di ogni voce creata. Inoltre, se fosse possibile introdurre anche la possibilità di rendere certe voci visibili/invisibili che possano essere consultabili dal solo utente o meno, sarebbe davvero la ciliegina sulla torta.
Il punto è...qualcuno può indirizzarmi sull'ordine degli step da seguire per creare una cosa simile o da che modulo di GDRCD dovrei prendere esempio/spunto? Perchè la sezione del Forum è un po' ingarbugliata da replicare e magari tra un passaggio e l'altro potrei incappare in diversi errori (e non è nemmeno detto che sia la via giusta da seguire)
Premetto che non sono una programmatrice ma se riuscissi a creare qualcosa del genere, sarei ben felice di metterla a disposizione della community :)
Grazie per la cortese attenzione ^^
27/09/2021 11:55:18 e modificato da haruka il 27/09/2021 12:00:58
Potresti ragionare su qualcosa di simile al pacchetto news che mi pare fosse tra gli open source.
Una nuova tabella in forum che puoi chiamare diari
campi:
id_diario
data
titolo
proprietario
testo
Ogni singolo personaggio dovrebbe poter fare un inserimento in questa nuova tabella. Nel suo avatar dovrebbero essere visualizzati solo gli inserimenti che riportano il suo nome come propritario, e lui dovrebbe poterli modificare e/o cancellare.
Così su due piedi, eh?
27/09/2021 12:17:47 e modificato da staff shadowland il 27/09/2021 12:21:02
In effetti potrebbe essere una idea! Però è un modulo che andrebbe inserito nella scheda del singolo Pg, il Forum era inteso solo come possibile elemento da cui trarre spunto per il possibile sviluppo della faccenda :)
Farò qualche tentativo, Grazie *-*
P.s. Mi sono ricordata però che così facendo, il titolo non diventa cliccabile per ogni singola sezione così da rimandare l'utente soltanto a quella data pagina :/ sviluppando una cosa simile, andrei praticamente ad avere il medesimo risultato di una pagina unica in txt soltanto con capitoli separati (un po' come avviene per le varie sezioni base di GDRCD)
27/09/2021 12:33:50
Alla tabella dovresti aggiungere "titolo".
Dovresti avere una pagina nell'avatar che elenca solo i titoli. E cliccando sul singolo titolo, la visualizzazione dell'inserimento.
Così ha senso?
27/09/2021 12:37:31
Esatto. Nella versione che consultai tempo fa per le news, il titolo non mi pare fosse cliccabile e che dunque non rimandasse all'argomento ma che fosse fissato lì come semplice "titolo" per l'appunto. Mi sono persa qualche nuova versione? °^°
27/09/2021 13:10:15
Appunto, andrebbe modificato :)
Vediamo se più tardi riesco a fare qualcosa e a postare qualche codice per fare dei test ;)
27/09/2021 13:35:46 e modificato da haruka il 28/09/2021 19:13:07
Intanto, creiamo la tabella in database tramite phpmyadmin
--
-- Struttura della tabella diari
--
CREATE TABLE IF NOT EXISTS diari (
id_diario int(11) NOT NULL AUTO_INCREMENT,
data date NOT NULL,
titolo varchar(30) CHARACTER SET utf8 NOT NULL,
testo text CHARACTER SET utf8 NOT NULL,
proprietario varchar(30) CHARACTER SET utf8 NOT NULL,
del INT(2) NOT NULL DEFAULT '0',
PRIMARY KEY (id_diario)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Dump dei dati per la tabella diari
Ho editato per aggiungere il campo "del"
27/09/2021 13:58:26
Step 2 (per gdrcd 5.5 - questa cosa va adattata, su gdrcd 5.1 non so come vengono richiamati i menu della scheda).
In ogni singola scheda di gdrcd 5.5 esiste il menu gestito dal file pages/scheda/menu.inc.php
Qui andrebbe inserito
<a href="main.php?page=scheda_listadiari&pg=<?php echo gdrcd_filter('url', $_REQUEST['pg']); ?>">
Diario
</a>
Il file "scheda_listadiari.inc.php" non esiste ancora. E' il next step :)
28/09/2021 11:19:47 e modificato da haruka il 01/10/2021 13:19:58
Il contenuto del file scheda_listadiari.inc.php - che mostra un elenco cliccabile delle voci. Manca un ultimo file per completare il "pacchetto".
<div class="menu_scheda"><!-- Menu scheda -->
<div class="menu_scheda_bottom">
<?php include ('scheda/menu.inc.php'); ?>
</div></div>
<div class="pagina_scheda">
<!--- Eriannen Copyright (c) 2013 L'uso di questo script è libero senza alcuna restrizione [email protected] --->
<?php /*HELP: E' possibile modificare la scheda agendo su scheda.css nel tema scelto, oppure sostituendo il codice che segue la voce "Scheda del personaggio"*/ ?>
<?php
/********* CARICAMENTO PERSONAGGIO E DIARI ***********/
//Se non e' stato specificato il nome del pg
if (isset($_REQUEST['pg'])===FALSE){
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';
} else {
$query = "SELECT * FROM diari WHERE proprietario = '".gdrcd_filter('in',$_REQUEST['pg'])."' AND del = '0' ORDER BY id_diario DESC";
$personaggio = "SELECT * FROM personaggio WHERE nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'";
$result = gdrcd_query($query, 'result');
//Se non esiste il pg
if ((($_SESSION['login'] == gdrcd_filter('out', $_REQUEST['pg'])) || ($_SESSION['permessi'] >= MODERATOR)) && (gdrcd_filter('get',
$_POST['op']) == 'insert_diario'))
{
gdrcd_query("INSERT diari (titolo, testo, proprietario, data) VALUES ('".gdrcd_filter('in', $_POST['titolo'])."','".gdrcd_filter('in', $_POST['testo'])."','".$_SESSION['login']."', NOW())");
echo '<div class="warning">' . gdrcd_filter('out', $MESSAGE['warning']['modified']) . '</div>';
}
if (isset($_REQUEST['op'])===FALSE){
?>
<!--- SCHEDA DEL PERSONAGGIO --->
<div class="ritratto_nome_scheda">
<span class="titolo">
Diari Privati di <?php echo gdrcd_filter('in',$_REQUEST['pg']) ?>
</span>
</div>
<div class="page_body">
<div class="background"><!-- Background, affetti, robe varie -->
<div class="titolo_box">
Titolo
</div>
<div class="body_box_scheda">
<?php while($row=gdrcd_query($result, 'fetch')){ ?>
<ul>
<li>
<a href="main.php?page=scheda_diario&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>&id=<?php echo gdrcd_bbcoder(gdrcd_filter('out',$row['id_diario'])); ?> "> <?php echo gdrcd_bbcoder(gdrcd_filter('out',$row['titolo'])); ?></a> <span style="color: rgba(0,0,0,0.4);"><i>( <?php echo gdrcd_format_date($row['data']); ?> )</i></span>
</li>
</ul>
<?php } ?>
</div>
</div><!-- diario -->
<div>
<!--- AREA ADMIN --->
<?php if (($_SESSION['login'] == gdrcd_filter('out', $_REQUEST['pg'])) || ($_SESSION['permessi'] >= MODERATOR)){ ?>
<div>
Inserisci una nuova pagina del tuo diario
</div>
<div class="form_gioco">
<form action="main.php?page=scheda_listadiari&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>" method="post">
<input type="hidden" name="op" value="insert_diario"/>
<div class='form_field'>
<input type="text" name="titolo"
placeholder="Titolo"
class="form_input"/>
</div>
<div class='form_field'>
<textarea type="textbox" name="testo"
class="form_textarea"></textarea>
</div>
<div class='form_submit'>
<input type="submit" value="<?php echo $MESSAGE['interface']['forms']['submit']; ?>"/>
</div>
</form>
</div>
<?php } ?>
</div>
<?php
} ?>
<!-- Link a piè di pagina -->
<div class="link_back">
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
<?php }//else
/********* CHIUSURA SCHEDA **********/
?>
</div><!-- Pagina -->
modificato per aggiungere il "del" e sistemare un errore di permessi.
29/09/2021 11:58:55 e modificato da haruka il 30/09/2021 14:32:07
Ultimi tre file. Il primo: scheda_diario.inc.php
<div class="menu_scheda"><!-- Menu scheda -->
<div class="menu_scheda_bottom">
<?php include ('scheda/menu.inc.php'); ?>
</div></div>
<div class="pagina_scheda">
<!--- Eriannen Copyright (c) 2013 L'uso di questo script è libero senza alcuna restrizione [email protected] --->
<?php /*HELP: E' possibile modificare la scheda agendo su scheda.css nel tema scelto, oppure sostituendo il codice che segue la voce "Scheda del personaggio"*/ ?>
<?php
/********* CARICAMENTO PERSONAGGIO E DIARI ***********/
//Se non e' stato specificato il nome del pg
if (isset($_REQUEST['pg'])===FALSE){
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';
} else {
$query = "SELECT * FROM diari WHERE id_diario = '".gdrcd_filter('in',$_REQUEST['id'])."' ORDER BY id_diario DESC";
$personaggio = "SELECT * FROM personaggio WHERE nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'";
$result = gdrcd_query($query, 'result');
//Se non esiste il pg
if (gdrcd_query($result, 'num_rows')==0){echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';}
else {
$query = "SELECT * FROM diari WHERE id_diario = '".gdrcd_filter('in',$_REQUEST['id'])."' ORDER BY id_diario DESC";
$result=gdrcd_query($query, 'result');
if ((($_SESSION['login'] == gdrcd_filter('out', $_REQUEST['pg'])) || ($_SESSION['permessi'] >= MODERATOR)) && (gdrcd_filter('get',
$_POST['op']) == 'insert_diario'))
{
gdrcd_query("INSERT diari (titolo, testo, proprietario, data) VALUES ('".gdrcd_filter('in', $_POST['titolo'])."','".gdrcd_filter('in', $_POST['testo'])."','".$_SESSION['login']."', NOW())");
echo '<div class="warning">' . gdrcd_filter('out', $MESSAGE['warning']['modified']) . '</div>';
}
if (isset($_REQUEST['op'])===FALSE){
?>
<!--- SCHEDA DEL PERSONAGGIO --->
<div class="ritratto_nome_scheda">
<span class="titolo">
<?php while($row=gdrcd_query($result, 'fetch')) { echo gdrcd_bbcoder(gdrcd_filter('out',$row['titolo']));?>
</span>
</div>
<div class="page_body">
<div class="background"><!-- Background, affetti, robe varie -->
<div class="titolo_box">
Titolo
</div>
<div class="body_box_scheda">
<div class="testodiario">
<?php echo gdrcd_bbcoder(gdrcd_filter('out',$row['testo'])); ?>
</div>
<div class="datadiario">
<?php echo gdrcd_format_date($row['data']); ?>
</div>
</div>
</div><!-- diario -->
<div class="forum_post_modify">
<?php
if (($_SESSION['login'] == gdrcd_filter('out', $_REQUEST['pg'])) || ($_SESSION['permessi'] >= MODERATOR)){
?>
<a href="main.php?page=modifica_diario&what=<?php echo $row['id_diario']; ?>">[<?php echo $MESSAGE['interface']['forums']['link']['edit']; ?>]</a>
<a href="main.php?page=delete_diario&what=<?php echo $row['id_diario']; ?>">[<?php echo gdrcd_filter('out', $MESSAGE['interface']['forums']['link']['delete']); ?>]</a>
<?php
}
?>
<?php } ?>
</div>
<div>
<!--- AREA ADMIN --->
</div>
<?php
} ?>
<!-- Link a piè di pagina -->
<div class="link_back">
<a href="main.php?page=scheda_listadiari&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
<?php }//else
}//else
/********* CHIUSURA SCHEDA **********/
?>
</div><!-- Pagina -->
29/09/2021 11:59:46 e modificato da haruka il 11/10/2021 15:26:31
Il secondo: modifica_diario.inc.php
<div class="menu_scheda"><!-- Menu scheda -->
<div class="menu_scheda_bottom">
<?php include ('scheda/menu.inc.php'); ?>
</div></div>
<?php if (($_SESSION['login'] == gdrcd_filter('out', $_REQUEST['pg'])) || ($_SESSION['permessi'] >= MODERATOR)) {
$row = gdrcd_query("SELECT * FROM diari WHERE id_diario=".gdrcd_filter('num', $_REQUEST['what'])."");
if ((gdrcd_filter('get', $_POST['op']) == 'modifica_diario')) {
gdrcd_query("UPDATE diari SET testo = '".gdrcd_filter('in', $_POST['testo'])."', titolo = '".gdrcd_filter('in', $_POST['titolo'])."' WHERE id_diario = ".gdrcd_filter('num', $_POST['id_diario'])." LIMIT 1");
echo '<div class="warning">' . gdrcd_filter('out', $MESSAGE['warning']['modified']) . '</div>';
?>
<div class="link_back">
<a href="main.php?page=scheda_listadiari&pg=<?php echo gdrcd_filter('out', $_REQUEST['pg']) ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
<?php
echo '<style> .panels_box {display:none;} </style>';
}
?>
<div class="panels_box">
<div class="form_gioco">
<form action="main.php?page=modifica_diario&pg=<?php echo $row['proprietario']; ?>" method="post">
<div class="form_label">
Titolo
</div>
<div class='form_field'>
<input type="text" name="titolo"
value="<?php echo $row['titolo']; ?>"
class="form_input"/>
</div>
<div class="form_label">
Testo
</div>
<div class="form_field" id="ckeditor">
<textarea name="testo" /><?php echo $row['testo']; ?></textarea>
<script type="text/javascript">
CKEDITOR.replace( 'testo' );
</script>
</div>
<div class="form_submit">
<input type="hidden" name="op" value="modifica_diario"/>
<input type="hidden" name="id_diario" value="<?php echo gdrcd_filter('num', $_REQUEST['what']); ?>" />
<input type="submit" name="dummy" value="<?php echo gdrcd_filter('out', $MESSAGE['interface']['forms']['submit']); ?>" />
</div>
</form>
</div>
</div>
<div class="link_back">
<a href="main.php?page=scheda_listadiari&pg=<?php echo $row['proprietario']; ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
</div>
<?php }//else
else echo '<div class="error">Non sei autorizzato a modificare un diario altrui</div>';
?>
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Crossout ↗
Fallen Gods ↗
AlterEgo ↗
State of Survival ↗
Tiles Survive ↗
Enlisted ↗
Hero Wars ↗