You are not logged in.
Pages: 1
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
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
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
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
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
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
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 !) je déconne !
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
Salut et merci pour ta réponse (Enfin ..! )
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
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
0.83 très étrange...
Offline
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
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
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
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
J'ai testé les deux plugins Example, mais ils sont incompatible avec la version 0.83.... Savez vous où elle se situe ?
Offline
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.
Désolé, effectivement je n'étais pas au bon endroit
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
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
Pages: 1