Как сделать определенную ноду только читаемой? Ограничение прав доступа.

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

Аватар пользователя Poqa Poqa 23 декабря 2008 в 8:47

У меня проблема, готов заплатить за помощь.
Нужна простая фишка, нигде не могу найти. У меня на сайте разные типы материалов, нужно просто чтобы я мог начав редактировать любой материал установить галочку или что-то подобное и этот материал становился только для чтения, чтобы Автор не мог его редактировать и удалить.
Т.е. всё просто, любую ноду сделать только для чтения всем кроме Админа.
Столько модулей перепробовал по ограничению доступа, там по ролям, по таксономии, пароли и другие фишки, но не нашёл ничего простого, нажал и всё, нужная нода только для чтения. Пожалуйста, выручите, очень нужно.

Комментарии

Аватар пользователя Ne01eX Ne01eX 23 декабря 2008 в 9:48

Это реализовывается стандартными методами Drupal. Smile Уберите галку на нужный тип материала для всех ролей, кроме админской что-то типа "править свой материал_тип" на странице прав доступа и вам будет щастье. Smile

Аватар пользователя Poqa Poqa 23 декабря 2008 в 9:59

Мне не нужно весь материал убирать, нужны отдельные ноды из разных типов материала. Т.е. или отдельную запись блога сделать только для чтения, или тему на форуме, или пост, заметку и т.п.

Аватар пользователя glu2006 glu2006 23 декабря 2008 в 10:21

Готового модуля такого нет, надо писать руками. Я к сожалению пока занят (до 20-х чисел января), но если не горит то аська в профиле.

Аватар пользователя Poqa Poqa 23 декабря 2008 в 11:02

Блин, спасибо большое, что ещё раз ткнули меня в него носом Smile Раньше ставил его, да и все наверное модули перепробовал такого плана, не нашёл нужного, а этот не срабатывал. Ставлю или общие правила запрещающие редактирование и удаление, или чисто на ноду, но ноль эмоций, и сейчас так же. Пока не стал копаться и думать в чём-же проблема, оказывается, в контроле доступа стоило убрать у модуля Блог галочку разрешающую редактировать запись блога, и тут же модуль стал приоритетным и всё начало работать. Столько намучался, ещё раз спасибо Smile Готов отблагодарить финансово Wink

Аватар пользователя Poqa Poqa 23 декабря 2008 в 11:10

Вот только обрадуешься, как тебе нож в спину Sad Когда в Контроль доступа убрал галочку с редактирования записи в блоге всё заработало, но теперь нельзя создавать эти самые записи в блоге. Ссылка пропала и нет доступа.
Вопрос остаётся открытым, в частности интересует работа с записями в блоге.

Аватар пользователя Ne01eX Ne01eX 23 декабря 2008 в 12:20

я бы сделал так:

0. Создал бы новый тип материала newblog.
1. Поставил бы модуль nodetype.
2. Изменил бы тип документа всех блоговых записей на newblog, используя nodetype.
3. Выключил бы модуль blog, так как он нафиг теперь не нужен.
4. При необходимости, переименовал бы newblog в blog (хотя это совсем не обязательно и даже вредно =)).
5. Задал бы необходимые права на, теперь уже, полноценный тип документа blog (newblog), используя content_access.

Ну а вывод всех материалов типа blog и создание короткой ссылки это уже пройденный этап.

I. При всей кажущейся сложности, на самом деле нет ничего сложного.
II. Мы задействуем мощь content_access не прибегая к помощи других модулей.
III. Мы даже избавляемся от одного модуля, так как по окончании работы nodetype можно опять вырубить Smile

Линк в тему: http://drupal.org/project/nodetype

P.S. Если не передумали благодарить =), то могу вечером скинуть реквизиты WM-кошелки. Smile

Аватар пользователя Poqa Poqa 23 декабря 2008 в 12:24

Ne01eX wrote:
я бы сделал так:0. Создал бы новый тип материала newblog.
1. Поставил бы модуль nodetype.
2. Изменил бы тип документа всех блоговых записей на newblog, используя nodetype.
3. Выключил бы модуль blog, так как он нафиг теперь не нужен.
4. При необходимости, переименовал бы newblog в blog (хотя это совсем не обязательно и даже вредно =)).
5. Задал бы необходимые права на, теперь уже, полноценный тип документа blog (newblog).
Ну а вывод всех материалов типа blog и создание короткой ссылки это уже пройденный этап.
I. При всей кажущейся сложности, на самом деле нет ничего сложного.
II. Мы задействуем мощь content_access не прибегая к помощи других модулей.
III. Мы даже избавляемся от одного модуля, так как по окончании работы nodetype можно опять вырубить Smile
Линк в тему: http://drupal.org/project/nodetype
P.S. Если не передумали благодарить =), то могу вечером скинуть реквизиты WM-кошелки. Smile

Не передумал, конечно, главное сделать Smile
Эту идею я провернул уже, но или сделал это не верно, или она не сработало.
Вышло вот как. Есть новый материал blog_new, его вывожу через виевсы, вывожу вместе с обычными блогами, т.е. это список записей. Если мне нужно обычную запись блога закрыть от редактирования и удаления, я её перевожу в этот новый тип и всё отлично, но...
1. В профиле пользователей при нажатии на ссылку "Просмотреть последние записи в блогах" этот новый тип не выводится.
2. Записи этого типа не связаны между собой, они отдельны и связаны только тем видом, в котором я их вывожу.
У обычного блога внизу есть ссылочка типа: Блог пользователя... в которой выводятся все его записи, тут же её нет, документы разделены. Можно дать отдельный раздел через Таксономию, но не думаю, что это разделит все записи блога отдельно по пользователям, они скорее всего будут все вместе в выбранном разделе, и этот раздел придется выбирать каждый раз создавая запись или меняя запись обычного блога на запись нового, что очень не удобно.

Если я что-то не так думаю и делаю, поправьте, пожалуйста.

Аватар пользователя Poqa Poqa 23 декабря 2008 в 13:45

Ne01eX wrote:
А если обратно сменить тип документа на blog, то заданные права сохраняются? ;-)

Не совсем понял как это, растолкуйте. По идее если я верну blog_new в blog, то вернутся права как для обычного документа блога.

Аватар пользователя Geldora Geldora 23 декабря 2008 в 13:47

А можно вопрос? Зачем делать только некоторые записи в блока только для чтения? Это же илчные блоги, так?

Можно копировать ноды, если вы хотите их защитить, т.е. нек-рые ноды будут и блог, и нбюблог, последний защищен от копирования. Но тогда копирование контента получится...

Аватар пользователя Poqa Poqa 23 декабря 2008 в 13:59

Geldora wrote:
А можно вопрос? Зачем делать только некоторые записи в блока только для чтения? Это же илчные блоги, так?
Можно копировать ноды, если вы хотите их защитить, т.е. нек-рые ноды будут и блог, и нбюблог, последний защищен от копирования. Но тогда копирование контента получится...

Такой вариант не подходит, к сожалению. Дублирование это не выход...

Аватар пользователя glu2006 glu2006 23 декабря 2008 в 13:57

Блин ну вы тут навернули)))
А если попробовать так:
1. Добавляешь к материалу блог поле ССК запретить редактирование (checkbox).
2. Модуль CCK Field Permissions на это поле ставите доступ только админу.
3. На событии edit hook_nodeapi проверяете если тип материала blog(может быть любой тип) и галочка установлена то любого пользователя кроме админа пишем "пшелка ты на главную" (к примеру) и просто редиректить назад на view страницы.

Метод требует знания PHP и API друпала.

Аватар пользователя Poqa Poqa 23 декабря 2008 в 15:56

glu2006 wrote:
Блин ну вы тут навернули)))
А если попробовать так:
1. Добавляешь к материалу блог поле ССК запретить редактирование (checkbox).
2. Модуль CCK Field Permissions на это поле ставите доступ только админу.
3. На событии edit hook_nodeapi проверяете если тип материала blog(может быть любой тип) и галочка установлена то любого пользователя кроме админа пишем "пшелка ты на главную" (к примеру) и просто редиректить назад на view страницы.
Метод требует знания PHP и API друпала.

Для меня это вообще круто, так как не знаю PHP и API друпала Sad

Аватар пользователя glu2006 glu2006 23 декабря 2008 в 22:50

Poqa wrote:
Для меня это вообще круто, так как не знаю PHP и API друпала :(

Поэтому читай мой пост ниже если горит то поиск в руки, и учить матчасть.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 23 декабря 2008 в 22:51

glu2006
Хороший вариант. А Вы посоветуете для этого отдельный модуль писать или всё же вмешиваться в работу ядра?

ИМХО, модуль правильнее, но стоит ли ради небольшой функции затевать создание отдельного модуля?

Аватар пользователя glu2006 glu2006 23 декабря 2008 в 22:56

<a href="mailto:ingumsky@drupal.org">ingumsky@drupal.org</a> wrote:
Хороший вариант. А Вы посоветуете для этого отдельный модуль писать или всё же вмешиваться в работу ядра?
ИМХО, модуль правильнее, но стоит ли ради небольшой функции затевать создание отдельного модуля?

Вмешиваться в работу ядра ЗЛО!!!!
Писать свой модуль???
Я пишу свой модуль даже для сайтов визиток. (он ничего в себе может и не нести)
Но смотреть в будущее проекта задача того человека который его делает, хотя если поматросил и бросил то как говориться и флаг в руки))

Аватар пользователя zaraza@drupal.org zaraza@drupal.org 18 сентября 2009 в 0:51

Это можно сделать очень просто!
- Создать новый формат ввода текста, обозвать его например "защита редактирования"
- Этот формат ввода должен быть аналогичен используемому формату ввода, но разрешён только админу
Если теперь сменить формат ввода на "защита редактирования", то никто кроме админа не сможет эту ноду редактировать!

* для Drupal 6.* это прекрасно работает, для пятёрки - хз..