Дать исключительные права автору на редактирование материала
#1
Отправлено 10 July 2012 - 18:56
Пытаюсь настроить редактирование материалов с фронтенда.
В настройках "Submissions" добавил возможность редактирования материалов для группы registered. Добавил в шаблон full отображение ссылки на редактирование материала.
Также настроил меню "My submissions".
Сейчас, если разные пользователи заходят в это меню, каждый видит только свои материалы - это как раз то, что мне надо.
А вот ссылка "редактировать материал" на странице full доступна всем registered пользователям, вне зависимостри от того, кто явлется автором.
Можно ли как то настроить права редактирования материала? Таким образом, чтобы статью мог редактировать только ее автор и администраторы?
#2
Отправлено 10 July 2012 - 22:48
В файле: media/zoo/elements/itemedit/itemedit.php надо слегка модифицировать функцию рендеринга элемента:
от строки 40:
public function render($params = array()) {до включительно
if ($layout = $this->getLayout()) {
замените на
public function render($params = array()) { // ID автора материала ZOO $author_id = $this->getItem()->created_by; // ID текущего пользователя Joomla $user = &JFactory::getUser(); $user_id = $user->id; // Группы текущего пользователя Joomla $groups = $user->groups; // render layout if ($layout = $this->getLayout() AND ($author_id == $user_id OR array_search(8, $groups))) {
В общем идея простая: получаем ID материала ZOO и текущего пользователя и сравниваем, если они совпадают или id группы пользователя = 8 (Super Administrators), то выводим линк. Если надо давать доступ нескольким группам, то надо модифицировать условие в последней строке. Специально сделал код понятным с несколькими дополнительными переменными и комментами, так как все можно вместить в пару строку Код проверил, рабочий.
«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.
#3
Отправлено 11 July 2012 - 10:44
За 5 минут придумал небольшой хак элемента itemedit ...
Спасибо большое +1
Все работает.
Радует тот факт, что сообщество принимает активное участие в обсуждении.
И решения уже предлагает не один Денис
Станислав,
Если вы не против, я выложу это решение на joomlaforum с пометкой © Станислав.
Так как там разместил аналогичный вопрос, но ответа пока не получил.
#4
Отправлено 11 July 2012 - 10:52
Да не вопрос Можно и без пометки, я не тщеславныйЕсли вы не против, я выложу это решение на joomlaforum с пометкой © Станислав.
Так как там разместил аналогичный вопрос, но ответа пока не получил.
«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.
#5
Отправлено 11 July 2012 - 17:46
За 5 минут придумал небольшой хак элемента itemedit
В файле: media/zoo/elements/itemedit/itemedit.php надо слегка модифицировать функцию рендеринга элемента:
от строки 40:
public function render($params = array()) {до включительно
if ($layout = $this->getLayout()) {
замените на
public function render($params = array()) { // ID автора материала ZOO $author_id = $this->getItem()->created_by; // ID текущего пользователя Joomla $user = &JFactory::getUser(); $user_id = $user->id; // Группы текущего пользователя Joomla $groups = $user->groups; // render layout if ($layout = $this->getLayout() AND ($author_id == $user_id OR array_search(8, $groups))) {
В общем идея простая: получаем ID материала ZOO и текущего пользователя и сравниваем, если они совпадают или id группы пользователя = 8 (Super Administrators), то выводим линк. Если надо давать доступ нескольким группам, то надо модифицировать условие в последней строке. Специально сделал код понятным с несколькими дополнительными переменными и комментами, так как все можно вместить в пару строку Код проверил, рабочий.
при такой замене кода .. как я понимаю права наследует от joomla?
#6
Отправлено 11 July 2012 - 17:50
Да, конечно. В ZOO ведь своего ACL нетпри такой замене кода .. как я понимаю права наследует от joomla?
«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.
#7
Отправлено 12 July 2012 - 07:00
благодарю, за скорый ответ...+ поставил!Да, конечно. В ZOO ведь своего ACL нет
#8
Отправлено 16 August 2012 - 10:01
Задача стоит следующая:
Авторы публикуют со стороны сайта страницы, публикатор - публикует, т.е. проверяет страницу и устанавливает "Опубликовать". Администратор и СуперАдмин видит все публикации от всех авторов. Это все со стороны My Submission в JBZoo
У меня СуперАдмин не видит всех публикаций.
Разбирался детально с кодом. В JBZoo авторы переписали все в свой отдельный код и положили в отдельные папки (очевидно для того, чтобы обновления ZOO не затрунули эти файлы). Вы предлагаете работать в JBZoo, а корректировки вносите в Элементы ZOO? при том этот элемент судя по имени файла никак не относиться к My Submission к JBZoo. Мы же говорим о JBZoo для публикации от My Submission.
Для этой цели есть папки в пути \media\zoo\applications\jbuniversal
Почему-то там оказались и элементы и JOOMLA и даже framework
Посмотрите на этот путь zoo\applications\jbuniversal\templates\catalog\renderer - там тоже отдельно переписаны все элементы.
Авторам хорошо бы выложить краткую инструкцию, что где они разнесли, чтобы можно быстрей ориентироваться.
Вы пишите:
Фактически Вы здесь описываете сам ZOO но не JBZoo. Может с ZOO все это и работает, но тогда Вам не на этот форум, хотя пробовал с ZOO тоже не работает. Здесь обсуждаем работу JBZoo, иначе возникает путаница.В общем идея простая: получаем ID материала ZOO
По поводу, что будет ли это все описанное работать, даже авторы молчат!
Впечатление, что один и тот же человек под двумя именами ставит сам себе ++
Если я не прав, то дайте опровержение. С уважением и пониманием ко всем.
#9
Отправлено 16 August 2012 - 13:35
1. Вам никто не предлагал полного решения, которое никаким боком не затрагивает ядра и является именно расширением функциональности JBZoo. Потому конкретно указано, что это хак.
За 5 минут придумал небольшой хак элемента itemedit
2. JBZoo является приложением для ZOO, использует его таблицы и использует возможности ZOO как фреймворка.
\media\zoo\applications\jbuniversal\elementsДля этой цели есть папки в пути \media\zoo\applications\jbuniversal
В этой папке должны находиться элементы специфичные для приложения JBZoo. Стандартные элементы ZOO, которые являются наследуемыми для JBZoo находятся именно там где и должны быть: \media\zoo\elements и именно потому правка коснулась элемента itemedit ZOO, потому что в JBZoo используется именно элемент фреймворка, а не свой собственный.
Никаких элементов там нет вообще . Вы путаете элементы с шаблонами приложения, в которых эти элементы выводятся.Посмотрите на этот путь zoo\applications\jbuniversal\templates\catalog\renderer - там тоже отдельно переписаны все элементы.
Я привел по моему весьма подробную инструкцию, что и как делать. Тем более, что я никогда бы не опубликовал код, который бы лично не проверил. Я его проверял, код на момент публикации был рабочий. Проверялось на тогдашние актуальные версии: ZOO 2.5.20 + JBZoo 1.3.4Авторам хорошо бы выложить краткую инструкцию, что где они разнесли, чтобы можно быстрей ориентироваться.
Я описываю ZOO, так как он является фреймворком для JBZoo, который использует его базы данных, большое количество функций и прочее. Я открою вам небольшой секрет: я получаю ID материала ZOO именно потому, что в JBZoo нет своих таблиц для хранения материалов. Единственная "родная" таблица, которую создает при инсталляции JBZoo - это таблица поискового индекса, все остальное хранится в таблицах ZOO и XML-файлах.Фактически Вы здесь описываете сам ZOO но не JBZoo. Может с ZOO все это и работает, но тогда Вам не на этот форум, хотя пробовал с ZOO тоже не работает. Здесь обсуждаем работу JBZoo, иначе возникает путаница.
Еще раз повторюсь, код рабочий.По поводу, что будет ли это все описанное работать, даже авторы молчат!
На самом деле у меня тут 38 аккаунтов, и я еще привлекаю рефералов, чтобы ставить себе +Впечатление, что один и тот же человек под двумя именами ставит сам себе ++
Вы не правы. Прежде всего неправы тем, что вы залезли на броневик и начинаете писать свои предположения о том, что и как работает, хотя не совсем хорошо разбираетесь в сути вопроса, обвиняете в том что код не проверялся, хотя он проверялся, еще и кармодрочерство мне припысываете Можно написать проще и без пафоса: у меня не работает то то, помогите сделать.
P.S. У меня, к сожалению, сейчас нет возможности помочь вам с решением, но ближе в вечеру, сделаем, все что вам надо (если вы, конечно, за помощью сюда пришли)
«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.
#10
Отправлено 16 August 2012 - 14:42
http://forum.joomla-...35.html#msg2335
У меня все остановилось и уже сколько пытаюсь тут разобраться, но в чужом коде... много времени потребуется, даже кто и разбирается.
Во всем здесь может разбираться тот кто создавал все это, а остальные конечно нет и я в том числе.
Пожалуйста подскажите, что нужно сделать, чтобы решить эти вопросы.