Последовательное прохождение курсов

Последовательное прохождение курсов

от Ivan Petukhov -
Количество ответов: 18

Добрый день! 

Пишу Вам с вопросом, о последовательном прохождении курсов. 

Полагаю, что функционал есть, но вот ищу как-то неправильно, что ли...


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

Ровно тоже самое, что и с элементами внутри курса, но уже на уровне курсов.


Подскажите, есть ли такая возможность в Moodle 3.3.2 ? 

В ответ на Ivan Petukhov

Re: Последовательное прохождение курсов

от Alexandre Scherbyna -

Для этого есть такой плагин: Restriction by course completion. Правда про него говорят, что это не идеальное решение. Поэтому нам будет интересно прочитать здесь ваш отзыв о нем.

В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

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

Если я верно понял, Restriction by course completion открывает доступ к модулю или разделу при условии завершения того же самого курса (This availability condition makes it easy to show modules or sections only when a user completed a course.).

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

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

ФАК гласит

Q: Can I make access to a course conditional upon completing another course?

A: Not currently, no. It is not possible to restrict access to course B until a student has completed course A. There are workarounds though such as setting a final page at the end of course A which is only revealed once the student has completed course A. In this page you can include the enrolment key for course B. However - this relies on trusting students not to pass the key onto others.

Вольный перевод:

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

В ответ на Vadim Tabunshchik

Re: Последовательное прохождение курсов

от Alexandre Scherbyna -

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

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

В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

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

Нет, не так. Этот плагин работает только в рамках одного курса А. Ко второму курсу В он не имеет никакого отношения.

В ответ на Vadim Tabunshchik

Re: Последовательное прохождение курсов

от Alexandre Scherbyna -

Жаль. грущу Тогда есть такая идея для наших программистов.

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

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

Вариант 2. Усовершенствуем механизм записи через мета-курсы. Сейчас он позволяет записать в курс А только всех студентов курса В. Нужно добавить к этому возможность записывать не всех, а только тех, кто в курсе В имеет доступ к избранному контингенту.


Может кто-то возьмется реализовать эту идею на практике?

В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Я так понимаю, это должен быть плагин способа записи на курс. Добавляешь в курс способ записи на курс, выбираешь, студенты какого курса должны туда записываться и условие (оценка, состояние completion, и др.), и, соответтсвенно, студенты получают туда доступ. 

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

В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

от Alexandre Scherbyna -

Хочу усовершенствовать собственную идею. Не будем создавать новый элемент курса. Воспользуемся известным элементом Субкурс.

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

Вариант 2. Вносим изменения в существующий метод записи на курс - Мета-связь. Прежде чем импортировать студентов из курса А в курс В дополнительно проверяем: есть ли в курсе А субкурс, связывающий его с курсом В (т.е. импортирующий в журнал оценок курса А итоговую оценку курса В)?

  • Если да, то записываем из курса А в курс В не всех студентов, а только тех, кто удовлетворяет ограничениям доступа, прописанным в этом субкурсе.
  • Иначе, как обычно, записываем из курса А в курс В всех студентов.
В результате весь имеющийся функционал условного доступа к элементам курса мы сможем применить и для условного доступа к самим курсам! Достаточно прописать их в параметрах доступа соответствующих субкурсов.
В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle
Это обсуждалось на форуме партнёров, когда формировали роадмап. Я предложил

добавить в ядро новый тип плагина - enrollment condition и многие за это

проголосовали (голосами служили тысячи долларов уплаченных ранее

партнёрских платежей и фича набрала несколько сотен). Были и альтернативные

предложения с той же целью. Ксожалению, позже Фонд объявил, что принял к

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

берет.



Пока все выкручиваются, как могут. Мы сделали плагин, который генерирует

одноразовый купон (код подписки) на нужный курс при соблюдении условий

внутри исходного курса. Сейчас спроектировано и ждёт оплаты от клиента

другая схема - принудительная подписка/отписка/переподписка с обновлением

оценок и попыток тестов при выполнении условий. Это позволит

автоматизировать такие процессы, как аттестация, переаттестации, пересдача

теста, прохождение траектории.



Фонд же придерживается мнения, что эти схемы не нужны внутри Moodle, что

этой логикой должно управлять внешнее ПО - любой из Электронных Деканатов,

либо портал продажи курсов, либо система управления персоналом (HRM),

поэтому они и не торопятся добавлять в базу ни внятной витрины курсов, ни

механик автоматического управления траекториями.



3 дек. 2017 г. 12:01 PM пользователь "Alexandre Scherbyna (отправлено через
В ответ на Alex Djachenko

Re: Последовательное прохождение курсов

от Vladimir Zuev -

Задачу можно было бы запросто решить используя плагин Badge Enrolment

Но, к сожалению, он есть только для версии 2.9.

В ответ на Vladimir Zuev

Re: Последовательное прохождение курсов

от Alexandre Scherbyna -

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

В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle
Существующие средства для доступа к элементам напрямую не применяются к

подписке на курсы, поскольку рассчитаны на работу внутри среды курса, где

пользователь уже имеет подписку. Поэтому выхода только три: либо создавать

плагин, который "исполнит команду" когда сработает условие внутри курса

(что мы и планируем сделать), либо записать значение в профиль, которое

сможет отслеживать модуль AutoEnroll (тоже в планах), либо добавить в ядро

новый тип плагина, специально для этой цели, что затруднительно без

поддержки со стороны Фонда.



3 дек. 2017 г. 6:18 PM пользователь "Alexandre Scherbyna (отправлено через
В ответ на Vladimir Zuev

Re: Последовательное прохождение курсов

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle
Мне не очень нравится идея использования бейджей в качестве флагов состояния, для настройки логики, хотя раньше это был единственный способ передачи сигналов между курсами. 
Мне больше нравится напрямую выполнить операцию зачисления, либо писать флаги в дополнительные поля профиля (они могут быть и скрытыми), а потом настраивать либо модуль автоподписки по полям профиля, либо условия, читающие эти поля из другого курса.

3 дек. 2017 г. 4:22 PM пользователь "Vladimir Zuev (отправлено через moodle.org)" <noreply@moodle.org> написал:

Russian Moodle -> Форумы -> Общий форум ->
Последовательное прохождение курсов
https://moodle.org/mod/forum/discuss.php?d=362424#p1461599
Re: Последовательное прохождение курсов
от Vladimir Zuev - Воскресенье, 3 Декабрь 2017, 15:51
---------------------------------------------------------------------
Задачу можно было бы запросто решить
используя плагин Badge Enrolment [1]

Но, к сожалению, он есть только для версии
2.9.


Links:
------
[1] https://moodle.org/plugins/pluginversions.php?plugin=enrol_badgeenrol



---------------------------------------------------------------------
Это копия сообщения, опубликованного в
курсе  «Russian Moodle».

Чтобы ответить на него, щелкните по этой
ссылке: https://moodle.org/mod/forum/post.php?reply=1461599
Отписаться от этого форума:
https://moodle.org/mod/forum/subscribe.php?id=183
Отписаться от этого обсуждения:
https://moodle.org/mod/forum/subscribe.php?id=183&d=362424
Изменить Ваши настройки дайджеста форума:
https://moodle.org/mod/forum/index.php?id=25

Вы можете дать ответ по электронной почте


В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Alexandre Scherbyna, Ваши идеи неплохи с точки зрения поиска коротких путей решения, но, к несчастью, они не жизненны.

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

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

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

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

В ответ на Vadim Dvorovenko

Re: Последовательное прохождение курсов

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

В общем, как мне видится схема должна быть примерно такой. 

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

Также нужно разработать плагин условного доступа по завершению другого курса, основываясь на плагине https://moodle.org/plugins/availability_coursecompleted

Плагины эти непростые. Мало сделать php-часть, так там нужно ещё кучу javascript-а написать, на непонятном этом YUI.

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

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


А пока - вот вам промежуточное решение без каких-либо дополнительных плагинов. Пусть нужно доступ к курсу Б разрешить только после курса А. Делаете для курса Б самозапись без ограничений. Добавляете в 0 секцию курса Б скрытый Субкурс со ссылкой на Курс А. Последняя версия модуля Субкурс позволяет забирать из исходного курса не только оценку, но и состояние завершения курса. На каждую из секций курса Б настраиваете условный доступ либо по завершению Субкурса из секции 0, либо по определенной оценке. В результате получается, что зайти в курс может любой, но вот увидеть в нём что-либо сможет только по завершению предыдущего курса.

Можно к этому ещё попробовать добавить формат курса https://moodle.org/plugins/format_flexsections, создать одну главную секцию, навешать на неё условие, чтобы не делать это много раз, а уже внутрь поместить остальные защищаемые секции. Не уверен, что сработает, но попробовать стоит.

В ответ на Vadim Dvorovenko

Re: Последовательное прохождение курсов

от Alexandre Scherbyna -

А я считаю, что можно и нужно делать такие изменения в enrol_meta. Кто сказал, что ядро Moodle улучшать запрещается?

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

Ясное дело, что разработчикам Moodle HQ это надо объяснять. Дело это нелегкое, но, судя по этому обсуждению, - реальное. Тем более, если иметь новую рабочую версию enrol_meta и содействие русскоязычной Marina Glancy. Возможность использования уже существующего в Moodle инструментария для условного доступа к курсам того стоит.

В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Вот это обсуждение и убеждает меня в обратном. Открытый там в 2.8 тикет MDL-49690 по прежнему открыт. Из личного опыта, разработчикам ядра очень трудно доказывать необходимость даже незначительных изменений. Потому что там, где мы думаем только о себе, они думают о том, как это может отразиться на тысячах систем, от очень маленьких до очень больших, о специфике которых мы даже не задумывается.

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

В ответ на Vadim Dvorovenko

Re: Последовательное прохождение курсов

от Alexandre Scherbyna -

Хорошо. Тогда лучше на основе стандартного enrol_meta создать новый плагин enrol_meta_conditional.

В ответ на Alexandre Scherbyna

Re: Последовательное прохождение курсов

от Vladimir Zuev -

Пока решения нет, я всё же решил попробовать плагин Badge Enrolment

На Moodle 3.2.1+ плагин установился нормально. Создал в системе значок критерием получения которого является условие завершения курса А с минимальной оценкой 80.00. Для курса В установил способ записи Badge Enrolment - условие: наличие этого самого значка. Всё сработало нормально.

Для автора данного топика (первый пост) вполне приемлемое и простое решение...