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..f805a4a510 100644
--- a/public/src/forum/topic.js
+++ b/public/src/forum/topic.js
@@ -291,8 +291,7 @@ define(function() {
var pid = $(this).parents('li').attr('data-pid');
var uid = $(this).parents('li').attr('data-uid');
- var element = $(this).find('i');
- if ($(element).hasClass('fa-star-o')) {
+ if ($(this).attr('data-favourited') == 'false') {
socket.emit('api:posts.favourite', {
pid: pid,
room_id: app.currentRoom
@@ -542,7 +541,9 @@ define(function() {
var favEl = document.querySelector('.post_rep_' + data.pid).nextSibling;
if (favEl) {
favEl.className = 'fa fa-star';
- $(favEl).parent().addClass('btn-warning');
+ $(favEl).parent()
+ .addClass('btn-warning')
+ .attr('data-favourited', true);
}
}
});
@@ -552,7 +553,9 @@ define(function() {
var favEl = document.querySelector('.post_rep_' + data.pid).nextSibling;
if (favEl) {
favEl.className = 'fa fa-star-o';
- $(favEl).parent().removeClass('btn-warning');
+ $(favEl).parent()
+ .removeClass('btn-warning')
+ .attr('data-favourited', false);
}
}
});
@@ -866,10 +869,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/src/templates.js b/public/src/templates.js
index d933a7db74..d185b7c16e 100644
--- a/public/src/templates.js
+++ b/public/src/templates.js
@@ -241,7 +241,7 @@
}
function makeConditionalRegex(block) {
- return new RegExp("[\\s\\S]*", 'g');
+ return new RegExp("([\\s\\S]*?)", 'g');
}
function getBlock(regex, block, template) {
@@ -311,37 +311,37 @@
} else {
function checkConditional(key, value) {
var conditional = makeConditionalRegex(key),
- conditionalBlock = conditional.exec(template);
-
- if (conditionalBlock !== null) {
- conditionalBlock = conditionalBlock[0].split(//);
-
- if (conditionalBlock[1]) {
- // there is an else statement
- if (!value) {
- template = template.replace(conditional, conditionalBlock[1]);
+ matches = template.match(conditional);
+
+ if (matches !== null) {
+ for (var i = 0, ii = matches.length; i < ii; i++) {
+ var conditionalBlock = matches[i].split(//);
+
+ if (conditionalBlock[1]) {
+ // there is an else statement
+ if (!value) {
+ template = template.replace(matches[i], conditionalBlock[1]);
+ } else {
+ template = template.replace(matches[i], conditionalBlock[0]);
+ }
} else {
- template = template.replace(conditional, conditionalBlock[0]);
+ // regular if statement
+ if (!value) {
+ template = template.replace(matches[i], '');
+ }
}
-
- } else {
- // regular if
- if (!value) {
- template = template.replace(conditional, '');
- }
- }
+ }
}
}
checkConditional(namespace + d, data[d]);
checkConditional('!' + namespace + d, !data[d]);
-
+
if (blockInfo) {
checkConditional('@first', blockInfo.iterator === 0);
checkConditional('@last', blockInfo.iterator === blockInfo.total);
}
-
template = replace(namespace + d, data[d], template);
}
}
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 @@
offline
-
+
+
banned
+
Follow
Unfollow
diff --git a/public/templates/topic.tpl b/public/templates/topic.tpl
index b7755ccee2..2e2c09228f 100644
--- a/public/templates/topic.tpl
+++ b/public/templates/topic.tpl
@@ -36,7 +36,9 @@
@@ -64,9 +66,14 @@
-
@@ -82,10 +89,12 @@
+
-
-
+
+
+
@@ -102,8 +111,10 @@
posted
- | last edited by {posts.editorname}
+
+ | last edited by {posts.editorname}
+
diff --git a/src/feed.js b/src/feed.js
index 7608648850..522edab086 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,
@@ -40,13 +42,14 @@
author: topicData.posts[0].username,
ttl: Feed.defaults.ttl
}),
- topic_posts = topicData.posts.concat(topicData.posts),
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) {
+ async.each(topicData.posts, function(postData, next) {
if (postData.deleted === '0') {
dateStamp = new Date(parseInt(postData.edited === '0' ? postData.timestamp : postData.edited, 10)).toUTCString();
@@ -65,7 +68,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..b3be7dfe66 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);
@@ -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);