Возможность указать\изменить автора ICMS2

#1 24 июля 2015 в 13:09
Нужна возможность указывать автора при публикации и изменять при редактировании опред. группам пользователей.

Пишите в личку. Срочно!
#2 25 июля 2015 в 04:59
Плюсую. Очень важная и нужная фича.
#3 25 июля 2015 в 17:08
Метод смены автора в новости?) select?
#4 25 июля 2015 в 18:21
rookee, в файле \release\system\controllers\content\frontend.php перед 684 строкой содержащей
  1. return $form;
вставить это
  1.  
  2.  
  3. if(cmsUser::isInGroups(array(5,6)) || cmsUser::isAdmin()){ // array(5,6) - id групп кому доступно это поле
  4. $fieldset_id = $form->addFieldset( LANG_AUTHOR );
  5. $form->addField($fieldset_id, new fieldList('user_id', array(
  6.  
  7. 'generator' => function () {
  8.  
  9. $users = array(0 => 'Выберите автора');
  10.  
  11. $users_model = cmsCore::getModel('users');
  12.  
  13. $users_model->filterGroups(array(5, 6, 7)); // array(5, 6, 7) - id групп из которых можно выбрать пользователей. Если нужны все пользователи в списке, то удалить эту строку.
  14.  
  15. $users_model->orderBy('nickname');
  16.  
  17. $users_list = $users_model->getUsers();
  18.  
  19. $users = $users + array_collection_to_list($users_list, 'id', 'nickname');
  20.  
  21. return $users;
  22. },
  23. 'rules' => array( array('number') )
  24. )));
  25. }
  26.  
По умолчанию будет выделяться текущий пользователь, если он есть в этом списке.
#5 25 июля 2015 в 19:35
Loadырь, спасибо!
Подскажите, а как сделать вместо списка — поле ввода для id?

И ещё как бы была возможность автоматически менять автора в ленте активности. А то в новости меняешь, а в ленте всё так же…
#6 25 июля 2015 в 20:03

вместо списка — поле ввода для id

Ivan
  1. if(cmsUser::isInGroups(array(5,6)) || cmsUser::isAdmin()){ // array(5,6) - id групп кому доступно это поле
  2. $fieldset_id = $form->addFieldset( LANG_AUTHOR );
  3. $form->addField($fieldset_id, new fieldNumber('user_id', array(
  4.  
  5. 'rules' => array( array('number') )
  6. )));
  7. }

автоматически менять автора в ленте активности

Ivan
Это не просто. Информация для ленты активности при занесении в БД уже содержит данные о пользователе. При изменении пользователя надо в БД найти эту запись, потом вырезать старого пользователя, информацию о котором надо сперва получить, затем на его место вписать нового пользователя.
#7 25 июля 2015 в 20:06
Loadырь, спасибо.
#8 26 июля 2015 в 12:05

По умолчанию будет выделяться текущий пользователь, если он есть в этом списке.

Loadырь
Спасибо огромное! Куда спасибо сказать? )))

А можно поправить — при добавлении автор не сохраняется. а при редактировании всё окей.
#9 26 июля 2015 в 16:57

А можно поправить — при добавлении автор не сохраняется. а при редактировании всё окей.

rookee
Откройте файл \system\controllers\content\model.php строка 1141
  1. $item['user_id'] = $user->id;
заменить на
  1. if(!$item['user_id']){$item['user_id'] = $user->id;}
#10 26 июля 2015 в 19:43


А можно поправить — при добавлении автор не сохраняется. а при редактировании всё окей.

rookee
Откройте файл \system\controllers\content\model.php строка 1141
  1. $item['user_id'] = $user->id;
заменить на
  1. if(!$item['user_id']){$item['user_id'] = $user->id;}

Evanescence

Огромное Спасибо!
#11 27 июля 2015 в 08:54


rookee, в файле \release\system\controllers\content\frontend.php перед 684 строкой содержащей

  1. return $form;
вставить это
  1.  
  2.  
  3. if(cmsUser::isInGroups(array(5,6)) || cmsUser::isAdmin()){ // array(5,6) - id групп кому доступно это поле
  4. $fieldset_id = $form->addFieldset( LANG_AUTHOR );
  5. $form->addField($fieldset_id, new fieldList('user_id', array(
  6.  
  7. 'generator' => function () {
  8.  
  9. $users = array(0 => 'Выберите автора');
  10.  
  11. $users_model = cmsCore::getModel('users');
  12.  
  13. $users_model->filterGroups(array(5, 6, 7)); // array(5, 6, 7) - id групп из которых можно выбрать пользователей. Если нужны все пользователи в списке, то удалить эту строку.
  14.  
  15. $users_model->orderBy('nickname');
  16.  
  17. $users_list = $users_model->getUsers();
  18.  
  19. $users = $users + array_collection_to_list($users_list, 'id', 'nickname');
  20.  
  21. return $users;
  22. },
  23. 'rules' => array( array('number') )
  24. )));
  25. }
  26.  
По умолчанию будет выделяться текущий пользователь, если он есть в этом списке.

Loadырь
cmsUser::isInGroups(array(6,9)) — не работает это условие. показывает только админу. Где копать?
#12 27 июля 2015 в 14:33


rookee, в файле \release\system\controllers\content\frontend.php перед 684 строкой содержащей

  1. return $form;
вставить это
  1.  
  2.  
  3. if(cmsUser::isInGroups(array(5,6)) || cmsUser::isAdmin()){ // array(5,6) - id групп кому доступно это поле
  4. $fieldset_id = $form->addFieldset( LANG_AUTHOR );
  5. $form->addField($fieldset_id, new fieldList('user_id', array(
  6.  
  7. 'generator' => function () {
  8.  
  9. $users = array(0 => 'Выберите автора');
  10.  
  11. $users_model = cmsCore::getModel('users');
  12.  
  13. $users_model->filterGroups(array(5, 6, 7)); // array(5, 6, 7) - id групп из которых можно выбрать пользователей. Если нужны все пользователи в списке, то удалить эту строку.
  14.  
  15. $users_model->orderBy('nickname');
  16.  
  17. $users_list = $users_model->getUsers();
  18.  
  19. $users = $users + array_collection_to_list($users_list, 'id', 'nickname');
  20.  
  21. return $users;
  22. },
  23. 'rules' => array( array('number') )
  24. )));
  25. }
  26.  
По умолчанию будет выделяться текущий пользователь, если он есть в этом списке.

Loadырь

Добавил все выше написанное. Но в поле Автор есть только два значения, это admin и Выберите автора. Выбрал "Выберите автора" и сохранил, в результате просто пропала статья, подскажите как ее вернуть ?
И как сделать так чтобы админ мог назначить автором контента, любого пользователя сайта?
#13 27 июля 2015 в 15:11
так $users_model->filterGroups(array(5, 6, 7)); // array(5, 6, 7) — id групп из которых можно выбрать пользователей. Если нужны все пользователи в списке, то удалить эту строку.

Тут указали id группы?
#14 27 июля 2015 в 15:29


так $users_model->filterGroups(array(5, 6, 7)); // array(5, 6, 7) — id групп из которых можно выбрать пользователей. Если нужны все пользователи в списке, то удалить эту строку.

Тут указали id группы ?

rookee
Спасибо! Там же все написано, для таких какая. Невнимательность мой враг.

А как теперь вернуть пропавшую статью?
#15 27 июля 2015 в 15:31
В общем вот рабочий вариант
Всё работает.

  1.  
  2. if ($user->isInGroups (array(5, 6, 9)) || cmsUser::isAdmin() ) { // array(5,6) - id групп кому доступно это поле
  3. $fieldset_id = $form->addFieldset( LANG_AUTHOR );
  4. $form->addField($fieldset_id, new fieldList('user_id', array(
  5.  
  6. 'generator' => function () {
  7.  
  8. $users = array(0 => 'Выберите автора');
  9. $users_model = cmsCore::getModel('users');
  10. $users_model->filterGroups(array(5, 6, 7)); // array(5, 6, 7) - id групп из которых можно выбрать пользователей. Если нужны все пользователи в списке, то удалить эту строку.
  11. $users_model->orderBy('nickname');
  12. $users_list = $users_model->getUsers();
  13. $users = $users + array_collection_to_list($users_list, 'id', 'nickname');
  14. return $users;
  15. },
  16. 'rules' => array( array('number') )
  17. )));
  18. }
  19.  
  20.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.