Удаление страниц через клиентскую часть
Материал из 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 страницы.
