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 2006-04-18 18:17:03

esolarc
Member
From: Genève
Registered: 2006-04-18
Posts: 10
Website

Pré-remplissage liste équipement

Bonjour,

J'ai fait une recherche sur le forum mais je n'ai pas trouvé de sujet sur le sujet ;-)

Voila lorsqu'un utilisateur quelqu'il soit créé un nouveau ticket il doit sélectionner sur quoi porte son ticket (Générale, Ordinateur,...).

Apparait alors, par exemple dans le cas d'ordinateur, deux zones une première pour saisir les premières lettres de l'élément recherché et la deuxième pour sélectionner dans la liste filtrée avec ces premières lettres.

Si ensuite on supprime les premières lettres saisies on obtient alors dans la deuxième zone la liste complète...

Alors ma question est simple comment faire pour que dès qu'on a choisi "ordinateur" le deuxième champ, la liste donc soit calculé (en l'occurance en fournissant la liste complète puis qu'il n'y a pas de premières lettres de tapé...).

J'avais une deuxième question mais finallement j'ai été modifier le code moi même, il s'agissait de filtrer la liste des équipements pour qu'un utilisateur post-only ne voit que les équipements qui le concerne (même localisation) et non tous les équipements.

Dans l'attente de vos solutions,

Last edited by esolarc (2006-04-18 18:17:37)


(e)solarc - Portable IBM Thinkpad T42 - OS : SuSE OS 10.0 - Navigateur : Firefox - Suite bureautique : Open Office 2
Spécialiste CRM/CMS/Groupware/Worflow
Architect-Dev.Senior : Lotus Notes/Domino, PHP, SQL, HTML,CSS
http://www.esolarc.com  http://www.e-vw.net

Offline

#2 2006-04-18 18:59:23

JMD
GLPI - Lead
Registered: 2004-09-13
Posts: 9,180
Website

Re: Pré-remplissage liste équipement

Configuration : désactiver ajax


JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au  projet GLPI   : Soutenir

Offline

#3 2006-04-18 19:23:06

chacawaca
Member
From: Québec
Registered: 2005-07-11
Posts: 513

Re: Pré-remplissage liste équipement

tu pourrais p-e poster le code que tu a modifier sa peut en intéresser dautre

Offline

#4 2006-04-19 10:27:09

esolarc
Member
From: Genève
Registered: 2006-04-18
Posts: 10
Website

Re: Pré-remplissage liste équipement

JMD wrote:

Configuration : désactiver ajax

Non je ne veux absolument pas désactiver Ajax je voudrais juste que au moment ou je sélectionne sur quoi porte le ticket "ordinateur", "écran",... le champ ou on indique les premières lettres d'un équipement ou n°de série reste vide et que la combolist s'initialise.

Donc en fait que le choix de sru quoi porte le ticket active le Ajax pour afficher ou non le champ de saisie et la combolist puisse si il l'affiche activer également le calcul de la combolist.

J'ai essayer de pré-remplir le champ de saisie des premières lettres mais cela ne lance pas le programme qui calcul la combolist, il faut absolument que l'utilisateur tape un caractère dans le champ de saisi pour que la comboliste se calcule, même si du coup elle est vide... et c'est ce qui m'a amené à penser que puisque quand elle vide la combolist propose alors l'ensemble des équipements pourquoi ne pas proposer cette liste complète dès le départ... c'est un fonctionnement qui semblerait des plus logiques et en tout cas beaucoup plus facile à comprendre par un utilisateur que de devoir lui dire de devoir taper un caractère pui le supprimer pour avoir la liste complète des équipements.


(e)solarc - Portable IBM Thinkpad T42 - OS : SuSE OS 10.0 - Navigateur : Firefox - Suite bureautique : Open Office 2
Spécialiste CRM/CMS/Groupware/Worflow
Architect-Dev.Senior : Lotus Notes/Domino, PHP, SQL, HTML,CSS
http://www.esolarc.com  http://www.e-vw.net

Offline

#5 2006-04-19 10:48:57

esolarc
Member
From: Genève
Registered: 2006-04-18
Posts: 10
Website

Re: Pré-remplissage liste équipement

chacawaca wrote:

tu pourrais p-e poster le code que tu a modifier sa peut en intéresser dautre

Notre installation de GLPI nous permet de gérer l'ensemble des équipements maintenus chez divers clients.

Ces mêmes clients ont chacun un accès Post-only pour pouvoir saisir leur demandes d'intervention.

Dans l'installation de base lorsqu'un client créé un ticket et indique qu'il porte sur, par exemple, les ordinateurs il a accès dans la combolist des équipements à l'ensemble des ordinateurs maintenus par notre instance GLPI, y compris ceux de nos autres clients, or on ne souhaite pas qu'un client puisse connaitre nos autres clients et encore moins les ordinateurs qu'il possède.

Notre but était donc de limite le calcul de la combolist des équipements au seuls équipement du client.

Pour ce faire nous avons utilisé la notion de localisation, ainsi un utilisateur ne peut voir que la liste des équipements ayant la même localisation que lui.

On a donc modifier ainsi le code du programme /ajax/dropdownFindNum.php

Après le code :

$where="WHERE '1'='1' ";
if (in_array($_POST['table'],$cfg_glpi["deleted_tables"]))
    $where.=" AND ".$_POST['table'].".deleted='N' ";
if (in_array($_POST['table'],$cfg_glpi["template_tables"]))
    $where.=" AND ".$_POST['table'].".is_template='0' ";

j'ai ajouté le code :

if ( $_SESSION["glpitype"] == "post-only" )
    $where.= " AND glpi_users.ID=".$_SESSION["glpiID"];

Ce code permet d'ajouter une condition au where de la requête SQL pour filtrer les résultats par rapport à l'utilisateur courant, si il est de type "post-only" (mais vous pouvez aisément l'adapter pour d'autres type d'utilisateur, vous pouvez par exemple faire comme test dans le if : $_SESSION["glpitype"] != "super-admin" ainsi le filtre marche pour tous les type d'utilisateurs et seul les super-admin accèdent à la liste complète des équipements).

Pour terminer il faut également modifier le bout de code :

$LIMIT="LIMIT 0,$NBMAX";

$query = "SELECT ".$_POST['table'].".* FROM ".$_POST['table']." $where ORDER BY name $LIMIT";
    
$result = $db->query($query);

par :

$LIMIT="LIMIT 0,$NBMAX";
if ($_POST['searchText']==$cfg_glpi["ajax_wildcard"]) $LIMIT="";
    
if ( $_SESSION["glpitype"] == "post-only" )
{
    $query = "SELECT ".$_POST['table'].".*, glpi_users.location FROM ".$_POST['table']." JOIN glpi_users on ".$_POST['table'].".location = glpi_users.location $where ORDER BY ".$_POST['table'].".name $LIMIT";
}else{
    $query = "SELECT ".$_POST['table'].".* FROM ".$_POST['table']." $where ORDER BY name $LIMIT";
}
    
$result = $db->query($query);

Ce code fait une jointure entre la table des équipements et celles des utilisateurs sur la localisation, ainsi chaque équipement est lié à la table user et donc un utilisateur par sa localisation. Comme ensuite dans le where on ne sélectionne que les résultats de l'utilisateur courant on obtient bien que les équipements de la même localisation que l'utilisateur courant.

Et cela marche très bien, attention toutefois si vous modifier le if du premier bout de code à reporter ce même if dans la condition du deuxième bout de code...

Voila j'espere que cela pourra servir à quelqu'un...


(e)solarc - Portable IBM Thinkpad T42 - OS : SuSE OS 10.0 - Navigateur : Firefox - Suite bureautique : Open Office 2
Spécialiste CRM/CMS/Groupware/Worflow
Architect-Dev.Senior : Lotus Notes/Domino, PHP, SQL, HTML,CSS
http://www.esolarc.com  http://www.e-vw.net

Offline

#6 2006-04-19 12:03:55

JMD
GLPI - Lead
Registered: 2004-09-13
Posts: 9,180
Website

Re: Pré-remplissage liste équipement

et c'est ce qui m'a amené à penser que puisque quand elle vide la combolist propose alors l'ensemble des équipements pourquoi ne pas proposer cette liste complète dès le départ... c'est un fonctionnement qui semblerait des plus logiques et en tout cas beaucoup plus facile à comprendre par un utilisateur que de devoir lui dire de devoir taper un caractère pui le supprimer pour avoir la liste complète des équipements.

Nous avons utilisé ajax non pas pour nous faire plaisir ou pour faire plaisir à l'utilisateur mais pour répondre à une problématique de performance. Sur des parcs de plusieurs milliers de machines l'affichage complet des dropdowns devenait réellement problématique.

La solution consistait à non pas afficher la totalité du dropdown par défaut mais une box permettant de saisir la ou les premières lettres de la recherche afin de générer un dropdown limité.

Donc la logique utilisateur qu'on propose est :

1) L'utilisateur sélectionne la catégorie

2) L'utilisateur saisie soit "*" (cf la doc)  s'il veut toute la liste , soit  les premières lettres de son matériel.

Il n'y a pas de caractère à taper  et à supprimer ....


JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au  projet GLPI   : Soutenir

Offline

#7 2006-04-19 12:51:00

esolarc
Member
From: Genève
Registered: 2006-04-18
Posts: 10
Website

Re: Pré-remplissage liste équipement

J'ai très bien compris cela mais si après avoir saisie une * il l'a supprime il a quand même toute la liste (limité à 100 items comme avec *) alors pourquoi attendre qu'il saisisse une * ???

Cela impose une saisie supplémentaire totalement inutile...

La liste complète est limité à 100 items, soit !... donc s'il ne trouve pas son matériel dans la liste de base il peut affiner la liste en saisissant quelques lettres... là cela serait simple et compréhensible par un utilisateur lambda qui n'a pas forcément lu la doc... ;-)

Last edited by esolarc (2006-04-19 12:51:45)


(e)solarc - Portable IBM Thinkpad T42 - OS : SuSE OS 10.0 - Navigateur : Firefox - Suite bureautique : Open Office 2
Spécialiste CRM/CMS/Groupware/Worflow
Architect-Dev.Senior : Lotus Notes/Domino, PHP, SQL, HTML,CSS
http://www.esolarc.com  http://www.e-vw.net

Offline

#8 2006-04-19 13:41:49

chacawaca
Member
From: Québec
Registered: 2005-07-11
Posts: 513

Re: Pré-remplissage liste équipement

Dans votre cas désactiver donc ajax et tout le monde sera content, ici on a au dessus de 1000 pc quand la liste apparrait au complet c'est lourd trouver son pc dans le tas. Le ajax devient donc une nécessité...

Last edited by chacawaca (2006-04-19 13:42:42)

Offline

#9 2006-04-19 13:48:20

JMD
GLPI - Lead
Registered: 2004-09-13
Posts: 9,180
Website

Re: Pré-remplissage liste équipement

Vous avez tout compris mais apparament pas tout quand même :

mais si après avoir saisie une * il l'a supprime

-> pourquoi vous partez d'un cas où l'utilisateur réalise ce genre de manipulation ?

Soit il saisi les premières lettres s'il les connait, soit il saisie le caractère étoile pour avoir la liste complète.....


il a quand même toute la liste (limité à 100 items comme avec *)

Non, l'affichage obtenu avec * correspond à la liste complète et non pas limitée à100...

alors pourquoi attendre qu'il saisisse une * ???

Parce que comme je vous l'ai dit plus haut, on ne souhaite pas afficher la liste complète par défaut pour des raisons de perfs. Argument ridicule si vous avez 30 machines et tout à fait valable si vous en avez 3000 par exemple.


JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au  projet GLPI   : Soutenir

Offline

#10 2006-04-19 14:50:34

esolarc
Member
From: Genève
Registered: 2006-04-18
Posts: 10
Website

Re: Pré-remplissage liste équipement

Okay je n'avais vue la subtilité entre l'* et le champ vide (totalité ou limite à 100) et vue comme ca cela peut s'expliquer mais bon j'aurais quand même une question... (je sais je peux être lourd...)

Vue que dans notre cas pour les utilisateur de type "post-only" on filtre les équipement par localisation comment on peut faire pour garder l'Ajax tout en initialisant la combolist pour ces utilisateurs ?

En d'autre termes comment lance le 2e Ajax celui qui observe le champ search pour faire le select des équipement à partir du premier ?

Last edited by esolarc (2006-04-19 14:51:23)


(e)solarc - Portable IBM Thinkpad T42 - OS : SuSE OS 10.0 - Navigateur : Firefox - Suite bureautique : Open Office 2
Spécialiste CRM/CMS/Groupware/Worflow
Architect-Dev.Senior : Lotus Notes/Domino, PHP, SQL, HTML,CSS
http://www.esolarc.com  http://www.e-vw.net

Offline

#11 2006-04-19 16:27:05

esolarc
Member
From: Genève
Registered: 2006-04-18
Posts: 10
Website

Re: Pré-remplissage liste équipement

J'ai eu une solution avec ce post :

http://glpi.indepnet.org/forum/viewtopi … 040#p15040

C'est pas des plus jolie visuellement car cela se passe en 2 étapes mais ca marche...

J'ai juste ajouté en fin du fichier dropdownTrackingDeviceType.php le code du post ci-dessus indiqué :

echo "<script type='text/javascript' >\n";
echo "document.getElementById('search_".$_POST['myname']."$rand').value='*';";
echo "</script>\n";

Mais si il y a une autre solution je suis quand même preneur... ;-)


(e)solarc - Portable IBM Thinkpad T42 - OS : SuSE OS 10.0 - Navigateur : Firefox - Suite bureautique : Open Office 2
Spécialiste CRM/CMS/Groupware/Worflow
Architect-Dev.Senior : Lotus Notes/Domino, PHP, SQL, HTML,CSS
http://www.esolarc.com  http://www.e-vw.net

Offline

Board footer

Powered by FluxBB