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 2013-08-08 18:00:44

vik2013
Member
Registered: 2013-03-26
Posts: 26

Consummable - Javascript

Bonjour,

Je suis actuellement en train de développer une facilité concernant les consommable. En effet, je suis en train de mettre en place un système qui permet de cocher les checkbox des consommables selon le nombre d'élément dans la vue.

Exemple : J'ai 500 clé usb dans mes consommables, je souhaite en transférer seulement 50 à un technicien, je ne vais pas m'amuser à cliquer 50 fois sur les checkbox..... Ma fonctionnalité consiste à justement définir le nombre de checkbox à cocher.

Ma fonctionnalité est presque terminé, le seul soucis que je rencontre est au niveau du Javascript.

En effet, j'ai déjà crée mon javascript mais je ne sais pas où l'inclure ! J'ai essayé dans index.php, ca ne fonctionne pas...

Si des dev connaissent très bien GLPI, et qu'ils peuvent m'apporter une aide pour inclure ce Javascript, ce serait très enrichissant pour moi.


En vous remerciant d'avance !

Offline

#2 2013-08-09 09:01:46

tofou
Member
From: Saint-Lô
Registered: 2007-02-26
Posts: 96

Re: Consummable - Javascript

Bonjour,

Regarde le plugin example, tu verras que c'est dans le setup.php qu'il faut ajouter les javascript et css comme :

$PLUGIN_HOOKS['add_javascript']['example'] = 'example.js';
$PLUGIN_HOOKS['add_css']['example']        = 'example.css';

Cordialement,


GLPI : 10.0.16
OS : RH9 + Apache
php : 8.3.11,
MariaDB : 10.11.9

Offline

#3 2013-08-09 09:34:32

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Bonjour et merci pour ta réponse !

En fait le soucis est que je n'utilise pas de plugin pour ma fonctionnalité.... J'apporte les modifications nécessaires au code directement ! De plus je n'utilise pas de plugin.


$PLUGIN_HOOKS['add_javascript']['example'] = 'example.js';


Si je prends cet exemple, ça veut dire que cette ligne je peux l'utiliser n'importe où dans mon code ?

En fait je ne trouve pas où sont chargés les différents script javascript (sans parler des plugin)

Offline

#4 2013-08-09 10:06:35

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

J'ai inclu mon Javascript dans html.class.php, cependant ça me met une erreur (erreur trouvée grâce à l'outil de développement de google chrome) :

Uncaught TypeError: Cannot call method 'addEventListener' of null

Connaissez vous la cause ? Le script se situe bien entre les balises <head></head>.....

En vous remerciant d'avance.

Offline

#5 2013-08-12 10:06:28

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Toujours pas trouvé où mettre le javascript  :S

Je l'ai mis dans la fonction includeHeader dans html.class.php, mais toujours la même erreur.

Quand je regarde le code source avec Chrome, le javascript est bien situé dans la balise <HEAD>.

Je suis sûr que GLPI a une contrainte concernant le javascript, je ne comprends pas....

En vous remerciant d'avance pour votre aide.

Offline

#6 2013-08-21 15:42:32

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Je mets le code en question :

echo '     <script type="text/javascript">'
                 .'function checkBoxes() {'
                .'var selectNumberItem = document.getElementById("nombre");'
                .'var valeurNbreselectionne = selectNumberItem.options[selectNumberItem.selectedIndex].value;'
                .'var nbCheckBoxes = valeurNbreselectionne;'

                .'var allInputs = document.getElementsByTagName("input");'

                .'for(i=0, k=0; i<allInputs.length; i++) {'
                   .'if (allInputs[i].type == "checkbox"){'
                     .'allInputs[i].checked = k++< nbCheckBoxes;'
                   .'}'
                 .'}'
               .'}'

                .'window.onload = function() {'

                  .'document.getElementById("checkButton").addEventListener("click", checkBoxes, false);'
                .'}'
                .'</script>';

Juste pour info, j'ai crée un bouton qui me permet de cliquer et faire appel à ce script. Ce script a été testé sur une page blanche, et fonctionne très bien. Cependant j'ai toujours l'erreur :

Uncaught TypeError: Cannot call method 'addEventListener' of null

En vous remerciant d'avance.



Edit : Pour info, l'id "nombre" correspond à l'id d'une liste déroulante :

echo "<br><select name='nombre' id='nombre'>";

            for($i=1;$i<$total+1;$i++) { 
                
            echo "<option value='$i'> $i </option>";
            
            }

En résumé : selon le nombre selectionné, je mets les checkboxes à TRUE.
Donc si j'ai au total 10 clé USB, ma liste déroulante contiendra les chiffres de 1 à 10. Si je selectionne 2, mon Script va sélectionner les deux premieres checkboxes.....

Last edited by vik2013 (2013-08-21 15:59:34)

Offline

#7 2013-08-22 08:14:26

cartesimrefusee
Member
Registered: 2005-12-19
Posts: 79

Re: Consummable - Javascript

Autre solution plus simple :
Choisis le nombre d'éléments à afficher
Clique sur "tout cocher"
Et hop!, l'affaire est dans le sac
2 avantages :
Tu aurais perdu moins de temps à coder et ton technicien serai déjà servi (il doit s'impatienter !) lol je déconne ! lol
Plus sérieusement, comme tu ne fais pas un plugin, à la prochaine mise à jour, tes modifications ont toutes les chances de sauter...


GLPI 9.2.1 - FusionInventory 9.1+1.0 / Agent v2.3.10.1 - Serveur W2k8R2 - Apache 2.2.21 - PhP 5.6.32 - MySql 5.7.20

Offline

#8 2013-08-22 10:12:30

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Salut et merci pour ta réponse (Enfin ..!  big_smile)

Juste une question, comment et où définir le nombre d'éléments à afficher ?

Edit : Juste pour info, nous sommes dans les consommables, et il n'y a pas d'option pour tout cocher (ou je ne le vois pas :s)

Last edited by vik2013 (2013-08-22 10:15:42)

Offline

#9 2013-08-22 10:40:40

cartesimrefusee
Member
Registered: 2005-12-19
Posts: 79

Re: Consummable - Javascript

hmm au même endroit que d'habitude.....

mais tu  as quelle version de GLPI ?


GLPI 9.2.1 - FusionInventory 9.1+1.0 / Agent v2.3.10.1 - Serveur W2k8R2 - Apache 2.2.21 - PhP 5.6.32 - MySql 5.7.20

Offline

#10 2013-08-22 10:47:48

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

0.83  hmm  très étrange...

Offline

#11 2013-08-22 10:55:21

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Ok je vois ce que tu veux dire, moi je parle des cases à cocher à l'intérieur d'un consommable, par exemple t'as des clé usb, tu cliques sur "clé usb", et tu ajoutes par exemple 100 clés.

Si je veux affecter par exemple 50 clés à un utilisateur, je ne vais pas m'amuser à cliquer 50 fois (m'enfin en pratique glpi propose ça). C'est pour ça que j'ai crée un script qui permet, selon le nombre défini, de cocher les cases.

Exemple : j'ai une liste déroulante qui va de 1 à 100, je selectionne 50 et ça me coche les 50 premiers éléments.

Offline

#12 2013-08-23 09:54:28

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Bon, je vais faire un plugin en faisant un addJavascript comme me le conseil tofou.

Cependant, je veux juste lors de la création d'un plugins, est ce qu'il y a des fonction obligatoires à implémenter dans le setup.php ?

J'ai donc crée un .js et dans le setup.php je fais bien  : "$PLUGIN_HOOKS['add_javascript']['example'] = 'example.js';"

Je souhaiterai donc savoir si mettre une seule ligne dans setup.php était suffisant ?

En vous remerciant d'avance.

Offline

#13 2013-08-23 10:07:44

ddurieux
Plugins Dev
From: Propières, France
Registered: 2005-06-17
Posts: 7,521

Re: Consummable - Javascript

faut mettre toutes les functions que t'as dans le plugin example. Après pour certaines il n'y aura pas grand chose dedans

Offline

#14 2013-08-23 10:13:56

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Merci ! Par contre je ne trouve pas la version 0.83 de example, il n'y a que des 0.7X ou 0.84, je vais prendre la 0.84 en espérant que ça fonctionne

Offline

#15 2013-08-23 10:20:51

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

J'ai testé les deux plugins Example, mais ils sont incompatible avec la version 0.83....  Savez vous où elle se situe ?

Offline

#16 2013-08-23 10:29:08

cartesimrefusee
Member
Registered: 2005-12-19
Posts: 79

Re: Consummable - Javascript

vik2013 wrote:

Ok je vois ce que tu veux dire, moi je parle des cases à cocher à l'intérieur d'un consommable, par exemple t'as des clé usb, tu cliques sur "clé usb", et tu ajoutes par exemple 100 clés.

Si je veux affecter par exemple 50 clés à un utilisateur, je ne vais pas m'amuser à cliquer 50 fois (m'enfin en pratique glpi propose ça). C'est pour ça que j'ai crée un script qui permet, selon le nombre défini, de cocher les cases.

Exemple : j'ai une liste déroulante qui va de 1 à 100, je selectionne 50 et ça me coche les 50 premiers éléments.

big_smile Désolé, effectivement je n'étais pas au bon endroit big_smile


GLPI 9.2.1 - FusionInventory 9.1+1.0 / Agent v2.3.10.1 - Serveur W2k8R2 - Apache 2.2.21 - PhP 5.6.32 - MySql 5.7.20

Offline

#17 2013-08-23 11:20:54

vik2013
Member
Registered: 2013-03-26
Posts: 26

Re: Consummable - Javascript

Bon j'ai trouvé le plugin Example pour la version 0.83, j'ai implémenté le JS, mais toujours le même problème ..! Ca veut dire que mon JS n'est pas accepté par GLPI (alors qu'il fonctionne quand je fais des tests en dehors de GLPI).

Est ce qu'il y a des gens qui peuvent voir mon JS ??? Je ne suis pas très compétent en JS, et je suppose qu'il doit y avoir des règles concernant js sous GLPI.....

Merci à ddurieux et maxxvw d'avoir pris le temps de voir mon problème sur le chat ! En espérant trouver une solution...

Je remets le JS :

echo '     <script type="text/javascript">'
                 .'function checkBoxes() {'
                .'var selectNumberItem = document.getElementById("nombre");'
                .'var valeurNbreselectionne = selectNumberItem.options[selectNumberItem.selectedIndex].value;'
                .'var nbCheckBoxes = valeurNbreselectionne;'

                .'var allInputs = document.getElementsByTagName("input");'

                .'for(i=0, k=0; i<allInputs.length; i++) {'
                   .'if (allInputs[i].type == "checkbox"){'
                     .'allInputs[i].checked = k++< nbCheckBoxes;'
                   .'}'
                 .'}'
               .'}'

                .'window.onload = function() {'

                  .'document.getElementById("checkButton").addEventListener("click", checkBoxes, false);'
                .'}'
                .'</script>';

Offline

Board footer

Powered by FluxBB