mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-31 19:15:58 +01:00
closes #1090
This commit is contained in:
@@ -12,8 +12,17 @@ define(['forum/recent'], function(recent) {
|
||||
recent.watchForNewPosts();
|
||||
|
||||
$('#mark-allread-btn').on('click', function() {
|
||||
function getUnreadTids() {
|
||||
var tids = [];
|
||||
$('#topics-container .category-item[data-tid]').each(function() {
|
||||
tids.push($(this).attr('data-tid'));
|
||||
});
|
||||
return tids;
|
||||
}
|
||||
|
||||
var btn = $(this);
|
||||
socket.emit('topics.markAllRead', function(err) {
|
||||
|
||||
socket.emit('topics.markAllRead', getUnreadTids(), function(err) {
|
||||
if(err) {
|
||||
return app.alertError('There was an error marking topics read!');
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="col-md-12">
|
||||
<ul id="topics-container" data-nextstart="{nextStart}">
|
||||
<!-- BEGIN topics -->
|
||||
<li class="category-item <!-- IF topics.deleted --> deleted<!-- ENDIF topics.deleted -->">
|
||||
<li class="category-item<!-- IF topics.deleted --> deleted<!-- ENDIF topics.deleted -->" data-tid="{topics.tid}">
|
||||
<div class="col-md-12 col-xs-12 panel panel-default topic-row">
|
||||
<a href="{relative_path}/user/{topics.userslug}" class="pull-left">
|
||||
<img class="img-rounded user-img" src="{topics.picture}" title="{topics.username}" />
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var topics = require('../topics'),
|
||||
categories = require('../categories'),
|
||||
threadTools = require('../threadTools'),
|
||||
@@ -68,7 +71,7 @@ SocketTopics.post = function(socket, data, callback) {
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
callback(null);
|
||||
callback();
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -88,14 +91,19 @@ SocketTopics.markAsRead = function(socket, data) {
|
||||
};
|
||||
|
||||
SocketTopics.markAllRead = function(socket, data, callback) {
|
||||
topics.markAllRead(socket.uid, function(err) {
|
||||
|
||||
if (!Array.isArray(data)) {
|
||||
return callback(new Error('invalid-data'));
|
||||
}
|
||||
|
||||
topics.markAllRead(socket.uid, data, function(err) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
index.server.sockets.in('uid_' + socket.uid).emit('event:unread.updateCount', null, []);
|
||||
|
||||
callback(null);
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -797,24 +797,6 @@ var async = require('async'),
|
||||
});
|
||||
};
|
||||
|
||||
Topics.markAllRead = function(uid, callback) {
|
||||
Topics.getLatestTids(0, -1, 'month', function(err, tids) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if(!tids || !tids.length) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
function markRead(tid, next) {
|
||||
Topics.markAsRead(tid, uid, next);
|
||||
}
|
||||
|
||||
async.each(tids, markRead, callback);
|
||||
});
|
||||
};
|
||||
|
||||
Topics.getTitleByPid = function(pid, callback) {
|
||||
Topics.getTopicFieldByPid('title', pid, callback);
|
||||
};
|
||||
@@ -862,6 +844,16 @@ var async = require('async'),
|
||||
});
|
||||
};
|
||||
|
||||
Topics.markAllRead = function(uid, tids, callback) {
|
||||
if(!tids || !tids.length) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
async.each(tids, function (tid, next) {
|
||||
Topics.markAsRead(tid, uid, next);
|
||||
}, callback);
|
||||
};
|
||||
|
||||
Topics.markAsRead = function(tid, uid, callback) {
|
||||
|
||||
db.setAdd('tid:' + tid + ':read_by_uid', uid, function(err) {
|
||||
|
||||
Reference in New Issue
Block a user