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

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

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

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

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

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

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

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

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

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

Ответов: 15
Просмотров: 6460
Последний ответ 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
    • Просмотр профиля
Большое спасибо, всё заработало!!!