more work:

v1.18.x
Baris Soner Usakli 12 years ago
parent eba653a3d2
commit fabb55426c

@ -12,7 +12,7 @@
<a target="_blank" href="../../topic/{topics.slug}">{topics.title}</a>
<ul>
<li><i class="icon-time"></i> Posted {topics.relativeTime} ago by {topics.username}</li>
<li><i class="icon-comments"></i> {topics.post_count} post(s)</li>
<li><i class="icon-comments"></i> {topics.postcount} post(s)</li>
</ul>
<div class="clear"></div>
</li>

@ -30,7 +30,7 @@
</div>
</div>
<div>
<h3><span class="topic-title"><span class="badge {topics.badgeclass}">{topics.post_count}</span>{topics.title}</span></h3>
<h3><span class="topic-title"><span class="badge {topics.badgeclass}">{topics.postcount}</span>{topics.title}</span></h3>
<small>
<strong><i class="{topics.pin-icon}"></i><i class="{topics.lock-icon}"></i></strong>
Posted {topics.relativeTime} ago by

@ -6,7 +6,7 @@
<ul class="topics">
<!-- BEGIN topics -->
<li>
<a href="../../topic/{topics.slug}">{topics.title} ({topics.post_count})</a>
<a href="../../topic/{topics.slug}">{topics.title} ({topics.postcount})</a>
<div class="teaser">
<img class="img-polaroid" src="../../graph/users/{topics.teaser_username}/picture" />
<p>

@ -33,7 +33,7 @@
</div>
</div>
<div>
<h3><span class="topic-title"><span class="badge {topics.badgeclass}">{topics.post_count}</span>{topics.title}</span></h3>
<h3><span class="topic-title"><span class="badge {topics.badgeclass}">{topics.postcount}</span>{topics.title}</span></h3>
<small>
<strong><i class="{topics.pin-icon}"></i><i class="{topics.lock-icon}"></i></strong>
Posted {topics.relativeTime} ago by

@ -57,7 +57,7 @@ var RDB = require('./redis.js'),
}
function getActiveUsers(next) {
user.getMultipleUserFields(active_users, ['username','userslug'], function(users) {
user.getMultipleUserFields(active_users, ['username', 'userslug'], function(users) {
var activeUserData = [];
for(var uid in users) {
activeUserData.push(users[uid]);
@ -117,7 +117,7 @@ var RDB = require('./redis.js'),
Categories.getTopicsByTids = function(tids, current_user, callback, category_id /*temporary*/) {
var retrieved_topics = [];
function getTopicInfoMoar(topicData, callback) {
function getTopicInfo(topicData, callback) {
function getUserName(next) {
user.getUserField(topicData.uid, 'username', function(username) {
@ -152,33 +152,20 @@ var RDB = require('./redis.js'),
callback({
username: username,
hasReadTopic: hasReadTopic,
hasread: hasReadTopic,
teaserInfo: teaserInfo,
privileges: privileges
});
//if (!deleted[i] || (deleted[i] && privileges.view_deleted) || uid[i] === current_user) {
/*retrieved_topics.push({
'username': usernames[i],
'badgeclass' : (hasReadTopics[i] && current_user !=0) ? '' : 'badge-important',
'teaser_text': teaserInfo[i].text,
'teaser_username': teaserInfo[i].username,
'teaser_timestamp': utils.relativeTime(teaserInfo[i].timestamp)
});*/
//}
});
}
var topicCountToLoad = tids.length;
for(var i=0; i<tids.length; ++i) {
topics.getTopicData(tids[i], function(topicData) {
getTopicInfoMoar(topicData, function(topicInfo) {
console.log(topicInfo);
getTopicInfo(topicData, function(topicInfo) {
topicData['pin-icon'] = topicData.pinned === '1' ? 'icon-pushpin' : 'none';
topicData['lock-icon'] = topicData.locked === '1' ? 'icon-lock' : 'none';
@ -192,9 +179,12 @@ var RDB = require('./redis.js'),
topicData.teaser_username = topicInfo.teaserInfo.username;
topicData.teaser_timestamp = utils.relativeTime(topicInfo.teaserInfo.timestamp);
retrieved_topics.push(topicData);
if (!topicData.deleted || (topicData.deleted && topicInfo.privileges.view_deleted) || topicData.uid === current_user)
retrieved_topics.push(topicData);
else
--topicCountToLoad;
if(retrieved_topics.length === tids.length)
if(retrieved_topics.length === topicsToLoad)
callback(retrieved_topics);
});
});

@ -35,17 +35,8 @@
});
}
function getPostsData(next) {
posts.getPostsByTid(tid, -20, -1, function(postsData) {
next(null, postsData);
});
}
async.parallel([getTopicData, getPostsData], function(err, results) {
var topicData = results[0],
postsData = results[1].postData,
userData = results[1].userData,
location = '/topic/' + topicData.slug,
xml_url = '/topic/' + tid + '.rss';
@ -55,18 +46,20 @@
var feed = createFeed(topicData.topic_name, '', location, xml_url, post.username, urn);
var title;
for (var i = 0, ii = postsData.pid.length; i < ii; i++) {
urn = 'urn:' + cid + ':' + tid + ':' + postsData.pid[i];
title = 'Reply to ' + topicData.topic_name + ' on ' + (new Date(parseInt(postsData.timestamp[i], 10)).toUTCString());
var topic_posts = topicData.main_posts.concat(topicData.posts);
for (var i = 0, ii = topic_posts.length; i < ii; i++) {
urn = 'urn:' + cid + ':' + tid + ':' + topic_posts[i].pid;
title = 'Reply to ' + topicData.topic_name + ' on ' + (new Date(parseInt(topic_posts[i].timestamp, 10)).toUTCString());
feed.addNewItem(
title,
location,
postsData.timestamp[i],
postsData.content[i],
topic_posts[i].timestamp,
topic_posts[i].content,
{
'urn' : urn,
'username' : userData[postsData.uid[i]].username
'username' : topic_posts[i].username
}
);
}

@ -122,7 +122,7 @@ marked.setOptions({
Posts.get_cid_by_pid = function(pid, callback) {
Posts.getPostField(pid, 'tid', function(tid) {
if (tid) {
topics.get_cid_by_tid(tid, function(cid) {
topics.getTopicField(tid, 'cid', function(cid) {
if (cid) {
callback(cid);
} else {
@ -255,7 +255,8 @@ marked.setOptions({
RDB.incr('totalpostcount');
RDB.get('tid:' + tid + ':cid', function(err, cid) {
//RDB.get('tid:' + tid + ':cid', function(err, cid) {
topics.getTopicField(tid, 'cid', function(cid) {
RDB.handle(err);
feed.updateTopic(tid, cid);

@ -11,7 +11,7 @@ var RDB = require('./redis.js'),
//todo: break early if one condition is true
function getCategoryPrivileges(next) {
topics.get_cid_by_tid(tid, function(cid) {
topics.getTopicField(tid, 'cid', function(cid) {
categories.privileges(cid, uid, function(privileges) {
next(null, privileges);
});

@ -108,37 +108,14 @@ marked.setOptions({
}
Topics.get_topic = function(tid, uid, callback) {
var topicData = {};
function get_topic_data(next) {
RDB.mget([
schema.topics(tid).title,
schema.topics(tid).uid,
schema.topics(tid).timestamp,
schema.topics(tid).slug,
schema.topics(tid).postcount,
schema.topics(tid).locked,
schema.topics(tid).pinned,
schema.topics(tid).deleted
], function(err, topic) {
if (err) {
throw new Error(err);
}
topicData.title = topic[0];
topicData.uid = topic[1];
topicData.timestamp = topic[2];
topicData.relativeTime = utils.relativeTime(topic[2]),
topicData.slug = topic[3];
topicData.post_count = topic[4];
topicData.locked = topic[5];
topicData.pinned = topic[6];
topicData.deleted = topic[7];
user.getUserField(topic[1], 'username', function(username) {
topicData.username = username;
next();
Topics.getTopicData(tid, function(topic) {
user.getUserField(topic.uid, 'username', function(username) {
topic.username = username;
next(null, topic);
});
});
}
@ -147,30 +124,30 @@ marked.setOptions({
// posts.create calls this function - should be an option to skip this because its always true
if (uid && parseInt(uid) > 0) {
RDB.sismember(schema.topics(tid).read_by_uid, uid, function(err, read) {
topicData.badgeclass = read ? '' : 'badge-important';
next();
next(null, read);
});
} else {
next();
next(null, null);
}
}
function get_teaser(next) {
Topics.get_teaser(tid, function(teaser) {
topicData.teaser_text = teaser.text;
topicData.teaser_username = teaser.username;
next();
next(null, teaser);
});
}
async.parallel([get_topic_data, get_read_status, get_teaser], function(err) {
async.parallel([get_topic_data, get_read_status, get_teaser], function(err, results) {
if (err) {
throw new Error(err);
}
var topicData = results[0];
topicData.relativeTime = utils.relativeTime(results[0].timestamp);
topicData.badgeclass = results[1] ? '' : 'badge-important';
topicData.teaser_text = results[2].text;
topicData.teaser_username = results[2].username;
topicData.tid = tid;
callback(topicData);
});
}
@ -213,16 +190,6 @@ marked.setOptions({
});
}
Topics.get_cid_by_tid = function(tid, callback) {
RDB.get(schema.topics(tid).cid, function(err, cid) {
if (cid && parseInt(cid) > 0) {
callback(cid);
} else {
callback(false);
}
});
}
Topics.getTitleByPid = function(pid, callback) {
posts.getPostField(pid, 'tid', function(tid) {
Topics.getTopicField(tid, 'title', function(title) {
@ -235,7 +202,7 @@ marked.setOptions({
RDB.sadd(schema.topics(tid).read_by_uid, uid);
Topics.get_cid_by_tid(tid, function(cid) {
Topics.getTopicField(tid, 'cid', function(cid) {
categories.isTopicsRead(cid, uid, function(read) {
if(read) {
@ -390,6 +357,7 @@ marked.setOptions({
// Notify any users looking at the category that a new topic has arrived
Topics.get_topic(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(1, 1, 0, 10, function(data) {
posts.getPostsByTid(2, 0, -1, function(data) {
res.send(data);
});*/
});
/* posts.getPostsByPids([1,2,3], function(data) {
res.send(data);
@ -317,10 +317,10 @@ var express = require('express'),
res.send(data);
});*/
categories.getCategoryById(12, 0, function(returnData) {
/* categories.getCategoryById(12, 0, function(returnData) {
res.send(returnData);
});
*/
});

Loading…
Cancel
Save