From a87ebb64d86ac91f629c92379bfc6b67ea2ab4e3 Mon Sep 17 00:00:00 2001 From: Baris Usakli <barisusakli@gmail.com> Date: Thu, 28 Nov 2013 15:18:19 -0500 Subject: [PATCH] clean up of posts and some template additions --- public/src/app.js | 6 +++--- public/src/forum/topic.js | 4 ---- public/templates/account.tpl | 4 +++- public/templates/topic.tpl | 26 ++++++++++++++++++++------ src/feed.js | 12 +++++++++--- src/posts.js | 32 ++++++++++++++++++-------------- src/routes/user.js | 12 ++++++------ src/topics.js | 5 ++--- 8 files changed, 61 insertions(+), 40 deletions(-) diff --git a/public/src/app.js b/public/src/app.js index c29f24fa03..4be2beb8b9 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -297,8 +297,8 @@ var socket, }); } - app.makeNumbersHumanReadable = function() { - $('.human-readable-number').each(function() { + app.makeNumbersHumanReadable = function(selector) { + $(selector).each(function() { var num = parseInt($(this).html(), 10); $(this).html(utils.makeNumberHumanReadable(num)); }); @@ -312,7 +312,7 @@ var socket, $('span.timeago').timeago(); $('.post-content img').addClass('img-responsive'); - app.makeNumbersHumanReadable(); + app.makeNumbersHumanReadable('.human-readable-number'); app.createUserTooltips(); diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index e0628551e8..f44a327760 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -866,10 +866,6 @@ define(function() { if(!data || (data.posts && !data.posts.length)) return; - if (data.posts[0].uid !== app.uid) { - data.posts[0].display_moderator_tools = 'none'; - } - function removeAlreadyAddedPosts() { data.posts = data.posts.filter(function(post) { return $('#post-container li[data-pid="' + post.pid +'"]').length === 0; diff --git a/public/templates/account.tpl b/public/templates/account.tpl index 6d5335ac42..7327cca25f 100644 --- a/public/templates/account.tpl +++ b/public/templates/account.tpl @@ -15,9 +15,11 @@ <div class="account-online-status"> <span><i class="fa fa-circle-o"></i> <span>offline</span></span> </div> - <div class="{show_banned}"> + <!-- IF banned --> + <div> <span class="label label-danger">banned</span> </div> + <!-- ENDIF banned --> <div id="user-actions"> <a id="follow-btn" href="#" class="btn btn-default">Follow</a> <a id="unfollow-btn" href="#" class="btn btn-default">Unfollow</a> diff --git a/public/templates/topic.tpl b/public/templates/topic.tpl index b7755ccee2..d4e0c41bb8 100644 --- a/public/templates/topic.tpl +++ b/public/templates/topic.tpl @@ -36,7 +36,9 @@ <div class="col-md-1 profile-image-block hidden-xs hidden-sm sub-post"> <a href="/user/{posts.userslug}"> <img src="{posts.picture}" align="left" class="img-thumbnail" itemprop="image" /> - <span class="label label-danger {posts.show_banned}">[[topic:banned]]</span> + <!-- IF posts.user_banned --> + <span class="label label-danger">[[topic:banned]]</span> + <!-- ENDIF posts.user_banned --> </a> </div> @@ -64,9 +66,17 @@ <div class="btn-group"> <button class="btn btn-sm btn-default follow main-post" type="button" title="Be notified of new replies in this topic"><i class="fa fa-eye"></i></button> - <button class="favourite btn btn-sm btn-default {posts.fav_button_class}" type="button"> + <button class="favourite btn btn-sm btn-default <!-- IF posts.favourited --> btn-warning <!-- ENDIF posts.favourited -->" type="button"> <span class="favourite-text">[[topic:favourite]]</span> - <span class="post_rep_{posts.pid}">{posts.post_rep} </span><i class="fa {posts.fav_star_class}"></i> + <span class="post_rep_{posts.pid}">{posts.reputation} </span> + + + + <!-- IF posts.favourited --> + <i class="fa fa-star"></i> + <!-- ELSE --> + <i class="fa fa-star-o"></i> + <!-- ENDIF posts.favourited --> </button> </div> <div class="btn-group"> @@ -82,10 +92,12 @@ <button class="btn btn-sm btn-default google-share" type="button" title=""><i class="fa fa-google-plus"></i></button> </div> + <!-- IF posts.display_moderator_tools --> <div class="btn-group post-tools"> - <button class="btn btn-sm btn-default edit {posts.display_moderator_tools}" type="button" title="[[topic:edit]]"><i class="fa fa-pencil"></i></button> - <button class="btn btn-sm btn-default delete {posts.display_moderator_tools}" type="button" title="[[topic:delete]]"><i class="fa fa-trash-o"></i></button> + <button class="btn btn-sm btn-default edit" type="button" title="[[topic:edit]]"><i class="fa fa-pencil"></i></button> + <button class="btn btn-sm btn-default delete" type="button" title="[[topic:delete]]"><i class="fa fa-trash-o"></i></button> </div> + <!-- ENDIF posts.display_moderator_tools --> </div> <input id="post_{posts.pid}_link" value="" class="pull-right" style="display:none;"></input> @@ -102,8 +114,10 @@ </span> <span class="pull-right"> posted <span class="relativeTimeAgo timeago" title="{posts.relativeTime}"></span> - <span class="{posts.edited-class}">| last edited by <strong><a href="/user/{posts.editorslug}">{posts.editorname}</a></strong></span> + <!-- IF posts.editor --> + <span>| last edited by <strong><a href="/user/{posts.editorslug}">{posts.editorname}</a></strong></span> <span class="timeago" title="{posts.relativeEditTime}"></span> + <!-- ENDIF posts.editor --> </span> <div style="clear:both;"></div> </div> diff --git a/src/feed.js b/src/feed.js index 7608648850..8251d70cff 100644 --- a/src/feed.js +++ b/src/feed.js @@ -29,7 +29,9 @@ Feed.updateTopic = function (tid, callback) { topics.getTopicWithPosts(tid, 0, 0, -1, function (err, topicData) { - if (err) return callback(new Error('topic-invalid')); + if (err) { + return callback(new Error('topic-invalid')); + } var feed = new rss({ title: topicData.topic_name, @@ -44,7 +46,9 @@ dateStamp; // Add pubDate if topic contains posts - if (topicData.posts.length > 0) feed.pubDate = new Date(parseInt(topicData.posts[0].timestamp, 10)).toUTCString(); + if (topicData.posts.length > 0) { + feed.pubDate = new Date(parseInt(topicData.posts[0].timestamp, 10)).toUTCString(); + } async.each(topic_posts, function(postData, next) { if (postData.deleted === '0') { @@ -65,7 +69,9 @@ winston.info('[rss] Re-generated RSS Feed for tid ' + tid + '.'); } - if (callback) callback(); + if (callback) { + callback(); + } }); }); diff --git a/src/posts.js b/src/posts.js index 4a885a0876..bc1336ce81 100644 --- a/src/posts.js +++ b/src/posts.js @@ -54,18 +54,25 @@ var RDB = require('./redis'), 'reputation': 0, 'editor': '', 'edited': 0, - 'deleted': 0, - 'fav_button_class': '', - 'fav_star_class': 'fa-star-o', - 'show_banned': 'hide', - 'relativeTime': new Date(timestamp).toISOString(), - 'post_rep': '0', - 'edited-class': 'none', - 'relativeEditTime': '' + 'deleted': 0 + //TODO : write upgrade script to remove these fields from the database -barisu + //'fav_button_class': '', + //'fav_star_class': 'fa-star-o', + //'show_banned': 'hide', + //'relativeTime': new Date(timestamp).toISOString(), + //'post_rep': '0', + //'edited-class': 'none', + //'relativeEditTime': '' }; RDB.hmset('post:' + pid, postData); + postData.favourited = false; + postData.display_moderator_tools = true; + postData.relativeTime = new Date(timestamp).toISOString(); + //TODO : remove this once template bug is fixed -barisu (https://github.com/designcreateplay/NodeBB/issues/574) + postData.fav_star_class = 'fa-star-o'; + topics.addPostToTopic(tid, pid); topics.increasePostCount(tid); topics.updateTimestamp(tid, timestamp); @@ -78,8 +85,8 @@ var RDB = require('./redis'), var cid = topicData.cid; - feed.updateTopic(tid); - feed.updateRecent(); + //feed.updateTopic(tid); + //feed.updateRecent(); RDB.zadd('categories:recent_posts:cid:' + cid, timestamp, pid); @@ -178,7 +185,6 @@ var RDB = require('./redis'), if(err) { return callback(err, null); } - callback(null, postData); }); }); @@ -217,7 +223,7 @@ var RDB = require('./redis'), post.userslug = userData.userslug || ''; post.user_rep = userData.reputation || 0; post.user_postcount = userData.postcount || 0; - post.user_banned = userData.banned || '0'; + post.user_banned = userData.banned === '1'; post.picture = userData.picture || require('gravatar').url('', {}, https = nconf.get('https')); post.signature = signature; @@ -367,8 +373,6 @@ var RDB = require('./redis'), async.map(replies, function(postData, _callback) { if (postData) { - postData.post_rep = postData.reputation; - postData['edited-class'] = postData.editor !== '' ? '' : 'none'; try { postData.relativeTime = new Date(parseInt(postData.timestamp,10)).toISOString(); postData.relativeEditTime = postData.edited !== '0' ? (new Date(parseInt(postData.edited,10)).toISOString()) : ''; diff --git a/src/routes/user.js b/src/routes/user.js index 5bdee2c5d0..12610cbc59 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -535,18 +535,18 @@ var user = require('./../user.js'), return callerUID == uid || (data.email && (data.showemail && data.showemail === "1")); } - if (!canSeeEmail()) + if (!canSeeEmail()) { data.email = ""; + } - if (callerUID == uid && (!data.showemail || data.showemail === "0")) + if (callerUID == uid && (!data.showemail || data.showemail === "0")) { data.emailClass = ""; - else + } else { data.emailClass = "hide"; + } data.websiteName = data.website.replace('http://', '').replace('https://', ''); - - data.show_banned = data.banned === '1' ? '' : 'hide'; - + data.banned = data.banned === '1'; data.uid = uid; data.yourid = callerUID; data.theirid = uid; diff --git a/src/topics.js b/src/topics.js index b556e7cc88..4a9c7e977c 100644 --- a/src/topics.js +++ b/src/topics.js @@ -196,11 +196,10 @@ var RDB = require('./redis'), privileges = results[2]; for (var i = 0; i < postData.length; ++i) { + postData[i].favourited = fav_data[postData[i].pid] === 1; postData[i].fav_button_class = fav_data[postData[i].pid] ? 'btn-warning' : ''; postData[i].fav_star_class = fav_data[postData[i].pid] ? 'fa-star' : 'fa-star-o'; - postData[i]['display_moderator_tools'] = ((current_user != 0) && (postData[i].uid == current_user || privileges.editable)) ? 'show' : 'none'; - - postData[i].show_banned = postData[i].user_banned === '1' ? 'show' : 'hide'; + postData[i].display_moderator_tools = ((current_user != 0) && (postData[i].uid == current_user || privileges.editable)); } callback(postData);