如何在MOODLE 2.9中通过tinymce编辑器保存和显示上传的图像

时间:2016-10-12 12:50:40

标签: tinymce moodle

Moodle 中保存并显示tinymce内容。

我有一个在db中保存问题和答案的块。

我为此使用tinymce editor,以便用户可以输入文字和图片。

我的编辑表格是:

.....
$editoroptions = array('maxfiles' => EDITOR_UNLIMITED_FILES, 'noclean'=>true, 'context'=>$context);
        $mform->addElement('editor', 'title_editor', 'Questions', null, $editoroptions);
        $mform->addRule('title_editor', null, 'required', null, 'client');
        $mform->setType('title_editor', PARAM_RAW);
.....

我提交表单并从db

中的tinymce保存数据(文本+图像)
......

if($data = $sample_form->get_data()) {
if ($draftitemid = file_get_submitted_draft_itemid('title_editor')) {
    $data->title_editor['text'] = file_save_draft_area_files($draftitemid, $contextid, 'block_sample', questiontext, array('subdirs' => true, 'maxfiles' => 5),$data->title_editor['text']);
}

//insert to database
$inserRecord = new stdClass();
$inserRecord->suggestion     = $sgid;
$inserRecord->questiontext     = $data->title_editor['text'];
$inserRecord->answertext     = $data->answer['text'];
$insertRes = add_question_desc($inserRecord);
......

在db中保存数据(此处为问题和答案)。问题数据如下:

<p>What color is this?</p>
<p><img src="@@PLUGINFILE@@/sample_image.png" width="309" height="212" alt="green" /></p>

这是完整的保存数据吗?上传的文件保存在哪里。我如何检索/显示上传的文件。

我用:

$qn = file_rewrite_pluginfile_urls($qnDetails[$qnid]->questiontext, "pluginfile.php", $context->id, "block_sample", 'questiontext', $qnid);
echo $qn;

以上代码仅显示文字,图片未显示。

enter image description here

我检查了破碎的图像区域,它是:

<img src="http://localhost/moodle/pluginfile.php/24/block_sample/questiontext/12/mc4.png" width="309" height="212" alt="mc4.png">

1 个答案:

答案 0 :(得分:0)

要在编辑器中操作文件,您必须使用以下方法:

  • 在显示表单之前:file_prepare_standard_editor()
  • 保存表单时:file_postupdate_standard_editor()
  • 显示内容时:file_rewrite_pluginfile_urls()后跟format_text()

您可以在cohort/edit.phpcohort/index.php中找到相关示例。

完成后,您需要实现Moodle核心将调用以获取文件的函数_pluginfile_pluginfile函数是必需的,以便您的插件可以检查用户是否可以访问该文件。您可以在filelib.php file_pluginfile()和各种lib.php <component_name>_pluginfile()中找到默认实施。