You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2012-06-14 12:08:12

DaBoss
Member
From: Rouen
Registered: 2010-07-05
Posts: 170

Modification du code pour notification suivi.

bonjour,

Ayant cherché et n'ayant pas trouvé, je vous propose une solution a mon problème qui est le suivant.

Nous souhaitions, lors de l'ajout d'un suivi le mettre en valeur dans la notification . . .

En gros . . la notification devait être du genre :

Ce suivi a été ajouté :
Bla bla bla bla les infos . . .

X derniers suivis :
suivi1, bla bla bla
suivié, bla bla bla
.....

J'avais bien le FOREACH LAST pour avoir le dernier suivi . . .
Il existe bien le FOREACH LAST X pour avoir les 5 derniers suivis . . .
Mais comment avoir les X précédents suivis ???

J'ai donc fait une petite modification du code . . . (si elle est intégrée un jour cela me fera plaisir et ça me facilitera les mise à jour

J'ai modifié le fichier notificationtemplate.class.php comme suit :

      if (preg_match_all("/##FOREACH[ ]?(FIRST|LAST|PREVIOUS|NEXT)?[ ]?([0-9]*)?[ ]?([a-zA-Z-0-9\.]*)##/i",
                         $string, $out)) {

         foreach ($out[3] as $id => $tag_infos) {
            $regex = "/".$out[0][$id]."(.*)##ENDFOREACH".$tag_infos."##/Uis";

            if ( preg_match($regex,$string,$tag_out )
               & &  isset( $data[$tag_infos] )
                & & is_array( $data[$tag_infos]) ) {

               $data_lang_foreach = $data;
               unset($data_lang_foreach[$tag_infos]);

               //Manage FIRST & LAST statement
               $foreachvalues = $data[$tag_infos];
               if (!empty($foreachvalues)) {
                  if (isset($out[1][$id]) & & $out[1][$id] != '') {

                     if ($out[1][$id] == 'FIRST' || $out[1][$id] == 'NEXT') {
                        $foreachvalues = array_reverse($foreachvalues);
                     }

                     if ($out[1][$id] == 'PREVIOUS' || $out[1][$id] == 'NEXT') {
                        $s = 1;
                     }else{
                        $s = 0;
                    }
                     if (isset($out[2][$id]) & & $out[2][$id]) {
                        $foreachvalues = array_slice($foreachvalues,$s,$out[2][$id]);
                     } else {
                        $foreachvalues = array_slice($foreachvalues,$s,1);
                     }
                  }
               }

J'ai du ajouter quelques espaces dans le code car sinon impossible de poster le message il me fait une page blanche le forum . . . même en changeant de navigateur.


Migration en cours vers 9.1.2 sous CENTOS 7.
PROD: Win2K3 - XAMPP - OCS 1.32 - GLPI 0.84 - Auth AD - Exchange 2007 - Collecteur POP

Offline

#2 2012-06-27 21:04:30

MoYo
GLPI - Lead
From: Poitiers
Registered: 2004-09-13
Posts: 14,513
Website

Re: Modification du code pour notification suivi.

Précédent c'est à dire ?
Vous voulez en afficher 5 puis 5 autres puis 5 autres ?


MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI :    Support     Contribute     References     Freshmeat

Offline

#3 2012-06-27 23:56:40

DaBoss
Member
From: Rouen
Registered: 2010-07-05
Posts: 170

Re: Modification du code pour notification suivi.

Non non c'est tout simple ...

Dans les notifications sur l'ajout d'un suivi ont peut utilisé:

  • foreach pour avoir tous les suivis

Problėme: apres un certain nombre de suivi la notification peut devenir assez consequente, d'autant plus qu'il est regulié que le suivi soit ajouté par reponce au mail de notification et que donc le nous suivi contient egalement la notification en plus (je sais que l'equipe travaille sur ce sujet, bon courage!)

  • foreach last x pour avoir les x derniers suivis ce qui permet de resoudre le problume ci dessous.

Dans ma refonte de toute mes nofitications j'ai choisi un modele dont la struture est de ce type:

- Entete (titre notification, numero ticket avec lien)
- Information principale mise en valeur (votre ticket a ete pris en charge, truc a demande une validation de machin, votre ticket a ete resolu avec solution proposee etc...)
- rappel d'infos secondaire (contenu du ticket, ancien suivi,
- signature ( signature de l'equipe info, lien vers la donc en ligne de glpi)

Donc ce que je souhaite c'est dans la partie information.rpincipale c'est affiche uniquement le nouveau suivi ( j'utilise donc le foreach last) et en dessus les x precedents suivis et la si j'utilise le foreach last x je retrouve mon suivi deja mis en valeur dans ma zone info principale.

L'idee est donc d'avoir les x precedents ne contenant pas le dernier.

Pour exemple on prend un ticket avec 10 suivi cree chronologiquement suivi 1,suiv 2, suivi 3 etc...
Une suivi est de nouveau ajouté voici la notification

Ajout d'un suivi.             Ticket n°3453

Gérard Menvussa a ajouté ce suivi:
Description: suivi 11

----------------- 3 precedents suivi
Le xx/xx/xxx par toto
   Suivi 10
Le xx/xx/xxx par toto
   Suivi 9
Le xx/xx/xxx par toto
   Suivi 8

   L'equipe info

J'ai essaye d'etre le plus comprehensible possible, tu comprend meiux ma demarche ?

Certain trouverons probablement cette idee inutile mais je sais par experiance que si les notifications ne sont pas le plus claire et lisible possible alors les utilisateurs les zappent


Migration en cours vers 9.1.2 sous CENTOS 7.
PROD: Win2K3 - XAMPP - OCS 1.32 - GLPI 0.84 - Auth AD - Exchange 2007 - Collecteur POP

Offline

#4 2012-07-16 15:41:21

DaBoss
Member
From: Rouen
Registered: 2010-07-05
Posts: 170

Re: Modification du code pour notification suivi.

Moyo> ma nouvelle explication est-elle plus clair ?


Migration en cours vers 9.1.2 sous CENTOS 7.
PROD: Win2K3 - XAMPP - OCS 1.32 - GLPI 0.84 - Auth AD - Exchange 2007 - Collecteur POP

Offline

Board footer

Powered by FluxBB