Skip to content

Commit

Permalink
MDL-55225 assign: Format assignment submission text in WS
Browse files Browse the repository at this point in the history
  • Loading branch information
dpalou committed Jul 27, 2016
1 parent 90a8bdb commit 38b1f8f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
8 changes: 8 additions & 0 deletions mod/assign/externallib.php
Expand Up @@ -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;
Expand Down
22 changes: 19 additions & 3 deletions mod/assign/tests/externallib_test.php
Expand Up @@ -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 <a href="@@PLUGINFILE@@/intro.txt">link</a>',
'format' => FORMAT_MOODLE);

$draftidfile = file_get_unused_draft_itemid();
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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 <a href="@@PLUGINFILE@@/intro.txt">link</a>';
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']);
}

Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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 <a href="@@PLUGINFILE@@/intro.txt">link</a>';
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']);
}

Expand Down

0 comments on commit 38b1f8f

Please sign in to comment.