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);