From f147248f5c5c27096524fa08a0082f5a77c5f093 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 92ce5961709..b7755cdb95a 100644 --- a/mod/assign/externallib.php +++ b/mod/assign/externallib.php @@ -650,6 +650,14 @@ class mod_assign_external extends external_api { '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 ca1e96e4ffc..bb28b5f141d 100644 --- a/mod/assign/tests/externallib_test.php +++ b/mod/assign/tests/externallib_test.php @@ -1800,7 +1800,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $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(); @@ -1840,6 +1840,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $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. @@ -1876,7 +1877,14 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { 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']); } @@ -1947,6 +1955,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $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. @@ -2018,7 +2027,14 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { 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']); }