如何在课程活动/资源

时间:2017-02-27 12:57:01

标签: javascript php moodle moodle-api

使用Moodle 3.1并且对Moodle开发来说还是一个新手,我想知道如何在课程中的每个活动/资源中添加一个自定义按钮或链接,该课程将与课程视图页面上的标记完成复选​​框相同但是来自个人活动(或资源)页面。

当然,我希望以理想的模块化Moodle方式做到这一点,这样即使在升级之后,功能也不会被删除。

是否可以通过设置或配置来实现此目的,还是需要编写完整的插件?

如果通过插件,则该方向的任何步骤都会有所帮助。

2 个答案:

答案 0 :(得分:0)

我已经在Moodle附近了,我很确定这是不可能的。每个资源和活动都存储在服务器的/ mod目录中。每个都有自己的view.php文件。活动完成后,将条目写入prefix_course_modules_completion表

为什么不让用户自行完成。

答案 1 :(得分:0)

使用“站点管理”的“外观”部分中的“附加HTML”框,您可以添加将操纵DOM的JavaScript。

Additional HTML link in Site Administration

要定位所有活动和资源,而不是其他Moodle功能,这是一个很高的订单,但我使用的方法是find an ID that is unique to that page, and use JavaScript to insert the button and functionality that you want

例如,假设您要在新闻论坛活动中添加新按钮。

新闻论坛中有一个div'forumaddnew',所以我会用它作为插入新按钮的地方。 screenshot of source code

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
    });
}