diff options
author | vincent-peugnet <v.peugnet@free.fr> | 2020-01-22 01:45:07 +0100 |
---|---|---|
committer | vincent-peugnet <v.peugnet@free.fr> | 2020-01-22 01:45:07 +0100 |
commit | 1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb (patch) | |
tree | 64a3778b1394879c6260275274ee3002f413d089 /app/class | |
parent | a2fd39d2c8d6837f07e7df3bb9738d72e5c15409 (diff) | |
parent | 8e2abd192527a308d08920c69ab4a551b6f1e994 (diff) | |
download | wcms-1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb.tar.gz wcms-1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb.zip |
Merge branch 'implement-multi-edit'
Diffstat (limited to 'app/class')
-rw-r--r-- | app/class/Controllerhome.php | 44 | ||||
-rw-r--r-- | app/class/Modelpage.php | 24 | ||||
-rw-r--r-- | app/class/Routes.php | 2 |
3 files changed, 63 insertions, 7 deletions
diff --git a/app/class/Controllerhome.php b/app/class/Controllerhome.php index d8c126d..1603511 100644 --- a/app/class/Controllerhome.php +++ b/app/class/Controllerhome.php @@ -127,9 +127,29 @@ class Controllerhome extends Controllerpage $this->routedirect('home'); } + public function multi() + { + if(isset($_POST['action']) && $this->user->issupereditor() && !empty($_POST['pagesid'])) { + switch ($_POST['action']) { + case 'edit': + $this->multiedit(); + break; + + case 'render': + $this->multirender(); + break; + + case 'delete': + $this->multidelete(); + break; + } + } + $this->routedirect('home'); + } + 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 !== ""; @@ -141,7 +161,27 @@ 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); + } + + } + + 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/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'], |