Chris@0: /** Chris@0: * DO NOT EDIT THIS FILE. Chris@0: * See the following change record for more information, Chris@0: * https://www.drupal.org/node/2815083 Chris@0: * @preserve Chris@0: **/ Chris@0: Chris@0: (function ($, Drupal, drupalSettings) { Chris@0: function hide($placeholder) { Chris@0: return $placeholder.closest('.comment-new-comments').prev().addClass('last').end().hide(); Chris@0: } Chris@0: Chris@0: function remove($placeholder) { Chris@0: hide($placeholder).remove(); Chris@0: } Chris@0: Chris@0: function show($placeholder) { Chris@0: return $placeholder.closest('.comment-new-comments').prev().removeClass('last').end().show(); Chris@0: } Chris@0: Chris@0: function processNodeNewCommentLinks($placeholders) { Chris@0: var $placeholdersToUpdate = {}; Chris@0: var fieldName = 'comment'; Chris@0: var $placeholder = void 0; Chris@0: $placeholders.each(function (index, placeholder) { Chris@0: $placeholder = $(placeholder); Chris@0: var timestamp = parseInt($placeholder.attr('data-history-node-last-comment-timestamp'), 10); Chris@0: fieldName = $placeholder.attr('data-history-node-field-name'); Chris@0: var nodeID = $placeholder.closest('[data-history-node-id]').attr('data-history-node-id'); Chris@0: var lastViewTimestamp = Drupal.history.getLastRead(nodeID); Chris@0: Chris@0: if (timestamp > lastViewTimestamp) { Chris@0: $placeholdersToUpdate[nodeID] = $placeholder; Chris@0: } else { Chris@0: remove($placeholder); Chris@0: } Chris@0: }); Chris@0: Chris@0: var nodeIDs = Object.keys($placeholdersToUpdate); Chris@0: if (nodeIDs.length === 0) { Chris@0: return; Chris@0: } Chris@0: Chris@0: function render(results) { Chris@14: Object.keys(results || {}).forEach(function (nodeID) { Chris@14: if ($placeholdersToUpdate.hasOwnProperty(nodeID)) { Chris@0: $placeholdersToUpdate[nodeID].attr('href', results[nodeID].first_new_comment_link).text(Drupal.formatPlural(results[nodeID].new_comment_count, '1 new comment', '@count new comments')).removeClass('hidden'); Chris@0: show($placeholdersToUpdate[nodeID]); Chris@0: } Chris@14: }); Chris@0: } Chris@0: Chris@0: if (drupalSettings.comment && drupalSettings.comment.newCommentsLinks) { Chris@0: render(drupalSettings.comment.newCommentsLinks.node[fieldName]); Chris@0: } else { Chris@0: $.ajax({ Chris@0: url: Drupal.url('comments/render_new_comments_node_links'), Chris@0: type: 'POST', Chris@0: data: { 'node_ids[]': nodeIDs, field_name: fieldName }, Chris@0: dataType: 'json', Chris@0: success: render Chris@0: }); Chris@0: } Chris@0: } Chris@17: Chris@17: Drupal.behaviors.nodeNewCommentsLink = { Chris@17: attach: function attach(context) { Chris@17: var nodeIDs = []; Chris@17: var $placeholders = $(context).find('[data-history-node-last-comment-timestamp]').once('history').filter(function () { Chris@17: var $placeholder = $(this); Chris@17: var lastCommentTimestamp = parseInt($placeholder.attr('data-history-node-last-comment-timestamp'), 10); Chris@17: var nodeID = $placeholder.closest('[data-history-node-id]').attr('data-history-node-id'); Chris@17: if (Drupal.history.needsServerCheck(nodeID, lastCommentTimestamp)) { Chris@17: nodeIDs.push(nodeID); Chris@17: Chris@17: hide($placeholder); Chris@17: return true; Chris@17: } Chris@17: Chris@17: remove($placeholder); Chris@17: return false; Chris@17: }); Chris@17: Chris@17: if ($placeholders.length === 0) { Chris@17: return; Chris@17: } Chris@17: Chris@17: Drupal.history.fetchTimestamps(nodeIDs, function () { Chris@17: processNodeNewCommentLinks($placeholders); Chris@17: }); Chris@17: } Chris@17: }; Chris@0: })(jQuery, Drupal, drupalSettings);