Как редактировать файлы на месте, которые были загружены в Moodle?
Я хотел бы улучшить рабочий процесс для отладки загруженных SCO. Как бы то ни было, я должен отредактировать файл в упражнении, перепаковать, загрузить и протестировать. Часто мне просто нужно изменить одну строку кода. Было бы ОЧЕНЬ хорошо иметь возможность редактировать этот файл, эту строку кода на сервере. Пока что все, что я обнаружил, - это то, что Moodle управляет файлами, поэтому кажется непрактичным находить и расшифровывать переименованные файлы после загрузки.
Есть ли способ настроить Moodle так, чтобы он не переименовывал и не перемещал файлы в SCO при извлечении? На самом деле, я открыт для любых предложений о лучшем, быстром рабочем процессе для отладки SCO.
2 ответа
Проблемный фон
Начиная с Moodle 2.0, файлы больше не хранятся на сервере в обычных /this/is/the/path/to/my.file
путь. Вместо этого файлы перефразируются и хранятся в репозиториях (т. Е. Распределяются по всему moodledata
папка как коллекция, казалось бы, случайных данных). Это повышает безопасность и совместимость между операционными системами, но усложняет задачу для людей, которые хотели бы просто загрузить zip-пакет SCORM через FTP. Вот больше информации об обработке файлов в Moodle 2.0
Путь к солютону
Давайте найдем файл, который вы хотите обновить, затем обновите его.
- Запустите phpmyadmin, перейдите в
mdl_files
найти файл по имени вfilename
поле (скажем, этоportrait.jpg
) - Посмотрите на
contenthash
поле, это будет выглядетьabcde1234567890
, Это означает, что ваш файл хранится вmoodledata/filedir/ab/cd/
папка под именемabcde1234567890
, - Переименовать обновленный
portrait.jpg
вabcde1234567890
, загрузить и перезаписать. - Вернитесь к phpmyadmin и обновите
filesize
поле в записи дляportrait.jpg
с размером обновленного файла.
Очевидно, этот процесс может быть автоматизирован. Вам нужно будет написать скрипт, который позволит вам загрузить файл, затем он найдет этот файл в mdl_files, сохранит его в нужную папку и обновит все поля соответствующим образом.
Альтернативная идея
Включить внешний тип пакета (а также включить "Обновление при каждом запуске"). Зайдите в Администрирование сайта / Плагины / Активности / SCORM и установите флажок внизу. Теперь вы сможете запускать пакеты SCORM напрямую с другого сервера, поэтому Moodle не будет связываться с ним. Конечно, вы можете столкнуться с другими (возможно, междоменными) проблемами.
Ответ Сергея очень хороший, с одной оговоркой: в его примере с abcde1234567890
файл хранится в moodledata/filedir/ab/cd/
папка под именем abcde1234567890
, Moodle использует полный contenthash для именования файла.