mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-10 16:05:49 +01:00
Added support for a theme to generate a link back to a parent post
This commit is contained in:
@@ -57,6 +57,8 @@ define('forum/topic', [
|
|||||||
|
|
||||||
addBlockQuoteHandler();
|
addBlockQuoteHandler();
|
||||||
|
|
||||||
|
addParentHandler();
|
||||||
|
|
||||||
handleBookmark(tid);
|
handleBookmark(tid);
|
||||||
|
|
||||||
handleKeys();
|
handleKeys();
|
||||||
@@ -191,6 +193,11 @@ define('forum/topic', [
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addParentHandler() {
|
||||||
|
components.get('topic').on('click', '[component="post/parent"]', function() {
|
||||||
|
navigator.scrollToPost(parseInt(this.getAttribute('data-index'), 10), true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function enableInfiniteLoadingOrPagination() {
|
function enableInfiniteLoadingOrPagination() {
|
||||||
if (!config.usePagination) {
|
if (!config.usePagination) {
|
||||||
|
|||||||
@@ -112,6 +112,45 @@ module.exports = function(Topics) {
|
|||||||
},
|
},
|
||||||
privileges: function(next) {
|
privileges: function(next) {
|
||||||
privileges.posts.get(pids, uid, next);
|
privileges.posts.get(pids, uid, next);
|
||||||
|
},
|
||||||
|
parents: function(next) {
|
||||||
|
var parentPids = postData.map(function(postObj) {
|
||||||
|
return postObj.hasOwnProperty('toPid') ? parseInt(postObj.toPid, 10) : null
|
||||||
|
}).filter(Boolean),
|
||||||
|
parentUids;
|
||||||
|
|
||||||
|
if (parentPids) {
|
||||||
|
async.waterfall([
|
||||||
|
async.apply(posts.getPostsFields, parentPids, ['pid', 'tid', 'uid']),
|
||||||
|
function(postsArr, next) {
|
||||||
|
// To use Posts.getUserInfoForPosts would be overkill here...
|
||||||
|
parentUids = postsArr.map(function(postObj) { return parseInt(postObj.uid, 10); }).filter(function(uid, idx, users) {
|
||||||
|
return users.indexOf(uid) === idx;
|
||||||
|
});
|
||||||
|
|
||||||
|
user.getMultipleUserFields(parentUids, ['username'], function(err, userDataArr) {
|
||||||
|
var userData = {};
|
||||||
|
userDataArr.forEach(function(user) {
|
||||||
|
userData[user.uid] = user;
|
||||||
|
});
|
||||||
|
next(err, postsArr, userData);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(postsArr, userData, next) {
|
||||||
|
var returnData = {};
|
||||||
|
posts.getPostIndices(postsArr, uid, function(err, indices) {
|
||||||
|
postsArr.forEach(function(post, idx) {
|
||||||
|
var pid = parseInt(post.pid, 10);
|
||||||
|
returnData[pid] = _.clone(userData[parseInt(post.uid, 10)]);
|
||||||
|
returnData[pid].index = indices[idx]+0;
|
||||||
|
});
|
||||||
|
next(err, returnData);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
], next);
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, function(err, results) {
|
}, function(err, results) {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -130,6 +169,7 @@ module.exports = function(Topics) {
|
|||||||
postObj.display_moderator_tools = results.privileges[i].editable;
|
postObj.display_moderator_tools = results.privileges[i].editable;
|
||||||
postObj.display_move_tools = results.privileges[i].move && postObj.index !== 0;
|
postObj.display_move_tools = results.privileges[i].move && postObj.index !== 0;
|
||||||
postObj.selfPost = parseInt(uid, 10) === parseInt(postObj.uid, 10);
|
postObj.selfPost = parseInt(uid, 10) === parseInt(postObj.uid, 10);
|
||||||
|
postObj.parent = results.parents[parseInt(postObj.toPid, 10)];
|
||||||
|
|
||||||
if(postObj.deleted && !results.privileges[i].view_deleted) {
|
if(postObj.deleted && !results.privileges[i].view_deleted) {
|
||||||
postObj.content = '[[topic:post_is_deleted]]';
|
postObj.content = '[[topic:post_is_deleted]]';
|
||||||
|
|||||||
Reference in New Issue
Block a user