diff --git a/src/categories/create.js b/src/categories/create.js index f6338f8ef2..82a317270b 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -62,7 +62,7 @@ module.exports = function(Categories) { }, function(results, next) { if (data.cloneFromCid && parseInt(data.cloneFromCid, 10)) { - return Categories.copySettingsFrom(data.cloneFromCid, category.cid, next); + return Categories.copySettingsFrom(data.cloneFromCid, category.cid, !data.parentCid, next); } next(null, category); }, @@ -81,7 +81,7 @@ module.exports = function(Categories) { return [backgrounds[index], text[index]]; }; - Categories.copySettingsFrom = function(fromCid, toCid, callback) { + Categories.copySettingsFrom = function(fromCid, toCid, copyParent, callback) { var destination; async.waterfall([ function (next) { @@ -97,11 +97,11 @@ module.exports = function(Categories) { destination = results.destination; var tasks = []; - if (utils.isNumber(results.source.parentCid)) { + if (copyParent && utils.isNumber(results.source.parentCid)) { tasks.push(async.apply(db.sortedSetAdd, 'cid:' + results.source.parentCid + ':children', results.source.order, toCid)); } - if (destination && utils.isNumber(destination.parentCid)) { + if (copyParent && destination && utils.isNumber(destination.parentCid)) { tasks.push(async.apply(db.sortedSetRemove, 'cid:' + destination.parentCid + ':children', toCid)); } @@ -114,8 +114,11 @@ module.exports = function(Categories) { destination.numRecentReplies = results.source.numRecentReplies; destination.class = results.source.class; destination.imageClass = results.source.imageClass; - destination.parentCid = results.source.parentCid || 0; - + + if (copyParent) { + destination.parentCid = results.source.parentCid || 0; + } + tasks.push(async.apply(db.setObject, 'category:' + toCid, destination)); async.series(tasks, next); diff --git a/src/socket.io/admin/categories.js b/src/socket.io/admin/categories.js index b2186b9e3d..8e24359e7a 100644 --- a/src/socket.io/admin/categories.js +++ b/src/socket.io/admin/categories.js @@ -96,7 +96,7 @@ function copyPrivilegesToChildrenRecursive(parentCid, category, callback) { } Categories.copySettingsFrom = function(socket, data, callback) { - categories.copySettingsFrom(data.fromCid, data.toCid, callback); + categories.copySettingsFrom(data.fromCid, data.toCid, true, callback); }; Categories.copyPrivilegesFrom = function(socket, data, callback) {