通过 js 在 Moodle 中将编辑器设置为 dirty

Set editor as dirty in Moodle via js

提问人:BoldAdventurer 提问时间:11/7/2023 最后编辑:BoldAdventurer 更新时间:11/20/2023 访问量:29

问:

我正在开发一个高级评分插件,并在评分屏幕上添加了一个按钮,该按钮通过js中的.setHTML更改(atto)编辑器的内容。 但是,之后按下保存按钮不会保存任何更改,因为 moodle 没有检测到编辑器的内容已被更改。 有没有办法在评分屏幕的编辑器上设置脏标志,最好是使用 js? 谢谢。

我的测试环境使用 Moodle 4.1.1+。

var editor = Y.one('#id_assignfeedbackcomments_editor' + 'editable');
editor.setHTML(comment);

编辑:我没有让它与 atto 编辑器一起使用。但是,我现在可以使用 TinyMCE 来做到这一点,并且由于 russel england 指出 atto 将被删除,我会让客户知道 atto 已被剥夺,并暂时将其保留为错误。

我的代码目前如下所示:

try {
    tinyMCE.activeEditor.setContent(comment);
    tinyMCE.activeEditor.setDirty(true);
} catch (error) {
    Y.one('#id_assignfeedbackcomments_editoreditable').setHTML(comment);
}

JavaScript Moodle

评论


答:

1赞 Russell England 11/8/2023 #1

如果使用的是该类,则调用此方法EditorPlugin

this.markUpdated();

https://moodledev.io/docs/apis/plugintypes/atto#yuisrcbutton

另请注意,Moodle 将过滤并删除一些 HTML 内容。也许手动输入html以查看它是否保存。

另外,作为参考,Atto 编辑器可能会在 Moodle 4.6 中被删除

默认编辑器现在是 TinyMCE

开发者文档 : https://moodledev.io/docs/apis/plugintypes/tiny

管理员文档 : https://docs.moodle.org/403/en/TinyMCE_editor

评论

0赞 BoldAdventurer 11/13/2023
谢谢。我希望评论是正确的回应,因为我是新来的。由于在我的设置中,编写编辑器插件不是一种选择,我只是在评分页面添加了一个简单的按钮,它没有连接到编辑器。是否可以在 js 中获取对编辑器类的引用,以便我能够调用 markUpdated() 等函数?setHTML 正确地设置了 atto 编辑器的内容,如果该页面上没有其他更改,则不会保存它。使用 TinyMCE,我还无法找到进入 iframe 的正确方法,但是当 atto 被删除时,我将不得不这样做。