如何在课程 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
});
}
使用 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
});
}