diff --git a/comment/comment.js b/comment/comment.js
index 6e30eed05b5..807c19110bc 100644
--- a/comment/comment.js
+++ b/comment/comment.js
@@ -82,7 +82,7 @@ M.core_comment = {
action: 'add',
scope: scope,
params: params,
- callback: function(id, obj, args) {
+ callback: async function(id, obj, args) {
var scope = args.scope;
var cid = scope.client_id;
var ta = Y.one('#dlg-content-'+cid);
@@ -91,7 +91,7 @@ M.core_comment = {
ta.setStyle('backgroundImage', 'none');
scope.toggle_textarea(false);
var container = Y.one('#comment-list-'+cid);
- var result = scope.render([obj], true);
+ var result = await scope.render([obj], true);
var newcomment = Y.Node.create(result.html);
container.appendChild(newcomment);
var ids = result.ids;
@@ -178,7 +178,7 @@ M.core_comment = {
this.wait();
}
},
- render: function(list, newcmt) {
+ render: async function(list, newcmt) {
var ret = {};
ret.ids = [];
var template = Y.one('#cmt-tmpl');
@@ -191,18 +191,9 @@ M.core_comment = {
} else {
val = val.replace('___name___', list[i].fullname);
}
- if (list[i]['delete']||newcmt) {
- var tokens = {
- user: list[i].fullname,
- time: list[i].time
- };
- var deleteStr = Y.Escape.html(M.util.get_string('deletecommentbyon', 'moodle', tokens));
- list[i].content = '
' + list[i].content;
+ if (list[i].delete || newcmt) {
+ list[i].clientid = this.client_id;
+ list[i].content += await this.renderDeleteIcon(list[i]);
}
val = val.replace('___time___', list[i].time);
val = val.replace('___picture___', list[i].avatar);
@@ -214,6 +205,34 @@ M.core_comment = {
ret.html = html;
return ret;
},
+ renderDeleteIcon: async function(list) {
+ return new Promise(function(resolve) {
+ require(['core/templates', 'core/str'], (Templates, Str) => {
+ return Str.get_string('deletecommentbyon', 'moodle', {
+ user: list.fullname,
+ time: list.time
+ }).then(function(deleteStr) {
+ return Templates.renderPix('t/delete', 'core', deleteStr).then(function(deleteIcon) {
+ var deleteDiv = document.createElement('div');
+ deleteDiv.className = 'comment-delete';
+
+ var deleteLink = document.createElement('a');
+ deleteLink.href = '#';
+ deleteLink.role = 'button';
+ deleteLink.title = deleteStr;
+ deleteLink.id = `comment-delete-${list.clientid}-${list.id}`;
+ deleteLink.innerHTML = deleteIcon;
+
+ deleteDiv.appendChild(deleteLink);
+
+ resolve(deleteDiv.outerHTML);
+
+ return true;
+ });
+ });
+ });
+ });
+ },
load: function(page) {
var scope = this;
var container = Y.one('#comment-ctrl-'+this.client_id);
@@ -224,7 +243,7 @@ M.core_comment = {
this.request({
scope: scope,
params: params,
- callback: function(id, ret, args) {
+ callback: async function(id, ret, args) {
var linkText = Y.one('#comment-link-text-' + scope.client_id);
if (ret.count && linkText) {
linkText.set('innerHTML', M.util.get_string('commentscount', 'moodle', ret.count));
@@ -241,7 +260,7 @@ M.core_comment = {
var result = {};
result.html = M.util.get_string('commentsrequirelogin', 'moodle');
} else {
- var result = scope.render(ret.list);
+ var result = await scope.render(ret.list);
}
container.set('innerHTML', result.html);
var img = Y.one('#comment-img-'+scope.client_id);
@@ -332,13 +351,6 @@ M.core_comment = {
}
}, '13,32');
// 13 and 32 are the keycodes for space and enter.
-
- require(['core/templates', 'core/notification'], function(Templates, Notification) {
- var title = node.getAttribute('title');
- Templates.renderPix('t/delete', 'core', title).then(function(html) {
- node.set('innerHTML', html);
- }).catch(Notification.exception);
- });
}
);
},
diff --git a/comment/lib.php b/comment/lib.php
index b1074f31b21..1fa003ec2ad 100644
--- a/comment/lib.php
+++ b/comment/lib.php
@@ -930,7 +930,7 @@ class comment {
$deletelink .= html_writer::start_tag('a', array('href' => '#', 'id' => 'comment-delete-'.$this->cid.'-'.$cmt->id,
'class' => 'icon-no-margin', 'title' => $strdelete));
- $deletelink .= $OUTPUT->pix_icon('t/delete', get_string('delete'));
+ $deletelink .= $OUTPUT->pix_icon('t/delete', $strdelete);
$deletelink .= html_writer::end_tag('a');
$deletelink .= html_writer::end_tag('div');
$cmt->content = $deletelink . $cmt->content;
diff --git a/mod/assign/tests/behat/submission_comments.feature b/mod/assign/tests/behat/submission_comments.feature
index a2e5b78a77e..797e8e0f001 100644
--- a/mod/assign/tests/behat/submission_comments.feature
+++ b/mod/assign/tests/behat/submission_comments.feature
@@ -12,7 +12,7 @@ Feature: In an assignment, students can comment in their submissions
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@example.com |
| student1 | Student | 1 | student1@example.com |
- | student2 | Student | 1 | student2@example.com |
+ | student2 | Student | 2 | student2@example.com |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
@@ -49,13 +49,9 @@ Feature: In an assignment, students can comment in their submissions
Given the following "activities" exist:
| activity | course | name | assignsubmission_onlinetext_enabled |
| assign | C1 | Test assignment name | 1 |
- And I am on the "Test assignment name" Activity page logged in as student1
- And I press "Add submission"
- And I set the following fields to these values:
- | Online text | I'm the student submission |
- And I press "Save changes"
- And I log out
-
+ And the following "mod_assign > submissions" exist:
+ | assign | user | onlinetext |
+ | Test assignment name | student1 | student one submission |
And I am on the "Test assignment name" Activity page logged in as teacher1
And I follow "View all submissions"
And I click on "Grade" "link" in the "Student 1" "table_row"