From 38b1f8fd9948411c89033af952e9cf20a240edc5 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 27 Jul 2016 12:23:44 +0200 Subject: [PATCH] MDL-55225 assign: Format assignment submission text in WS --- mod/assign/externallib.php | 8 ++++++++ mod/assign/tests/externallib_test.php | 22 +++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php index 910d7b5172b40..84040eefa5457 100644 --- a/mod/assign/externallib.php +++ b/mod/assign/externallib.php @@ -657,6 +657,14 @@ private static function get_plugins_data($assign, $assignplugins, $item) { 'text' => $assignplugin->get_editor_text($name, $item->id), 'format' => $assignplugin->get_editor_format($name, $item->id) ); + + // Now format the text. + foreach ($fileareas as $filearea => $name) { + list($editorfieldinfo['text'], $editorfieldinfo['format']) = external_format_text( + $editorfieldinfo['text'], $editorfieldinfo['format'], $assign->get_context()->id, + $component, $filearea, $item->id); + } + $plugin['editorfields'][] = $editorfieldinfo; } $plugins[] = $plugin; diff --git a/mod/assign/tests/externallib_test.php b/mod/assign/tests/externallib_test.php index 4f8e7ea8c397b..418ea501b9d6b 100644 --- a/mod/assign/tests/externallib_test.php +++ b/mod/assign/tests/externallib_test.php @@ -1805,7 +1805,7 @@ private function create_submission_for_testing_status($submitforgrading = false) $data = new stdClass(); $data->onlinetext_editor = array('itemid' => file_get_unused_draft_itemid(), - 'text' => 'Submission text', + 'text' => 'Submission text with a link', 'format' => FORMAT_MOODLE); $draftidfile = file_get_unused_draft_itemid(); @@ -1845,6 +1845,7 @@ public function test_get_submission_status_in_draft_status() { $this->resetAfterTest(true); list($assign, $instance, $student1, $student2, $teacher) = $this->create_submission_for_testing_status(); + $studentsubmission = $assign->get_user_submission($student1->id, true); $result = mod_assign_external::get_submission_status($assign->get_instance()->id); // We expect debugging because of the $PAGE object, this won't happen in a normal WS request. @@ -1881,7 +1882,14 @@ public function test_get_submission_status_in_draft_status() { foreach ($result['lastattempt']['submission']['plugins'] as $plugin) { $submissionplugins[$plugin['type']] = $plugin; } - $this->assertEquals('Submission text', $submissionplugins['onlinetext']['editorfields'][0]['text']); + + // Format expected online text. + $onlinetext = 'Submission text with a link'; + list($expectedtext, $expectedformat) = external_format_text($onlinetext, FORMAT_HTML, $assign->get_context()->id, + 'assignsubmission_onlinetext', ASSIGNSUBMISSION_ONLINETEXT_FILEAREA, $studentsubmission->id); + + $this->assertEquals($expectedtext, $submissionplugins['onlinetext']['editorfields'][0]['text']); + $this->assertEquals($expectedformat, $submissionplugins['onlinetext']['editorfields'][0]['format']); $this->assertEquals('/t.txt', $submissionplugins['file']['fileareas'][0]['files'][0]['filepath']); } @@ -1952,6 +1960,7 @@ public function test_get_submission_status_in_reopened_status() { $this->resetAfterTest(true); list($assign, $instance, $student1, $student2, $teacher) = $this->create_submission_for_testing_status(true); + $studentsubmission = $assign->get_user_submission($student1->id, true); $this->setUser($teacher); // Grade and reopen. @@ -2023,7 +2032,14 @@ public function test_get_submission_status_in_reopened_status() { foreach ($result['previousattempts'][0]['submission']['plugins'] as $plugin) { $submissionplugins[$plugin['type']] = $plugin; } - $this->assertEquals('Submission text', $submissionplugins['onlinetext']['editorfields'][0]['text']); + + // Format expected online text. + $onlinetext = 'Submission text with a link'; + list($expectedtext, $expectedformat) = external_format_text($onlinetext, FORMAT_HTML, $assign->get_context()->id, + 'assignsubmission_onlinetext', ASSIGNSUBMISSION_ONLINETEXT_FILEAREA, $studentsubmission->id); + + $this->assertEquals($expectedtext, $submissionplugins['onlinetext']['editorfields'][0]['text']); + $this->assertEquals($expectedformat, $submissionplugins['onlinetext']['editorfields'][0]['format']); $this->assertEquals('/t.txt', $submissionplugins['file']['fileareas'][0]['files'][0]['filepath']); }