Как добавить пользовательскую кнопку с пользовательским функционалом в курс Activity/Resource
Используя Moodle 3.1 и будучи довольно новым для разработки Moodle, я хотел бы знать, как добавить настраиваемую кнопку или ссылку внутри каждого занятия / ресурса в курсе, которые выполняли бы ту же работу, что и отметка галочки на странице курса, но изнутри страница отдельной деятельности (или ресурса).
Конечно, хотелось бы сделать это в идеальной модульной манере Moodle, чтобы даже после обновления функциональность не стиралась.
Есть ли настройка или конфигурация, которая может быть выполнена для достижения этого ИЛИ мне нужно написать полноценный плагин?
Если через плагин, то любые шаги в этом направлении будут полезны.
2 ответа
Используя поле "Дополнительный HTML" в разделе "Внешний вид" Администрирования сайта, вы можете добавить JavaScript, который будет управлять DOM.
Это довольно сложный порядок для всех видов деятельности и ресурсов, и никаких других функций Moodle, но я использовал подход, чтобы найти идентификатор, уникальный для этой страницы, и использовать JavaScript для вставки нужной кнопки и функции.,
Например, предположим, что вы хотите добавить новую кнопку в активность Новостного форума.
В News Forum есть раздел с классом "forumaddnew", поэтому я буду использовать его как место для вставки моей новой кнопки.
var YourCustomButton = '<input type="button" id="mybutton" value="New Function Button" class="custom"/>';
/* make sure script only runs if div exists */
if (!document.getElementsByClassName('forumaddnew')[0]) {
/* do nothing */
} else {
var forum = document.getElementsByClassName('forumaddnew')[0];
forum.insertAdjacentHTML('beforebegin', YourCustomButton);
}
/* EVENT LISTENER FOR CUSTOM BUTTON */
if (!document.getElementById('mybutton')) {
/* do nothing */
} else {
document.getElementById("mybutton").addEventListener('click', function () {
alert('custom button clicked');
//stuff you want your custom button to do
});
}
Я немного побывал в Moodle и уверен, что это невозможно. Каждый ресурс и действие хранятся в каталоге /mod на вашем сервере. Каждый из них имеет свой собственный файл view.php. Когда действие завершается, и запись записывается в таблицу prefix_course_modules_completion
Почему бы не включить самостоятельное заполнение пользователем.