Mercurial > hg > isophonics-drupal-site
diff core/modules/history/js/history.js @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/history/js/history.js Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,73 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function ($, Drupal, drupalSettings, storage) { + var currentUserID = parseInt(drupalSettings.user.uid, 10); + + var thirtyDaysAgo = Math.round(new Date().getTime() / 1000) - 30 * 24 * 60 * 60; + + var embeddedLastReadTimestamps = false; + if (drupalSettings.history && drupalSettings.history.lastReadTimestamps) { + embeddedLastReadTimestamps = drupalSettings.history.lastReadTimestamps; + } + + Drupal.history = { + fetchTimestamps: function fetchTimestamps(nodeIDs, callback) { + if (embeddedLastReadTimestamps) { + callback(); + return; + } + + $.ajax({ + url: Drupal.url('history/get_node_read_timestamps'), + type: 'POST', + data: { 'node_ids[]': nodeIDs }, + dataType: 'json', + success: function success(results) { + for (var nodeID in results) { + if (results.hasOwnProperty(nodeID)) { + storage.setItem('Drupal.history.' + currentUserID + '.' + nodeID, results[nodeID]); + } + } + callback(); + } + }); + }, + getLastRead: function getLastRead(nodeID) { + if (embeddedLastReadTimestamps && embeddedLastReadTimestamps[nodeID]) { + return parseInt(embeddedLastReadTimestamps[nodeID], 10); + } + return parseInt(storage.getItem('Drupal.history.' + currentUserID + '.' + nodeID) || 0, 10); + }, + markAsRead: function markAsRead(nodeID) { + $.ajax({ + url: Drupal.url('history/' + nodeID + '/read'), + type: 'POST', + dataType: 'json', + success: function success(timestamp) { + if (embeddedLastReadTimestamps && embeddedLastReadTimestamps[nodeID]) { + return; + } + + storage.setItem('Drupal.history.' + currentUserID + '.' + nodeID, timestamp); + } + }); + }, + needsServerCheck: function needsServerCheck(nodeID, contentTimestamp) { + if (contentTimestamp < thirtyDaysAgo) { + return false; + } + + if (embeddedLastReadTimestamps && embeddedLastReadTimestamps[nodeID]) { + return contentTimestamp > parseInt(embeddedLastReadTimestamps[nodeID], 10); + } + + var minLastReadTimestamp = parseInt(storage.getItem('Drupal.history.' + currentUserID + '.' + nodeID) || 0, 10); + return contentTimestamp > minLastReadTimestamp; + } + }; +})(jQuery, Drupal, drupalSettings, window.localStorage); \ No newline at end of file