Skip to content
Snippets Groups Projects
Commit bb5c21dc authored by Elmar Ludwig's avatar Elmar Ludwig
Browse files

don't allow deletion of specific page versions, fixes #4486

Closes #4486

Merge request studip/studip!3339
parent 195c8548
No related branches found
No related tags found
No related merge requests found
...@@ -308,29 +308,24 @@ class Course_WikiController extends AuthenticatedController ...@@ -308,29 +308,24 @@ class Course_WikiController extends AuthenticatedController
$this->redirect($this->allpagesURL()); $this->redirect($this->allpagesURL());
} }
public function deleteversion_action(WikiPage $page, $version_id = null) public function deleteversion_action(WikiPage $page)
{ {
if (!Request::isPost() || !$page->isEditable() || !CSRFProtection::verifyRequest()) { if (!Request::isPost() || !$page->isEditable() || !CSRFProtection::verifyRequest()) {
throw new AccessDeniedException(); throw new AccessDeniedException();
} }
if ($version_id === null) {
$version = $page->versions[0]; $version = $page->versions[0];
if ($version) { if ($version) {
$page['name'] = $version['name']; $page['name'] = $version['name'];
$page['content'] = $version['content']; $page['content'] = $version['content'];
$page['user_id'] = $version['user_id']; $page['user_id'] = $version['user_id'];
$page['chdate'] = $version['mkdate']; $page['chdate'] = $version['mkdate'];
$page->store(); $page->store();
$version->delete(); $version->delete();
} else {
$page->delete();
}
} else { } else {
$version = WikiVersion::find($version_id); $page->delete();
if ($version['page_id'] === $page->id) {
$version->delete();
}
} }
PageLayout::postSuccess(_('Version wurde gelöscht.')); PageLayout::postSuccess(_('Version wurde gelöscht.'));
if (Request::get('redirect_to') === 'page') { if (Request::get('redirect_to') === 'page') {
$this->redirect($this->page($page)); $this->redirect($this->page($page));
......
...@@ -45,16 +45,6 @@ ...@@ -45,16 +45,6 @@
<a href="<?= $controller->versiondiff($page) ?>" data-dialog> <a href="<?= $controller->versiondiff($page) ?>" data-dialog>
<?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?> <?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?>
</a> </a>
<? if ($page->isEditable()) : ?>
<form action="<?= $controller->deleteversion($page) ?>"
method="post"
class="inline"
title="<?= _('Version löschen') ?>"
data-confirm="<?= _('Wirklich diese Version löschen?') ?>">
<?= CSRFProtection::tokenTag() ?>
<?= Icon::create('trash')->asInput() ?>
</form>
<? endif ?>
</td> </td>
</tr> </tr>
<? foreach ($page->versions as $i => $version) : ?> <? foreach ($page->versions as $i => $version) : ?>
...@@ -79,16 +69,6 @@ ...@@ -79,16 +69,6 @@
<a href="<?= $controller->versiondiff($page, $version->id) ?>" data-dialog> <a href="<?= $controller->versiondiff($page, $version->id) ?>" data-dialog>
<?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?> <?= Icon::create('log')->asImg(['class' => 'text-bottom']) ?>
</a> </a>
<? if ($page->isEditable()) : ?>
<form action="<?= $controller->deleteversion($page, $version->id) ?>"
method="post"
class="inline"
title="<?= _('Version löschen') ?>"
data-confirm="<?= _('Wirklich diese Version löschen?') ?>">
<?= CSRFProtection::tokenTag() ?>
<?= Icon::create('trash')->asInput() ?>
</form>
<? endif ?>
</td> </td>
</tr> </tr>
<? endforeach ?> <? endforeach ?>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment