NodeReference и разграничение доступа

Главные вкладки

Аватар пользователя Mystex@drupal.org Mystex@drupal.org 24 ноября 2009 в 12:40

Добрый час!

Ребята, подскажите пожалуйста. Имеются два типа материала: Компания и Товар, соединённые через Autocreate NodeReference.

А так же два пользователя: Юзер1 и Юзер 2. Юзер1 создал материал Компания1, а Юзер2 два создал Компанию2.
Теперь при создании пользователем Юзер1 материала Товар1, он может прикрепить этот материал к Компании2.

Теперь вопрос №1: как запретить пользователям прикреплять материалы к материалам, права на редактирование которых он не имеет?

Вопрос №2. Как через Views на странице Компании вывести все товары, к ней относящиеся? Пробовал создавать блок и разные комбинации фильтров - ничего не вышло. Либо ничего не выводится, либо выводятся все товары Sad

Комментарии

Аватар пользователя toshaxtsa toshaxtsa 24 ноября 2009 в 13:30

О слушай а как первый вопрос решил? У меня примерно такая-же ситуация только с подшивками (book). Мне надо сделать так чтобы каждый автор видел только созданные им подшивки и не имел права добавлять материал в чужие подшивки. Если не секрет кинь в Личку или сюда. Спасибо.

По поводу второго вопроса не уверен. Но как вариант передавать id Компании и обрабатывать его как группировку. То-есть отбор производить в связке Только эта Компания - Только ее товары. Конкретнее сказать не могу не видя базы. Также если насколько понимаю суть Снипетов можно прямо в страницу вшить PHP код.

Аватар пользователя Mystex@drupal.org Mystex@drupal.org 24 ноября 2009 в 13:45

toshaxtsa

Решил так: сначала создаёшь views с нужными фильтрами (в моём случае - все компании, принадлежащие текущему юзеру). Потом работая с типами материалом, заходишь в свойства поля типа Node reference, там есть раздел "Advanced - Nodes that can be referenced (View)", в списке "View used to select the nodes" выбираешь нужный тебе views. Готово!

По поводу моего второго вопроса. Пробовал разные комбинации: и фильтры, и аргументы - не получается. Поковыряю ещё конечно, но может кто из местных подскажет как правильно сделать.

Аватар пользователя alter.ego alter.ego 10 ноября 2015 в 11:46

Написал патч решающий проблему №1, версия CCK 6.x - 2.5, теперь по умолчанию юзер может ссылатся только на свои ноды, чтобы разрешить ссылаться на все - нужно поставить разрешение на странице users->permissions. также отправил в issues возможно включат в обновления

по поводу проблемы №2:

товары выводим через блок views с параметром _ваше_nodereference_поле_ в настройках ставим use default value и там выбираем get node_id from url

в атаче патч по проблеме №1

Аватар пользователя Mystex@drupal.org Mystex@drupal.org 25 ноября 2009 в 23:00

alter.ego

Благодарю за рецепт! Как раз зашёл сообщить,что нашёл решение. Все сдёлал почти как вы советуете, только через вставку PHP-кода.