v1.18.x
barisusakli 9 years ago
parent 63f5cd0c79
commit 0efe315790

@ -188,7 +188,7 @@ define('forum/topic/events', [
var isDeleted = postEl.hasClass('deleted');
postTools.toggle(data.pid, isDeleted);
if (!app.user.isAdmin && !app.user.isGlobalMod && parseInt(data.uid, 10) !== parseInt(app.user.uid, 10)) {
if (!ajaxify.data.privileges.isAdminOrMod && parseInt(data.uid, 10) !== parseInt(app.user.uid, 10)) {
postEl.find('[component="post/tools"]').toggleClass('hidden', isDeleted);
if (isDeleted) {
postEl.find('[component="post/content"]').translateHtml('[[topic:post_is_deleted]]');

@ -31,7 +31,7 @@ define('forum/topic/posts', [
post.display_delete_tools = (ajaxify.data.privileges['posts:delete'] && post.selfPost) || ajaxify.data.privileges.isAdminOrMod;
post.display_moderator_tools = post.display_edit_tools || post.display_delete_tools;
post.display_move_tools = ajaxify.data.privileges.isAdminOrMod;
post.display_post_menu = ajaxify.data.privileges.isAdminOrMod || post.selfPost || ((app.user.uid || ajaxify.data.postSharing.length) && !post.deleted);
post.display_post_menu = ajaxify.data.privileges.isAdminOrMod || (post.selfPost && !ajaxify.data.locked) || ((app.user.uid || ajaxify.data.postSharing.length) && !post.deleted);
});
updatePostCounts(data.posts);

@ -173,15 +173,24 @@ define('forum/topic/threadTools', [
return;
}
var isLocked = data.isLocked && !app.user.isAdmin;
var isLocked = data.isLocked && !ajaxify.data.privileges.isAdminOrMod;
components.get('topic/lock').toggleClass('hidden', data.isLocked);
components.get('topic/unlock').toggleClass('hidden', !data.isLocked);
components.get('topic/reply/container').toggleClass('hidden', isLocked);
components.get('topic/reply/locked').toggleClass('hidden', !isLocked);
threadEl.find('[component="post/reply"], [component="post/quote"], [component="post/edit"], [component="post/delete"]').toggleClass('hidden', isLocked);
var hideReply = (data.isLocked || ajaxify.data.deleted) && !ajaxify.data.privileges.isAdminOrMod;
components.get('topic/reply/container').toggleClass('hidden', hideReply);
components.get('topic/reply/locked').toggleClass('hidden', ajaxify.data.privileges.isAdminOrMod || !data.isLocked || ajaxify.data.deleted);
threadEl.find('[component="post"]:not(.deleted) [component="post/reply"], [component="post"]:not(.deleted) [component="post/quote"]').toggleClass('hidden', hideReply);
threadEl.find('[component="post/edit"], [component="post/delete"]').toggleClass('hidden', isLocked);
threadEl.find('[component="post"][data-uid="'+app.user.uid+'"].deleted [component="post/tools"]').toggleClass('hidden', isLocked);
$('[component="post/header"] i.fa-lock').toggleClass('hidden', !data.isLocked);
$('[component="post/tools"] .dropdown-menu').html('');
ajaxify.data.locked = data.isLocked;
};
ThreadTools.setDeleteState = function(data) {
@ -195,9 +204,17 @@ define('forum/topic/threadTools', [
components.get('topic/purge').toggleClass('hidden', !data.isDelete);
components.get('topic/deleted/message').toggleClass('hidden', !data.isDelete);
var hideReply = data.isDelete && !ajaxify.data.privileges.isAdminOrMod;
components.get('topic/reply/container').toggleClass('hidden', hideReply);
components.get('topic/reply/locked').toggleClass('hidden', ajaxify.data.privileges.isAdminOrMod || !ajaxify.data.locked || data.isDelete);
threadEl.find('[component="post"]:not(.deleted) [component="post/reply"], [component="post"]:not(.deleted) [component="post/quote"]').toggleClass('hidden', hideReply);
threadEl.toggleClass('deleted', data.isDelete);
ajaxify.data.deleted = data.isDelete;
};
ThreadTools.setPinnedState = function(data) {
var threadEl = components.get('topic');
if (parseInt(data.tid, 10) !== parseInt(threadEl.attr('data-tid'), 10)) {
@ -207,6 +224,7 @@ define('forum/topic/threadTools', [
components.get('topic/pin').toggleClass('hidden', data.isPinned);
components.get('topic/unpin').toggleClass('hidden', !data.isPinned);
$('[component="post/header"] i.fa-thumb-tack').toggleClass('hidden', !data.isPinned);
ajaxify.data.pinned = data.isPinned;
};
function setFollowState(state) {

@ -17,7 +17,7 @@ module.exports = function(privileges) {
privileges.topics.get = function(tid, uid, callback) {
var topic;
async.waterfall([
async.apply(topics.getTopicFields, tid, ['cid', 'uid', 'locked']),
async.apply(topics.getTopicFields, tid, ['cid', 'uid', 'locked', 'deleted']),
function(_topic, next) {
topic = _topic;
async.parallel({
@ -42,14 +42,19 @@ module.exports = function(privileges) {
var disabled = parseInt(results.disabled, 10) === 1;
var locked = parseInt(topic.locked, 10) === 1;
var deleted = parseInt(topic.deleted, 10) === 1;
var isAdminOrMod = results.isAdministrator || results.isModerator;
var editable = isAdminOrMod;
var deletable = isAdminOrMod || (results.isOwner && results['topics:delete'][0]);
plugins.fireHook('filter:privileges.topics.get', {
'topics:reply': (results['topics:reply'][0] && !locked) || isAdminOrMod,
read: results.read[0] || isAdminOrMod,
'topics:reply': (results['topics:reply'][0] && !locked && !deleted) || isAdminOrMod,
'topics:read': results['topics:read'][0] || isAdminOrMod,
'topics:delete': (results.isOwner && results['topics:delete'][0]) || isAdminOrMod,
'posts:edit': (results['posts:edit'][0] && !locked) || isAdminOrMod,
'posts:delete': (results['posts:delete'][0] && !locked) || isAdminOrMod,
read: results.read[0] || isAdminOrMod,
view_thread_tools: editable || deletable,
editable: editable,
deletable: deletable,
@ -57,9 +62,7 @@ module.exports = function(privileges) {
isAdminOrMod: isAdminOrMod,
disabled: disabled,
tid: tid,
uid: uid,
'posts:edit': (results['posts:edit'][0] && !locked) || isAdminOrMod,
'posts:delete': (results['posts:delete'][0] && !locked) || isAdminOrMod
uid: uid
}, callback);
});
};

@ -205,6 +205,10 @@ module.exports = function(Topics) {
return next(new Error('[[error:topic-locked]]'));
}
if (parseInt(results.topicData.deleted, 10) === 1 && !results.isAdminOrMod) {
return next(new Error('[[error:topic-deleted]]'));
}
if (!results.canReply) {
return next(new Error('[[error:no-privileges]]'));
}

@ -145,7 +145,7 @@ module.exports = function(Topics) {
post.display_delete_tools = topicPrivileges.isAdminOrMod || (post.selfPost && topicPrivileges['posts:delete']);
post.display_moderator_tools = post.display_edit_tools || post.display_delete_tools;
post.display_move_tools = topicPrivileges.isAdminOrMod && post.index !== 0;
post.display_post_menu = topicPrivileges.isAdminOrMod || post.selfPost || ((loggedIn || topicData.postSharing.length) && !post.deleted);
post.display_post_menu = topicPrivileges.isAdminOrMod || (post.selfPost && !topicData.locked) || ((loggedIn || topicData.postSharing.length) && !post.deleted);
post.ip = topicPrivileges.isAdminOrMod ? post.ip : undefined;
if (post.deleted && !(topicPrivileges.isAdminOrMod || post.selfPost)) {

Loading…
Cancel
Save