Дата создания информации: 01.12.2024
Частью чего является?
Исключение неожиданного появления в Moodle 4.5.0 сообщения о возможной потере изменений является частью изменения Moodle 4.5.0.
Как выполняется?
В Moodle 4.5.0 для изменения ответов на вопросы используются формы.
В формах используются функции для отслеживания изменений в ответах на вопросы, чтобы не потерять эти изменения.
Функции для отслеживания изменений в ответах на вопросы представлены в файле lib\form\amd\src\changechecker.js.
Эти функции появились для изменения ответов на вопросы с использованием одной формы.
Позднее эти же функции стали использоваться и для изменения ответов на вопросы с использованием нескольких форм.
Несколько форм могут использоваться, например, для создания курса.
Основная форма – для создания курса. Она представлена в файле course/edit_form.php.

В основной форме есть поле для описания курса. В этом поле можно использовать редактор Atto, в котором есть кнопка для открытия окна для управления файлами.

В этом окне используется ещё одна форма – для управления файлами. Эта форма представлена в файле lib\editor\atto\plugins\managefiles\manage_form.php.

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

Появление этого сообщения является неожиданным, потому что при сохранении курса ожидается, что никакие данные для создания курса не будут потеряны.
Причина неожиданного появления сообщения о возможной потере изменений заключается в том, что функции для отслеживания изменений в основной форме и в форме для управления файлами работают несогласованно: при сохранении курса признак наличия изменений в основной форме сбрасывается, а в форме для управления файлами – нет.
Из-за этого на странице для создания курса остаётся признак наличия изменений и при закрытии (выгрузке) документа (обработке события beforeunload) появляется сообщение о возможной потере изменений.
Указанное поведение наблюдается во всех версиях Moodle, начиная как минимум с версии 3.1.2.
Для исключения неожиданного появления сообщения о возможной потере изменений необходимо обеспечить отслеживание изменений во всех формах, которые используются для изменения ответов на вопросы в Moodle.
Для реализации такого поведения необходимо время, чтобы изменить отслеживание изменений в формах для всех ситуаций, когда изменяются ответы на вопросы с использованием форм.
В качестве временного решения, позволяющего получать меньше неожиданных результатов при изменении ответов на вопросы, предлагается отключение в форме для управления файлами функций для отслеживания изменений.
Для этого необходимо в файле lib\editor\atto\plugins\managefiles\manage_form.php в функции atto_managefiles_manage_form::definition после выполнения функции $mform->setDisableShortforms(true) добавить отключение функций для отслеживания изменений: $mform->disable_form_change_checker().