Перейти к содержимому


Фотография
- - - - -

Дать исключительные права автору на редактирование материала


  • Закрытая тема Тема закрыта
Сообщений в теме: 25

#1 Amazing

Amazing

Отправлено 10 July 2012 - 18:56

Доброго времени суток.
Пытаюсь настроить редактирование материалов с фронтенда.

В настройках "Submissions" добавил возможность редактирования материалов для группы registered. Добавил в шаблон full отображение ссылки на редактирование материала.
Также настроил меню "My submissions".
Сейчас, если разные пользователи заходят в это меню, каждый видит только свои материалы - это как раз то, что мне надо.
А вот ссылка "редактировать материал" на странице full доступна всем registered пользователям, вне зависимостри от того, кто явлется автором.

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

  • 0

#2 Станислав

Станислав

Отправлено 10 July 2012 - 22:48

За 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), то выводим линк. Если надо давать доступ нескольким группам, то надо модифицировать условие в последней строке. Специально сделал код понятным с несколькими дополнительными переменными и комментами, так как все можно вместить в пару строку ;) Код проверил, рабочий.
  • 2

«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.

 


#3 Amazing

Amazing

Отправлено 11 July 2012 - 10:44

За 5 минут придумал небольшой хак элемента itemedit ...


Спасибо большое :) +1
Все работает.

Радует тот факт, что сообщество принимает активное участие в обсуждении.
И решения уже предлагает не один Денис :)

Станислав,
Если вы не против, я выложу это решение на joomlaforum с пометкой © Станислав.
Так как там разместил аналогичный вопрос, но ответа пока не получил.
  • 0

#4 Станислав

Станислав

Отправлено 11 July 2012 - 10:52

Если вы не против, я выложу это решение на joomlaforum с пометкой © Станислав.
Так как там разместил аналогичный вопрос, но ответа пока не получил.

Да не вопрос :) Можно и без пометки, я не тщеславный  :)
  • 0

«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.

 


#5 viktor.chaliy

viktor.chaliy

Отправлено 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?
  • 0

#6 Станислав

Станислав

Отправлено 11 July 2012 - 17:50

при такой замене кода .. как я понимаю права наследует от joomla?

Да, конечно. В ZOO ведь своего ACL нет
  • 0

«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.

 


#7 viktor.chaliy

viktor.chaliy

Отправлено 12 July 2012 - 07:00

Да, конечно. В ZOO ведь своего ACL нет

благодарю, за скорый ответ...+ поставил!
  • 0

#8 Star

Star

Отправлено 16 August 2012 - 10:01

Все что тут написано у меня не работает. Разбирал не 5 минут, а 5 дней и пока не нашел решение.

Задача стоит следующая:
Авторы публикуют со стороны сайта страницы, публикатор - публикует, т.е. проверяет страницу и устанавливает "Опубликовать". Администратор и СуперАдмин видит все публикации от всех авторов. Это все со стороны 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 - там тоже отдельно переписаны все элементы.

Авторам хорошо бы выложить краткую инструкцию, что где они разнесли, чтобы можно быстрей ориентироваться.


Вы пишите:

В общем идея простая: получаем ID материала ZOO

Фактически Вы здесь описываете сам ZOO но не JBZoo. Может с ZOO все это и работает, но тогда Вам не на этот форум, хотя пробовал с ZOO тоже не работает. Здесь обсуждаем работу JBZoo, иначе возникает путаница.

По поводу, что будет ли это все описанное работать, даже авторы молчат!
Впечатление, что один и тот же человек под двумя именами ставит сам себе ++  >:(

Если я не прав, то дайте опровержение. С уважением и пониманием ко всем.
  • 0

#9 Станислав

Станислав

Отправлено 16 August 2012 - 13:35

Прежде, чем писать возмущенные сообщения, можно было бы просто задать вопрос здесь.

1.  Вам никто не предлагал полного решения, которое никаким боком не затрагивает ядра и является именно расширением функциональности JBZoo. Потому конкретно указано, что это хак.
За 5 минут придумал небольшой хак элемента itemedit

2. JBZoo является приложением для ZOO, использует его таблицы и использует возможности ZOO как фреймворка.

Для этой цели есть папки в пути \media\zoo\applications\jbuniversal

\media\zoo\applications\jbuniversal\elements
В этой папке должны находиться элементы специфичные для приложения 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. Может с ZOO все это и работает, но тогда Вам не на этот форум, хотя пробовал с ZOO тоже не работает. Здесь обсуждаем работу JBZoo, иначе возникает путаница.

Я описываю ZOO, так как он является фреймворком для JBZoo, который использует его базы данных, большое количество функций и прочее. Я открою вам небольшой секрет: я получаю ID материала ZOO именно потому, что в JBZoo нет своих таблиц для хранения материалов. Единственная "родная" таблица, которую создает при инсталляции JBZoo - это таблица поискового индекса, все остальное хранится в таблицах ZOO и XML-файлах.

По поводу, что будет ли это все описанное работать, даже авторы молчат!

Еще раз повторюсь, код рабочий.

Впечатление, что один и тот же человек под двумя именами ставит сам себе ++

На самом деле у меня тут 38 аккаунтов, и я еще привлекаю рефералов, чтобы ставить себе +

Вы не правы. Прежде всего неправы тем, что вы залезли на броневик и начинаете писать свои предположения о том, что и как работает, хотя не совсем хорошо разбираетесь в сути вопроса, обвиняете в том что код не проверялся, хотя он проверялся, еще и кармодрочерство мне припысываете  :) Можно написать проще и без пафоса: у меня не работает то то, помогите сделать.

P.S. У меня, к сожалению, сейчас нет возможности помочь вам с решением, но ближе в вечеру, сделаем, все что вам надо (если вы, конечно, за помощью сюда пришли)
  • 2

«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.

 


#10 Star

Star

Отправлено 16 August 2012 - 14:42

Станислав, я очень извиняюсь перед Вами, но я подобный вопрос здесь задавал, но все промолчали (еще 30.07).
http://forum.joomla-...35.html#msg2335

У меня все остановилось и уже сколько пытаюсь тут разобраться, но в чужом коде... много времени потребуется, даже кто и разбирается.
Во всем здесь может разбираться тот кто создавал все это, а остальные конечно нет и я в том числе.

Пожалуйста подскажите, что нужно сделать, чтобы решить эти вопросы.

  • 0




Click to return to top of page in style!