Merge remote-tracking branch 'origin/master' into grunt-dev

v1.18.x
psychobunny 10 years ago
commit 7fe8180cf4

@ -1,10 +1,19 @@
'use strict';
/* globals define, socket, app */
define('forum/notifications', function() {
var Notifications = {};
Notifications.init = function() {
var listEl = $('.notifications-list');
listEl.on('click', 'li', function(e) {
this.querySelector('a').click();
listEl.on('click', 'a', function(e) {
var nid = $(this).parents('[data-nid]').attr('data-nid');
socket.emit('notifications.markRead', nid, function(err) {
if (err) {
return app.alertError(err);
}
});
});
$('span.timeago').timeago();
@ -20,8 +29,7 @@ define('forum/notifications', function() {
listEl.empty();
});
});
}
};
return Notifications;
});

@ -16,6 +16,7 @@ var async = require('async'),
helpers = require('./helpers');
var Controllers = {
posts: require('./posts'),
topics: require('./topics'),
categories: require('./categories'),
tags: require('./tags'),

@ -0,0 +1,36 @@
"use strict";
var async = require('async'),
posts = require('../posts'),
privileges = require('../privileges'),
helpers = require('./helpers'),
postsController = {};
postsController.getPost = function(req, res, next) {
var uid = req.user ? parseInt(req.user.uid) : 0;
async.parallel({
canRead: function(next) {
privileges.posts.can('read', req.params.pid, uid, next);
},
postData: function(next) {
posts.getPostData(req.params.pid, next);
}
}, function(err, results) {
if (err) {
return next(err);
}
if (!results.postData) {
return helpers.notFound(req, res);
}
if (!results.canRead) {
return helpers.notAllowed(req, res);
}
res.json(results.postData);
});
};
module.exports = postsController;

@ -13,9 +13,6 @@ module.exports = function(Posts) {
},
function(tid, next) {
topics.getTopicField(tid, 'cid', next);
},
function(cid, next) {
next(!cid ? new Error('[[error:invalid-cid]]') : null, cid);
}
], callback);
};

@ -46,6 +46,9 @@ module.exports = function(privileges) {
};
privileges.categories.can = function(privilege, cid, uid, callback) {
if (!cid) {
return callback(null, false);
}
categories.getCategoryField(cid, 'disabled', function(err, disabled) {
if (err) {
return callback(err);

@ -153,9 +153,10 @@ module.exports = function(privileges) {
helpers.some([
function(next) {
posts.getCidByPid(pid, function(err, cid) {
if (err) {
return next(err);
if (err || !cid) {
return next(err, false);
}
user.isModerator(uid, cid, next);
});
},

@ -16,6 +16,7 @@ module.exports = function(app, middleware, controllers) {
router.get('/widgets/render', controllers.api.renderWidgets);
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID);
router.get('/post/:pid', controllers.posts.getPost);
router.get('/get_templates_listing', templatesController.getTemplatesListing);
router.get('/categories/:cid/moderators', getModerators);
router.get('/recent/posts/:term?', getRecentPosts);

@ -113,12 +113,18 @@ Categories.setGroupPrivilege = function(socket, data, callback) {
Categories.groupsList = function(socket, cid, callback) {
groups.list({
expand: false,
isAdmin: true,
showSystemGroups: true
}, function(err, data) {
if(err) {
return callback(err);
}
// Remove privilege groups
data = data.filter(function(groupObj) {
return groupObj.name.indexOf(':privileges:') === -1;
});
async.map(data, function(groupObj, next) {
privileges.categories.groupPrivileges(cid, groupObj.name, function(err, privileges) {
if(err) {

@ -41,6 +41,10 @@ module.exports = function(Topics) {
posts.getCidByPid(mainPid, callback);
}
}, function(err, results) {
if (err) {
return callback(err);
}
Topics.create({uid: results.postData.uid, title: title, cid: results.cid}, function(err, tid) {
if (err) {
return callback(err);

@ -53,9 +53,9 @@
<!-- BEGIN scripts -->
<script type="text/javascript" src="{scripts.src}"></script>
<!-- END scripts -->
</head>
</head>
<body class="admin">
<body class="admin">
<nav class="navbar navbar-inverse navbar-fixed-top header">
<div class="container">
<div class="navbar-header">

Loading…
Cancel
Save