aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/class/Controllerhome.php44
-rw-r--r--app/class/Modelpage.php24
-rw-r--r--app/class/Routes.php2
-rw-r--r--app/view/templates/home.php2
-rw-r--r--app/view/templates/homemenu.php16
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>