Commit 9138c8559cbce617dc8284f801c0530cff13f64f
1 parent
d27459ad
Exists in
master
and in
2 other branches
Bugfix, simplification, et amélioration fonction "Copier ce matériel"
Showing
5 changed files
with
166 additions
and
43 deletions
Show diff stats
README.md
... | ... | @@ -53,10 +53,10 @@ Logiciel testé et validé sur les configurations suivantes : |
53 | 53 | |
54 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | -Date: 13/05/2019 | |
57 | -Version: 2.12.10 | |
56 | +Date: 15/05/2019 | |
57 | +Version: 2.12.11 | |
58 | 58 | Author: EP |
59 | -Commentaire: Ajout de l'option "Librairie pdf utilisée" pour choisir entre fpdf et dompdf | |
59 | +Commentaire: Bugfix, simplification, et amélioration de la fonctionnalité "Copier ce matériel" | |
60 | 60 | |
61 | 61 | IMPORTANT : |
62 | 62 | - Pour connaitre la version actuelle, taper "./VERSION" | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -707,20 +707,56 @@ class MaterielsController extends AppController |
707 | 707 | * @param $IS_ADD: True = add ; False = edit |
708 | 708 | * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise. |
709 | 709 | */ |
710 | - public function add_or_edit($is_add, $id = null, $valeurs = null, $erreurs = null) | |
710 | + public function add_or_edit($is_add, $id=null, $valeurs=null, $erreurs=null) | |
711 | 711 | { |
712 | 712 | $usersTable = TableRegistry::getTableLocator()->get('Users'); |
713 | 713 | |
714 | + // Set $materiel | |
715 | + $materiel = NULL; | |
716 | + | |
714 | 717 | // ADD |
715 | 718 | if ($is_add) { |
716 | - $materiel = $this->Materiels->newEntity(); | |
719 | + // - COPIE de materiel (on a cliqué sur "Copier ce materiel") => id passé en argument | |
720 | + if (isset($this->request->getAttribute('params')['pass'][0])) { | |
721 | + // 1) on crée un materiel vide | |
722 | + $materiel = $this->Materiels->newEntity(); | |
723 | + // 2) on récupère le materiel à copier et on le copie dans $materiel | |
724 | + $materiel_to_copy = $this->Materiels->get($this->request->getAttribute('params')['pass'][0]); | |
725 | + $materiel_to_copy = $materiel_to_copy->toArray(); | |
726 | + //var_dump($materiel_to_copy); | |
727 | + ///foreach ($materiel_to_copy as $key=>$value) $materiel->$key = $value; | |
728 | + // IMPORTANT: validate=False car sinon, les données sont validées avant la copie, | |
729 | + // et le numero_laboratoire est vu comme invalide car déjà utilisé et doit etre unique !!! | |
730 | + // et on a pour résultat : "le matériel n'a pas pu être ajouté" (sans savoir pourquoi !!!) | |
731 | + $materiel = $this->Materiels->patchEntity($materiel, $materiel_to_copy, ['validate' => false]); | |
732 | + // Du coup, on supprime le champ numero_laboratoire car il va être généré automatiquement | |
733 | + unset($materiel->numero_laboratoire); | |
734 | + // IMPORTANT: on ne doit pas laisser l'id égal à celui du matériel copié !!! il en faut un nouveau | |
735 | + $materiel->id = NULL; | |
736 | + //$materiel->id = False; | |
737 | + //unset($materiel->id); | |
738 | + | |
739 | + /* | |
740 | + $attribute="[original]"; | |
741 | + $materiel->$attribute = []; | |
742 | + */ | |
743 | + //$materiel->id = FALSE; | |
744 | + //$materiel->'[new]' => true, | |
745 | + } | |
746 | + // - NOUVEAU materiel (on a cliqué sur "Nouveau materiel") | |
747 | + else { | |
748 | + $materiel = $this->Materiels->newEntity(); | |
749 | + // Set default values : "N/A" | |
750 | + $materiel->groupes_thematique_id = 1; | |
751 | + $materiel->groupes_metier_id = 1; | |
752 | + $materiel->site_id = 9; | |
753 | + } | |
717 | 754 | } |
718 | 755 | // EDIT |
719 | - else { | |
756 | + else | |
720 | 757 | $materiel = $this->Materiels->get($id, [ |
721 | 758 | 'contain' => [] |
722 | 759 | ]); |
723 | - } | |
724 | 760 | |
725 | 761 | /* SI POST |
726 | 762 | * Les données ont été saisies et postées |
... | ... | @@ -796,6 +832,7 @@ class MaterielsController extends AppController |
796 | 832 | |
797 | 833 | //--- 1) INITIALISATION DE LISTES POUR ASSISTER LA SAISIE (listes de choix proposés) |
798 | 834 | |
835 | + // DOMAINES : LISTE COMPLETE | |
799 | 836 | $surCategories = $this->Materiels->SurCategories->find('list', [ |
800 | 837 | 'keyField' => 'id', |
801 | 838 | 'valueField' => 'nom', |
... | ... | @@ -805,6 +842,35 @@ class MaterielsController extends AppController |
805 | 842 | 'nom !=' => 'N/A' |
806 | 843 | ) |
807 | 844 | ]); |
845 | + | |
846 | + // CATEGORIES ET SOUS-CATEG (modes EDIT et ADD-by-COPIE only) | |
847 | + $categories = []; | |
848 | + $sousCategories = []; | |
849 | + if ( !$is_add or ($is_add and isset($this->request->getAttribute('params')['pass'][0])) ) { | |
850 | + // - Seulement les categories correspondant au domaine choisi | |
851 | + $categories = $this->Materiels->Categories->find('list', [ | |
852 | + 'conditions' => [ | |
853 | + 'Categories.sur_categorie_id' => $materiel->sur_categorie_id | |
854 | + ], | |
855 | + //'recursive' => - 1, | |
856 | + 'keyField' => 'id', | |
857 | + 'valueField' => 'nom', | |
858 | + 'order' => 'nom', | |
859 | + //'order' => 'Categories.nom', | |
860 | + ]); | |
861 | + // - Seulement les sous-categ correspondant à la categorie choisie | |
862 | + $sousCategories = $this->Materiels->SousCategories->find('list', [ | |
863 | + 'conditions' => [ | |
864 | + 'SousCategories.categorie_id' => $materiel->categorie_id | |
865 | + ], | |
866 | + //'recursive' => - 1, | |
867 | + 'keyField' => 'id', | |
868 | + 'valueField' => 'nom', | |
869 | + 'order' => 'nom' | |
870 | + //'order' => 'SousCategories.nom' | |
871 | + ]); | |
872 | + } | |
873 | + /* (EP) Totalement inutile !!! | |
808 | 874 | $categories = $this->Materiels->Categories->find('list', [ |
809 | 875 | 'keyField' => 'id', |
810 | 876 | 'valueField' => 'nom', |
... | ... | @@ -815,6 +881,8 @@ class MaterielsController extends AppController |
815 | 881 | 'valueField' => 'nom', |
816 | 882 | 'order' => 'SousCategories.nom' |
817 | 883 | ]); |
884 | + */ | |
885 | + | |
818 | 886 | $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', [ |
819 | 887 | 'keyField' => 'id', |
820 | 888 | 'valueField' => 'nom', |
... | ... | @@ -958,17 +1026,21 @@ class MaterielsController extends AppController |
958 | 1026 | ]) |
959 | 1027 | ->first()['email']; |
960 | 1028 | |
1029 | + /* | |
961 | 1030 | // ADD only |
962 | - if ( $is_add) { | |
1031 | + if ($is_add) { | |
1032 | + // Un id a été passé en argument => Copie de materiel (on a cliqué sur "Copier ce materiel") | |
963 | 1033 | if (isset($this->request->getAttribute('params')['pass'][0])) { |
964 | 1034 | $cpMateriel = $this->Materiels->get($this->request->getAttribute('params')['pass'][0]); |
965 | 1035 | $this->set('cpMateriel', $cpMateriel); |
966 | 1036 | } |
967 | 1037 | } |
968 | - | |
969 | - // EDIT only | |
970 | 1038 | else { |
1039 | + */ | |
971 | 1040 | |
1041 | + // EDIT only | |
1042 | + if (!$is_add) { | |
1043 | + | |
972 | 1044 | if (! empty($materiel->get('nom_responsable'))) { |
973 | 1045 | //if (! in_array($materiel->get('nom_responsable'), $utilisateurs)) { |
974 | 1046 | if (! in_array($materiel->get('nom_responsable'), $users_name)) { |
... | ... | @@ -1033,7 +1105,8 @@ class MaterielsController extends AppController |
1033 | 1105 | 'materiel', |
1034 | 1106 | // not used |
1035 | 1107 | //'utilisateurconnect', |
1036 | - 'surCategories', 'categories', 'sousCategories', | |
1108 | + 'surCategories', | |
1109 | + 'categories', 'sousCategories', | |
1037 | 1110 | 'groupesThematiques', 'groupesMetiers', |
1038 | 1111 | 'organismes', 'sites', |
1039 | 1112 | 'mail_responsable', |
... | ... | @@ -1047,9 +1120,11 @@ class MaterielsController extends AppController |
1047 | 1120 | 'administrateurs' |
1048 | 1121 | )); |
1049 | 1122 | |
1123 | + /* (EP) INUTILE (sauf pour faire du json ou xml) !!! | |
1050 | 1124 | $this->set('_serialize', [ |
1051 | - 'materiel' | |
1125 | + 'materiel', | |
1052 | 1126 | ]); |
1127 | + */ | |
1053 | 1128 | |
1054 | 1129 | } //add_or_edit() |
1055 | 1130 | ... | ... |
src/Template/Materiels/add.ctp
... | ... | @@ -6,13 +6,20 @@ |
6 | 6 | */ |
7 | 7 | $users_option_list = $users_option_list; |
8 | 8 | $users_login_and_email = $users_login_and_email; |
9 | +$materiel = $materiel; | |
9 | 10 | // TODO: yena d'autres... il faut les lister toutes ici, pour plus de clarté |
10 | 11 | |
12 | +//debug($materiel); | |
11 | 13 | //debug($users_option_list); |
12 | 14 | //debug($users_login_and_email); |
15 | +//debug($sousCategories); | |
13 | 16 | |
14 | 17 | use Cake\ORM\TableRegistry; |
18 | + | |
19 | +/* | |
20 | +// COPIE de materiel (on a cliqué sur "Copier ce matériel") | |
15 | 21 | if (isset($cpMateriel)) { |
22 | + //debug($cpMateriel); | |
16 | 23 | $Designation = $cpMateriel->designation; |
17 | 24 | $Sur_categ_id = $cpMateriel->sur_categorie_id; |
18 | 25 | $Categ_id = $cpMateriel->categorie_id; |
... | ... | @@ -30,6 +37,7 @@ if (isset($cpMateriel)) { |
30 | 37 | $Lieu_detail = $cpMateriel->lieu_detail; |
31 | 38 | $Site_id = $cpMateriel->site_id; |
32 | 39 | } else { |
40 | +// NOUVEAU matériel (on a cliqué sur "Nouveau matériel") | |
33 | 41 | $Designation = NULL; |
34 | 42 | if (!isset($Sur_categ_id)) $Sur_categ_id = NULL; |
35 | 43 | $Categ_id = NULL; |
... | ... | @@ -47,6 +55,7 @@ if (isset($cpMateriel)) { |
47 | 55 | $Lieu_detail = NULL; |
48 | 56 | $Site_id = 9; |
49 | 57 | } |
58 | +*/ | |
50 | 59 | //debug($Sur_categ_id) |
51 | 60 | ?> |
52 | 61 | |
... | ... | @@ -67,34 +76,45 @@ if (isset($cpMateriel)) { |
67 | 76 | <?php |
68 | 77 | echo $this->Form->control('designation', [ |
69 | 78 | 'label' => 'Désignation', |
70 | - 'default' => $Designation | |
79 | + //'default' => $Designation | |
80 | + 'default' => $materiel->designation | |
71 | 81 | ]); |
72 | 82 | |
83 | + // SUR-CATEGORIES (DOMAINES) | |
84 | + //debug($surCategories); | |
73 | 85 | echo $this->Form->control('sur_categorie_id', [ |
74 | 86 | 'label' => 'Domaine', |
75 | 87 | 'style' => 'width: 260px', |
76 | 88 | 'options' => $surCategories, |
77 | 89 | 'empty' => 'Choisir un domaine', |
78 | - 'default' => $Sur_categ_id | |
90 | + //'default' => $Sur_categ_id | |
91 | + 'default' => $materiel->sur_categorie_id | |
79 | 92 | ]); |
80 | - /* (EP 26/2/19) Inutile, je commente | |
81 | - // if a domaine is selected, reduce the categories list to this domaine | |
93 | + | |
94 | + // CATEGORIES | |
82 | 95 | $categs = $categories; |
96 | + /* | |
97 | + // if a domain is selected, reduce the categories list to this domain | |
98 | + //debug($categories); | |
83 | 99 | if ($this->request->getData('sur_categorie_id') !== null && ($this->request->getData('sur_categorie_id') != '')) { |
84 | 100 | $categs = $categs->where([ |
85 | 101 | 'sur_categorie_id =' => $this->request->getData('sur_categorie_id') |
86 | 102 | ]); |
87 | 103 | } |
104 | + //$categs = []; | |
88 | 105 | */ |
89 | - $categs = []; | |
90 | 106 | echo $this->Form->control('categorie_id', [ |
91 | 107 | 'label' => 'Catégorie', |
92 | 108 | 'style' => 'width: 380px', |
93 | 109 | 'options' => $categs, |
94 | 110 | 'empty' => 'Choisir une catégorie', |
95 | - 'default' => $Categ_id | |
111 | + //'default' => $Categ_id | |
112 | + 'default' => $materiel->categorie_id | |
96 | 113 | ]); |
97 | - // by default, list is empty | |
114 | + | |
115 | + // SOUS-CATEGORIES (by default, list is empty) | |
116 | + $souscategs = $sousCategories; | |
117 | + /* | |
98 | 118 | $souscategs = []; |
99 | 119 | // if a categ is selected, update sous-categs list for this categ (only) |
100 | 120 | if ($this->request->getData('categorie_id') !== null && ($this->request->getData('categorie_id') != '')) { |
... | ... | @@ -103,20 +123,25 @@ if (isset($cpMateriel)) { |
103 | 123 | 'categorie_id' => $this->request->getData('categorie_id') |
104 | 124 | ]); |
105 | 125 | } |
126 | + */ | |
106 | 127 | echo $this->Form->control('sous_categorie_id', [ |
107 | 128 | 'label' => 'Sous-catégorie', |
108 | 129 | 'style' => 'width: 380px', |
109 | 130 | 'options' => $souscategs, |
110 | 131 | 'empty' => 'Choisir une sous-catégorie', |
111 | - 'default' => $Sous_categ_id | |
132 | + //'default' => $Sous_categ_id | |
133 | + 'default' => $materiel->sous_categorie_id | |
112 | 134 | ]); |
135 | + | |
113 | 136 | echo $this->Form->control('materiel_technique', [ |
114 | 137 | 'label' => 'Technique', |
115 | - 'default' => $Mat_technique | |
138 | + //'default' => $Mat_technique | |
139 | + 'default' => $materiel->materiel_technique | |
116 | 140 | ]); |
117 | 141 | echo $this->Form->control('materiel_administratif', [ |
118 | 142 | 'label' => 'Inventoriable (>' . $configuration->prix_inventaire_administratif . '€)', |
119 | - 'default' => $Mat_administratif | |
143 | + //'default' => $Mat_administratif | |
144 | + 'default' => $materiel->materiel_administratif | |
120 | 145 | ]); |
121 | 146 | if ($configuration->metrologie) { |
122 | 147 | echo $this->Form->control('metrologie', [ |
... | ... | @@ -126,7 +151,8 @@ if (isset($cpMateriel)) { |
126 | 151 | } |
127 | 152 | echo $this->Form->control('description', [ |
128 | 153 | 'label' => 'Description', |
129 | - 'default' => $Description | |
154 | + //'default' => $Description | |
155 | + 'default' => $materiel->description | |
130 | 156 | ]); |
131 | 157 | if ($USER_IS_RESPONSABLE_OR_MORE) { |
132 | 158 | /* |
... | ... | @@ -145,7 +171,8 @@ if (isset($cpMateriel)) { |
145 | 171 | echo $this->Form->control('site_id', [ |
146 | 172 | 'options' => $sites, |
147 | 173 | 'style' => 'width: 380px', |
148 | - 'default' => $Site_id | |
174 | + //'default' => $Site_id | |
175 | + 'default' => $materiel->site_id | |
149 | 176 | ]); |
150 | 177 | echo '<div class="input text"><label for="lieu_detail">Détail lieu de stockage</label><input list="lieu" id="lieu_detail" name="lieu_detail" type="text" placeholder="choisir/ajouter un lieu" autocomplete="off"><datalist id="lieu">'; |
151 | 178 | foreach ($lieu_detail as $e) { |
... | ... | @@ -157,7 +184,8 @@ if (isset($cpMateriel)) { |
157 | 184 | 'label' => 'Date de la commande', |
158 | 185 | 'class' => 'datepicker', |
159 | 186 | 'placeholder' => 'Cliquez pour sélectionner une date', |
160 | - 'default' => $Date_acquisition | |
187 | + //'default' => $Date_acquisition | |
188 | + 'default' => $materiel->date_acquisition | |
161 | 189 | ]); |
162 | 190 | echo $this->Form->control('date_reception', [ |
163 | 191 | 'type' => 'text', |
... | ... | @@ -165,7 +193,8 @@ if (isset($cpMateriel)) { |
165 | 193 | 'class' => 'datepicker', |
166 | 194 | 'placeholder' => 'A éditer lors de la réception uniquement.', |
167 | 195 | 'empty' => true, |
168 | - 'default' => $Date_reception | |
196 | + //'default' => $Date_reception | |
197 | + 'default' => $materiel->date_reception | |
169 | 198 | ]); |
170 | 199 | echo '<table id="tableAlignementFrequence"><tr><td>'; |
171 | 200 | echo $this->Form->control('duree_garantie', [ |
... | ... | @@ -203,25 +232,29 @@ if (isset($cpMateriel)) { |
203 | 232 | echo $this->Form->control('groupes_thematique_id', [ |
204 | 233 | 'label' => $configuration->nom_groupe_thematique, |
205 | 234 | 'options' => $groupesThematiques, |
206 | - 'default' => $Groupes_thematique_id | |
235 | + //'default' => $Groupes_thematique_id | |
236 | + 'default' => $materiel->groupes_thematique_id | |
207 | 237 | ]); |
208 | 238 | echo $this->Form->control('groupes_metier_id', [ |
209 | 239 | 'label' => $configuration->nom_groupe_metier, |
210 | 240 | 'options' => $groupesMetiers, |
211 | - 'default' => $Groupes_metier_id | |
241 | + //'default' => $Groupes_metier_id | |
242 | + 'default' => $materiel->groupes_metier_id | |
212 | 243 | ]); |
213 | 244 | $fieldType = $USER_IS_UTILISATEUR ? 'hidden' : 'input'; |
214 | 245 | echo $this->Form->$fieldType('nom_responsable', [ |
215 | 246 | 'label' => 'Nom de l\'utilisateur', |
216 | 247 | 'empty' => 'Choisir un utilisateur', |
217 | - 'default' => $username, | |
248 | + //'default' => $username, | |
249 | + 'default' => $materiel->username, | |
218 | 250 | //'options' => $utilisateurs |
219 | 251 | 'options' => $users_option_list |
220 | 252 | ]); |
221 | 253 | echo $this->Form->control('email_responsable', [ |
222 | 254 | 'label' => 'Email de l\'utilisateur', |
223 | 255 | 'readonly' => true, |
224 | - 'default' => $mail_responsable | |
256 | + //'default' => $mail_responsable | |
257 | + 'default' => $materiel->mail_responsable, | |
225 | 258 | ]); |
226 | 259 | |
227 | 260 | /* |
... | ... | @@ -260,11 +293,13 @@ if (isset($cpMateriel)) { |
260 | 293 | 'options' => $organismes, |
261 | 294 | 'style' => 'width: 380px', |
262 | 295 | 'empty' => 'Choisir un organisme', |
263 | - 'default' => $Organisme_id | |
296 | + //'default' => $Organisme_id | |
297 | + 'default' => $materiel->organisme_id, | |
264 | 298 | ]); |
265 | 299 | echo $this->Form->control('prix_ht', [ |
266 | 300 | 'label' => 'Prix HT (€)', |
267 | - 'default' => $Prix_ht | |
301 | + //'default' => $Prix_ht | |
302 | + 'default' => $materiel->prix_ht, | |
268 | 303 | ]); |
269 | 304 | if ($USER_IS_ADMIN_OR_MORE) { |
270 | 305 | /* | ... | ... |
src/Template/Materiels/edit.ctp
... | ... | @@ -11,7 +11,7 @@ $users_login_and_email = $users_login_and_email; |
11 | 11 | |
12 | 12 | //debug($users_option_list); |
13 | 13 | //debug($users_login_and_email); |
14 | - | |
14 | +//debug($materiel); | |
15 | 15 | |
16 | 16 | use Cake\ORM\TableRegistry; |
17 | 17 | |
... | ... | @@ -116,6 +116,8 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
116 | 116 | 'label' => 'Appareil hors_service' |
117 | 117 | ]); |
118 | 118 | } |
119 | + | |
120 | + // DOMAINES | |
119 | 121 | echo $this->Form->control('sur_categorie_id', [ |
120 | 122 | 'label' => 'Domaine', |
121 | 123 | 'options' => $surCategories, |
... | ... | @@ -124,13 +126,17 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
124 | 126 | 'readonly' => $isReadonlyField('sur_categorie_id', $myReadonlyFields), |
125 | 127 | 'disabled' => $isReadonlyField('sur_categorie_id', $myReadonlyFields) |
126 | 128 | ]); |
129 | + | |
130 | + // CATEGORIES | |
127 | 131 | $categs = $categories; |
132 | + /* | |
128 | 133 | // if a domain is selected, reduce the categories list to this domain |
129 | 134 | //if ($this->request->getData('sur_categorie_id') !== null && ($this->request->getData('sur_categorie_id') != '')) |
130 | 135 | if ($materiel->sur_categorie_id !== null && $materiel->sur_categorie_id != '') |
131 | 136 | $categs = $categs->where([ |
132 | 137 | 'sur_categorie_id =' => $materiel->sur_categorie_id |
133 | 138 | ]); |
139 | + */ | |
134 | 140 | echo $this->Form->control('categorie_id', [ |
135 | 141 | 'label' => 'Catégorie', |
136 | 142 | 'style' => 'width: 380px', |
... | ... | @@ -138,7 +144,10 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
138 | 144 | 'empty' => 'Choisir une catégorie', |
139 | 145 | 'disabled' => $isReadonlyField('categorie_id', $myReadonlyFields) |
140 | 146 | ]); |
147 | + | |
141 | 148 | // SOUS-CATEGORIES |
149 | + $souscategs = $sousCategories; | |
150 | + /* | |
142 | 151 | // by default, list is empty |
143 | 152 | $souscategs = []; |
144 | 153 | // if a categ is selected, update sous-categs list for this categ (only) |
... | ... | @@ -150,6 +159,7 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
150 | 159 | 'categorie_id' => $materiel->categorie_id |
151 | 160 | ]); |
152 | 161 | } |
162 | + */ | |
153 | 163 | echo $this->Form->control('sous_categorie_id', [ |
154 | 164 | 'label' => 'Sous-catégorie', |
155 | 165 | 'style' => 'width: 380px', | ... | ... |
src/Template/Materiels/view.ctp
... | ... | @@ -470,16 +470,19 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
470 | 470 | } // switch |
471 | 471 | } // BOUTON changement statut |
472 | 472 | |
473 | - // BOUTON Copier | |
474 | - echo $this->Html->link('<i class="icon-pencil"></i> Copier ce matériel', [ | |
475 | - 'controller' => 'materiels', | |
476 | - 'action' => 'add', | |
477 | - $materiel->id | |
478 | - ], [ | |
479 | - 'title' => 'Copier ce matériel', | |
480 | - 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', | |
481 | - 'escape' => false | |
482 | - ]); | |
473 | + // BOUTON Copier (seulement pour les materiels qui sont CREATED et pour les ADMINet+ ou USER owner) | |
474 | + if ( $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER) ) | |
475 | + echo $this->Html->link('<i class="icon-pencil"></i> Copier ce matériel', | |
476 | + [ | |
477 | + 'controller' => 'materiels', | |
478 | + 'action' => 'add', | |
479 | + $materiel->id | |
480 | + ], | |
481 | + [ | |
482 | + 'title' => 'Copier ce matériel', | |
483 | + 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', | |
484 | + 'escape' => false | |
485 | + ]); | |
483 | 486 | |
484 | 487 | // BOUTON ETIQUETTE (si imprimante disponible) |
485 | 488 | if ($IS_VALIDATED && $configuration->hasPrinter && in_array($role, [ | ... | ... |