v1.18.x
barisusakli 9 years ago
parent 29e87ac984
commit cf889b70bd

@ -15,7 +15,7 @@ define('forum/topic/move', function() {
Move.onComplete = onComplete;
Move.moveAll = tids ? false : true;
socket.emit('categories.get', onCategoriesLoaded);
socket.emit('categories.getMoveCategories', onCategoriesLoaded);
};
function onCategoriesLoaded(err, categories) {
@ -23,8 +23,7 @@ define('forum/topic/move', function() {
return app.alertError(err.message);
}
parseModal(categories, function(html) {
modal = $(html);
parseModal(categories, function() {
modal.on('hidden.bs.modal', function() {
modal.remove();
@ -36,7 +35,7 @@ define('forum/topic/move', function() {
modal.find('.modal-header h3').translateText('[[topic:move_topics]]');
}
modal.on('click', '.category-list li[data-cid]', function(e) {
modal.on('click', '.category-list li[data-cid]', function() {
selectCategory($(this));
});
@ -47,8 +46,41 @@ define('forum/topic/move', function() {
}
function parseModal(categories, callback) {
templates.parse('partials/move_thread_modal', {categories: categories}, function(html) {
translator.translate(html, callback);
templates.parse('partials/move_thread_modal', {categories: []}, function(html) {
translator.translate(html, function(html) {
modal = $(html);
categories.forEach(function(category) {
if (!category.link) {
buildRecursive(modal.find('.category-list'), category, '');
}
});
callback();
});
});
}
function buildRecursive(parentEl, category, level) {
var categoryEl = $('<li/>');
if (category.bgColor) {
categoryEl.css('background-color', category.bgColor);
}
if (category.color) {
categoryEl.css('color', category.color);
}
categoryEl.toggleClass('disabled', !!category.disabled);
categoryEl.attr('data-cid', category.cid);
categoryEl.html('<i class="fa fa-fw ' + category.icon + '"></i> ' + category.name);
parentEl.append(level);
parentEl.append(categoryEl);
parentEl.append('<br/>');
var indent = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
category.children.forEach(function(childCategory) {
if (!childCategory.link) {
buildRecursive(parentEl, childCategory, indent + level);
}
});
}

@ -1,14 +1,14 @@
'use strict';
var async = require('async'),
db = require('../database'),
categories = require('../categories'),
privileges = require('../privileges'),
user = require('../user'),
topics = require('../topics'),
websockets = require('./index'),
var async = require('async');
var db = require('../database');
var categories = require('../categories');
var privileges = require('../privileges');
var user = require('../user');
var topics = require('../topics');
SocketCategories = {};
var SocketCategories = {};
SocketCategories.getRecentReplies = function(socket, cid, callback) {
categories.getRecentReplies(cid, socket.uid, 4, callback);
@ -141,6 +141,32 @@ SocketCategories.getCategoriesByPrivilege = function(socket, privilege, callback
categories.getCategoriesByPrivilege('categories:cid', socket.uid, privilege, callback);
};
SocketCategories.getMoveCategories = function(socket, data, callback) {
async.parallel({
isAdmin: async.apply(user.isAdministrator, socket.uid),
categories: function(next) {
async.waterfall([
function (next) {
db.getSortedSetRange('cid:0:children', 0, -1, next);
},
function (cids, next) {
categories.getCategories(cids, socket.uid, next);
}
], next);
}
}, function(err, results) {
if (err) {
return callback(err);
}
results.categories = results.categories.filter(function(category) {
return category && (!category.disabled || results.isAdmin) && !category.link;
});
callback(null, results.categories);
});
};
SocketCategories.watch = function(socket, cid, callback) {
user.watchCategory(socket.uid, cid, function(err) {
if (err) {

Loading…
Cancel
Save