From 01555cbb5c4d118232ab74290514e25c428544f8 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 16 Apr 2014 14:30:36 -0400 Subject: [PATCH] return privileges in category --- public/src/forum/category.js | 11 +++++++---- src/controllers/categories.js | 14 +++++++------- src/socket.io/categories.js | 26 ++++++++++++++++++++++---- 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/public/src/forum/category.js b/public/src/forum/category.js index adb5bc34c7..8acd9543ce 100644 --- a/public/src/forum/category.js +++ b/public/src/forum/category.js @@ -225,11 +225,13 @@ define(['composer', 'forum/pagination', 'share', 'navigator'], function(composer }); } - Category.onTopicsLoaded = function(topics, callback) { - if(!topics || !topics.length) { + Category.onTopicsLoaded = function(data, callback) { + if(!data || !data.topics.length) { return; } + var topics = data.topics; + function removeAlreadyAddedTopics() { topics = topics.filter(function(topic) { return $('#topics-container li[data-tid="' + topic.tid +'"]').length === 0; @@ -261,7 +263,7 @@ define(['composer', 'forum/pagination', 'share', 'navigator'], function(composer findInsertionPoint(); ajaxify.loadTemplate('category', function(categoryTemplate) { - var html = templates.parse(templates.getBlock(categoryTemplate, 'topics'), {topics: topics}); + var html = templates.parse(templates.getBlock(categoryTemplate, 'topics'), data); translator.translate(html, function(translatedHTML) { var container = $('#topics-container'), @@ -309,6 +311,7 @@ define(['composer', 'forum/pagination', 'share', 'navigator'], function(composer cid: cid, after: after }, function (err, data) { + console.log(data); loadingMoreTopics = false; if(err) { @@ -316,7 +319,7 @@ define(['composer', 'forum/pagination', 'share', 'navigator'], function(composer } if (data && data.topics.length) { - Category.onTopicsLoaded(data.topics, callback); + Category.onTopicsLoaded(data, callback); $('#topics-container').attr('data-nextstart', data.nextStart); } else { diff --git a/src/controllers/categories.js b/src/controllers/categories.js index f30dcc13b3..07f6bf9ab0 100644 --- a/src/controllers/categories.js +++ b/src/controllers/categories.js @@ -68,14 +68,14 @@ categoriesController.get = function(req, res, next) { async.waterfall([ function(next) { categoryTools.privileges(cid, uid, function(err, categoryPrivileges) { - if (!err) { - if (!categoryPrivileges.read) { - next(new Error('[[error:no-privileges]]')); - } else { - next(null, categoryPrivileges); - } + if (err) { + return next(err); + } + + if (!categoryPrivileges.read) { + next(new Error('[[error:no-privileges]]')); } else { - next(err); + next(null, categoryPrivileges); } }); }, diff --git a/src/socket.io/categories.js b/src/socket.io/categories.js index 80af126f29..3687424bd5 100644 --- a/src/socket.io/categories.js +++ b/src/socket.io/categories.js @@ -1,6 +1,7 @@ 'use strict'; -var categories = require('../categories'), +var async = require('async'), + categories = require('../categories'), categoryTools = require('../categoryTools'), meta = require('./../meta'), user = require('./../user'), @@ -30,12 +31,29 @@ SocketCategories.loadMore = function(socket, data, callback) { return callback(new Error('[[error:invalid-data]]')); } - user.getSettings(socket.uid, function(err, settings) { + async.parallel({ + privileges: function(next) { + categoryTools.privileges(data.cid, socket.uid, next); + }, + settings: function(next) { + user.getSettings(socket.uid, next); + } + }, function(err, results) { + if (err) { + return callback(err); + } var start = parseInt(data.after, 10), - end = start + settings.topicsPerPage - 1; + end = start + results.settings.topicsPerPage - 1; + + categories.getCategoryTopics(data.cid, start, end, socket.uid, function(err, data) { + if (err) { + return callback(err); + } - categories.getCategoryTopics(data.cid, start, end, socket.uid, callback); + data.privileges = results.privileges; + callback(null, data); + }); }); };