1 Отредактировано Илья (22.06.2016 15:33:57)

Тема: Удалить заказ и Удалить товар

Добрый день. Подскажите пожалуйста, где находится вывод кнопок Удалить заказ и Удалить товар в тулбаре админной части. Нужно поставить туда проверку.

http://storage5.static.itmages.ru/i/16/0622/s_1466583483_2469266_2a6ab36b08.png

Повысить оценку Понизить оценку

Re: Удалить заказ и Удалить товар

А какого плана проверку хотите сделать?

3

Re: Удалить заказ и Удалить товар

Закусило Александр пишет:

А какого плана проверку хотите сделать?

Если группа супервизор выводить кнопку удаление. Если нет, то скрыть ее

Повысить оценку Понизить оценку

4

Re: Удалить заказ и Удалить товар

Вы можете вставить проверку, подвесившись на событие orm.delete.shop-order

Остановить удаление можно в обработчике события примерно так:

<?php
namespace Modulename\Config;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this->bind('orm.delete.shop-order');
    }
    
    public static function ormDeleteShopOrder($param, \RS\Event\Event $event) {
        $current_user = \RS\Application\Auth::getCurrentUser();
        
        if (!in_array('supervisor', $current_user->getUserGroups())) {
            //Если пользователь не состоит в группе supervisor
            $event->stopPropagation();
        }
    }
}

Повысить оценку +1 Понизить оценку

5

Re: Удалить заказ и Удалить товар

А как быть с удалением товара? Попробовал по выше приведенному примеру, не работает. Попробовал вставить проверку в саму функцию удаления товара product.inc.php тоже не выходит.

Повысить оценку Понизить оценку

Re: Удалить заказ и Удалить товар

Укажите код, который использовали для удаления товара.

7

Re: Удалить заказ и Удалить товар

Закусило Александр пишет:

Укажите код, который использовали для удаления товара.

Вот такой

    public static function ormDeleteCatalogProduct($param, \RS\Event\Event $event) {
        $current_user = \RS\Application\Auth::getCurrentUser();
        
        if (!in_array('supervisor', $current_user->getUserGroups())) {
            //Если пользователь не состоит в группе supervisor
            $event->stopPropagation();
        }
    }

Повысить оценку Понизить оценку

Re: Удалить заказ и Удалить товар

Ну вроде бы всё правильно. Попробуйте обратиться в поддержку. Должно работать.

9 Отредактировано Илья (06.03.2017 11:34:21)

Re: Удалить заказ и Удалить товар

Здравствуйте
1. Баг: Если использовать данный код, то товарная позиция не удаляется, но у нее после этого слетает основная категория.                    - Скажите как это можно поправить?

    public static function ormDeleteCatalogProduct($param, \RS\Event\Event $event) {
        $current_user = \RS\Application\Auth::getCurrentUser();
        
        if (!in_array('supervisor', $current_user->getUserGroups())) {
            //Если пользователь не состоит в группе supervisor
            $event->stopPropagation();
        }
    }

2. Вопрос: Скажите на какое событие подвеситься, что бы сделать такую проверку в совершенном заказе?
3. Вопрос: событие orm.beforemultidelete.catalog-product уже появилось в новых версиях?

Повысить оценку Понизить оценку

Re: Удалить заказ и Удалить товар

по 1 и 3 это Вам в поддержку.

Вопрос: Скажите на какое событие подвеситься, что бы сделать такую проверку в совершенном заказе?

orm.beforewrite или orm.afterwrite заказа.

11 Отредактировано Илья (06.03.2017 15:00:35)

Re: Удалить заказ и Удалить товар

Но как там зафиксировать что это именно удаление, а не просто редактирование заказа например?
А id пользователя который выполняет удаление как то можно получить?

Повысить оценку Понизить оценку

12 Отредактировано Закусило Александр (06.03.2017 16:53:56)

Re: Удалить заказ и Удалить товар

Но как там зафиксировать что это именно удаление, а не просто редактирование заказа например?

По хуку удаления заказа.
http://readyscript.ru/dev-manual/dev_hooks.html

А id пользователя который выполняет удаление как то можно получить?

$current_user = \RS\Application\Auth::getCurrentUser();

13

Re: Удалить заказ и Удалить товар

Закусило Александр пишет:

Но как там зафиксировать что это именно удаление, а не просто редактирование заказа например?

По хуку удаления заказа.
http://readyscript.ru/dev-manual/dev_hooks.html

Не понятно, как в хуке orm.beforewrite сделать хук orm.delete.catalog.product. Можно пример?

Повысить оценку Понизить оценку

Re: Удалить заказ и Удалить товар

Не понятно, как в хуке orm.beforewrite сделать хук orm.delete.catalog.product. Можно пример?

Такое невозможно.

Если Вам нужно определить, что Вы из административной панели редактируете заказ. То это можно по строке запроса адреса определить, через например $_SERVER['QUERY_STRING'] или $_SERVER['REQUEST_URI'].