Modifications GLPI

De $1

 

punaise1.gif

Sommaire

 

 warning.pngZone pour "psycho-schizophrène" à tendance suicidaire !

Les modifications suivantes ne sont pas viables sur le long terme, à chaque mise à jour de GLPI tout sera à refaire...

Rajout d'un Champ Helpdesk

Version Glpi 0.70.2

  • Créer dans la table Glpi_tracking le champ supplémentaire :

Exemple :

name2
  • Rajouter dans le dictionnaire Glpi (/locales/fr_FR.php) le nom du Champ

Exemple :

$LANG["common"][64]="Nom du Champ";

 

  • Editer le fichier /inc/tracking.function.php

Rajouter :

Ligne 802 :

	echo "</table><br><table class='tab_cadre_fixe'>";
	echo "<tr><th class='center'>".$LANG["common"][64].":";
	echo "</th><th colspan='3' class='left'>";
	$name="";
	if (isset($_POST["name2"])) $name=$_POST["name2"];
	echo "<input type='text' size='80' name='name2' value='$name'>";
	echo "</th> </tr>";

Ligne 1938 :

		echo "</th></tr>";
		echo "<tr  class='tab_bg_2'><td width='15%'>".$LANG["common"][64]."</td>";
		echo "<td  width='85%' class='left'>";
	echo $job->fields["name2"];

		echo "</td>";
		echo "</tr>";
		echo "</td>";

Modification du mail d'alerte GLPI

Fichiers concernés :

/glpi/inc/tracking.class.php

/glpi/inc/mailing.class.php

http://www.glpi-project.org/wiki/doku.php?id=fr:ressources:templatemail

GLPI v0.72.3

Suppression du contenu (Description)

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 996

$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG['mailing'][3].":</span><br>".str_replace("\n","<br>",$this->fields["contents"])."<br>\n";

Commenter la ligne 1043

$message.= $LANG['mailing'][3]." : \n".$this->fields["contents"]."\n";	

Suppression de l'intitulé des suivis (Contenus)

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 846

$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][3]."</span>:<br>".str_replace("\n","<br>",$fup->fields["contents"])."\n";

Suppression du demandeur dans les mails de suivi

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 845

 

$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['job'][4].":</span> ".$fup->getAuthorName()."\n";

Suppression de la barre "Suivis déjà effectués" dans les mails

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 838

$message = "<div class='description'><strong>".$LANG['mailing'][4]." : $nbfollow<br></strong></div>\n";

Suppression de la planification dans le mail

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 850

$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][25]."</span> ";


Modifier la ligne 854

$message.=$LANG['job'][32]."\n";

Laisser :

"\n";

Suppression de la date dans les mails de suivi

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 844

$message .= "<strong>[ ".convDateTime($fup->fields["date"])." ] ".($fup->fields["private"]?"<i>".$LANG['common'][77]."</i>":"")."</strong>\n";

Suppression des traits dans les mails de suivi

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 861

$message.=$LANG['mailing'][0]."\n";

Suppression du titre dans le mail de suivi

  • Fichier :

/glpi/inc/tracking.class.php

Commenter la ligne 956

$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['common'][57].":</span> ".$this->fields["name"]."\n";

Suppression de "Nouveau suivi pour ce ticket" dans l'objet des mails de suivi

  • Fichier :

/glpi/inc/mailing.class.php

Commenter les lignes 504, 507, 510, 513, 516, 519

$subject.=$LANG['mailing'][9];

$subject.=$LANG['mailing'][12];

$subject.=$LANG['mailing'][10];

$subject.=$LANG['mailing'][30];

$subject.=$LANG['mailing'][11]." ".convDateTime($this->job->fields["closedate"]);

Modification de l'objet du mail de suivi

  • Fichier :

/glpi/inc/mailing.class.php

Modifier la ligne 495

$subject=sprintf("%s%07d%s","[GLPI #",$this->job->fields["ID"],"] ");

Modification du lien html pointant vers GLPI

  • Fichier :

/glpi/inc/mailing.class.php

Modifier la ligne 435

$body.="Veuillez vous connecter : <a href=\"".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->job->fields["ID"]."\">".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->job->fields["ID"]." </a><br><br>";

Utiliser GLPI comme outil de gestion de listes de diffusion (Mailman)

Dans mes différents délires schizophréniques de modification de GLPI en voici un :

Utiliser GLPI pour gérer des listes de diffusions à la façon de Mailman.

Pourquoi ?

Au delà du fait que je dois certainement m'ennuyer le week-end, je dirais, pour sa simplicité et son efficacité.

Il suffit donc de :

  • Créer ou utiliser une adresse mail quelconque.
  • Créer une passerelle mail sous GLPI permettant de relever les mails sur cette boite.
  • Créer une entité et un profil spécifique pouvant créer et ajouter un suivi aux tickets.
  • Modifier les fichiers /glpi/inc/tracking.class.php et /glpi/inc/mailing.class.php pour ne faire apparaître que ce que vous souhaitez (comme plus haut).
  • Créer les utilisateurs et leur attribuer le profil correspondant dans la bonne entité.

Vous venez de mettre en place l'équivalent de Mailman mais avec une belle interface web permettant de déléguer la gestion des listes ....

tracking.class.php

  • A partir de la ligne 1060
	/**
	 * Get text describing Followups
	 * 
	* @param $format text or html
	* @param $sendprivate true if both public and private followups have to be printed in the email
	 */
	function textFollowups($format="text", $sendprivate=false) {
		// get the last followup for this job and give its contents as
		global $DB,$LANG;

		if (isset($this->fields["ID"])){
			$query = "SELECT * FROM glpi_followups WHERE tracking = '".$this->fields["ID"]."' ".($sendprivate?"":" AND private = '0' ")." ORDER by date DESC";
			$result=$DB->query($query);
			$nbfollow=$DB->numrows($result);
			if($format=="html"){
				$message = "<div class='description'><strong>".$LANG['mailing'][4]." : $nbfollow<br></strong></div>\n";

				if ($nbfollow>0){
					$fup=new Followup();
					while ($data=$DB->fetch_array($result)){
						$fup->getFromDB($data['ID']);
						$message .= "<strong>[ ".convDateTime($fup->fields["date"])." ] ".($fup->fields["private"]?"<i>".$LANG['common'][77]."</i>":"")."</strong>\n";
						$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['job'][4].":</span> ".$fup->getAuthorName()."\n";
						$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][3]."</span>:<br>".str_replace("\n","<br>",$fup->fields["contents"])."\n";
						if ($fup->fields["realtime"]>0)
#							$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][104].":</span> ".getRealtime($fup->fields["realtime"])."\n";
#							$message .="\n";

#						$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][25]."</span> ";
						$query2="SELECT * FROM glpi_tracking_planning WHERE id_followup='".$data['ID']."'";
						$result2=$DB->query($query2);
						if ($DB->numrows($result2)==0)
#							$message.=$LANG['job'][32]."\n";
							$message.="\n";
						else {
							$data2=$DB->fetch_array($result2);
#							$message.=convDateTime($data2["begin"])." -> ".convDateTime($data2["end"])."\n";
							$message.="\n";
						}

						$message.=$LANG['mailing'][0]."\n";	
					}	
				}
			}else{ // text format
				$message = $LANG['mailing'][1]."\n".$LANG['mailing'][4]." : $nbfollow\n".$LANG['mailing'][1]."\n";

				if ($nbfollow>0){
					$fup=new Followup();
					while ($data=$DB->fetch_array($result)){
						$fup->getFromDB($data['ID']);
						$message .= "[ ".convDateTime($fup->fields["date"])." ]".($fup->fields["private"]?"\t".$LANG['common'][77]:"")."\n";
						$message .= $LANG['job'][4].": ".$fup->getAuthorName()."\n";
						$message .= $LANG['mailing'][3].":\n".$fup->fields["contents"]."\n";
						if ($fup->fields["realtime"]>0)
#							$message .= $LANG['mailing'][104].": ".getRealtime($fup->fields["realtime"])."\n";

#						$message.=$LANG['mailing'][25]." ";
						$query2="SELECT * FROM glpi_tracking_planning WHERE id_followup='".$data['ID']."'";
						$result2=$DB->query($query2);
						if ($DB->numrows($result2)==0)
#							$message.=$LANG['job'][32]."\n";
							$message.="\n";
						else {
							$data2=$DB->fetch_array($result2);
#							$message.=convDateTime($data2["begin"])." -> ".convDateTime($data2["end"])."\n";
							$message.="\n";
						}

						$message.=$LANG['mailing'][0]."\n";	
					}	
				}


			}
			return $message;
		} else return "";
	}

	/**
	 * Get text describing ticket
	 * 
	* @param $format text or html
	 */
	function textDescription($format="text"){
		global $DB,$LANG;


		$name=$LANG['help'][30];
		$contact='';
		$tech='';
		$name=$this->hardwaredatas->getType()." ".$this->hardwaredatas->getName();
		if ($this->hardwaredatas->obj!=NULL){
			if (isset($this->hardwaredatas->obj->fields["serial"])&&!empty($this->hardwaredatas->obj->fields["serial"])){
				$name.=" - #".$this->hardwaredatas->obj->fields["serial"];
			}
			if (isset($this->hardwaredatas->obj->fields["model"])&&$this->hardwaredatas->obj->fields["model"]>0){
				$add="";
				switch ($this->fields['device_type']){
					case MONITOR_TYPE:
						$add='_monitors';
						break;
					case NETWORKING_TYPE:
						$add='_networking';
						break;
					case PERIPHERAL_TYPE:
						$add='_peripherals';
						break;
					case PHONE_TYPE:
						$add='_phones';
						break;
					case PRINTER_TYPE:
						$add='_printers';
						break;
				}
				$name.=" - ".getDropdownName("glpi_dropdown_model".$add,$this->hardwaredatas->obj->fields["model"]);
			}
			if (isset($this->hardwaredatas->obj->fields["tech_num"])&&$this->hardwaredatas->obj->fields["tech_num"]>0){
					$tech=getUserName($this->hardwaredatas->obj->fields["tech_num"]);
			}
			if (isset($this->hardwaredatas->obj->fields["contact"])){
				$contact=$this->hardwaredatas->obj->fields["contact"];
			}
			if (isset($this->hardwaredatas->obj->fields["FK_users"])){
				$contact=getUserName($this->hardwaredatas->obj->fields["FK_users"]);
			}
			if (isset($this->hardwaredatas->obj->fields["FK_groups"])){
				if (!empty($contact)) $contact.=" / ";
					$contact.=getDropdownName("glpi_groups",$this->hardwaredatas->obj->fields["FK_groups"]);
			}
		}

		if($format=="html"){
			$message= "<html><head> <style type=\"text/css\">";
			$message.=".description{ color: inherit; background: #ebebeb; border-style: solid; border-color: #8d8d8d; border-width: 0px 1px 1px 0px; }";
			$message.=" </style></head><body>";

			$message.="<div class='description'><strong>".$LANG['mailing'][5]."</strong></div>\n";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['common'][57].":</span> ".$this->fields["name"]."\n";
			$author=$this->getAuthorName();
			if (empty($author)) $author=$LANG['mailing'][108];
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['job'][4].":</span> ".$author."\n";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG['search'][8].":</span> ".convDateTime($this->fields["date"])."\n";
#			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG['job'][44].":</span> ".getRequestTypeName($this->fields["request_type"])."\n";
#			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG['mailing'][7].":</span> ".$name."\n";
			if (!empty($tech))
				$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG['common'][10].":</span> ".$tech."\n";
#			$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['joblist'][0].":</span> ".getStatusName($this->fields["status"])."\n";
			$assign=getAssignName($this->fields["assign"],USER_TYPE);
			$assign_group="";
			if (isset($this->fields["assign_group"])){
				$assign_group=getAssignName($this->fields["assign_group"],GROUP_TYPE);
			}
			if ($assign=="[Nobody]"){
				if (!empty($assign_group)){
					$assign=$assign_group;
				} else {
					$assign=$LANG['mailing'][105];
				}
			} else {
				if (!empty($assign_group)){
					$assign.=" / ".$assign_group;
				}
			}
#			$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][8].":</span> ".$assign."\n";
#			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['joblist'][2].":</span> ".getPriorityName($this->fields["priority"])."\n";
			if ($this->fields["device_type"]!=SOFTWARE_TYPE&&!empty($contact))
				$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['common'][18].":</span> ".$contact."\n";
			if (isset($this->fields["emailupdates"]) && $this->fields["emailupdates"]){
#				$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][103].":</span> ".$LANG['choice'][1]."\n";
				$message.="\n";
			} else {
#				$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['mailing'][103].":</span> ".$LANG['choice'][0]."\n";
				$message.="\n";
			}

#			$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG['common'][36].":</span> ";
			if (isset($this->fields["category"])&&$this->fields["category"]){
#				$message.= getDropdownName("glpi_dropdown_tracking_category",$this->fields["category"]);
#			} else $message.=$LANG['mailing'][100];
			} else 
			$message.= "\n";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG['mailing'][3].":</span><br>".str_replace("\n","<br>",$this->fields["contents"])."<br>\n";	

		}else{ //text format
			$message = $LANG['mailing'][1]."\n*".$LANG['mailing'][5]."*\n".$LANG['mailing'][1]."\n";
			
			$message.=mailRow($LANG['common'][57],$this->fields["name"]);
			$author=$this->getAuthorName();
			if (empty($author)) $author=$LANG['mailing'][108];
			$message.=mailRow($LANG['job'][4],$author);
			$message.=mailRow($LANG['search'][8],convDateTime($this->fields["date"]));
#			$message.=mailRow($LANG['job'][44],getRequestTypeName($this->fields["request_type"]));
#			$message.=mailRow($LANG['mailing'][7],$name);
			if (!empty($tech))
				$message.= mailRow($LANG['common'][10],$tech);
			$message.= mailRow($LANG['joblist'][0],getStatusName($this->fields["status"]));
			$assign=getAssignName($this->fields["assign"],USER_TYPE);
			$assign_group="";
			if (isset($this->fields["assign_group"])){
				$assign_group=getAssignName($this->fields["assign_group"],GROUP_TYPE);
			}
			if ($assign=="[Nobody]"){
                                if (!empty($assign_group)){
                                        $assign=$assign_group;
                                } else {
                                        $assign=$LANG['mailing'][105];
                                }
                        } else {
				if (!empty($assign_group)){
	                                $assign.=" / ".$assign_group;
				}
                        }

#			$message.= mailRow($LANG['mailing'][8],$assign);
#			$message.= mailRow($LANG['joblist'][2],getPriorityName($this->fields["priority"]));
			if ($this->fields["device_type"]!=SOFTWARE_TYPE&&!empty($contact))
				$message.= mailRow($LANG['common'][18],$contact);
			if (isset($this->fields["emailupdates"]) && $this->fields["emailupdates"]){
#				$message.=mailRow($LANG['mailing'][103],$LANG['choice'][1]);
			} else {
#				$message.=mailRow($LANG['mailing'][103],$LANG['choice'][0]);
			}

			
			if (isset($this->fields["category"])&&$this->fields["category"]){
#				$message.= mailRow($LANG['common'][36],getDropdownName("glpi_dropdown_tracking_category",$this->fields["category"]));
#			} else $message.=mailRow($LANG['common'][36],$LANG['mailing'][100]);
			} else 
			$message.= "--\n";
			$message.= $LANG['mailing'][3]." : \n".$this->fields["contents"]."\n";	
			$message.="\n\n";

		}

		return $message;
	}

mailing.class.php

  • A partir de la ligne 485
	/**
	 * Format the mail subject to send
	 * @return mail subject string
	 */
	function get_mail_subject()
	{
		global $LANG;

		// Create the message subject 
		$subject=sprintf("%s%07d%s","Yakakliker.org #",$this->job->fields["ID"]," ");

//		if (isMultiEntitiesMode()){
//			$subject.=getDropdownName("glpi_entities",$this->job->fields['FK_entities'])." | ";
//		}

		switch ($this->type){
			case "new":
#				$subject.=$LANG['mailing'][9];
			break;
			case "attrib":
#				$subject.=$LANG['mailing'][12];
			break;
			case "followup":
#				$subject.=$LANG['mailing'][10];
			break;
			case "update":
#				$subject.=$LANG['mailing'][30];
			break;
			case "finish":
#				$subject.=$LANG['mailing'][11]." ".convDateTime($this->job->fields["closedate"]);			
			break;
			default :
#			$subject.=$LANG['mailing'][13];
			break;
		}

Reste à modifier le dictionnaire /glpi/locales/fr_FR.php et vous obtiendrez quelquechose comme ceci :

Description

Titre: Exemple
Source: Utilisateur
Date: 2009-11-28 14:39

Message:
Corps du message

--

Réponse(s) : 0

--

 

 

 howto05_small.pngVous en pensez quoi ?


 

 

 

 
 
Images (2)
Voir 1 - 2 sur 2 images | Voir tout
Aucune description
warning.png  Actions
Aucune description
danger.png  Actions
Commentaires (2)
Affichage de 2 commentaires sur 2: voir tout
Bonjour,
je voudrais ne pas afficher le contenu du ticket dans les mail envoyé lors d'ajout de suivie.
Je ne sais pas comment faire, j'ai regardé partout, la seule solution s'en approchant que je trouve, c'est supprimer le contenu dans tout les mail, meme dans ceux envoyés au tech lors de leur création.
Pouvez vous m'aider a réaliser ca svp.
Posté 13:11, 11 Aoû 2011
Bonjour,

La première idée me venant à l'esprit serait de désactiver l'envoi des suivis dans les paramétrages de notification.

Pour quelles raisons l'affichage du contenu du ticket dans les suivis poserait un problème ?
Il permet d'avoir le récapitulatif complet.

Quelle version de GLPI utilisez-vous ? modifié 05:57, 26 Aoû 2011
Posté 05:56, 26 Aoû 2011
Affichage de 2 commentaires sur 2: voir tout
Vous devez être connecté pour poster un commentaire.