如何在课程 Activity/Resource 中添加具有自定义功能的自定义按钮

How to add a custom button with custom functionality in course Activity/Resource

使用 Moodle 3.1 并且是 Moodle 开发的新手,我想知道如何在课程中的每个 Activity/Resource 中添加自定义按钮或 link,其作用与标记课程视图页面上的完整复选框,但来自个人 activity(或资源)页面。

当然,我想以理想的模块化 Moodle 方式进行此操作,这样即使在升级后,功能也不会消失。

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

如果通过插件,那么朝这个方向的任何步骤都会有所帮助。

我对 Moodle 有一些了解,我很确定这是不可能的。每个资源和 activity 都存储在您服务器上的 /mod 目录中。其中每一个都有自己的 view.php 文件。 activity 完成后,条目将写入 prefix_course_modules_completion table

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

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

针对 所有 活动和资源,并且没有其他 Moodle 功能,这有点过分,但我使用的方法是

例如,假设您想在新闻论坛上添加一个新按钮 activity。

新闻论坛中有一个 div 和 class '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
    });
}