gdrcd 5/5.1 Note pad per chat
gdrcd 5/5.1 Note pad per chat postato il 25/02/2012 02:48:02 nel forum programmazione, open source e hosting e modificato da papy il 22/03/2012 23:54:03
Ragazzi ho visto alcune chat su siti basati su GDR-CD5 , dotate di un pratico blocco note.
Qualcuno sa se esiste un pacchetto aggiuntivo per poter inserire questa utilità a gdrcd5.1 ?
Grazie
Pagine → 1
16/03/2012 17:11:20
mmm.. forse non mi sono spiegato bene, visto che nessuno mi si è filato.
La mia considerazione parte dal fatto che la finestra di input messaggi della chat è piuttosto piccola e non tutti trovano comodo usare word per fare copy & paste.
L'idea è quella di inserire nella chat un pulsante che apra una finestra di pop up che in pratica replichi i comandi della chat, ma con una finestra di input decisamente piu' grande.
Ora, visto che sono un grafico, le mie conoscenze sono limitate a qualche correzione, non certo a creare codice. Ad ogni modo con la testardaggine dell'andare per esclusione, ho creato il pulsante e una paginetta che viene richiamata nella finestra di pop up. Poi ho copiato parte del codice della chat ed aggiungendo il comando
<?php
require '../ref_header.inc.php';
?>
A questo punto sono riuscito a visualizzare i vari comandi.
Solo che ovviamente il tutto non funziona (né mi illudevo di cavarmela così facilmente )
Non è che c'e' qualche anima pia disposta a dare un'occhiata ? La patch potrebbe essere utile a molti ed io ovviamente non esiterei a renderla disponibile.
Allego il pastrocchio che ho fatto e che ho chiamato chat2.php :
<?php
require '../ref_header.inc.php';
?>
<?php /* HELP: Frame della chat */
/* Tipi messaggio: (A azione, P parlato, N PNG, M Master, I Immagine, S sussurro, D dado, C skill check, O uso oggetto) */
/*Seleziono le info sulla chat corrente*/
$info = gdrcd_query("SELECT nome, stanza_apparente, invitati, privata, proprietario, scadenza FROM mappa WHERE id=".$_SESSION['luogo']." LIMIT 1");
?>
<div class="pagina_frame_chat">
<div class="page_body">
<?php
//e' una stanza privata?
if ($info['privata']==1) {
$allowance=FALSE;
if ( (($info['proprietario']==gdrcd_capital_letter($_SESSION['login'])) || (strpos($_SESSION['gilda'], $info['proprietario'])!=FALSE) || (strpos($info['invitati'], gdrcd_capital_letter($_SESSION['login']))!=FALSE) ||
(($PARAMETERS['mode']['spyprivaterooms']=='ON')&&($_SESSION['permessi']>MODERATOR))) && ($info['scadenza']>strftime('%Y-%m-%d %H:%M:%S')) ) {$allowance=TRUE;}
} else {$allowance=TRUE;}
//se e' privata e l'utente non ha titolo di leggerla
if ($allowance === FALSE) {
echo '<div class="warning">'.$MESSAGE['chat']['whisper']['privat'].'</div>';
//echo $info['invitati']; echo gdrcd_capital_letter($_SESSION['login']);
} else {
?>
<?php $_SESSION['last_message']=0; ?>
<div style="height: 1; width: 1;">
<iframe src ="pages/chat.inc.php?ref=30&chat=yes" class="iframe_chat" id="chat_frame" name="chat_frame" frameborder="0" allowtransparency="true">
</iframe>
</div>
<div id='pagina_chat' class="chat_box">
</div>
<div class="panels_box"><div class="form_chat">
<!-- Form messaggi -->
<div class="form_row">
<form action="pages/chat.inc.php?ref=10&chat=yes" method="post" target="chat_frame" id="chat_form_messages">
<div class="casella_chat">
<select name="type" id="type">
<option value="0"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][0]);//parlato ?></option>
<option value="1"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][1]);//azione ?></option>
<option value="4"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][4]);//sussurro ?></option>
<?php if($_SESSION['permessi']>=GAMEMASTER){ ?>
<option value="2"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][2]);//master ?></option>
<option value="3"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][3]);//png ?></option>
<?php } ?>
<?php if(($info['privata']==1)&&(($info['proprietario']==$_SESSION['login'])||((is_numeric($info['proprietario'])===TRUE)&&(strpos($_SESSION['gilda'], ''.$info['proprietario']))))){ ?>
<option value="5"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][5]);//invita ?></option>
<option value="6"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][6]);//caccia ?></option>
<option value="7"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type'][7]);//elenco ?></option>
<?php }//if ?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['type']['info']);?></span>
</div>
<div class="casella_chat">
<input name="tag" id="tag" value="" />
<br/><span class="casella_info">
<?php echo gdrcd_filter('out',$MESSAGE['chat']['tag']['info']['tag'].$MESSAGE['chat']['tag']['info']['dst']);
if($_SESSION['permessi']>=GAMEMASTER){echo gdrcd_filter('out',$MESSAGE['chat']['tag']['info']['png']);} ?>
</span>
</div>
<div class="casella_chat">
<input name="message" id="message" value="" />
<br/><span class="casella_info">
<?php echo gdrcd_filter('out',$MESSAGE['chat']['tag']['info']['msg']); ?>
</span>
</div>
<div class="casella_chat">
<input type="submit" value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['forms']['submit']); ?>" />
<input type="hidden" name="op" value="new_chat_message" />
</div>
</form>
</div>
<!-- Form messaggi -->
<?php if(($PARAMETERS['mode']['skillsystem']=='ON')||($PARAMETERS['mode']['dices']=='ON')){ ?>
<div class="form_row">
<form action="pages/chat.inc.php?ref=30&chat=yes" method="post" target="chat_frame" id="chat_form_actions">
<?php if($PARAMETERS['mode']['skillsystem']=='ON'){ ?>
<div class="casella_chat">
<?php $result = gdrcd_query("SELECT id_abilita, nome FROM abilita WHERE id_razza=-1 OR id_razza IN (SELECT id_razza FROM personaggio WHERE nome = '".$_SESSION['login']."') ORDER BY nome", 'result'); ?>
<select name="id_ab" id="id_ab">
<option value="no_skill"></option>
<?php while($row = gdrcd_query($result, 'fetch'))
{ ?>
<option value="<?php echo $row['id_abilita']; ?>">
<?php echo gdrcd_filter('out',$row['nome']); ?>
</option>
<?php }//while
gdrcd_query($result, 'free');
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['skills']);?></span>
</div>
<div class="casella_chat">
<select name="id_stats" id="id_stats">
<option value="no_stats"></option>
<?php
/** * Questo modulo aggiunge la possibilità di eseguire prove col dado e caratteristica.
* Pertanto sono qui elencate tutte le caratteristiche del pg.
* @author Blancks
*/
foreach ($PARAMETERS['names']['stats'] as $id_stats => $name_stats)
{
if (is_numeric(substr($id_stats, 3)))
{
?>
<option value="stats_<?php echo substr($id_stats, 3); ?>"><?php echo $name_stats; ?></option>
<?php
}
}
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['stats']);?></span>
</div>
<?php } else { echo '<input type="hidden" name="id_ab" id="id_ab" value="no_skill">';}?>
<?php if($PARAMETERS['mode']['dices']=='ON'){ ?>
<div class="casella_chat">
<select name="dice" id="dice">
<option value="no_dice"></option>
<?php
/** * Tipi di dado personalizzati da config
* @author Blancks
*/
foreach ($PARAMETERS['settings']['skills_dices'] as $dice_name => $dice_value)
{
?>
<option value="<?php echo $dice_value; ?>"><?php echo $dice_name; ?></option>
<?php
}
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['dice']);?></span>
</div>
<?php } else { echo '<input type="hidden" name="dice" id="dice" value="no_dice">';}?>
<?php if($PARAMETERS['mode']['skillsystem']=='ON'){ ?>
<div class="casella_chat">
<?php
$result = gdrcd_query("SELECT clgpersonaggiooggetto.id_oggetto, oggetto.nome, clgpersonaggiooggetto.cariche FROM clgpersonaggiooggetto JOIN oggetto ON clgpersonaggiooggetto.id_oggetto = oggetto.id_oggetto WHERE clgpersonaggiooggetto.nome = '".$_SESSION['login']."' AND posizione > 0 ORDER BY oggetto.nome", 'result'); ?>
<select name="id_item" id="id_item">
<option value="no_item"></option>
<?php while($row=gdrcd_query($result, 'fetch')){ ?>
<option value="<?php echo $row['id_oggetto'].'-'.$row['cariche'].'-'.gdrcd_filter('out',$row['nome']); ?>">
<?php echo $row['nome']; ?>
</option>
<?php }//while
gdrcd_query($result, 'free');
?>
</select>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['item']);?></span>
</div>
<?php } else { echo '<input type="hidden" name="id_item" id="id_item" value="no_item">';} ?>
<div class="casella_chat">
<input type="submit" value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['forms']['submit']); ?>" />
<input type="hidden" name="op" value="take_action">
</div>
</form>
</div>
<?php } ?>
</div></div>
<?php }//else?>
</div><!-- Page-Body -->
</div><!-- Pagina -->
28/03/2012 20:57:45 e modificato da irenes il 28/03/2012 20:58:15
Nota personale: a volte fatico a capire certe "mode" che si diffondono nelle land o nei desideri di chi le ha o vorrebbe averle. Cose come il blocchetto note che si apre a schiacciare un pulsante o altre come il lettore che manda musica random... a cosa serve mettere in land - sbattendoci la testa - cose che uno ha già comodamente nel pc? Un clic e apre il blocco note, un altro e apre il lettore con la canzone che vuole.
Comunque... così su due piedi quello che mi verrebbe da consigliarti è continuare su quello che hai fatto. Devi effettivamente creare un file che replichi le funzioni della chat, in linea di massima. Tieni presente che se lo vuoi a popup, questo blocchetto note, devi definire la funzione JS della pop up nel file che la pop up stessa la genera e il file che vai ad aprire deve avere in sè header e footer.
Mi pare un lavoretto non proprio elementare, ma credo che, sbattendoci un po' il capo, dovrebbe essere abbastanza fattibile (ripeto, io non ci perderei mai la testa per cose così, ma de gustibus.... ;) ).
Nell'attesa, comunque, se quello che ti preme è avere più spazio potrei però consigliarti di adottare una soluzione che ho già visto diverse volte: ovvero "trasformare" la stringa di chat dove si scrive e si invia in una textarea... delle dimensioni che più ti aggradano.
28/03/2012 23:20:14
irenes ha scritto: Nota personale: a volte fatico a capire certe "mode" che si diffondono nelle land o nei desideri di chi le ha o vorrebbe averle. Cose come il blocchetto note che si apre a schiacciare un pulsante o altre come il lettore che manda musica random... a cosa serve mettere in land - sbattendoci la testa - cose che uno ha già comodamente nel pc? Un clic e apre il blocco note, un altro e apre il lettore con la canzone che vuole.
Comunque... così su due piedi quello che mi verrebbe da consigliarti è continuare su quello che hai fatto. Devi effettivamente creare un file che replichi le funzioni della chat, in linea di massima. Tieni presente che se lo vuoi a popup, questo blocchetto note, devi definire la funzione JS della pop up nel file che la pop up stessa la genera e il file che vai ad aprire deve avere in sè header e footer.
Mi pare un lavoretto non proprio elementare, ma credo che, sbattendoci un po' il capo, dovrebbe essere abbastanza fattibile (ripeto, io non ci perderei mai la testa per cose così, ma de gustibus.... ;) ).
Nell'attesa, comunque, se quello che ti preme è avere più spazio potrei però consigliarti di adottare una soluzione che ho già visto diverse volte: ovvero "trasformare" la stringa di chat dove si scrive e si invia in una textarea... delle dimensioni che più ti aggradano.
Irenes , intanto grazie mille per la risposta, sei sempre gentilissima.:-)
Per quanto riguarda le considerazioni iniziali hai ragione e personalmente trovo sicuramente migliore l'uso di winword con correttore ortografico (utilissimo ai dislessici come me) e il classico copy e paste. La soluzione che pero' mi è stata richiesta e che inizialmente mi vedeva scettico, offre indubbi vantaggi in termini di praticità a chi è piu' bravo di me a pigiare tasti sulla tastiera, ma necessita di una finiestra di input grande, che permetta oltre al ricontrollo di quanto scritto, anche l'invio diretto del testo (la text area l'avevo gia' considerata, ma soprattutto con schermi wide porta via troppo spazio verticale).
Provero' grazie anche ai tuoi suggerimenti a vedere se ne vengo a capo, come detto ho gia' realizzato sia il tasto per l'apertura della finestra di pop-up che la replica (non funzionante) di quanto presente nella chat originale.
Avevo anche incluso l'header nella finesrra di pop up, ma mi dà errore se provo a mettere anche il footer (immagino il problema sia la definizione della funzione js che suggerisci) .
Ad ogni domani mi ci rimetto sotto e vediamo se finalmente ne vengo a capo. Ormai è una questione di principio :-)
Grazie
28/03/2012 23:27:21 e modificato da papy il 28/03/2012 23:28:04
nicodem ha scritto: Così su due piedi suggerisco una cosa banale...
Un bottoncino nella pagina della chat.
Potete provare un banale:
<button onclick='ApreNotePad();'>NotePad</button>
poi stilizzate come vi pare.
La funzione javascript anch'essa banale:
function ApreNotePad() {
config = "width=400,height=400,fullscreen=0";
window.open("editornotepad.htm", "NotePad", config);
}
A questo punto, la pagina editornotepad.htm:
<html>
<body>
<textarea rows=20 cols=80 id='notepad'></textarea>
<button onclick='Salva();'>Salva</button>
</body>
<script type="text/javascript">
function Salva() {
var msg = document.getElementById("notepad").value;
window.opener.getElementById("message").value = msg;
self.close();
}
</script>
Nicodem, grazie mille anche a te.
Come scritto poco sopra replicando a Irenes, la fase 1 e la due l'avevo gia' realizzata ed il problema rimane far funzionare la pagina di pop up.
Da quanto mi pare di capire la soluzione che proponi, presenta oltre alla text area un pulsante di salvataggio testo che verrebbe poi copiato manualmente nella chat originale.
Potrebbe essere una buona soluzione, ma se riuscissi visto che ci sono a duplicare le funzioni della chat e a metterci un bel tasto "invia" , avrei risolto nel migliore dei modi .
Tengo comunque al caldo la tua proposta, nel caso non riuscissi a portare a compimento l'altra soluzione.
Grazie ancora anche a te
28/03/2012 23:29:12
papy ha scritto: [quote]irenes ha scritto: Nota personale: a volte fatico a capire certe "mode" che si diffondono nelle land o nei desideri di chi le ha o vorrebbe averle. Cose come il blocchetto note che si apre a schiacciare un pulsante o altre come il lettore che manda musica random... a cosa serve mettere in land - sbattendoci la testa - cose che uno ha già comodamente nel pc? Un clic e apre il blocco note, un altro e apre il lettore con la canzone che vuole.
Comunque... così su due piedi quello che mi verrebbe da consigliarti è continuare su quello che hai fatto. Devi effettivamente creare un file che replichi le funzioni della chat, in linea di massima. Tieni presente che se lo vuoi a popup, questo blocchetto note, devi definire la funzione JS della pop up nel file che la pop up stessa la genera e il file che vai ad aprire deve avere in sè header e footer.
Mi pare un lavoretto non proprio elementare, ma credo che, sbattendoci un po' il capo, dovrebbe essere abbastanza fattibile (ripeto, io non ci perderei mai la testa per cose così, ma de gustibus.... ;) ).
Nell'attesa, comunque, se quello che ti preme è avere più spazio potrei però consigliarti di adottare una soluzione che ho già visto diverse volte: ovvero "trasformare" la stringa di chat dove si scrive e si invia in una textarea... delle dimensioni che più ti aggradano.
Irenes , intanto grazie mille per la risposta, sei sempre gentilissima.:-)
Per quanto riguarda le considerazioni iniziali hai ragione e personalmente trovo sicuramente migliore l'uso di winword con correttore ortografico (utilissimo ai dislessici come me) e il classico copy e paste. La soluzione che pero' mi è stata richiesta e che inizialmente mi vedeva scettico, offre indubbi vantaggi in termini di praticità a chi è piu' bravo di me a pigiare tasti sulla tastiera, ma necessita di una finiestra di input grande, che permetta oltre al ricontrollo di quanto scritto, anche l'invio diretto del testo (la text area l'avevo gia' considerata, ma soprattutto con schermi wide porta via troppo spazio verticale).
Provero' grazie anche ai tuoi suggerimenti a vedere se ne vengo a capo, come detto ho gia' realizzato sia il tasto per l'apertura della finestra di pop-up che la replica (non funzionante) di quanto presente nella chat originale.
Avevo anche incluso l'header nella finesrra di pop up, ma mi dà errore se provo a mettere anche il footer (immagino il problema sia la definizione della funzione js che suggerisci) .
Ad ogni domani mi ci rimetto sotto e vediamo se finalmente ne vengo a capo. Ormai è una questione di principio :-)
Grazie [/quote]
vai e vinci, ahahah ;) tanto per curiosità: che errore ti dà a mettere il footer?
non vorrei dirti una cavolata, poi, ma credo che potrebbe essere necessario, se generi la popup partendo da un file dentro "pages" che l'header e il footer li includi non tramite "include" ma "require_once". Però, ti ripeto: non vorrei dirti cavolate XD prova :)
29/03/2012 13:42:13 e modificato da papy il 29/03/2012 13:45:55
irenes ha scritto:
vai e vinci, ahahah ;) tanto per curiosità: che errore ti dà a mettere il footer?
non vorrei dirti una cavolata, poi, ma credo che potrebbe essere necessario, se generi la popup partendo da un file dentro "pages" che l'header e il footer li includi non tramite "include" ma "require_once". Però, ti ripeto: non vorrei dirti cavolate XD prova :)
Infatti mi sono espresso male , ma ho appunto messo require_once :-)
L'errore che mi dà è il seguente :
-----------------------------------------------------------------
Warning: mysql_query(): 7 is not a valid MySQL-Link resource in C:xampphtdocsgdrcd5.1includesfunctions.inc.php on line 56
GDRCD MySQL Error [File: frame_chat2.inc.php; Line: 11]
ErrorCode:
ErrorString:
Dettaglio dell'errore: SELECT nome, stanza_apparente, invitati, privata, proprietario, scadenza FROM mappa WHERE id=7 LIMIT 1
----------------------------------------------------------------
controllando alla linea 56 del functions.inc mi risulta questo:
$result = mysql_query($sql, $handleDBConnection)or die(gdrcd_mysql_error($sql));
mentre alla linea 11 del frame_chat2 ho questo:
$info = gdrcd_query("SELECT nome, stanza_apparente, invitati, privata, proprietario, scadenza FROM mappa WHERE id=".$_SESSION['luogo']." LIMIT 1");
Mi pare quindi di poter azzardare (sperando di non venire condannato per eresia da Mrfaber & C. a venire arso con ignominia su una pira di libri di programmazione ) che la richiesta di collegamento al database non va a buon fine...
vero ?
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!
World of Warship ↗
Neverness to Everness ↗
Sea of Conquest ↗
Tibia ↗
The Coven ↗
World of the Sea Battle ↗