Написал блок списка когорт пользователя

Написал блок списка когорт пользователя

от Владимир Дмитриев -
Количество ответов: 13

Столкнулся с проблемой выяснения принадлежности пользователя к когорте. 

Не нашел ничего готового в стандартном функционале (если не туда смотрел, ткните улыбаюсь ). Сделал сам

Плагин является блоком, который на страницах пользователей показывает список когорт в которые пользователь записан.

Рядом с именем когорты показывает название категории или System

Создан на базе блока HTML.

Буду рад конструктивной критике.

https://github.com/vodingithub/user_groups



В ответ на Владимир Дмитриев

Re: Написал блок списка когорт пользователя

от Evgeniy Schuetz -

Было, но почему-то не состоит в списке официальных плагинов: https://moodle.org/mod/forum/discuss.php?d=283884

В ответ на Evgeniy Schuetz

Re: Написал блок списка когорт пользователя

от Alexandre Scherbyna -

Спасибо, Евгений, что напомнили про плагин Сергея.

Плагин успешно установился на 3.1, потом я создал в профиле новое поле типа "cohort field", который появился именно в результате установки плагина. Это поле сразу оказалось заполненным названием ранее существующей глобальной группы. Потом я добавил пользователя еще в одну ГГ, которая тоже появилась в профиле студента после обновления странички.

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

В ответ на Alexandre Scherbyna

Re: Написал блок списка когорт пользователя

от Alexandre Scherbyna -

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

В ответ на Alexandre Scherbyna

Re: Написал блок списка когорт пользователя

от Vadim Tabunshchik -
Изображение пользователя Developers

Плагин потому и "не состоит в списке официальных плагинов", что логика его работы не соответствует стандартным полям.

Поэтому же и экспорт невозможен, и в профиле значение не отображается.

В стандартных полях все значения хранятся в таблице mdl_user_info_data, а это поле берет данные напрямую из mdl_cohort, ничего при этом не записывая в mdl_user_info_data. Значит, и экспортировать нечего. Это первое.

Второй баг: если поле сделать обязательным, то пользователь, не записанный ни в одну ГГ (а это, кстати, может быть и администратор, и управляющий), всё время выбрасывается системой на страницу редактирования своего профиля, где, как уже известно, "редактировать его нельзя". Приходится в БД снимать атрибут обязательного поля.

Третье: если заполнить значение по умолчанию для этого поля (например, вписать "Нет группы"), то у всех пользователей будет выводиться это значение, а не реальная ГГ.

 

В ответ на Vadim Tabunshchik

Re: Написал блок списка когорт пользователя

от Alexandre Scherbyna -
> а это поле берет данные напрямую из mdl_cohort, ничего при этом не записывая в mdl_user_info_data. Значит, и экспортировать нечего.

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

Сейчас, чтобы экспортировать оценки каждой академической группы, приходится в журнале оценок фильтровать группу за группой и делать отдельный экспорт для каждой из них. Второе решение - всякий раз, записывая (или удаляя) студента в глобальную группу, копировать ее название в какое-нибудь поле учетной записи, которое затем можно было бы экспортировать. Это, во-первых, неудобно, во-вторых, это сложно отслеживать. Есть риск, что состав ГГ изменится, а это поле останется без изменений. Доработка плагина могла бы решить эту проблему.

В ответ на Evgeniy Schuetz

Re: Написал блок списка когорт пользователя

от Владимир Дмитриев -

Спасибо. Хотя я и зря писал улыбаюсь

В ответ на Владимир Дмитриев

Re: Написал блок списка когорт пользователя

от Alexey Piguzov -

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

Владимир, любая разработка не зря. Это опыт в первую очередь для Вас, новый функционал для пользователей.

В ответ на Alexey Piguzov

Re: Написал блок списка когорт пользователя

от Alexandre Scherbyna -

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

В ответ на Alexandre Scherbyna

Re: Написал блок списка когорт пользователя

от Alexey Piguzov -

Александр, у меня не отображается. Но я плагины еще не устанавливал. Отображаются в профиле только курсы, на которые записан пользователь.

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

В ответ на Alexey Piguzov

Re: Написал блок списка когорт пользователя

от Vadim Tabunshchik -
Изображение пользователя Developers

Алексей, вывод ГГ в профиле уже давно был решен с помощью стандартного поля «Выбор из списка». И это поле отображалось в профиле и его можно экспортировать в журнале оценок. Неудобство в том, что выбрать можно только одну опцию (хотя меня устраивает) и список ГГ нужно заносить в параметры поля вручную.

Но есть плагин profilefield_dynamicmultiselect (Dynamic Multi Select), где можно выбирать несколько опций (мультивыбор) и, самое главное, - написать свой запрос для вывода опций для мультивыбора. Например, список ГГ сайта выводится таким запросом:

select id, name data from {cohort} order by name asc

Остается у каждого пользователя настроить этот параметр, указав ГГ. Думаю, можно это дело как-то ускорить с помощью прямого запроса к БД.

В ответ на Vadim Tabunshchik

Re: Написал блок списка когорт пользователя

от Alexey Piguzov -
Это конечно вариант, но у меня около 300 глобальных групп, список огромный. Да и вручную у каждого пользователя править трудоемкая задача.
А чем же кончилось обсуждение https://moodle.org/mod/forum/discuss.php?d=283884
я так понял Marina Glancy предлагала внести этот функционал в ядро. Разработку  Sergey Gorbatov Но видимо не получилось, что-то грущу
В ответ на Владимир Дмитриев

Re: Написал блок списка когорт пользователя

от Alexandre Scherbyna -

Спасибо, Владимир!

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

Что касается конструктивной критики.

Из version.php я понял, что блок устанавливается на любую версию Moodle старше 3, но у меня на 3.1 он устанавливаться не пожелал, только на 3.2.

Если пользователь ни в какую когорту не записан, то блок выглядит так:

На мой взгляд, лучше было бы, чтобы он был совершенно пустым, без * (System).

Почему вы назвали этот блок USER GROUPS, а не USER COHORTS? Повлиял русский перевод: когорта = глобальная группа? улыбаюсь


В ответ на Alexandre Scherbyna

Re: Написал блок списка когорт пользователя

от Владимир Дмитриев -

Спасибо. 

Писал спонтанно, не особенно задумываясь над версиями и названиями (да и не разбираюсь). Может блок HTML (на котором я основывался) работает только на 3.2. 

Ошибку исправил, теперь показывается 'Not included in cohort'


В версии прописано $plugin->requires  = 2016112900;

У мнея 3.1 не установлен, проверить не могу