Возможность изменения группы пользователем

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 27 января 2015 в 17:04
Как сделать так, чтобы пользователи могли менять свою группу.
Например: "Художник" меняет свою группу на "Музыкант".
Спасибо.
#2 27 января 2015 в 18:01
Пока никак. Только админ это сделать может. Возможно в будущем будет такая возможность. Для меня это тоже больной вопрос.
#3 27 января 2015 в 18:19
если очень нужно, обращайтесь в личку
#4 27 января 2015 в 18:23
для какой ветки? если для первой — то было уже решение на форуме, и вроде бы как обсуждалось и не раз.
#5 28 января 2015 в 14:18
Для версии 2.хх
#6 13 марта 2015 в 02:01
C помощью Биллинга это легко реализовать
#7 1 января 2016 в 14:43
В файл /system/controllers/users/actions/profile_edit.php я добавил

  1.  
  2. //
  3. // Добавляем поле выбора группы,
  4. // при наличии публичных групп
  5. //
  6. $public_groups = $users_model->getPublicGroups();
  7.  
  8. if ($public_groups) {
  9.  
  10. $pb_items = array();
  11. foreach($public_groups as $pb) { $pb_items[ $pb['id'] ] = $pb['title']; }
  12.  
  13. $form->addFieldToBeginning('basic',
  14. new fieldList('group_id', array(
  15. 'title' => LANG_USER_GROUP,
  16. 'items' => $pb_items
  17. )
  18. )
  19. );
  20.  
  21. }
  22.  
Выдает ошибку Fatal error: Call to a member function getPublicGroups() on a non-object in /сайт.ru/system/controllers/users/actions/profile_edit.php on line 24

Понятно что нет такой функции, а вот где и что еще прописать не знаю. Подскажите плиз
#8 2 января 2016 в 15:40

Выдает ошибку Fatal error: Call to a member function getPublicGroups() on a non-object in /сайт.ru/system/controllers/users/actions/profile_edit.php on line 24

Azami
а $users_model вы получали ранее?
как то так:
  1. $users_model = cmsCore::getModel('users');
#9 2 января 2016 в 16:31
Val,
в /system/controllers/users/actions/profile_edit.php добавил

  1. // Добавляем поле выбора группы,
  2. // при наличии публичных групп
  3. //
  4.  
  5. $users_model = cmsCore::getModel('users');
  6. $public_groups = $users_model->getPublicGroups();
  7.  
  8. if ($public_groups) {
  9.  
  10. $pb_items = array();
  11. foreach($public_groups as $pb) { $pb_items[ $pb['id'] ] = $pb['title']; }
  12.  
  13. $form->addFieldToBeginning('basic',
  14. new fieldList('group_id', array(
  15. 'title' => LANG_USER_GROUP,
  16. 'items' => $pb_items
  17. )
  18. )
  19. );
  20.  
  21. }
в /templates/default/controllers/users/profile_edit.tpl.php добавил
  1. <script>
  2.  
  3. function toggleGroups(){
  4.  
  5. if ($('select#group_id').length == 0){ return false; }
  6.  
  7. var group_id = $('select#group_id').val();
  8.  
  9. $('.groups-limit').hide();
  10.  
  11. $('.group-' + group_id).show();
  12.  
  13. $('fieldset').each(function(){
  14.  
  15. if ($('.field:visible', $(this)).length==0) {
  16. $(this).hide();
  17. }
  18.  
  19. if ($('.group-' + group_id, $(this)).length>0) {
  20. $(this).show();
  21. }
  22.  
  23. });
  24.  
  25. }
  26.  
  27. $(document).ready(function(){
  28.  
  29. if ($('select#group_id').length == 0){ return false; }
  30.  
  31. $('select#group_id').change(function(){ toggleGroups(); });
  32.  
  33. });
  34.  
  35. toggleGroups();
  36.  
  37. </script>
Fatal error: Unsupported operand types in system/core/form.php on line 187
#10 2 января 2016 в 18:36

Fatal error: Unsupported operand types in system/core/form.php on line 187

Azami
1. эту ошибку что вызывает (какая строка)?
2. просто добавить поле с выбором группы скорее всего будет недостаточно)), нужно еще обработчик изменения группы писать. А это еще дополнительные хаки.
может проще по заявкам пользователей админу через панель управления менять пока и ждать когда функционал допилят?)))
#11 2 января 2016 в 19:39


Fatal error: Unsupported operand types in system/core/form.php on line 187

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

Val

ошибку вызывает строка
  1. $this->structure[ $fieldset_id ]['childs'] = array($field->name => $field) + $this->structure[ $fieldset_id ]['childs'];
Обработчик сам не явно не напишу. Могу бартером что-нибудь сверстать. В этом я плаваю. Кодить не умею.
Через админ панель не удобно. Времени много уходит от заявки до исполнения.
У меня зависимость вывода информации от типа пользователей.
#12 3 января 2016 в 03:43

1. эту ошибку что вызывает (какая строка)?

Val
Azami, я другое имел ввиду))) Ладно… Вот:

меняете ваш код в ../system/controllers/users/actions/profile_edit.php на следующий (62-63 строка)

  1. $users_model = cmsCore::getModel('users');
  2. $public_groups = $users_model->getGroups();
  3. if ($public_groups) {
  4.  
  5. $pb_items = array();
  6. foreach($public_groups as $pb) { $pb_items[ $pb['id'] ] = $pb['title']; }
  7.  
  8. $fieldset_id = $form->addFieldset( LANG_USER_GROUP );
  9. $form->addFieldToBeginning($fieldset_id,
  10. new fieldList('groups', array(
  11. 'items' => $pb_items
  12. )
  13. )
  14. );
  15. }
и добавляете чуть ниже вот это (97-98 строка)
  1. if (!$errors && !empty($new['groups'])){
  2. $profile['groups'] = array($new['groups']);
  3. }
#13 3 января 2016 в 10:23
Val, Замечательно работает.

Но

В списке показываются группы, вступление в которые недоступно. А так же группа "Новые"
#14 3 января 2016 в 14:46
Знамените на $public_groups = $users_model->getPublicGroups(); Возможно то что вам нужно.
У себя тестировал ставил getGroups(), и забыл исправить)) Надо ночами меньше сидеть…
#15 3 января 2016 в 16:45
Val, Замечательный вы человек! Спасибо.
Нашел одну неприятную вещь. В списке не сохраняется текущая группа. Т.е., верояно, будучи в группе "музыкант", пользователь, обновив основную информацию и снова не указав группу автоматом сохраняет группу "пользователь"
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.