Вопрос по Minishop2

Доброй ночи, можно ли запретить менеджеру создавать категории minishop2 в админке выше 2-го или 3-его уровня вложенности?

Или запретить создавать дочерние категории там, где используется конкретный шаблон (например: подкатегория), под запретом понимается — исключить из контекстного меню пункт «Создать->Категорию с товарами»

Спасибо!
Виталий Валерьевич
23 февраля 2015, 00:18
modx.pro
1 661
0

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

Виталий Валерьевич
23 февраля 2015, 13:33
0
Неужели, такое никем не реализовывалось?
    Алексей
    05 марта 2016, 21:23
    0
    Актуальный вопрос -) ставлю miniShop2 только лишь для приемы payPall из коробки, мэнэджеру вообще не нужно создавать никогда никакие категории. Поэтому залез в файлик
    core/components/minishop2/model/minishop2/mscategory.class.php
    И закомментил
    public function getContextMenuText() {
    		$this->xpdo->lexicon->load('minishop2:default');
    		return array(
    //			'text_create' => $this->xpdo->lexicon('ms2_category'),
    //			'text_create_here' => $this->xpdo->lexicon('ms2_category_create_here'),
    		);
    	}
    Только это решение это слабовато -) скорее через политику доступа можно настроить не выводить «создать категорию с товарами» — также как можно настроить через политику доступа не выводить «создать символичискую ссылку», и другие элементы.
      Воеводский Михаил
      05 марта 2016, 22:19
      0
      Задача решается плагином на событие OnBeforeDocFormSave.
      Готовых решений нет, тк универсальной такую вещь не сделать.
        Алексей
        06 марта 2016, 08:35
        0
        Вот что удалось найти по этой теме, несколько ссылок:
        rtfm.modx.com/revolution/2.x/developing-in-modx/advanced-development/custom-resource-classes/creating-a-resource-class
        и
        rtfm.modx.com/revolution/2.x/developing-in-modx/advanced-development/custom-resource-classes/creating-a-resource-class/creating-a-resource-class-step-2
        По событию «OnBeforeDocFormSave» нужно плагином расширять метод «getContextMenuText»? Или каком хотябы примерный механизм работы этого плагина?
          Павел Гвоздь
          06 марта 2016, 10:33
          0
          Насколько я понял Михаила, то в плагине будет проверка, в какой группе состоит юзер. Если проверка не прошла (юзер не в группе менеджеров), то ничего не делаем. Если проверка прошла (юзер — менеджер), то смотрим, каким по счёту от корня сайта будет наш документ (в данном случае категория). Если документ ниже разрешённой вложенности, то сообщаем юзеру это в виде ошибки.
            Воеводский Михаил
            06 марта 2016, 11:28
            0
            Плагин не имеет ничего общего с расширением стандартных объектов. Посмотрите принцип работы плагина.

            Что касается текущего вопроса, в плагине должны быть 2 проверки: группа пользователя и уровень вложенности. Если хотя бы одна из них не проходит, возвращайте из плагина false — ресурс сохранен не будет, а пользователь получит сообщение об ошибке.
              Алексей
              06 марта 2016, 21:36
              0
              хм, странно, я думал ваше решение как-то относится к теме вот этого вопроса:
              под запретом понимается — исключить из контекстного меню пункт «Создать->Категорию с товарами»
              на сколько я понимаю, это делается как раз таки с помощью расширения стандартных объектов.
              А с помощью плагина на событие OnBeforeDocFormSave — эт да, известная тема, можно кучу всяких проверок делать, и не позволять сохранять документ. С этим я согласен, куча методов решения, но они выходят за рамки данного вопроса. Речь идет о контекстном меню.
                Воеводский Михаил
                08 марта 2016, 02:46
                0
                Не обратил внимание, что речь об исключении пунктов контекстного меню.
                  Павел Гвоздь
                  08 марта 2016, 11:58
                  0
                  Там не так просто это сделать, как может показаться… куда проще сделать так, как написал Михаил.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            9