mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-12 07:30:45 +01:00
Merge branch 'master' of github.com:designcreateplay/NodeBB
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -241,7 +241,7 @@
|
||||
}
|
||||
|
||||
function makeConditionalRegex(block) {
|
||||
return new RegExp("<!--[\\s]*IF " + block + "[\\s]*-->[\\s\\S]*<!--[\\s]*ENDIF " + block + "[\\s]*-->", 'g');
|
||||
return new RegExp("<!--[\\s]*IF " + block + "[\\s]*-->([\\s\\S]*?)<!--[\\s]*ENDIF " + block + "[\\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(/<!-- ELSE -->/);
|
||||
|
||||
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(/<!-- ELSE -->/);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,14 @@
|
||||
|
||||
<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 data-favourited="{posts.favourited}" 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 +89,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 +111,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>
|
||||
|
||||
15
src/feed.js
15
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();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
28
src/posts.js
28
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()) : '';
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user