Удаление страниц через клиентскую часть

Материал из 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 страницы.