From 3060bfc76b6dc58bb1fa241a17bc15926b39e515 Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Wed, 22 Jan 2020 00:55:15 +0100 Subject: new feature : multi render --- app/class/Controllerhome.php | 28 +++++++++++++++++++++++++++- app/class/Routes.php | 2 +- app/view/templates/home.php | 2 +- app/view/templates/homemenu.php | 12 +++++------- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/app/class/Controllerhome.php b/app/class/Controllerhome.php index d8c126d..80644d1 100644 --- a/app/class/Controllerhome.php +++ b/app/class/Controllerhome.php @@ -127,6 +127,22 @@ class Controllerhome extends Controllerpage $this->routedirect('home'); } + public function multi() + { + if(isset($_POST['action'])) { + switch ($_POST['action']) { + case 'edit': + $this->multiedit(); + break; + + case 'render': + $this->multirender(); + break; + } + } + $this->routedirect('home'); + } + public function multiedit() { if ($this->user->issupereditor() && isset($_POST['pagesid'])) { @@ -141,7 +157,17 @@ class Controllerhome extends Controllerpage $this->pagemanager->pageedit($id, $datas, $reset, $addtag, $addauthor); } } - $this->routedirect('home'); + } + + public function multirender() + { + $pagelist = $_POST['pagesid'] ?? []; + $pagelist = $this->pagemanager->getlisterid($pagelist); + foreach ($pagelist as $page) { + $page = $this->renderpage($page); + $this->pagemanager->update($page); + } + } } diff --git a/app/class/Routes.php b/app/class/Routes.php index 7bd373a..4a87fc8 100644 --- a/app/class/Routes.php +++ b/app/class/Routes.php @@ -22,7 +22,7 @@ class Routes ['POST', '/columns', 'Controllerhome#columns', 'homecolumns'], ['GET', '//renderall', 'Controllerhome#renderall', 'homerenderall'], ['POST', '/bookmark', 'Controllerhome#bookmark', 'homebookmark'], - ['POST', '/multiedit', 'Controllerhome#multiedit', 'multiedit'], + ['POST', '/multi', 'Controllerhome#multi', 'multi'], ['POST', '/upload', 'Controllerpage#upload', 'pageupload'], ['POST', '/!co', 'Controllerconnect#log', 'log'], ['GET', '/!co', 'Controllerconnect#connect', 'connect'], diff --git a/app/view/templates/home.php b/app/view/templates/home.php index f95c60f..c47a3ec 100644 --- a/app/view/templates/home.php +++ b/app/view/templates/home.php @@ -85,7 +85,7 @@ - issupereditor()) { ?> + issupereditor()) { ?> diff --git a/app/view/templates/homemenu.php b/app/view/templates/homemenu.php index 21f9af8..25ce60c 100644 --- a/app/view/templates/homemenu.php +++ b/app/view/templates/homemenu.php @@ -38,13 +38,11 @@ -- cgit v1.2.3 From 8e2abd192527a308d08920c69ab4a551b6f1e994 Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Wed, 22 Jan 2020 01:21:39 +0100 Subject: new feature : multidelete --- app/class/Controllerhome.php | 18 ++++++++++++++++-- app/class/Modelpage.php | 24 ++++++++++++++++++++---- app/view/templates/homemenu.php | 10 ++++++---- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/app/class/Controllerhome.php b/app/class/Controllerhome.php index 80644d1..1603511 100644 --- a/app/class/Controllerhome.php +++ b/app/class/Controllerhome.php @@ -129,7 +129,7 @@ class Controllerhome extends Controllerpage public function multi() { - if(isset($_POST['action'])) { + if(isset($_POST['action']) && $this->user->issupereditor() && !empty($_POST['pagesid'])) { switch ($_POST['action']) { case 'edit': $this->multiedit(); @@ -138,6 +138,10 @@ class Controllerhome extends Controllerpage case 'render': $this->multirender(); break; + + case 'delete': + $this->multidelete(); + break; } } $this->routedirect('home'); @@ -145,7 +149,7 @@ class Controllerhome extends Controllerpage public function multiedit() { - if ($this->user->issupereditor() && isset($_POST['pagesid'])) { + if (isset($_POST['pagesid'])) { $datas = $_POST['datas']?? []; $datas = array_filter($datas, function ($var) { return $var !== ""; @@ -169,6 +173,16 @@ class Controllerhome extends Controllerpage } } + + public function multidelete() + { + if(isset($_POST['confirmdelete']) && $_POST['confirmdelete']) { + $pagelist = $_POST['pagesid'] ?? []; + foreach ($pagelist as $id) { + $this->pagemanager->delete($id); + } + } + } } ?> diff --git a/app/class/Modelpage.php b/app/class/Modelpage.php index 21cdf8a..1cc6b27 100644 --- a/app/class/Modelpage.php +++ b/app/class/Modelpage.php @@ -134,13 +134,29 @@ class Modelpage extends Modeldb } } - public function delete(Page $page) + /** + * Delete a page and it's linked rendered html and css files + * + * @param Page|string $id could be an Page object or a id string + * + * @return bool true if success otherwise false + */ + public function delete($page) : bool { - $this->repo->delete($page->id()); - $this->unlink($page->id()); + if ($page instanceof Page) { + $page = $page->id(); + } + if (is_string($page)) { + $this->unlink($page); + return $this->repo->delete($page); + } else { + return false; + } } - + /** + * Delete rendered CSS and HTML files + */ public function unlink(string $pageid) { $files = ['.css', '.quick.css', '.js']; diff --git a/app/view/templates/homemenu.php b/app/view/templates/homemenu.php index 25ce60c..2ee1381 100644 --- a/app/view/templates/homemenu.php +++ b/app/view/templates/homemenu.php @@ -37,11 +37,7 @@ Edit -- cgit v1.2.3