Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Выборка активных и не активных страниц через Selector

Автор atachРаздел Custom макросы

Ответов: 2
Просмотров: 2140
Последний ответ 24 Апреля 2016, 13:02:38
от atach
Вывод данных страниц разного типа данны в порядке создания

Автор SumrakrndРаздел Шаблоны XSLT

Ответов: 5
Просмотров: 2094
Последний ответ 09 Декабря 2016, 12:55:59
от Sumrakrnd
Варианты подгрузки разных типов страниц в одном шаблоне

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 3248
Последний ответ 08 Июля 2013, 14:52:35
от admin
Вопрос по выводу дочерних страниц модуля структура

Автор shotoРаздел Шаблоны XSLT

Ответов: 5
Просмотров: 4646
Последний ответ 07 Марта 2014, 17:34:18
от e.ioffe
Сбор информации об обновлении страниц сайта

Автор AllaVKРаздел Custom макросы

Ответов: 15
Просмотров: 9181
Последний ответ 28 Сентября 2011, 17:02:34
от AllaVK

0 Пользователей и 1 Гость просматривают эту тему.

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Добрый день, подскажите такой вопрос.
Мне нужно запретить удаление некоторых страниц в админке. Они все имеют один "ObjectTypeId".
Я на событие "systemDeleteElement", поставил обработчик, на тип "after", который определяет ObjectTypeId у страницы, но не понятно что именно делать при определении. Отдаю return false, но она все равно удаляется.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Пока нашел только такой костыль:

В events.php

$eventListener = new umiEventListener('systemDeleteElement', 'module, 'method');
$eventListener->setIsCritical(true);

В макросе

public function onDelete(iUmiEventPoint $eventPoint) 
{
  if($eventPoint->getMode() == 'before')
  {
     throw new baseException('Страницу нельзя удалять'));
  }
}
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Да это у меня впринципе реализовано.
Вызов события, по точке срабатывания.

А вот в самом макросе на "after", потому что проверяю перед удалением, "throw new baseException" не срабатывает.
Там же висит отправка mail уведомления (для проверки). Что бы понять вообще срабатывает событие или нет.
Событие срабатывает и страница все равно удаляется.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Режим after используется после удаления элемента. Для отмены удаления нужно прослушивать режим before.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Режим after используется после удаления элемента. Для отмены удаления нужно прослушивать режим before.

Точно, что то я перепутал прошлое/будущее :).
Только вот вот "baseException" не срабатывает, ругается на него. У меня PHP7 и новый формат модулей.
"Cannot instantiate abstract class baseException"
Поставил "publicAdminException", но он не срабатывает.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Цитировать
Только вот вот "baseException" не срабатывает, ругается на него. У меня PHP7 и новый формат модулей.

Все верно, я не посмотрел, что baseException abstract.

Цитировать
Поставил "publicAdminException", но он не срабатывает.

Попробуйте publicException - проверил, у меня работает.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Большое спасибо, всё заработало!!!