diff options
-rw-r--r-- | app/class/Controllerhome.php | 18 | ||||
-rw-r--r-- | app/class/Modelpage.php | 24 | ||||
-rw-r--r-- | 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 @@ <summary>Edit</summary> <div class="submenu"> <i>Edit selected pages</i> - <h2>Actions</h2> <form action="<?= $this->url('multi') ?>" method="post" id="multi"> - <input type="submit" name="action" value="render"> - <input type="submit" name="action" value="download"> - <input type="submit" name="action" value="delete"> <h2>Edit Meta infos</h2> <input type="text" name="datas[title]" id="title"> <label for="title">title</label> @@ -143,6 +139,12 @@ <label for="resetdatemodif">update modification date</label> </br> <input type="submit" name="action" value="edit"> + <h2>Actions</h2> + <input type="submit" name="action" value="render"> + <input type="hidden" name="confirmdelete" value="0"> + <input type="checkbox" name="confirmdelete" id="confirmdelete" value="1"> + <label for="confirmdelete">confirm</label> + <input type="submit" name="action" value="delete"> </form> </div> </details> |