From c8d32c279dc7d74ec67c1c400e173f4ce2e38575 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Tue, 2 Jul 2024 11:32:35 +0100 Subject: [PATCH] MDL-82309 comment: preserve link text property during AJAX requests. We really only need to update the count value that follows the link text content, so do that rather than overwriting the entire thing. --- comment/comment.js | 18 +++++++++--------- comment/lib.php | 3 +-- lang/en/moodle.php | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/comment/comment.js b/comment/comment.js index 806ee9c6425..13ab753fc10 100644 --- a/comment/comment.js +++ b/comment/comment.js @@ -100,9 +100,9 @@ M.core_comment = { var newcomment = Y.Node.create(result.html); container.appendChild(newcomment); var ids = result.ids; - var linkText = Y.one('#comment-link-text-' + cid); - if (linkText) { - linkText.set('innerHTML', M.util.get_string('commentscount', 'moodle', obj.count)); + var linkTextCount = Y.one('#comment-link-text-' + cid + ' .comment-link-count'); + if (linkTextCount) { + linkTextCount.set('innerHTML', obj.count); } for(var i in ids) { var attributes = { @@ -249,9 +249,9 @@ M.core_comment = { scope: scope, params: params, 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)); + var linkTextCount = Y.one('#comment-link-text-' + scope.client_id + ' .comment-link-count'); + if (linkTextCount) { + linkTextCount.set('innerHTML', ret.count); } var container = Y.one('#comment-list-'+scope.client_id); var pagination = Y.one('#comment-pagination-'+scope.client_id); @@ -284,10 +284,10 @@ M.core_comment = { params = {'commentid': id}; function remove_dom(type, anim, cmt) { cmt.remove(); - var linkText = Y.one('#comment-link-text-' + cid), + var linkTextCount = Y.one('#comment-link-text-' + cid + ' .comment-link-count'), comments = Y.all('#comment-list-' + cid + ' li'); - if (linkText && comments) { - linkText.set('innerHTML', M.util.get_string('commentscount', 'moodle', comments.size())); + if (linkTextCount) { + linkTextCount.set('innerHTML', comments.size()); } } this.request({ diff --git a/comment/lib.php b/comment/lib.php index e555f93927c..41c77e87147 100644 --- a/comment/lib.php +++ b/comment/lib.php @@ -263,7 +263,6 @@ class comment { $page->requires->strings_for_js(array( 'addcomment', 'comments', - 'commentscount', 'commentsrequirelogin', 'deletecommentbyon' ), @@ -454,7 +453,7 @@ class comment { // comments open and closed $countstring = ''; if ($this->displaytotalcount) { - $countstring = '('.$this->count().')'; + $countstring = '(' . html_writer::span($this->count(), 'comment-link-count') . ')'; } $collapsedimage= 't/collapsed'; if (right_to_left()) { diff --git a/lang/en/moodle.php b/lang/en/moodle.php index 9a27682c6c3..b97251e5840 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -280,7 +280,6 @@ $string['collapsecategory'] = 'Collapse {$a}'; $string['comebacklater'] = 'Please come back later.'; $string['commentincontext'] = 'Find this comment in context'; $string['comments'] = 'Comments'; -$string['commentscount'] = 'Comments ({$a})'; $string['commentsnotenabled'] = 'Comments feature is not enabled'; $string['commentsrequirelogin'] = 'You need to log in to view the comments.'; $string['comparelanguage'] = 'Compare and edit current language'; @@ -2521,4 +2520,5 @@ $string['coursesearch_help'] = 'You can search for multiple words at once and ca * -word - don\'t include results containing this word.'; // Deprecated since Moodle 4.5. +$string['commentscount'] = 'Comments ({$a})'; $string['datechanged'] = 'Date changed';