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


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

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


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

#11 Станислав

Станислав

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

Ваши пожелания понятны многим и я также разделяю ваше мнение, да и мнение тысяч пользователей ZOO, что ACL (Access Control List) находится в рудиментарном состоянии, однако сделать полнофункциональный ACL, да и еще с использованием пользовательских полей фильтра - это громадный кусок работы, который к тому же тянет на коммерческое приложение.

Я постараюсь вам помочь в плане решения задачи, которую вы поставили в своем посте:

Авторы публикуют со стороны сайта страницы, публикатор - публикует, т.е. проверяет страницу и устанавливает "Опубликовать". Администратор и СуперАдмин видит все публикации от всех авторов. Это все со стороны My Submission в JBZoo

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

P.S. Скажите свою версию ZOO и JBZoo, чтобы я мог потестировать и выложить проверенный код :)

  • 0

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

 


#12 Star

Star

Отправлено 16 August 2012 - 15:28

ZOO 2.6.1 JBZoo 1.3.5
  • 0

#13 viktor.chaliy

viktor.chaliy

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


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

P.S. Скажите свою версию ZOO и JBZoo, чтобы я мог потестировать и выложить проверенный код :)

тоже будем ждать ответа!!!

  • 0

#14 Станислав

Станислав

Отправлено 18 August 2012 - 18:15

Ну вот, решение имеет место быть. Сейчас в упрощенном виде - как сделать чтобы в MySubmissions все выше группы Author имели доступ ко всем материалам, а не только к тем, что сами опубликовали.

Для начала приведу список интересующих нас стандартных групп и их идентификаторов в Joomla:
Author (3)
Editor (4)
Publisher (5)
Manager (6)
Administrator (7)
Super Users (8)

Доработка коснется контроллера: components/com_zoo/controllers/submission.php
По просьбам трудящихся буду детально комментировать код:

Ищем в строке 123 строки (это функция mysubmissions()):
$this->items      = $this->app->table->item->getByUser($this->application->id, $this->user->id, $type, $search, $order, $limitstart, $limit);
$this->pagination = $this->app->pagination->create($this->app->table->item->getItemCountByUser($this->application->id, $this->user->id, $type, $search), $page, $limit, 'page', 'app');
Именно 2 этих строки отвечают за получение списка материалов в MySubmissions.
Первая строка при помощи функции getByUser возвращает список материалов текущего пользователя. Во второй строке формируется разбивка на страницы, согласно общему количеству материалов пользователя, которое вычисляется функцией getItemCountByUser.

Мы же 2 приведенных строки заменим следующим кодом
 // Получаем массив с ID групп, в которые входит текущий пользователь
$groups = $this->user->groups;

// Проверяем, входит ли текущий пользователь в группу выше автора
if (array_search(4, $groups) OR array_search(5, $groups) OR array_search(6, $groups) OR array_search(7, $groups) OR array_search(8, $groups)) {
	// Если входит - выводим полный список всех материалов приложения
	$this->items      = $this->app->table->item->findAll($this->application->id, $published = false, $user = null, $options);
}
else 				
{
	// Если пользователь не входит в административные группы выше "Автора" - выводим список материалов пользователя
	$this->items      = $this->app->table->item->getByUser($this->application->id, $this->user->id, $type, $search, $order, $limitstart, $limit);	
}
			
// Проверяем, входит ли текущий пользователь в группу выше автора
if (array_search(4, $groups) OR array_search(5, $groups) OR array_search(6, $groups) OR array_search(7, $groups) OR array_search(8, $groups)) {				
	// Если входит - передаем в функцию постраничной разбивки количество материалов приложения (соответственно полученному списку)
	$this->pagination = $this->app->pagination->create($this->app->table->item->getApplicationItemCount($this->application->id), $page, $limit, 'page', 'app');	
}
else
{
	// Если пользователь не входит в административные группы выше "Автора" - передаем в функцию постраничной разбивки количество материалов пользователя
	$this->pagination = $this->app->pagination->create($this->app->table->item->getItemCountByUser($this->application->id, $this->user->id, $type, $search), $page, $limit, 'page', 'app');	
}

  • 0

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

 


#15 Vital

Vital

Отправлено 26 August 2012 - 13:49

Всем привет!
Хочу сделать каталог фирм и дать право редактирования владельцу фирмы карточку своей фирмы(или его фирм) с фронта. Регистрация будет джумловая. Как и что допилить для реализации подобного функционала? Еще вопрос на эту тему: допустим вышеописанный владелец фирмы захочет загрузить фотки для галереи  - как ограничить его только своим каталогом для загрузки?
  • 0

#16 Станислав

Станислав

Отправлено 26 August 2012 - 14:03

Всем привет!
Хочу сделать каталог фирм и дать право редактирования владельцу фирмы карточку своей фирмы(или его фирм) с фронта. Регистрация будет джумловая. Как и что допилить для реализации подобного функционала?

Ничего допиливать не надо. Надо, чтобы владелец фирмы сам регистрировал свою карточку через разметку Submissions, после чего карточку можно редактировать в My Submissions по этому типу, а в разметку My Submissions надо добавить элемент ядра Item Edit.

Еще вопрос на эту тему: допустим вышеописанный владелец фирмы захочет загрузить фотки для галереи  - как ограничить его только своим каталогом для загрузки?

К сожалению, никак. Надо разрабатывать специальный элемент для реализации подобного функционала.
  • 1

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

 


#17 Vital

Vital

Отправлено 26 August 2012 - 15:31

Ничего допиливать не надо. Надо, чтобы владелец фирмы сам регистрировал свою карточку через разметку Submissions, после чего карточку можно редактировать в My Submissions по этому типу, а в разметку My Submissions надо добавить элемент ядра Item Edit.

Я не до конца объяснил ситуацию - изначально будет каталог фирм, а владелец фирмы за отдельную дяньгу сможет редактировать и добавлять информацию на своей карточке фирмы.

К сожалению, никак. Надо разрабатывать специальный элемент для реализации подобного функционала.

А если "жестко привязать" его к какому-либо каталогу в папке uploads например по его user_id?
  • 0

#18 Станислав

Станислав

Отправлено 26 August 2012 - 15:56

Во втором случае надо делать хак элементов или писать новый.

А платное добавление информации автором можно реорганизовать, чтобы сделать все стандартными способами.
В типе "Карточка фирмы" в каталоге фирм оставить только название и какой-то уникальный идентификатор, а расширенную информацию вводить в отдельный новый тип, например "Подробная информация о фирме". Примерно так как описано здесь: http://forum.joomla-...12.html#msg2812 , только вам надо связывать всего 2 типа - например, по уникальному идентификатору.

  • 0

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

 


#19 Star

Star

Отправлено 04 September 2012 - 00:33

После установки обновления ZOO до 2.6.4 получаем следующую ошибку. При этом пока использую версию 1.3.5. Я так думаю, что 1.4 никак не должна повлиять на это.
При обновлении в файл components/com_zoo/controllers/submission.php  пришлось заново находить и вставлять.

Warning: array_merge(): Argument #2 is not an array in /administrator/components/com_zoo/tables/item.php on line 253

...далее вывод всех страниц без CSS....

Fatal error: Call to a member function partial() on a non-object in /administrator/components/com_zoo/helpers/comment.php on line 78

Ошибка только при доступе выше Автора. При доступе Автора автор вилит только свои, как и было раньше.
  • 0

#20 tri

tri

Отправлено 12 December 2012 - 07:13

Подскажите как правильно прописать ссылку на редактирование материала из teaser'a?
<?php $edit_link = $this->app->route->submission($this->submission, $item->type, null, $id, 'mysubmissions'); ?> ведет не туда.
Сам понимаю почему неправильно, только в php не бум-бум(
  • 0




Click to return to top of page in style!