К содержанию

Плагин запрещающий удалять определенные ресурсы

Вот этот хороший не знаю чей плагин запрещает удалять ресурсы переданные списком через параметр ids.
<?php
$e = &$modx->Event;

$ids= explode(',', $ids);

switch($e->name) {

        case 'OnBeforeDocFormDelete':
                if (isset($_REQUEST['id']) && in_array(intval($_REQUEST['id']), $ids)) {
                        echo '<div style="padding: 50px 100px; font: bold 12px Arial, sans-serif;">Удаление данного раздела невозможно</div>';
                        exit;
                }
        break;

        case 'OnDocFormDelete':
                if (isset($_REQUEST['id']) && in_array(intval($_REQUEST['id']), $ids)) {
                        exit;
                }
        break;

        default:
                return;
        break;

}
Он исправно работает кроме той его части, которая отвечает за вывод информационного сообщения _Удаление данного раздела невозможно_

Вместо него перед удалением выводится стандартное _Вы уверены..._

Подскажите как допилить… Pls
anatol
anatol
25 ноября 2015, 09:23
modx.pro
1 801
Реклама

Комментарии: 5

    Сергей Шлоков
    Сергей Шлоков Эксперт
    25 ноября 2015, 16:36
    При удалении это не работает. Только при создании и редактировании.
    Судя по коду плагина писал его человек не глубоко разбирающийся в MODX Revo. Писать echo в плагине да еще и с HTML разметкой… Кроме того в плагине есть уже определенная переменная $id, поэтому $_REQUEST['id'] явно лишний.
    Мое мнение, штатными средствами вывести сообщение не получится. Хотя я могу и ошибаться.
      Воеводский Михаил
      Воеводский Михаил Проверенный
      25 ноября 2015, 16:54
      Верно, штатными средствами не получится.

      В процессоре событие вызывается, но результат никуда не передается. Потому использовать штатный механизм возврата результата из плагина бессмысленно.
    Максим Кузнецов
    Максим Кузнецов Проверенный
    25 ноября 2015, 17:00
    Если для бэкэнда, то алерт нужно ~составлять так (в плагине):

    $response = array(
    			'success' => false,
    			'message' => 'Ресурс с данным Id удалять запрещено!',
    			'data' => array(),
    	);
    	echo $modx->toJSON($response);
    	exit;
      anatol
      anatol Старожил
      26 ноября 2015, 07:46
      Ага, работает. Спасибо большое.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5