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 2010-11-24 16:22:31

Florian Benavent
Member
Registered: 2010-09-06
Posts: 138

Plugin order, droit et budgets

Edit : résumé du poste :
Présenté dans le 1er message : 1 bug, 1 histoire "d'harmonie" et un peu de nettoyage :

Réponse de tsmr : correction du bug : https://forge.indepnet.net/projects/ord … isions/416 + Il s'occupera de la suppression du droit budget du plugin dans le profil pour la prochaine version (car il est devenu inutile)

Mes 2 derniers message présente du code pour l'harmonisation des points suivantes :
          -> Suppression de la partie Budget dans le menu du plugin lorsqu'on à aucun droit dessus
          -> Apparition du plugin dans le menu de glpi lorsqu'on en accès qu'au budget
          -> Disparition des champs "modifiables" de la partie référence en cas de droit de lecture uniquement (même si  les modifications ne pouvait déjà pas être validé
Et nettoyage de quelque ligne devenu inutile + suppression des 4 fichiers en rapport avec le budget dans le plugin (devenu inutile depuis la présence des budgets dans GLPI directement (et un lien des budgets du plugin vers les pages budgets GLPI).
Ce cadre est pour informer ceux qui n'aurait pas envie de lire jusqu'au bout  tongue

           
                       
Bonjour.
Voila, après quelque test sur la version 0.78.1 et la dernière version du plugin j'ai repéré 2 choses minimes et 1 problème "Important" sur le plugin gestion des commandes qui ne sont pas forcément gênant (sauf le 1er) mais qui ne sont pas en "harmonie" va t-on dire.

1er Point : Aie Aie Aie sa pique
Dans mes test sur les droits je suis tombé sur quelque chose d'assez embêtant.
En mettant aucun accès au droit interne du plugin : "Gérer les commandes:" et "Gérer le catalogue de références produits:", même avec le droit d'écriture de GLPI sur les budgets et les droits interne du plugin pour les budget, validation, etc... On à Plus accès au plugin ! (après la déco/reco du à la modification du profil évidemment).
Pire encore, on n'a plus non plus accès à l'onglet "Gestion des commandes" dans la partie Profils, on ne peut ainsi pas redonner le droit de lecture ou d'écriture à ce profils.

De mon côté, pour ces test seul le profil super-admin avait les droits, ce qui fait que lorsque je les ai perdu je ne pouvais plus les récupérer nul part. Les seuls solutions sont alors : désinstaller/réinstaller le plugin (cela ne marche pas avec désactivation/activation) ou la modification dans la base de donnée pour récupérer un droit.

Il n'y à évidement pas d'erreur en mode debug (cela doit juste être les fonction de test d'autorisation qui ont des problèmes).


2eme chose : Le droit d'écriture sur les budgets :
   - Comme la section budget du plugin est "lié" avec les budgets glpi, le droit de gérer ces budgets (configurable par profil) dépendent désormais totalement de la configuration du champ budget de glpi dans l'onglet "Inventaire/Gestion/Outils" (j'ai tester en testant l'ensemble de combinaisons des 2 droits).
Puisque le droit "budget" de l'onglet "Gestion des commandes" n'est désormais plus pris en compte, pourquoi ne pas supprimer le champ et le supprimer de la base (pour alléger, de peu, mais c'est déjà ça^^).
A moins bien sur que je me trompe et qu'il est encore utile (pour un cas que je n'aurai pas tester)

3eme chose : harmonie dans le plugin:
Voici les cas selon les "droits"

Voici ce qui se passe pour la partie commande :

     - Aucun accès : On ne le voit pas dans le menu.
     - lecture : on voit la liste des commandes et leur détail. L'icône ajout en haut de la page est grisé, la modification massive désactivé et dans le détail de la commande on ne peut ni modifier l'en-tête de la commande, ni modifier les objets contenu dans cette commande.

Pour la partie Référence :
    - Aucun accès : On ne le voit pas dans le menu
    - Lecture : Tout pareil que la partie Commande SAUF :
                        - On à la liste déroulante pour modifier le nom de la référence
                        - On à la liste déroulante pour  modifier le commentaire de la référence
                        - On à la liste déroulante pour  modifier le fournisseur de la référence
                        - On à la liste déroulante pour modifier le type, modèle et gabarit de la référence
      Pour cette ensemble on ne peut pas valider car le bouton à disparu, mais ce serait peut être plus "jolie" si cela se passait comme pour la commande, c'est à dire plutôt que des champs input ou select avoir juste le nom inscrit dans la cellule.

Pour la partie budget (droit de GLPI du coup):

       - Aucun accès : On le voit dans le menu, quand on clique dessus on arrive sur une page avec le message d'interdiction car on ne possède pas les droits nécessaire.
     - Lecture on à accès aux boutons ajouter et à l'ensemble des champs de modifications pour chaque budget, on n'a ni la  modification massive, ni les boutons pour valider les modifications. Pour la partie ajout on arrive encore à une page avec le message d'interdiction du aux droits.

Ici aussi pourquoi ne pas l'aligner sur les commandes ? (qui restent le plus propre à mon avis).


En conclusion: le 1er point peut être embêtant et pourrai être classé comme un bug important.
Le 2nd et 3eme point peuvent être considéré comme de l'harmonisation et, à mon avis, pourrait mériter un petit ticket dans la roadmap pour la prochaine version du plugin.

Merci de votre attention
Florian  cool

Last edited by Florian Benavent (2010-11-25 15:44:55)


Bonne Journée/Soirée à tous.
Florian Benavent.
Etudiant à Epitech.
Stagiaire chez Veolia Umwelt Service.

Offline

#2 2010-11-24 17:59:42

Florian Benavent
Member
Registered: 2010-09-06
Posts: 138

Re: Plugin order, droit et budgets

Je me permet de rajouter ce message (l'autre est déjà assez gros, je me demande si quelqu'un l'à déjà lu en entier tongue ).

Dans ce que je développe (même si maintenant il à beaucoup muter par rapport aux plugin order), Il à fallu que je modifie la partie référence (Voir la partie 3 de mon long message, entre autre pour l'harmoniser  big_smile ).
J'ai pu rapidement appliquer mes modifications sur le véritable plugin (ma version témoin, celle ou j'ai justement fait les test donnant le résultat précédent).

Dans le cas ou le droit pour la référence est "Lecture".
J'ai enlever les champs select et input ainsi que désactiver la partie "Notes", si des développeurs sont intéressé par les fichiers entiers ou la fonction que j'ai modifier (et la ligne ajouter dans reference.tabs.php) qu'il me demande (j'ai aussi un compte sur la forge, mais je sais pas trop si on peut envoyer des fichiers par là).


Bonne Journée/Soirée à tous.
Florian Benavent.
Etudiant à Epitech.
Stagiaire chez Veolia Umwelt Service.

Offline

#3 2010-11-24 22:08:45

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Plugin order, droit et budgets

1. Bien vu. En même temps s'enlever les droits sur un compte super-admin, faut vraiment chercher la m.....
https://forge.indepnet.net/projects/ord … isions/416

2. Oui c'est un oubli. Je l'enleverais dans la prochaine version

3. Pour la partie budget : C'est GLPI qui gère cette partie et non le plugin. Donc on ne peut rien y faire.


Xavier Caillaud
Blog GLPI Infotel

Offline

#4 2010-11-25 10:18:39

Florian Benavent
Member
Registered: 2010-09-06
Posts: 138

Re: Plugin order, droit et budgets

tsmr wrote:

1. Bien vu. En même temps s'enlever les droits sur un compte super-admin, faut vraiment chercher la m.....
https://forge.indepnet.net/projects/ord … isions/416

Tu serais étonné de voir à quel point on pousse nos test à epitech  big_smile.
Je confirme que la correction marche bien, mais elle n'aime cependant pas que je lui greffes mes modifications  sad

Pour le 2, oki^^

tsmr wrote:

3. Pour la partie budget : C'est GLPI qui gère cette partie et non le plugin. Donc on ne peut rien y faire

effectivement j'avais pas fait attention qu'on quitte réellement le plugin pour arriver dans la page budget de glpi.

La question que je me pose alors, les fonctions et les fichiers budgets du plugin servent encore à quelque chose?

J'avais aussi parler de la partie référence qui laissait les champs de modifications (c'est pas important mais comme je l'ai dit à mon précédent message, je les ai fait disparaitre si cela t'intéresse).

Pour le budget on peut quand même faire quelque chose (le seul point qui ne dépend pas de glpi)
Droit au budget : aucun accès , dans le menu glpi on le voit plus, dans le menu plugin on le voit encore. Pour changer cela :

dans le fichier menu.php
$PluginOrderBudget = new PluginOrderBudget();  Devient $Budget = new Budget();

Et

if ($PluginOrderBudget->canView()) { Devient if ($Budget->canView()) {

Et on voit plus la partie budget dans le menu si on est en aucun accès.

Cordialement
Florian

Edit:
sur le fichier setup modifié pour la correction du bug 1, la seul chose que je voit de modifier  c'est la suppression des 2 lignes  :

$PLUGIN_HOOKS['headings']['order'] = 'plugin_get_headings_order';
$PLUGIN_HOOKS['headings_action']['order'] = 'plugin_headings_actions_order';

Suis-je aveugle ?

Last edited by Florian Benavent (2010-11-25 10:46:05)


Bonne Journée/Soirée à tous.
Florian Benavent.
Etudiant à Epitech.
Stagiaire chez Veolia Umwelt Service.

Offline

#5 2010-11-25 13:11:12

Florian Benavent
Member
Registered: 2010-09-06
Posts: 138

Re: Plugin order, droit et budgets

Edit Majeure :
Dsl j'ai cliquer sur citer au lieu de modifier ><   hmm
Je voulais rajouter à mon précédent message :

   2 nd Edit : Je suis entrain de nettoyer la partie budget (les lignes et fonctions qui ne semble plus utiliser + je de permettre la vision du plugin lorsqu'on à le droit d'accès au plugin sans les droits de gestion de commande et de référentiel).

Du coup pour pas gâcher ce message je mettrais mes résultats ici : (déjà de retour):
A noter : dernière version du plugin avec le fichier setup modifié par tsmr un peu plus haut.
              Modification budget et référence de mes post plus haut (enfin référence y a pas le détail mais mes modifs ne sont pas liés au budget)

Nettoyage :

Fichier : hook.php
:
suppression
L° 602 : get_class($item)=='Budget' ||

L° 618 : $PluginOrderBudget = new PluginOrderBudget();

L °633-635 :
case 'Budget' :
         $PluginOrderBudget->getAllOrdersByBudget($_POST["id"]);
         break;   


Fichier setup :
ligne 95-100 :
         //budget
         if (plugin_order_haveRight("budget","r")) {
            $PLUGIN_HOOKS['submenu_entry']['order']['options']['budget']['title'] = $LANG['plugin_order']['menu'][6];
            $PLUGIN_HOOKS['submenu_entry']['order']['options']['budget']['page']  = '/plugins/order/front/budget.php';
            $PLUGIN_HOOKS['submenu_entry']['order']['options']['budget']['links']['search'] = '/plugins/order/front/budget.php';
         }

l ° 113-117:

      if (plugin_order_haveRight("budget","w")) {
         //budget
         $PLUGIN_HOOKS['submenu_entry']['order']['options']['budget']['links']['add']    = '/plugins/order/front/budget.form.php';
         $PLUGIN_HOOKS['submenu_entry']['order']['options']['budget']['links']['config'] = '/plugins/order/front/config.form.php';
      }
     
      Suppression du fichier ajax/budget.tabs
      Suppression du fichier front/budget.php
      Suppression du fichier front/budget.form.php
      Suppression du fichier inc/budget.inc.php

Après je n'ai pas regarder le système de mise à jour et d'installation (je n'y est encore jamais touché alors j'hésite). Si j'ai le temps je testerai ce "Nettoyage" en cas d'installation et/ou de mise à jour, si sa plante je le dirait (et je chercherai à corriger).

Affichage du plugin si accès au budget mais pas au reste : (pas forcément utile j'en convient mais bon):
   Double modif :
l°73:
if (plugin_order_haveRight("order", "r") || plugin_order_haveRight("reference", "r")) {
Devient
if (plugin_order_haveRight("order", "r") || plugin_order_haveRight("reference", "r") || plugin_order_haveRight("budget", "r")) {

ET
l°108:
if (plugin_order_haveRight("order", "r") || plugin_order_haveRight("reference", "r") || haveRight("config","w")) {
Devient
if (plugin_order_haveRight("order", "r") || plugin_order_haveRight("reference", "r") || plugin_order_haveRight("budget", "r") || haveRight("config","w")) {

Et Voilou à fini.
Maintenant je vais réinstaller une version témoin (car celle là à subit de grosse modif :x)
En cadeau pour finir ce topic , les modifs pour la partie 3, Référence de mon 1er message :

Il s'agit de la fonction showform contenu dans le fichier inc/reference.php
Toute les lignes que j'ai ajouter/modifier possède à leur fin :  // I Change

function showForm ($ID, $options=array()) {
        global $CFG_GLPI, $LANG;
     
      if (!$this->canView()) return false;
       
        if ($ID > 0) {
         $this->check($ID,'r');
      } else {
         // Create item
         $this->check(-1,'w');
         $this->getEmpty();
      }

      $this->showTabs($options);
      $this->showFormHeader($options);
 
        $reference_in_use = (!$ID?false:$this->referenceInUse());
     
      echo "<tr class='tab_bg_1'>";
     
      echo "<td>" . $LANG['plugin_order']['reference'][1] . ": </td>";
      echo "<td>";
      if ($this->canCreate()) // I Change
        { // I Change
            autocompletionTextField($this,"name",array('size' => "60"));
          } // I Change
        else // I Change
            echo $this->fields["name"]; // I Change
      echo "</td>";

      echo "<td>" . $LANG['common'][5] . ": </td>";
      echo "<td>";
        if (!$reference_in_use && $this->canCreate()) // I Change
            Dropdown::show('Manufacturer', array('name' => "manufacturers_id",'value' => $this->fields["manufacturers_id"]));
          else
             echo Dropdown::getDropdownName("glpi_manufacturers",$this->fields["manufacturers_id"]);

            
      echo "</td></tr>";
     
      echo "</tr>";
      echo "<tr class='tab_bg_1'>";
     
      echo "<td>" . $LANG['state'][6] . ": </td>";
      echo "<td>";
     
      if ($ID > 0) {
         $itemtype = $this->fields["itemtype"];
         $item = new $itemtype();
         echo $item->getTypeName();
      } else {
         $this->dropdownAllItems("itemtype", true, $this->fields["itemtype"], 0, 0, $_SESSION["glpiactive_entity"], $CFG_GLPI["root_doc"] .
         "/plugins/order/ajax/reference.php");
         echo "<span id='show_reference'></span></td>";
      }

      echo "<td>" . $LANG['common'][17] . ": </td>";
      echo "<td><span id='show_types_id'>";
      if ($this->fields["itemtype"]) {
         if ($this->fields["itemtype"] == 'PluginOrderOther') $file = 'other'; else $file = $this->fields["itemtype"];
         if (file_exists(GLPI_ROOT."/inc/".strtolower($file)."type.class.php")
         || file_exists(GLPI_ROOT."/plugins/order/inc/".strtolower($file)."type.class.php")) {
            if (!$reference_in_use && $this->canCreate()) // I Change
               Dropdown::show($this->fields["itemtype"]."Type", array('name' => "types_id",'value' => $this->fields["types_id"]));
            else if (!$reference_in_use) // I Change
               echo Dropdown::getDropdownName(getTableForItemType($this->fields["itemtype"]."Type"), $this->fields["types_id"]);
         }
      }

      echo "</span></td>";
     
      echo "</tr>";
      echo "<tr class='tab_bg_1'>";
     
      echo "<td>" . $LANG['common'][22] . ": </td>";
      echo "<td><span id='show_models_id'>";
      if ($this->fields["itemtype"] && $this->canCreate()) // I Change
      {
         if (file_exists(GLPI_ROOT."/inc/".strtolower($this->fields["itemtype"])."model.class.php")) {
            Dropdown::show($this->fields["itemtype"]."Model", array('name' => "models_id",'value' => $this->fields["models_id"]));
         }
      }
      else if ($this->fields["itemtype"]) // I Change
          echo Dropdown::getDropdownName(getTableForItemType($this->fields["itemtype"]."Model"), $this->fields["models_id"]); // I Change
      echo "</span></td>";

      echo "<td>" . $LANG['common'][13] . ": </td>";
      echo "<td><span id='show_templates_id'>";
     
      $table = getTableForItemType($this->fields["itemtype"]);
     
      if ($this->fields["itemtype"] && $item->maybeTemplate() && $this->canCreate()) // I Change
            $this->dropdownTemplate("templates_id", $this->fields["entities_id"], $table, $this->fields["templates_id"]);
         else if ($this->fields["itemtype"] && $item->maybeTemplate()) // I Change
            echo $this->getTemplateName($this->fields["itemtype"], $this->fields["templates_id"]);

      echo "</span></td>";
     
      echo "</tr>";
      echo "<tr class='tab_bg_1'>";
     
      echo "<td></td>";
      echo "<td></td>";
     
      echo "<td>" . $LANG['common'][25] . ": </td>";
     
      if ($this->canCreate()) // I Change
      {// I Change
        echo "<td>";// I Change
        echo "<textarea cols='50' rows='4' name='comment' >" . $this->fields["comment"] . "</textarea>";
      }// I Change
      else// I Change
       {// I Change
        echo "<td style='width: 55%;'>";// I Change
        echo $this->fields["comment"];
       }// I Change
   
      echo "</td>";
      echo "</tr>";
     
      $this->showFormButtons($options);
      $this->addDivForTabs();
   
      return true;
    }

Une taille max à un message sur le forum? big_smile

Last edited by Florian Benavent (2010-11-25 15:34:17)


Bonne Journée/Soirée à tous.
Florian Benavent.
Etudiant à Epitech.
Stagiaire chez Veolia Umwelt Service.

Offline

#6 2010-11-26 13:52:50

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Plugin order, droit et budgets

sur le fichier setup modifié pour la correction du bug 1, la seul chose que je voit de modifier  c'est la suppression des 2 lignes  :

non c'est réorganisé

dans le fichier menu.php
$PluginOrderBudget = new PluginOrderBudget();  Devient $Budget = new Budget();

Et

if ($PluginOrderBudget->canView()) { Devient if ($Budget->canView()) {

De toute façon, oui je vais tout enlever pour la 0.80. Je vais le mettre dans le bugfixes au cas ou.

--

Pour les références, le principal c'est que tu ne puisse pas actualiser. Après c'est juste du design tongue


Xavier Caillaud
Blog GLPI Infotel

Offline

Board footer

Powered by FluxBB