Как редактировать файлы на месте, которые были загружены в Moodle?

Я хотел бы улучшить рабочий процесс для отладки загруженных SCO. Как бы то ни было, я должен отредактировать файл в упражнении, перепаковать, загрузить и протестировать. Часто мне просто нужно изменить одну строку кода. Было бы ОЧЕНЬ хорошо иметь возможность редактировать этот файл, эту строку кода на сервере. Пока что все, что я обнаружил, - это то, что Moodle управляет файлами, поэтому кажется непрактичным находить и расшифровывать переименованные файлы после загрузки.

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

2 ответа

Проблемный фон

Начиная с Moodle 2.0, файлы больше не хранятся на сервере в обычных /this/is/the/path/to/my.file путь. Вместо этого файлы перефразируются и хранятся в репозиториях (т. Е. Распределяются по всему moodledata папка как коллекция, казалось бы, случайных данных). Это повышает безопасность и совместимость между операционными системами, но усложняет задачу для людей, которые хотели бы просто загрузить zip-пакет SCORM через FTP. Вот больше информации об обработке файлов в Moodle 2.0

Путь к солютону

Давайте найдем файл, который вы хотите обновить, затем обновите его.

  1. Запустите phpmyadmin, перейдите в mdl_files найти файл по имени в filename поле (скажем, это portrait.jpg)
  2. Посмотрите на contenthash поле, это будет выглядеть abcde1234567890, Это означает, что ваш файл хранится в moodledata/filedir/ab/cd/ папка под именем abcde1234567890,
  3. Переименовать обновленный portrait.jpg в abcde1234567890, загрузить и перезаписать.
  4. Вернитесь к phpmyadmin и обновите filesize поле в записи для portrait.jpg с размером обновленного файла.

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

Альтернативная идея

Включить внешний тип пакета (а также включить "Обновление при каждом запуске"). Зайдите в Администрирование сайта / Плагины / Активности / SCORM и установите флажок внизу. Теперь вы сможете запускать пакеты SCORM напрямую с другого сервера, поэтому Moodle не будет связываться с ним. Конечно, вы можете столкнуться с другими (возможно, междоменными) проблемами.

Ответ Сергея очень хороший, с одной оговоркой: в его примере с abcde1234567890 файл хранится в moodledata/filedir/ab/cd/ папка под именем abcde1234567890, Moodle использует полный contenthash для именования файла.

Другие вопросы по тегам