aboutsummaryrefslogtreecommitdiff
path: root/app/class
diff options
context:
space:
mode:
authorvincent-peugnet <v.peugnet@free.fr>2020-01-22 01:45:07 +0100
committervincent-peugnet <v.peugnet@free.fr>2020-01-22 01:45:07 +0100
commit1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb (patch)
tree64a3778b1394879c6260275274ee3002f413d089 /app/class
parenta2fd39d2c8d6837f07e7df3bb9738d72e5c15409 (diff)
parent8e2abd192527a308d08920c69ab4a551b6f1e994 (diff)
downloadwcms-1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb.tar.gz
wcms-1a02e1eea3a05814ec4d21fd1e3ebb1a11dc7bbb.zip
Merge branch 'implement-multi-edit'
Diffstat (limited to 'app/class')
-rw-r--r--app/class/Controllerhome.php44
-rw-r--r--app/class/Modelpage.php24
-rw-r--r--app/class/Routes.php2
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'],