Удаление страниц через клиентскую часть
Материал из Umicms
В данных статьях:
был рассмотрен механизм создания страниц и их редактирования с клиентской части. А в этой статье мы рассмотрим два метода, один для владельца объектов выведет ссылку для удаления объекта, другой метод выполнит удаление страницы, если ее владельцем является текущий пользователь. Добавим в файл classes/modules/data/__custom.php два метода:
public function infopage($page_id) {
$page_id = (int) $page_id;
$hierarchy = umiHierarchy::getInstance();
$element = $hierarchy->getElement($page_id);
$object_id = $element->getObjectId();
$permissions = permissionsCollection::getInstance();
if($permissions->isOwnerOfObject($object_id)){
$link = "/editobject/?id=" . $page_id;
$del_link = "<a href=\"/data/delpage/{$page_id}/\">Удалить</a>";
$edit_link = "<a href=\"$link\">Редактировать</a>";
return $edit_link . " " . $del_link;
}
}
public function delpage() {
// id страницы для удаления
$page_id = (int) getRequest('param0');
$hierarchy = umiHierarchy::getInstance();
$element = $hierarchy->getElement($page_id);
if(!$element) return;
$parent_id = $element->getParentId();
$object_id = $element->getObjectId();
$permissions = permissionsCollection::getInstance();
if($permissions->isOwnerOfObject($object_id)){
// удаление в корзину
$result = $hierarchy->delElement($page_id);
// удаление из корзины
$hierarchy->removeDeletedElement($page_id);
}
// текущая страница
$currentPageId = cmsController::getInstance()->getCurrentElementId();
$referer_url = ($page_id == $currentPageId) ? $hierarchy->getPathById($parent_id) : getServer('HTTP_REFERER');
$this->redirect($referer_url);
}
И в папке classes/modules/data/ создадим файл permissions.custom.php следующего содержания:
<?php
$permissions = Array('main' => Array('infopage','delpage'));
?>
Вызов метода infopage следующий:
%data infopage(%id%)%
где %id% - id страницы.