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, window) { Chris@0: function processNodeNewIndicators($placeholders) { Chris@0: var newNodeString = Drupal.t('new'); Chris@0: var updatedNodeString = Drupal.t('updated'); Chris@0: Chris@0: $placeholders.each(function (index, placeholder) { Chris@0: var timestamp = parseInt(placeholder.getAttribute('data-history-node-timestamp'), 10); Chris@0: var nodeID = placeholder.getAttribute('data-history-node-id'); Chris@0: var lastViewTimestamp = Drupal.history.getLastRead(nodeID); Chris@0: Chris@0: if (timestamp > lastViewTimestamp) { Chris@0: var message = lastViewTimestamp === 0 ? newNodeString : updatedNodeString; Chris@0: $(placeholder).append('' + message + ''); Chris@0: } Chris@0: }); Chris@0: } Chris@0: Chris@0: function processNewRepliesIndicators($placeholders) { Chris@0: var placeholdersToUpdate = {}; Chris@0: $placeholders.each(function (index, placeholder) { Chris@0: var timestamp = parseInt(placeholder.getAttribute('data-history-node-last-comment-timestamp'), 10); Chris@0: var nodeID = placeholder.previousSibling.previousSibling.getAttribute('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: } Chris@0: }); Chris@0: Chris@0: var nodeIDs = Object.keys(placeholdersToUpdate); Chris@0: if (nodeIDs.length === 0) { Chris@0: return; Chris@0: } Chris@0: $.ajax({ Chris@0: url: Drupal.url('comments/render_new_comments_node_links'), Chris@0: type: 'POST', Chris@0: data: { 'node_ids[]': nodeIDs }, Chris@0: dataType: 'json', Chris@0: success: function success(results) { Chris@14: Object.keys(results || {}).forEach(function (nodeID) { Chris@14: if (placeholdersToUpdate.hasOwnProperty(nodeID)) { Chris@0: var url = results[nodeID].first_new_comment_link; Chris@0: var text = Drupal.formatPlural(results[nodeID].new_comment_count, '1 new', '@count new'); Chris@0: $(placeholdersToUpdate[nodeID]).append('
' + text + ''); Chris@0: } Chris@14: }); Chris@0: } Chris@0: }); Chris@0: } Chris@17: Chris@17: Drupal.behaviors.trackerHistory = { Chris@17: attach: function attach(context) { Chris@17: var nodeIDs = []; Chris@17: var $nodeNewPlaceholders = $(context).find('[data-history-node-timestamp]').once('history').filter(function () { Chris@17: var nodeTimestamp = parseInt(this.getAttribute('data-history-node-timestamp'), 10); Chris@17: var nodeID = this.getAttribute('data-history-node-id'); Chris@17: if (Drupal.history.needsServerCheck(nodeID, nodeTimestamp)) { Chris@17: nodeIDs.push(nodeID); Chris@17: return true; Chris@17: } Chris@17: Chris@17: return false; Chris@17: }); Chris@17: Chris@17: var $newRepliesPlaceholders = $(context).find('[data-history-node-last-comment-timestamp]').once('history').filter(function () { Chris@17: var lastCommentTimestamp = parseInt(this.getAttribute('data-history-node-last-comment-timestamp'), 10); Chris@17: var nodeTimestamp = parseInt(this.previousSibling.previousSibling.getAttribute('data-history-node-timestamp'), 10); Chris@17: Chris@17: if (lastCommentTimestamp === nodeTimestamp) { Chris@17: return false; Chris@17: } Chris@17: var nodeID = this.previousSibling.previousSibling.getAttribute('data-history-node-id'); Chris@17: if (Drupal.history.needsServerCheck(nodeID, lastCommentTimestamp)) { Chris@17: if (nodeIDs.indexOf(nodeID) === -1) { Chris@17: nodeIDs.push(nodeID); Chris@17: } Chris@17: return true; Chris@17: } Chris@17: Chris@17: return false; Chris@17: }); Chris@17: Chris@17: if ($nodeNewPlaceholders.length === 0 && $newRepliesPlaceholders.length === 0) { Chris@17: return; Chris@17: } Chris@17: Chris@17: Drupal.history.fetchTimestamps(nodeIDs, function () { Chris@17: processNodeNewIndicators($nodeNewPlaceholders); Chris@17: processNewRepliesIndicators($newRepliesPlaceholders); Chris@17: }); Chris@17: } Chris@17: }; Chris@0: })(jQuery, Drupal, window);