提问人:BoldAdventurer 提问时间:11/7/2023 最后编辑:BoldAdventurer 更新时间:11/20/2023 访问量:29
通过 js 在 Moodle 中将编辑器设置为 dirty
Set editor as dirty in Moodle via js
问:
我正在开发一个高级评分插件,并在评分屏幕上添加了一个按钮,该按钮通过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);
}
答:
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 被删除时,我将不得不这样做。
评论