Merge remote-tracking branch 'refs/remotes/origin/master' into develop

v1.18.x
Barış Soner Uşaklı 8 years ago
commit d9e84b1db8

@ -1,7 +1,7 @@
'use strict'; 'use strict';
define('forum/notifications', ['components', 'notifications'], function (components, notifs) { define('forum/notifications', ['components'], function (components) {
var Notifications = {}; var Notifications = {};
Notifications.init = function () { Notifications.init = function () {
@ -12,14 +12,6 @@ define('forum/notifications', ['components', 'notifications'], function (compone
if (err) { if (err) {
return app.alertError(err); return app.alertError(err);
} }
socket.emit('notifications.getCount', function (err, count) {
if (err) {
return app.alertError(err.message);
}
notifs.updateNotifCount(count);
});
}); });
}); });
@ -32,7 +24,6 @@ define('forum/notifications', ['components', 'notifications'], function (compone
} }
components.get('notifications/item').removeClass('unread'); components.get('notifications/item').removeClass('unread');
notifs.updateNotifCount(0);
}); });
}); });
}; };

@ -144,11 +144,11 @@ define('forum/topic', [
function handleBookmark(tid) { function handleBookmark(tid) {
// use the user's bookmark data if available, fallback to local if available // use the user's bookmark data if available, fallback to local if available
var bookmark = ajaxify.data.bookmark || storage.getItem('topic:' + tid + ':bookmark'); var bookmark = ajaxify.data.bookmark || storage.getItem('topic:' + tid + ':bookmark');
var postIndex = getPostIndex(); var postIndex = ajaxify.data.postIndex;
if (postIndex && window.location.search.indexOf('page=') === -1) { if (postIndex > 0) {
if (components.get('post/anchor', postIndex).length) { if (components.get('post/anchor', postIndex - 1).length) {
return navigator.scrollToPostIndex(postIndex, true, 0); return navigator.scrollToPostIndex(postIndex - 1, true, 0);
} }
} else if (bookmark && (!config.usePagination || (config.usePagination && ajaxify.data.pagination.currentPage === 1)) && ajaxify.data.postcount > ajaxify.data.bookmarkThreshold) { } else if (bookmark && (!config.usePagination || (config.usePagination && ajaxify.data.pagination.currentPage === 1)) && ajaxify.data.postcount > ajaxify.data.bookmarkThreshold) {
app.alert({ app.alert({
@ -169,22 +169,6 @@ define('forum/topic', [
} }
} }
function getPostIndex() {
var parts = window.location.pathname.split('/');
var lastPart = parts[parts.length - 1];
if (lastPart && utils.isNumber(lastPart)) {
lastPart = Math.max(0, parseInt(lastPart, 10) - 1);
} else {
return 0;
}
if (lastPart > 0 && !components.get('post/anchor', lastPart).length) {
return components.get('post/anchor').last().attr('name');
}
return lastPart;
}
function addBlockQuoteHandler() { function addBlockQuoteHandler() {
components.get('topic').on('click', 'blockquote .toggle', function () { components.get('topic').on('click', 'blockquote .toggle', function () {
var blockQuote = $(this).parent('blockquote'); var blockQuote = $(this).parent('blockquote');

@ -76,7 +76,7 @@ define('navigator', ['forum/pagination', 'components'], function (pagination, co
index = 1; index = 1;
navigator.callback = null; navigator.callback = null;
navigator.selector = null; navigator.selector = null;
$(window).off('scroll', navigator.update); $(window).off('scroll', navigator.delayedUpdate);
toggle(false); toggle(false);
}; };

@ -10,29 +10,27 @@ define('notifications', ['sounds', 'translator', 'components'], function (sounds
var notifContainer = components.get('notifications'); var notifContainer = components.get('notifications');
var notifTrigger = notifContainer.children('a'); var notifTrigger = notifContainer.children('a');
var notifList = components.get('notifications/list'); var notifList = components.get('notifications/list');
var notifIcon = components.get('notifications/icon');
notifTrigger notifTrigger.on('click', function (e) {
.on('click', function (e) { e.preventDefault();
e.preventDefault(); if (notifContainer.hasClass('open')) {
if (notifContainer.hasClass('open')) { return;
return; }
}
Notifications.loadNotifications(notifList); Notifications.loadNotifications(notifList);
}); });
notifList.on('click', '[data-nid]', function () { notifList.on('click', '[data-nid]', function () {
var unread = $(this).hasClass('unread'); var unread = $(this).hasClass('unread');
var nid = $(this).attr('data-nid');
if (!unread) { if (!unread) {
return; return;
} }
var nid = $(this).attr('data-nid');
socket.emit('notifications.markRead', nid, function (err) { socket.emit('notifications.markRead', nid, function (err) {
if (err) { if (err) {
return app.alertError(err.message); return app.alertError(err.message);
} }
incrementNotifCount(-1);
if (unreadNotifs[nid]) { if (unreadNotifs[nid]) {
delete unreadNotifs[nid]; delete unreadNotifs[nid];
} }
@ -52,7 +50,7 @@ define('notifications', ['sounds', 'translator', 'components'], function (sounds
} }
liEl.toggleClass('unread'); liEl.toggleClass('unread');
incrementNotifCount(unread ? -1 : 1);
if (unread && unreadNotifs[nid]) { if (unread && unreadNotifs[nid]) {
delete unreadNotifs[nid]; delete unreadNotifs[nid];
} }
@ -60,11 +58,6 @@ define('notifications', ['sounds', 'translator', 'components'], function (sounds
return false; return false;
}); });
function incrementNotifCount(delta) {
var count = parseInt(notifIcon.attr('data-content'), 10) + delta;
Notifications.updateNotifCount(count);
}
socket.on('event:new_notification', function (notifData) { socket.on('event:new_notification', function (notifData) {
// If a path is defined, show notif data, otherwise show generic data // If a path is defined, show notif data, otherwise show generic data
var payload = { var payload = {
@ -164,7 +157,6 @@ define('notifications', ['sounds', 'translator', 'components'], function (sounds
if (err) { if (err) {
app.alertError(err.message); app.alertError(err.message);
} }
Notifications.updateNotifCount(0);
unreadNotifs = {}; unreadNotifs = {};
}); });
}; };

@ -262,6 +262,7 @@ topicsController.get = function (req, res, callback) {
data.postDeleteDuration = parseInt(meta.config.postDeleteDuration, 10) || 0; data.postDeleteDuration = parseInt(meta.config.postDeleteDuration, 10) || 0;
data.scrollToMyPost = settings.scrollToMyPost; data.scrollToMyPost = settings.scrollToMyPost;
data.rssFeedUrl = nconf.get('relative_path') + '/topic/' + data.tid + '.rss'; data.rssFeedUrl = nconf.get('relative_path') + '/topic/' + data.tid + '.rss';
data.postIndex = req.params.post_index;
data.pagination = pagination.create(currentPage, pageCount, req.query); data.pagination = pagination.create(currentPage, pageCount, req.query);
data.pagination.rel.forEach(function (rel) { data.pagination.rel.forEach(function (rel) {
rel.href = nconf.get('url') + '/topic/' + data.slug + rel.href; rel.href = nconf.get('url') + '/topic/' + data.slug + rel.href;

@ -292,7 +292,9 @@ Notifications.markUnread = function (nid, uid, callback) {
async.apply(db.sortedSetAdd, 'uid:' + uid + ':notifications:unread', notification.datetime, nid), async.apply(db.sortedSetAdd, 'uid:' + uid + ':notifications:unread', notification.datetime, nid),
], next); ], next);
}, },
], callback); ], function (err) {
callback(err);
});
}; };
Notifications.markReadMultiple = function (nids, uid, callback) { Notifications.markReadMultiple = function (nids, uid, callback) {

@ -1,5 +1,7 @@
'use strict'; 'use strict';
var async = require('async');
var user = require('../user'); var user = require('../user');
var notifications = require('../notifications'); var notifications = require('../notifications');
var SocketNotifs = module.exports; var SocketNotifs = module.exports;
@ -25,13 +27,37 @@ SocketNotifs.deleteAll = function (socket, data, callback) {
}; };
SocketNotifs.markRead = function (socket, nid, callback) { SocketNotifs.markRead = function (socket, nid, callback) {
notifications.markRead(nid, socket.uid, callback); async.waterfall([
function (next) {
notifications.markRead(nid, socket.uid, next);
},
function (next) {
user.notifications.pushCount(socket.uid);
next();
},
], callback);
}; };
SocketNotifs.markUnread = function (socket, nid, callback) { SocketNotifs.markUnread = function (socket, nid, callback) {
notifications.markUnread(nid, socket.uid, callback); async.waterfall([
function (next) {
notifications.markUnread(nid, socket.uid, next);
},
function (next) {
user.notifications.pushCount(socket.uid);
next();
},
], callback);
}; };
SocketNotifs.markAllRead = function (socket, data, callback) { SocketNotifs.markAllRead = function (socket, data, callback) {
notifications.markAllRead(socket.uid, callback); async.waterfall([
function (next) {
notifications.markAllRead(socket.uid, next);
},
function (next) {
user.notifications.pushCount(socket.uid);
next();
},
], callback);
}; };

Loading…
Cancel
Save