From a3c7a6766010ddaca5bda10c8c545bd472b6148f Mon Sep 17 00:00:00 2001 From: JBthePenguin Date: Fri, 4 Jun 2021 00:49:19 +0200 Subject: [PATCH] Ok for Add Modify Delete categories, next location --- materiels.tar.gz | Bin 14905 -> 16553 bytes src/lib/Category.php | 11 ++++- src/templates/categories/index.tpl | 2 + .../categories/materiels_par_categorie.tpl | 5 ++ .../categories/modifier_categorie.tpl | 20 ++++++++ .../categories/supprimer_categorie.tpl | 2 +- src/templates/common/delete_form.tpl | 4 +- src/www/admin/categories/index.php | 29 ++++++------ .../categories/materiels_par_categorie.php | 19 ++++++++ .../admin/categories/modifier_categorie.php | 44 ++++++++++++++++++ .../admin/categories/supprimer_categorie.php | 26 ++++++++--- 11 files changed, 134 insertions(+), 28 deletions(-) create mode 100644 src/templates/categories/materiels_par_categorie.tpl create mode 100644 src/templates/categories/modifier_categorie.tpl create mode 100644 src/www/admin/categories/materiels_par_categorie.php create mode 100644 src/www/admin/categories/modifier_categorie.php diff --git a/materiels.tar.gz b/materiels.tar.gz index 0913d5949e0bf6eb12dc0e1db218deae2f9eda6b..fd267ddd6996d9ba49a7d23e94e7a41ae4f3a4db 100644 GIT binary patch literal 16553 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�Rg3JKMYVHAsPNJ>tEO zAg3)Ru9|kac|GMF(v&h&U@J(;cJtcdZ&FQaDt~lQ^o$q0fA+?h zmBq357lJ!`ic~+_P~5fv2tiuehG|j*8``!XwpLxwEb1C}|C!W-FiclSoc%<+2nt4^q^^R;r1g>$6YewvMe+Oy2VML0zR_Dl5u83bnQfrYynPj%cb4d#bOyalO zt1bPYMh&*X4e9Gto9t&?8LIjM5HM%jL(T+e1dsoq{Wq009C5hcb+4l29BOHGm&<7K z#x?K7MB?H5l9y*OW5@U*f(`ysM@;~OKU_dSK%av2hs2g#^Ei)f`M9LXf4a9!A#`!E zoVAJ%L|DRvZz2oi{W&xR;4SDKGtuEd(&eca*fe+sAmUcMq^%-$Q~&`)5_3mdVJAzQ zYG}BwO*%H_hs{~%2kIq+t3ehtK-Lm2fW1ah765vo-m##Uzs_k<26dZ-3tQuT0D1tf6i`}yBzVruRigz z*g&}YPk8ETLutp_c}c_1R^(Zcekv~+G@1ZyOVYp@%|VB*p(r!L{ViLdz=-vulqfL! z`@TQytHHTCIaNRQhQr>;#Ygq-bcjEwv*GFcVedm*U7XVA{$DQoCl~6hKm0JbxahxC zZ$1XSv$NyDQSZ%he_tKP!9+1zrP5+KRtfiAJXg6wqbU9P@VOL7lZyeuH%Qn+rGah)#{zYvRmrM!NvEd zmlt;N!Rb2~Ife}tl zFVyh>b_TayoVEj;P3|?L<6>a^5B=fM_wcdzW^gbyVvVQ@rn z81~P4gCRoc=yW*5QBF@7jSjZB#KDH$j!o`7GmaC)p#BetAD1V`2#I0;-!EaWh$X6y zB{+WX{jg7f_HZKjaR3X$)3b=77%|%P2>jp><0GKhf2sO#`gZURk3|sY==9`={>Ssc zhYG;ip=|HXDFWsVEM!3IffXQ>@Z8?^KJ?!A&pph*IRkkSc3YjF^^XSl5BMGM5fI>* zL3MHtd&Q%LFJutagEPhv5IOlAgG(R;M8Fe+I50PU=P!1{&Ap72>iF~=F)(=ByXYxe zG5megf5*Fr{SyEb(OB>3=yC}3hIil-u$uErpuoWip9b!iNPIAS8yF%ZynWXj9A6Hb zh=((u0tj(PLO|~%_>S|@g2d_ID5|{K z9$a|E1$as4yykV7?)skJF4iLuaZ=%hDRB6RBJTu~Ju@1AaZS~>1xW5pqJUM=sBmse ze6A?DlNP3rPARTqlaVDl8<#=-Rm7|nY4f^zeyfT1%5Cr6<2K4^JT&H2eUz!##?<~$ zT+&XNH3fXu959)w1G1)yaDrRI72Bt0=4Q~SxaNma*}P&8erphhK26j7WD$`5B|dep zw`RRHHjPAoLljf;CXps?dJvLn)UrBF3r%5h&Z&7ujuG~9nI2A)%61sW-AqtL738|c zd4b-Z&6DaH{&3!~P73LEW%QLI<1GFn6Rl3%`z@-mQTC=_P*h_xpUH|c{Ram zCwlJVBaER(CR)NYfUgE}ujOJ-w`l?$s+M_w6C3&3xGYbHQDN7>fl6TFH`=%kr6u77 zF&}z!5_kSz6rM9(`l3qrJbF==wfsmplNMs=W2DPcQm9-Jv3Y;i3&H|h->_>eQ5&UQ z?w~;75pgP}dMc!4RE(A;Y+X&Ed z&N{-X`|kT)_F@12lU!IcN-d4Hf!Bb4-cekc+}ImkY?brmE6j1<`R{fQ<@^s14myXb zv$NYd*n2$xhq!(=5ja%cU$w$$7N^@+QxKVW_$^h&C4T?MqV?ZleqB8Oj+O4M6l21a zqfowT@po5CH^tHCAZX0+$KomtZ)ot^%~$Y^8*v3PwwA||)lRakqyaxa%8ADk>+yQL R9insert('plugin_materiels_category', $data); } + public function edit($id, $data = []) + { + $db = DB::getInstance(); + $db->update('plugin_materiels_category', $data, $db->where('id', $id)); + } + + public function delete($id) { - DB::getInstance()->delete('plugin_facturation_clients', 'id = ' . $id); + DB::getInstance()->delete('plugin_materiels_category', 'id = ' . $id); } public function get($id) @@ -31,6 +38,6 @@ class Category public function listAll() { - return DB::getInstance()->get('SELECT id, name FROM plugin_materiels_category ORDER BY name;'); + return DB::getInstance()->get('SELECT * FROM plugin_materiels_category ORDER BY name;'); } } diff --git a/src/templates/categories/index.tpl b/src/templates/categories/index.tpl index 97c888c..5ae85c1 100644 --- a/src/templates/categories/index.tpl +++ b/src/templates/categories/index.tpl @@ -26,6 +26,8 @@ {$cat.name} + {linkbutton shape="upload" label="Liste des materiels" href="materiels_par_categorie.php?id=%d"|args:$cat.id} + {linkbutton shape="edit" label="Modifier" href="modifier_categorie.php?id=%d"|args:$cat.id} {linkbutton shape="delete" label="Supprimer" href="supprimer_categorie.php?id=%d"|args:$cat.id} diff --git a/src/templates/categories/materiels_par_categorie.tpl b/src/templates/categories/materiels_par_categorie.tpl new file mode 100644 index 0000000..f356113 --- /dev/null +++ b/src/templates/categories/materiels_par_categorie.tpl @@ -0,0 +1,5 @@ +{include file="admin/_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id} + +{include file="%s_nav.tpl"|args:$plugin_tpl current="categories"} + +{include file="admin/_foot.tpl"} diff --git a/src/templates/categories/modifier_categorie.tpl b/src/templates/categories/modifier_categorie.tpl new file mode 100644 index 0000000..07b40eb --- /dev/null +++ b/src/templates/categories/modifier_categorie.tpl @@ -0,0 +1,20 @@ +{include file="admin/_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id} + +{include file="%s_nav.tpl"|args:$plugin_tpl current="categories"} + +
+ {form_errors} +
+ Modifier cette catégorie +
+ {input type="text" name="name" label="Nom" required=true source=$c} +
+
+

+ {csrf_field key=$csrf_key} + {button type="submit" name="save" label="Enregistrer" shape="right" class="main"} + {linkbutton label="Annuler" shape="export" href=$cancel_link} +

+
+ +{include file="admin/_foot.tpl"} diff --git a/src/templates/categories/supprimer_categorie.tpl b/src/templates/categories/supprimer_categorie.tpl index dbed701..dd8a462 100644 --- a/src/templates/categories/supprimer_categorie.tpl +++ b/src/templates/categories/supprimer_categorie.tpl @@ -4,7 +4,7 @@ {include file="%scommon/delete_form.tpl"|args:$plugin_tpl legend="Supprimer cette catégorie de matériels ?" - warning="Êtes-vous sûr de vouloir supprimer la catégorie « %s » ?"|args:$cat.name + warning="Êtes-vous sûr de vouloir supprimer la catégorie « %s » ?"|args:$c.name alert="Attention, la catégorie ne doit plus contenir de matériels pour pouvoir être supprimée." } diff --git a/src/templates/common/delete_form.tpl b/src/templates/common/delete_form.tpl index 5fa144f..c3be6dd 100644 --- a/src/templates/common/delete_form.tpl +++ b/src/templates/common/delete_form.tpl @@ -1,6 +1,5 @@ -{form_errors} -
+ {form_errors}
{$legend}

{$warning}

@@ -9,5 +8,6 @@

{csrf_field key=$csrf_key} {button type="submit" name="delete" label="Supprimer" shape="delete" class="main"} + {linkbutton label="Annuler" shape="export" href=$cancel_link}

diff --git a/src/www/admin/categories/index.php b/src/www/admin/categories/index.php index ac5e2fa..64bfac2 100644 --- a/src/www/admin/categories/index.php +++ b/src/www/admin/categories/index.php @@ -11,26 +11,23 @@ $cat = new Category; $csrf_key = 'cat_create'; -if (f('save') && $form->check($csrf_key)) +if (f('save') && $form->check($csrf_key) && !$form->hasErrors()) { - if (!$form->hasErrors()) + try { - try + $cat->add([ + 'name' => ucfirst(f('name')) + ]); + Utils::redirect(PLUGIN_URL . 'categories/index.php'); + } + catch (\RuntimeException $e) + { + if (strstr($e->getMessage(), 'UNIQUE constraint failed')) { - $cat->add([ - 'name' => ucfirst(f('name')) - ]); - Utils::redirect(PLUGIN_URL . 'categories/index.php'); - } - catch (\RuntimeException $e) + $form->addError('Cette catégorie existe déjà.'); + } else { - if (strstr($e->getMessage(), 'UNIQUE constraint failed')) - { - $form->addError('Cette catégorie existe déjà.'); - } else - { - $form->addError($e->getMessage()); - } + $form->addError($e->getMessage()); } } } diff --git a/src/www/admin/categories/materiels_par_categorie.php b/src/www/admin/categories/materiels_par_categorie.php new file mode 100644 index 0000000..0337b92 --- /dev/null +++ b/src/www/admin/categories/materiels_par_categorie.php @@ -0,0 +1,19 @@ +get((int) qg('id')); + +if (!$c) { + throw new UserException("Cette catégorie n'existe pas."); +} + +$tpl->assign(compact('c')); + +$tpl->display(PLUGIN_ROOT . '/templates/categories/materiels_par_categorie.tpl'); diff --git a/src/www/admin/categories/modifier_categorie.php b/src/www/admin/categories/modifier_categorie.php new file mode 100644 index 0000000..7d0f1ae --- /dev/null +++ b/src/www/admin/categories/modifier_categorie.php @@ -0,0 +1,44 @@ +get((int) qg('id')); + +if (!$c) { + throw new UserException("Cette catégorie n'existe pas."); +} + +$csrf_key = 'edit_categorie_' . $c->id; + +if (f('save') && $form->check($csrf_key) && !$form->hasErrors()) +{ + try + { + $cat->edit($c->id, [ + 'name' => ucfirst(f('name')) + ]); + Utils::redirect(PLUGIN_URL . 'categories/index.php'); + } + catch (\RuntimeException $e) + { + if (strstr($e->getMessage(), 'UNIQUE constraint failed')) + { + $form->addError('Cette catégorie existe déjà.'); + } else + { + $form->addError($e->getMessage()); + } + } +} + +$cancel_link = PLUGIN_URL . 'categories/index.php'; + +$tpl->assign(compact('c', 'csrf_key', 'cancel_link')); + +$tpl->display(PLUGIN_ROOT . '/templates/categories/modifier_categorie.tpl'); diff --git a/src/www/admin/categories/supprimer_categorie.php b/src/www/admin/categories/supprimer_categorie.php index 3aa93f0..73e609d 100644 --- a/src/www/admin/categories/supprimer_categorie.php +++ b/src/www/admin/categories/supprimer_categorie.php @@ -7,18 +7,30 @@ use Garradin\Utils; require_once __DIR__ . '/../_inc.php'; $cat = new Category; -$cat = $cat->get((int) qg('id')); -if (!$cat) { +$c = $cat->get((int) qg('id')); + +if (!$c) { throw new UserException("Cette catégorie n'existe pas."); } -$csrf_key = 'cat_delete_' . qg('id'); +$csrf_key = 'delete_categorie_' . $c->id; -$form->runIf('delete', function () use($cat) { - $cat->delete((int) qg('id')); -}, $csrf_key, Utils::redirect(PLUGIN_URL . 'categories/index.php')); +if (f('delete') && $form->check($csrf_key) && !$form->hasErrors()) +{ + try + { + $cat->delete($c->id); + Utils::redirect(PLUGIN_URL . 'categories/index.php'); + } + catch (\RuntimeException $e) + { + $form->addError($e->getMessage()); + } +} -$tpl->assign(compact('cat', 'csrf_key')); +$cancel_link = PLUGIN_URL . 'categories/index.php'; + +$tpl->assign(compact('c', 'csrf_key', 'cancel_link')); $tpl->display(PLUGIN_ROOT . '/templates/categories/supprimer_categorie.tpl');