Kommunauty
Connexion
Inscription

[Tuto]Système de support par ticket


Courroux Messages : 2216

Salut,

j'ai trouvé ce module sur le forum Xnova, j'ai voulu l'adapter à ma version d'Xnova (la 0.9b), mais ils ne marchaient pas étant donné qu'il était uniquement compatible avec Xnova legacies.

Donc, je l'ai modifié et adapter pour qu'il coïncide à ma version, et comme je suis gentil  :innocent: , je vous le poste

Donc, créez un fichier support.php

<?php

 /*
===========================================================
 Created by Sk3y ICQ&#58; 270270011
===========================================================
 File&#58; support&#46;php
-----------------------------------------------------------
 Version&#58; 1&#46;0 (08&#46;07&#46;2008)
===========================================================
*/

define('INSIDE'  , true);
define('INSTALL' , false);

$xnova_root_path = '&#46;/&#46;&#46;/';
include($xnova_root_path &#46; 'extension&#46;inc');
include($xnova_root_path &#46; 'common&#46;'&#46;$phpEx);

includeLang('supp');
$parse     = $lang;

if(($_GET&#91;'ticket'&#93;) == 0){
/// Deteilsanzeige des eigenen tickets
$query = doquery("SELECT * FROM {{table}} WHERE `player_id` = '"&#46;intval($user&#91;'id'&#93;)&#46;"'", "supp");
while($ticket = mysql_fetch_array($query))
{
/// Status-anzeige
if($ticket&#91;'status'&#93;==1)
{
$status = "<font color=green>Ouvert</font>";
}
if($ticket&#91;'status'&#93;==0)
{
$status = "<font color=red>Ferm&eacute;</font>";
}
if($ticket&#91;'status'&#93;==2)
{
$status = "<font color=yellow>R&eacute;ponse de l'adminisrtateur</font>";
}
if($ticket&#91;'status'&#93;==3)
{
$status = "<font color=green>R&eacute;ponse du joueur</font>";
}
/// Status-anzeige ende
$parse&#91;'tickets'&#93; &#46;= "<tr>"
    &#46;"<td class='b'>"&#46;htmlentities($ticket&#91;'ID'&#93;)&#46;"</td>"
&#46;"<td class='b'><a href='support&#46;php?ticket="&#46;$ticket&#91;'ID'&#93;&#46;"'>"&#46;htmlentities(stripslashes($ticket&#91;'subject'&#93;))&#46;"</a></td>"
&#46;"<td class='b'>"&#46;$status&#46;"</td>"
&#46;"<td class='b'>"&#46;date("j-m-Y H&#58;i&#58;s",htmlentities($ticket&#91;'time'&#93;))&#46;"</td>"
&#46;"</tr>";
}
display(parsetemplate(gettemplate('supp'), $parse), 'Support',true);




}elseif($_GET&#91;'sendenticket'&#93; == "1"){
/// Eintragen eines Neuen Tickets


$subject = $_POST&#91;'senden_ticket_subject'&#93;;
$tickettext = $_POST&#91;'senden_ticket_text'&#93;;
$time = time();

if(empty($tickettext) OR empty($subject)){
/// Prüfen ob beide felder mit Text versehen sind
display(parsetemplate(gettemplate('supp_t_send_error'), $parse),false, 'Support',true);
}else{
$Qryinsertticket  = "INSERT {{table}} SET ";
$Qryinsertticket &#46;= "`player_id` = '"&#46; intval($user&#91;'id'&#93;) &#46;"',";
$Qryinsertticket &#46;= "`subject` = '"&#46; mysql_real_escape_string(stripslashes($subject)) &#46;"',";
$Qryinsertticket &#46;= "`text` = '"&#46; mysql_real_escape_string(stripslashes($tickettext)) &#46;"',";
$Qryinsertticket &#46;= "`time` = '"&#46; $time &#46;"',";
$Qryinsertticket &#46;= "`status` = '1'";
doquery( $Qryinsertticket, "supp");

display(parsetemplate(gettemplate('supp_t_send'), $parse),'Support',true);
}
}elseif($_GET&#91;'sendenantwort'&#93; == "1"){
/// Eintragen der neuen Antwort
$antworttext = $_POST&#91;'senden_antwort_text'&#93;;
$antwortticketid = $_POST&#91;'senden_antwort_id'&#93;;

if(empty($antworttext) OR empty($antwortticketid)){
/// Prüfen ob beide felder mit Text versehen sind
display(parsetemplate(gettemplate('supp_t_send_error'), $parse),'Support',true);
}else{

$query = doquery("SELECT * FROM {{table}} WHERE `id` = '"&#46;intval($antwortticketid)&#46;"'", "supp");
while($ticket = mysql_fetch_array($query))
{
$newtext = $ticket&#91;'text'&#93;&#46;'<br><br><hr><br> <font color="yellow">'&#46;stripslashes($antworttext)&#46;'</font>';

$QryUpdatemsg  = "UPDATE {{table}} SET ";
$QryUpdatemsg &#46;= "`text` = '"&#46; mysql_real_escape_string(stripslashes($newtext)) &#46;"',";
$QryUpdatemsg &#46;= "`status` = '3'";
$QryUpdatemsg &#46;= "WHERE ";
$QryUpdatemsg &#46;= "`id` = '"&#46; intval($antwortticketid) &#46;"' ";
doquery( $QryUpdatemsg, "supp");

}
display(parsetemplate(gettemplate('supp_answ_send'), $parse),'Support',true);
}
}else{
/// Listenanzeige der eigenen tickets
$query2 = doquery("SELECT * FROM {{table}} WHERE `ID` = '"&#46;intval($_GET&#91;'ticket'&#93;)&#46;"'", "supp");
while($ticket2 = mysql_fetch_array($query2))
{

if($ticket2&#91;'status'&#93;>=1){
$parse&#91;'eintrag'&#93; ='
<textarea cols="50" rows="10" name="senden_antwort_text" style="font-family&#58;Arial;font-size&#58;0&#46;8em;"></textarea>
<center><input type="submit" value="Envoyer"></center>';
}
if($ticket2&#91;'status'&#93;==1)
{
$status = "<font color=green>Ouvert</font>";
}
if($ticket2&#91;'status'&#93;==0)
{
$status = "<font color=red>Ferm&eacute;</font>";
$parse&#91;'answer_new'&#93; = 'Ticket ferm&eacute;';
}
if($ticket2&#91;'status'&#93;==2)
{
$status = "<font color=yellow>R&eacute;ponse de l'adminisrtateur</font>";
}
if($ticket2&#91;'status'&#93;==3)
{
$status = "<font color=green>R&eacute;ponse du joueur</font>";
}
$parse&#91;'tickets'&#93; &#46;= "<tr>"
  &#46;"<td class='b'>"&#46;htmlentities($ticket2&#91;'ID'&#93;)&#46;"</td>"
&#46;"<td class='b'>"&#46;htmlentities(stripslashes($ticket2&#91;'subject'&#93;))&#46;"</td>"
&#46;"<td class='b'>"&#46;$status&#46;"</td>"
&#46;"<td class='b'>"&#46;date("j-m-Y H&#58;i&#58;s",htmlentities($ticket2&#91;'time'&#93;))&#46;"</td>"
&#46;"</tr>";

$parse&#91;'text_view'&#93; = $ticket2&#91;'text'&#93;;
$parse&#91;'id'&#93; = $ticket2&#91;'ID'&#93;;


display(parsetemplate(gettemplate('supp_detail'), $parse),'Support',true);
}

}

?>

Enregistrez et uploadez le à la racine de votre site.

Dans templates/open game, créez le fichier supp.tpl

<table>
<tr>
<td colspan="4" class="c" width="50%"><center>{supp_header}</center></td>
</tr>
<tr>
<td class="c" width="10%"><center>{ticket_id}</center></td>
<td class="c" width="50%"><center>{subject}</center></td>
<td class="c" width="15%"><center>{status}</center></td>
<td class="c" width="25%"><center>{ticket_posted}</center></td>
</tr>
{tickets}
</table>



<form action="support&#46;php?ticket=99999999999999999999999999&sendenticket=1" method="POST">
<table>
<tr>
<td colspan="2" class="c" width="50%"><center>{ticket_new}</center></td>
</tr>
<tr>
<td class="c"><center>{subject}&#58;</center></td><td class="c"><input type="text" name="senden_ticket_subject"></td>
</tr>
<tr>
<td class="c"><center>{ticket_desc}</center></td>
</tr>
<tr>
<td class="c" colspan="2">{input_text}</td>
</tr>
<tr>
<td class="b" colspan="2">
<textarea cols="50" rows="10" name="senden_ticket_text" style="font-family&#58;Arial;font-size&#58;0&#46;8em;"></textarea>
<center><input type="submit" value="Envoyer"></center>
</td>
</tr>
</table>

Enregistrez et envoyez.

Puis dans le même dossier, créez le fichier supp_answ_send.tpl

Et ajoutez:

<table width="75%">
<tr>
<td class="c"><center>{message_a}</center></td>
</tr>
<tr>
<td class="b"><center>{sendit_a}</center></td>
</tr>
</table>

Enregistrez et envoyez.

Toujours dans le même dossier, créez le fichier supp_detail.tpl

Et ajoutez:

<table width="75%">
<tr>
<td colspan="4" class="c" width="50%"><center>{supp_header}</center></td>
</tr>
<tr>
<td class="c" width="10%"><center>{ticket_id}</center></td>
<td class="c" width="50%"><center>{subject}</center></td>
<td class="c" width="15%"><center>{status}</center></td>
<td class="c" width="25%"><center>{ticket_posted}</center></td>
</tr>
{tickets}
</table>


<table width="75%">
<tr>
<td class="c"><center>{text}</center></td>
</tr>
<tr>
<td class="b"><center>{text_view}</center></td>
</tr>
</table>

<table>
<tr>
<td class="c" width="50%"><center>{answer_new}</center></td>
</tr>
<tr>
<form action="support&#46;php?ticket={id}&sendenantwort=1" method="POST">
<td class="b" colspan="2">
<input type="hidden" name="senden_antwort_id" value="{id}">
{eintrag}
</form>
</td>
</tr>
</table>


Enregistrez et envoyez.

Encore et toujours dans le même dossier créez le fichier: supp_t_end.tpl

Et ajoutez:

<table width="75%">
<tr>
<td class="c"><center>{message_t}</center></td>
</tr>
<tr>
<td class="b"><center>{sendit_t}</center></td>
</tr>
</table>

Enregistrez et envoyez.

Et enfin, dans le même dossier, créer le fichier: supp_t_send_error.tpl

Et ajoutez:

<table width="75%">
<tr>
<td class="c"><center>{sendit_error}</center></td>
</tr>
<tr>
<td class="b"><center>{sendit_error_msg}</center></td>
</tr>
</table>

Enregistrez et uploader.

On en a finit avec les .tpl

Dans le dossier langage/fr créez le fichier supp.mo

Et ajoutez:

<?php
$lang&#91;'supp_header'&#93; = "Systeme de support";
$lang&#91;'ticket_id'&#93; = "#Ticket-ID";
$lang&#91;'subject'&#93; = "Sujet";
$lang&#91;'status'&#93; = "Status";
$lang&#91;'ticket_posted'&#93; = "Ticket de ";
$lang&#91;'ticket_new'&#93; = "Nouvel Ticket";
$lang&#91;'input_text'&#93; = "Votre texte&#58;";
$lang&#91;'answer_new'&#93; = "R&eacute;ponse&#58; ";
$lang&#91;'text'&#93; = "Contenu &#58;";
$lang&#91;'message_a'&#93; = "Status du message&#58;";
$lang&#91;'sendit_a'&#93; = "Message a &eacute;t&eacute; modifier&#46;";
$lang&#91;'message_t'&#93; = "Status des Tickets&#58;";
$lang&#91;'sendit_t'&#93; = "Ticket a &eacute;t&eacute; envoy&eacute;&#46;";
$lang&#91;'close_t'&#93; = "Ticket a &eacute;t&eacute; ferm&eacute;&#46;";
$lang&#91;'sendit_error'&#93; = "Erreur&#58;";
$lang&#91;'sendit_error_msg'&#93; = "Vous avez oublier quelque chose!";
$lang&#91;'supp_admin_system'&#93; = "Support-Adminpanel";
$lang&#91;'close_ticket'&#93; = "Fermer le ticket";
$lang&#91;'player'&#93; = "Nom du joueur";
?>

Maintenant, dans le dossier admin créez le fichier support.php

Et ajoutez:

<?php

 /*
===========================================================
 Created by Sk3y ICQ&#58; 270270011
===========================================================
 File&#58; support&#46;php
-----------------------------------------------------------
 Version&#58; 1&#46;0 (08&#46;07&#46;2008)
===========================================================
*/

define('INSIDE'  , true);
define('INSTALL' , false);
define('IN_ADMIN', false);

$xnova_root_path = '&#46;/&#46;&#46;/';
include($xnova_root_path &#46; 'extension&#46;inc');
include($xnova_root_path &#46; 'common&#46;'&#46;$phpEx);

if ($user&#91;'authlevel'&#93; >= 1) {
includeLang('supp');
$parse     = $lang;


if($_GET&#91;'ticket'&#93; == 0){
/// Deteilsanzeige des eigenen tickets
$query = doquery("SELECT * FROM {{table}} WHERE status >= '1' ORDER BY time", "supp");
while($ticket = mysql_fetch_array($query))
{
if($ticket&#91;'status'&#93;==1)
{
$status = "<font color=green>Ouvert</font>";
}
if($ticket&#91;'status'&#93;==0)
{
$status = "<font color=red>Ferm&eacute;</font>";
}
if($ticket&#91;'status'&#93;==2)
{
$status = "<font color=yellow>R&eacute;ponse de l'adminisrtateur</font>";
}
if($ticket&#91;'status'&#93;==3)
{
$status = "<font color=green>R&eacute;ponse du joueur</font>";
}

$query6 = doquery("SELECT * FROM {{table}} WHERE id = '"&#46;intval($ticket&#91;'player_id'&#93;)&#46;"'", "users");
while($name6 = mysql_fetch_array($query6))
{
$playername = $name6&#91;'username'&#93;;
}
$parse&#91;'tickets'&#93; &#46;= "<tr>"
    &#46;"<td class='b'>"&#46;htmlentities($ticket&#91;'ID'&#93;)&#46;"</td>"
    &#46;"<td class='b'>"&#46;htmlentities($playername)&#46;"</td>"
&#46;"<td class='b'><a href='support&#46;php?ticket="&#46;$ticket&#91;'ID'&#93;&#46;"'>"&#46;htmlentities(stripslashes($ticket&#91;'subject'&#93;))&#46;"</a></td>"
&#46;"<td class='b'>"&#46; $status &#46;"</td>"
&#46;"<td class='b'>"&#46;date("j-m-Y H&#58;i&#58;s",$ticket&#91;'time'&#93;)&#46;"</td>"
&#46;"</tr>";

}
display(parsetemplate(gettemplate('admin/supp'), $parse), '',false, '',true);





}elseif($_GET&#91;'sendenticket'&#93; =="1"){
/// Eintragen eines Neuen Tickets


$subject = $_POST&#91;'senden_ticket_subject'&#93;;
$tickettext = $_POST&#91;'senden_ticket_text'&#93;;
$time = time();

if(empty($tickettext) OR empty($subject)){
/// Prüfen ob beide felder mit Text versehen sind
display(parsetemplate(gettemplate('admin/supp_t_send_error'), $parse),false, '',true);
}else{
$Qryinsertticket  = "INSERT {{table}} SET ";
$Qryinsertticket &#46;= "`player_id` = '"&#46; intval($user&#91;'id'&#93;) &#46;"',";
$Qryinsertticket &#46;= "`subject` = '"&#46; mysql_real_escape_string(stripslashes($subject)) &#46;"',";
$Qryinsertticket &#46;= "`text` = '"&#46; mysql_real_escape_string(stripslashes($tickettext)) &#46;"',";
$Qryinsertticket &#46;= "`time` = '"&#46; $time &#46;"',";
$Qryinsertticket &#46;= "`status` = '1'";
doquery( $Qryinsertticket, "supp");
display(parsetemplate(gettemplate('admin/supp_t_send'), $parse), '',false, '',true);
}
}elseif($_GET&#91;'sendenantwort'&#93; =="1"){
/// Eintragen der neuen Antwort
$antworttext = htmlentities($_POST&#91;'senden_antwort_text'&#93;);
$antwortticketid = $_POST&#91;'senden_antwort_id'&#93;;

if(empty($antworttext) OR empty($antwortticketid)){
/// Prüfen ob beide felder mit Text versehen sind
display(parsetemplate(gettemplate('admin/supp_t_send_error'), $parse), '',false, '',true);
}else{

$query = doquery("SELECT * FROM {{table}} WHERE `id` = '"&#46;$antwortticketid&#46;"'", "supp");
while($ticket = mysql_fetch_array($query))
{
$newtext = $ticket&#91;'text'&#93;&#46;'<br><br><hr><br> <font color="red">'&#46;stripslashes($antworttext)&#46;'</font>';

$QryUpdatemsg  = "UPDATE {{table}} SET ";
$QryUpdatemsg &#46;= "`text` = '"&#46; mysql_real_escape_string(stripslashes($newtext)) &#46;"',";
$QryUpdatemsg &#46;= "`status` = '2'";
$QryUpdatemsg &#46;= "WHERE ";
$QryUpdatemsg &#46;= "`id` = '"&#46; $antwortticketid &#46;"' ";
doquery( $QryUpdatemsg, "supp");

}
display(parsetemplate(gettemplate('admin/supp_answ_send'), $parse), '',false, '',true);
}
}elseif($_GET&#91;'schliessen'&#93; =="1"){
$schließen = $_GET&#91;'ticket'&#93;;

$QryUpdatemsg  = "UPDATE {{table}} SET ";
$QryUpdatemsg &#46;= "`status` = '0'";
$QryUpdatemsg &#46;= "WHERE ";
$QryUpdatemsg &#46;= "`id` = '"&#46; $schließen &#46;"' ";
doquery( $QryUpdatemsg, "supp");
display(parsetemplate(gettemplate('admin/supp_t_close'), $parse), '',false, '',true);

}else{
/// Listenanzeige des einen tickets
$query2 = doquery("SELECT * FROM {{table}} WHERE `ID` = '"&#46;intval($_GET&#91;'ticket'&#93;)&#46;"'", "supp");
while($ticket2 = mysql_fetch_array($query2))
{
if($ticket2&#91;'status'&#93;==1)
{
$status = "<font color=green>Ouvert</font>";
}
if($ticket2&#91;'status'&#93;==0)
{
$status = "<font color=red>Ferm&eacute;</font>";
}
if($ticket2&#91;'status'&#93;==2)
{
$status = "<font color=yellow>R&eacute;ponse de l'adminisrtateur</font>";
}
if($ticket2&#91;'status'&#93;==3)
{
$status = "<font color=green>R&eacute;ponse du joueur</font>";
}
$query6 = doquery("SELECT * FROM {{table}} WHERE id = '"&#46;intval($ticket2&#91;'player_id'&#93;)&#46;"'", "users");
while($name7 = mysql_fetch_array($query6))
{
$playername2 = $name7&#91;'username'&#93;;
}
$parse&#91;'tickets'&#93; &#46;= "<tr>"
  &#46;"<td class='b'>"&#46;htmlentities($ticket2&#91;'ID'&#93;)&#46;"</td>"
    &#46;"<td class='b'>"&#46;htmlentities($playername2)&#46;"</td>"
&#46;"<td class='b'>"&#46;htmlentities(stripslashes($ticket2&#91;'subject'&#93;))&#46;"</td>"
&#46;"<td class='b'>"&#46;$status&#46;"</td>"
&#46;"<td class='b'>"&#46;date("j-m-Y H&#58;i&#58;s",htmlentities($ticket2&#91;'time'&#93;))&#46;"</td>"
&#46;"</tr>";

$parse&#91;'text_view'&#93; = $ticket2&#91;'text'&#93;;
$parse&#91;'id'&#93; = $ticket2&#91;'ID'&#93;;


display(parsetemplate(gettemplate('admin/supp_detail'), $parse), '',false, '',true);
}

}
} else {
AdminMessage ( $lang&#91;'sys_noalloaw'&#93;, $lang&#91;'sys_noaccess'&#93; );
}
?>

Maintenant, allez dans le dossier templates/open game et ouvrez le fichier left_menu.tpl et ajoutez ou vous voulez:

<tr><td colspan="2"><div id="dc" class="hidden"><a href="support&#46;php" accesskey="3" target="{mf}" >Support</a></div></td>

Puis dans le dossier templates/open game/admin ouvrez le fichier left_menus.tpl et ajoutez ou vous voulez:

<tr><td colspan="2"><div id="dc" class="hidden"><a href="support&#46;php" accesskey="3" target="{mf}" >Support</a></div></td>

Voilà, vous avez finit, il vous faut juste ajouter dans votre base de donnée une table en lançant cette requête:

CREATE TABLE `game_supp` (
  `ID` int(11) NOT NULL auto_increment,
  `player_id` int(11) NOT NULL,
  `time` int(11) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `text` longtext NOT NULL,
  `status` int(1) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

Attention à remplacer game_ par le prefix de vos tables.

Voilà, vous avez finit

mercredi 8 septembre 2010

trolx Messages : 274

salut, a quoi sert ce module en fait?

MODO: Pas de langage sms, s'il te plait

mercredi 8 septembre 2010

Courroux Messages : 2216

Et bien en faite, ce module sert de support aux membres.

Ils peuvent envoyer un message (même fonction que les MP), mais tous les membres de l'équipe peuvent le lire depuis le panneau d'administration. C'est plus pratique, et c'est plus simple à gérer tout en restant professionnel

mercredi 8 septembre 2010

trolx Messages : 274

a ok ben merci !

mercredi 8 septembre 2010

Mizur Messages : 6617

Merci encore pour ce nouveau tutoriel

mercredi 8 septembre 2010

Ghost Messages : 1

manque le tpl pour l'administration des ticket

vendredi 25 février 2011

Empereur17400 Messages : 1

salut je les fais out marche nikel sauf , quand a aprtir du jeux je clike sur ticket je amrque sujet test , message test evnvoyer et des que je clique sur envoyer sa me masi sa

Erreur, merci de contacter l'admin. Erreur n°: 44

pouvais vous m'aidez svp merci

vendredi 23 décembre 2011

lescallier Messages : 1

Vous pourrez nous passer un fichier à télécharger, car c'est trop compliquer a comprendre .

dimanche 1 juillet 2012

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !