mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 19:46:01 +01:00
more fixes
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<li>
|
||||
<div class="row-fluid">
|
||||
<div class="span2">
|
||||
<img src="{main_posts.gravatar}" /><br />
|
||||
<img src="{main_posts.picture}" /><br />
|
||||
{main_posts.username}
|
||||
</div>
|
||||
<div class="span10">
|
||||
@@ -16,7 +16,7 @@
|
||||
<li>
|
||||
<div class="row-fluid">
|
||||
<div class="span2">
|
||||
<img src="{posts.gravatar}" /><br />
|
||||
<img src="{posts.picture}" /><br />
|
||||
{posts.username}
|
||||
</div>
|
||||
<div class="span10">
|
||||
|
||||
@@ -91,9 +91,10 @@ var RDB = require('./redis.js'),
|
||||
|
||||
data[post_id] = hasFavourited;
|
||||
loaded ++;
|
||||
if (loaded == pids.length) callback(data);
|
||||
if (loaded === pids.length)
|
||||
callback(data);
|
||||
});
|
||||
}(pids[i]))
|
||||
}(pids[i]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -116,65 +116,5 @@ marked.setOptions({
|
||||
});
|
||||
}
|
||||
|
||||
PostTools.constructPostObject = function(rawPosts, tid, current_user, privileges, callback) {
|
||||
var postObj = [];
|
||||
|
||||
async.waterfall([
|
||||
function(next) {
|
||||
if (!privileges) {
|
||||
threadTools.privileges(tid, current_user, function(privs) {
|
||||
privileges = privs;
|
||||
next();
|
||||
});
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
function(next) {
|
||||
var postData = rawPosts.postData,
|
||||
userData = rawPosts.userData,
|
||||
voteData = rawPosts.voteData;
|
||||
|
||||
if (!postData) {
|
||||
return next(null, []);
|
||||
}
|
||||
|
||||
for (var i=0, ii= postData.pid.length; i<ii; i++) {
|
||||
var uid = postData.uid[i],
|
||||
pid = postData.pid[i];
|
||||
|
||||
// ############ to be moved into posts.getPostsByTid ############
|
||||
if (postData.deleted[i] === null || (postData.deleted[i] === '1' && privileges.view_deleted) || current_user === uid) {
|
||||
var post_obj = {
|
||||
'pid' : pid,
|
||||
'uid' : uid,
|
||||
'content' : marked(postData.content[i] || ''),
|
||||
'post_rep' : postData.reputation[i] || 0,
|
||||
'timestamp' : postData.timestamp[i],
|
||||
'relativeTime': utils.relativeTime(postData.timestamp[i]),
|
||||
'username' : userData[uid].username || 'anonymous',
|
||||
'userslug' : userData[uid].userslug || '',
|
||||
'user_rep' : userData[uid].reputation || 0,
|
||||
'gravatar' : userData[uid].picture || 'http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e',
|
||||
'signature' : marked(userData[uid].signature || ''),
|
||||
'fav_star_class' : voteData[pid] ? 'icon-star' : 'icon-star-empty',
|
||||
'display_moderator_tools': (uid == current_user || privileges.editable) ? 'show' : 'none',
|
||||
'edited-class': postData.editor[i] !== null ? '' : 'none',
|
||||
'editor': postData.editor[i] !== null ? userData[postData.editor[i]].username : '',
|
||||
'relativeEditTime': postData.editTime !== null ? utils.relativeTime(postData.editTime[i]) : '',
|
||||
'deleted': postData.deleted[i] || '0'
|
||||
};
|
||||
|
||||
postObj.push(post_obj);
|
||||
}
|
||||
// ########## end to be moved into posts.getPostsByTid ############
|
||||
}
|
||||
|
||||
next(null);
|
||||
}
|
||||
], function(err) {
|
||||
callback(postObj);
|
||||
});
|
||||
}
|
||||
|
||||
}(exports));
|
||||
@@ -104,6 +104,10 @@ marked.setOptions({
|
||||
|
||||
if(postData) {
|
||||
postData.relativeTime = utils.relativeTime(postData.timestamp);
|
||||
postData.post_rep = postData.reputation;
|
||||
postData['edited-class'] = postData.editor !== '' ? '' : 'none';
|
||||
postData['relativeEditTime'] = postData.edited !== '0' ? utils.relativeTime(postData.edited) : '';
|
||||
|
||||
posts[index] = postData;
|
||||
}
|
||||
|
||||
@@ -218,7 +222,7 @@ marked.setOptions({
|
||||
'username' : data.username || 'anonymous',
|
||||
'user_rep' : data.reputation || 0,
|
||||
'post_rep' : 0,
|
||||
'gravatar' : data.picture,
|
||||
'picture' : data.picture,
|
||||
'signature' : marked(data.signature || ''),
|
||||
'timestamp' : timestamp,
|
||||
'relativeTime': utils.relativeTime(timestamp),
|
||||
|
||||
@@ -13,19 +13,6 @@
|
||||
Schema.topics = function(tid) {
|
||||
return {
|
||||
|
||||
/* strings */
|
||||
title: 'tid:' + tid + ':title',
|
||||
locked: 'tid:' + tid + ':locked',
|
||||
category_name: 'tid:' + tid + ':category_name',
|
||||
category_slug: 'tid:' + tid + ':category_slug',
|
||||
deleted: 'tid:' + tid + ':deleted',
|
||||
pinned: 'tid:' + tid + ':pinned',
|
||||
uid: 'tid:' + tid + ':uid',
|
||||
timestamp: 'tid:' + tid + ':timestamp',
|
||||
slug: 'tid:' + tid + ':slug',
|
||||
postcount: 'tid:' + tid + ':postcount',
|
||||
cid: 'tid:' + tid + ':cid',
|
||||
|
||||
/* sets */
|
||||
tid: 'topics:tid',
|
||||
read_by_uid: 'tid:' + tid + ':read_by_uid',
|
||||
|
||||
@@ -233,11 +233,16 @@ var RDB = require('./redis.js'),
|
||||
ThreadTools.notify_followers = function(tid, exceptUid) {
|
||||
async.parallel([
|
||||
function(next) {
|
||||
topics.get_topic(tid, 0, function(threadData) {
|
||||
notifications.create(threadData.teaser_username + ' has posted a reply to: "' + threadData.title + '"', null, '/topic/' + tid, 'topic:' + tid, function(nid) {
|
||||
|
||||
topics.getTopicField(tid, 'title', function(title) {
|
||||
topics.get_teaser(tid, function(teaser) {
|
||||
notifications.create(teaser.username + ' has posted a reply to: "' + title + '"', null, '/topic/' + tid, 'topic:' + tid, function(nid) {
|
||||
next(null, nid);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
function(next) {
|
||||
ThreadTools.get_followers(tid, function(err, followers) {
|
||||
|
||||
@@ -9,7 +9,8 @@ var RDB = require('./redis.js')
|
||||
threadTools = require('./threadTools.js'),
|
||||
postTools = require('./postTools'),
|
||||
async = require('async'),
|
||||
feed = require('./feed.js');
|
||||
feed = require('./feed.js'),
|
||||
favourites = require('./favourites.js');
|
||||
|
||||
marked.setOptions({
|
||||
breaks: true
|
||||
@@ -26,26 +27,62 @@ marked.setOptions({
|
||||
});
|
||||
}
|
||||
|
||||
Topics.getTopicPosts = function(tid, callback) {
|
||||
posts.getPostsByTid(tid, 0, -1, function(postData) {
|
||||
callback(postData);
|
||||
Topics.getTopicDataWithUsername = function(tid, callback) {
|
||||
Topics.getTopicData(tid, function(topic) {
|
||||
user.getUserField(topic.uid, 'username', function(username) {
|
||||
|
||||
topic.username = username;
|
||||
callback(topic);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Topics.getTopicPosts = function(tid, start, end, current_user, callback) {
|
||||
posts.getPostsByTid(tid, start, end, function(postData) {
|
||||
|
||||
function constructPosts(topicPosts, callback) {
|
||||
function getFavouritesData(next) {
|
||||
var pids = [];
|
||||
for(var i=0; i<postData.length; ++i)
|
||||
pids.push(postData[i].pid);
|
||||
|
||||
favourites.getFavouritesByPostIDs(pids, current_user, function(fav_data) {
|
||||
next(null, fav_data);
|
||||
});
|
||||
}
|
||||
|
||||
function addUserInfoToPosts(next) {
|
||||
var done = 0;
|
||||
|
||||
for(var i=0, ii=topicPosts.length; i<ii; ++i) {
|
||||
for(var i=0, ii=postData.length; i<ii; ++i) {
|
||||
|
||||
posts.addUserInfoToPost(topicPosts[i], function() {
|
||||
posts.addUserInfoToPost(postData[i], function() {
|
||||
++done;
|
||||
if(done === topicPosts.length)
|
||||
callback();
|
||||
if(done === postData.length)
|
||||
next(null, null);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getPrivileges(next) {
|
||||
threadTools.privileges(tid, current_user, function(privData) {
|
||||
next(null, privData);
|
||||
});
|
||||
}
|
||||
|
||||
async.parallel([getFavouritesData, addUserInfoToPosts, getPrivileges], function(err, results) {
|
||||
var fav_data = results[0],
|
||||
privileges = results[2];
|
||||
|
||||
for(var i=0; i<postData.length; ++i) {
|
||||
postData[i].fav_star_class = fav_data[postData[i].pid] ? 'icon-star' : 'icon-star-empty';
|
||||
postData[i]['display_moderator_tools'] = (postData[i].uid == current_user || privileges.editable) ? 'show' : 'none';
|
||||
}
|
||||
|
||||
callback(postData);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Topics.getTopicById = function(tid, current_user, callback) {
|
||||
|
||||
Topics.markAsRead(tid, current_user);
|
||||
@@ -57,7 +94,8 @@ marked.setOptions({
|
||||
}
|
||||
|
||||
function getTopicPosts(next) {
|
||||
Topics.getTopicPosts(tid, function(topicPosts) {
|
||||
Topics.getTopicPosts(tid, 0, -1, current_user, function(topicPosts, privileges) {
|
||||
|
||||
next(null, topicPosts);
|
||||
});
|
||||
}
|
||||
@@ -73,8 +111,6 @@ marked.setOptions({
|
||||
topicPosts = results[1],
|
||||
privileges = results[2];
|
||||
|
||||
constructPosts(topicPosts, function() {
|
||||
|
||||
var main_posts = topicPosts.splice(0, 1);
|
||||
|
||||
callback({
|
||||
@@ -91,21 +127,15 @@ marked.setOptions({
|
||||
'main_posts': main_posts
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
Topics.get_topic = function(tid, uid, callback) {
|
||||
|
||||
Topics.getTopicForCategoryView = function(tid, uid, callback) {
|
||||
|
||||
function get_topic_data(next) {
|
||||
Topics.getTopicData(tid, function(topic) {
|
||||
|
||||
user.getUserField(topic.uid, 'username', function(username) {
|
||||
|
||||
topic.username = username;
|
||||
Topics.getTopicDataWithUsername(tid, function(topic) {
|
||||
next(null, topic);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function get_read_status(next) {
|
||||
@@ -168,7 +198,7 @@ marked.setOptions({
|
||||
tids.sort(function(a, b) { return b - a; });
|
||||
|
||||
async.each(tids, function(tid, next) {
|
||||
Topics.get_topic(tid, 0, function(topicData) {
|
||||
Topics.getTopicDataWithUsername(tid, function(topicData) {
|
||||
topics.push(topicData);
|
||||
next();
|
||||
});
|
||||
@@ -235,7 +265,7 @@ marked.setOptions({
|
||||
|
||||
Topics.get_latest_undeleted_pid = function(tid, callback) {
|
||||
|
||||
Topics.getTopicPosts(tid, function(posts) {
|
||||
Topics.getTopicPosts(tid, 0, -1, 0, function(posts) {
|
||||
|
||||
var numPosts = posts.length;
|
||||
if(!numPosts)
|
||||
@@ -344,7 +374,7 @@ marked.setOptions({
|
||||
threadTools.toggleFollow(tid, uid);
|
||||
|
||||
// Notify any users looking at the category that a new topic has arrived
|
||||
Topics.get_topic(tid, uid, function(topicData) {
|
||||
Topics.getTopicForCategoryView(tid, uid, function(topicData) {
|
||||
|
||||
io.sockets.in('category_' + category_id).emit('event:new_topic', topicData);
|
||||
io.sockets.in('recent_posts').emit('event:new_topic', topicData);
|
||||
|
||||
@@ -301,9 +301,9 @@ var express = require('express'),
|
||||
res.send(data);
|
||||
});*/
|
||||
|
||||
posts.getPostsByTid(2, 0, -1, function(data) {
|
||||
/*posts.getPostsByTid(2, 0, -1, function(data) {
|
||||
res.send(data);
|
||||
});
|
||||
});*/
|
||||
|
||||
/* posts.getPostsByPids([1,2,3], function(data) {
|
||||
res.send(data);
|
||||
@@ -313,9 +313,9 @@ var express = require('express'),
|
||||
res.send(data);
|
||||
});*/
|
||||
|
||||
/*topics.getTopicById(1, 1, function(data) {
|
||||
topics.getTopicById(24, 1, function(data) {
|
||||
res.send(data);
|
||||
});*/
|
||||
});
|
||||
|
||||
/* categories.getCategoryById(12, 0, function(returnData) {
|
||||
res.send(returnData);
|
||||
|
||||
@@ -332,9 +332,11 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
socket.on('api:composer.push', function(data) {
|
||||
if (uid > 0) {
|
||||
if (parseInt(data.tid) > 0) {
|
||||
topics.get_topic(data.tid, uid, function(topicData) {
|
||||
topicData.tid = data.tid;
|
||||
if (data.body) topicData.body = data.body;
|
||||
topics.getTopicData(data.tid, function(topicData) {
|
||||
|
||||
if (data.body)
|
||||
topicData.body = data.body;
|
||||
|
||||
socket.emit('api:composer.push', {
|
||||
tid: data.tid,
|
||||
title: topicData.title
|
||||
@@ -416,15 +418,11 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
var start = data.after,
|
||||
end = start + 10;
|
||||
|
||||
posts.getPostsByTid(data.tid, start, end, function(posts){
|
||||
if (!posts.error) {
|
||||
postTools.constructPostObject(posts, data.tid, uid, null, function(postObj) {
|
||||
topics.getTopicPosts(data.tid, start, end, uid, function(posts) {
|
||||
io.sockets.in('topic_' + data.tid).emit('event:new_post', {
|
||||
posts: postObj
|
||||
posts: posts
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
socket.on('api:admin.topics.getMore', function(data) {
|
||||
|
||||
Reference in New Issue
Block a user