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 | |
parent | a2fd39d2c8d6837f07e7df3bb9738d72e5c15409 (diff) | |
parent | 8e2abd192527a308d08920c69ab4a551b6f1e994 (diff) | |
download | wcms-1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb.tar.gz wcms-1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb.zip |
Merge branch 'implement-multi-edit'
Diffstat (limited to 'app')
-rw-r--r-- | app/class/Controllerhome.php | 44 | ||||
-rw-r--r-- | app/class/Modelpage.php | 24 | ||||
-rw-r--r-- | app/class/Routes.php | 2 | ||||
-rw-r--r-- | app/view/templates/home.php | 2 | ||||
-rw-r--r-- | app/view/templates/homemenu.php | 16 |
5 files changed, 72 insertions, 16 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'], diff --git a/app/view/templates/home.php b/app/view/templates/home.php index d3d9a99..ddf4e46 100644 --- a/app/view/templates/home.php +++ b/app/view/templates/home.php @@ -85,7 +85,7 @@ <tbody> <?php foreach ($table2 as $item) { ?> <tr> - <?php if($user->issupereditor()) { ?><td class="hidephone"><input type="checkbox" name="pagesid[]" value="<?= $item->id() ?>" id="id_<?= $item->id() ?>" form="multiedit"></td><?php } ?> + <?php if($user->issupereditor()) { ?><td class="hidephone"><input type="checkbox" name="pagesid[]" value="<?= $item->id() ?>" id="id_<?= $item->id() ?>" form="multi"></td><?php } ?> <td><label title="<?= $item->title() ?>" for="id_<?= $item->id() ?>"><?= $item->id() ?></label></td> <td><?php if($user->issupereditor() || in_array($user->id(), $item->authors())) { ?><a href="<?= $this->upage('pageedit', $item->id()) ?>"><img src="<?= Wcms\Model::iconpath() ?>edit.png" class="icon"></a><?php } ?></td> <td><a href="<?= $this->upage('pageread/', $item->id()) ?>" target="_blank"><img src="<?= Wcms\Model::iconpath() ?>read.png" class="icon"></a></td> diff --git a/app/view/templates/homemenu.php b/app/view/templates/homemenu.php index 8431e50..669f9f2 100644 --- a/app/view/templates/homemenu.php +++ b/app/view/templates/homemenu.php @@ -37,14 +37,8 @@ <summary>Edit</summary> <div class="submenu"> <i>Edit selected pages</i> - <h2>Actions</h2> - <form action="" method="post"> - <input type="submit" value="render"> - <input type="submit" value="download"> - <input type="submit" value="delete"> - </form> + <form action="<?= $this->url('multi') ?>" method="post" id="multi"> <h2>Edit Meta infos</h2> - <form action="<?= $this->url('multiedit') ?>" method="post" id="multiedit"> <input type="text" name="datas[title]" id="title"> <label for="title">title</label> </br> @@ -149,7 +143,13 @@ <input type="checkbox" name="reset[datemodif]" id="resetdatemodif" value="1"> <label for="resetdatemodif">update modification date</label> </br> - <input type="submit" value="edit"> + <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> |