Как добавить настраиваемую кнопку с настраиваемой функциональностью в курс Activity/Resource

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

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

Есть ли настройка или конфигурация, которые можно выполнить для достижения этой цели, ИЛИ мне нужно написать полноценный плагин?

Если через плагин, то любые шаги в этом направлении будут полезны.


person user7616631    schedule 27.02.2017    source источник


Ответы (2)


Используя поле «Дополнительный HTML» в разделе «Внешний вид» администрирования сайта, вы можете добавить JavaScript, который будет управлять DOM.

Дополнительная HTML-ссылка в администрировании сайта

Целенаправленно использовать все действия и ресурсы, а не другие функции Moodle, довольно сложно, но подход, который я использовал, заключался в найдите идентификатор, уникальный для этой страницы, и используйте JavaScript, чтобы вставить нужную кнопку и функции.

Например, предположим, что вы хотите добавить новую кнопку в действие новостного форума.

В Новостном форуме есть раздел с классом «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
    });
}
person Yvonne Aburrow    schedule 03.03.2017

Я немного поработал с Moodle и почти уверен, что это невозможно. Каждый ресурс и активность хранятся в каталоге /mod на вашем сервере. У каждого из них есть свой файл view.php. Когда действие завершается, запись записывается в таблицу prefix_course_modules_completion.

Почему бы не включить самозаполнение пользователем.

person Sean Marx    schedule 28.02.2017
comment
Спасибо за ваш ответ! Мы знаем о возможности самостоятельного заполнения, но в данном конкретном случае требование состоит в том, чтобы учащиеся намеренно отмечали его завершенным вручную, чтобы убедиться, что они его видели и делают это сами. - person user7616631; 28.02.2017