v1.18.x
Andrew Rodrigues 7 years ago
parent 560e63c97a
commit 12940b577b

@ -19,6 +19,7 @@
"parent-category-none": "(None)",
"copy-settings": "Copy Settings From",
"optional-clone-settings": "(Optional) Clone Settings From Category",
"clone-children": "Clone Children Categories And Settings",
"purge": "Purge Category",
"enable": "Enable",

@ -78,12 +78,25 @@ define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-seri
var formData = modal.find('form').serializeObject();
formData.description = '';
formData.icon = 'fa-comments';
formData.uid = app.user.uid;
Categories.create(formData);
modal.modal('hide');
return false;
}
$('#cloneChildren').on('change', function () {
var check = $(this);
var parentSelect = $('#parentCid');
if (check.prop('checked')) {
parentSelect.attr('disabled', 'disabled');
parentSelect.val('');
} else {
parentSelect.removeAttr('disabled');
}
});
modal.find('form').on('submit', submit);
});
});

@ -84,10 +84,24 @@ module.exports = function (Categories) {
], next);
},
function (results, next) {
if (data.cloneFromCid && parseInt(data.cloneFromCid, 10)) {
return Categories.copySettingsFrom(data.cloneFromCid, category.cid, !data.parentCid, next);
}
next(null, category);
async.series([
function (next) {
if (data.cloneFromCid && parseInt(data.cloneFromCid, 10)) {
return Categories.copySettingsFrom(data.cloneFromCid, category.cid, !data.parentCid, next);
}
next();
},
function (next) {
if (data.cloneChildren) {
return duplicateCategoriesChildren(category.cid, data.cloneFromCid, data.uid, next);
}
next();
},
], function (err) {
next(err, category);
});
},
function (category, next) {
plugins.fireHook('action:category.create', { category: category });
@ -96,6 +110,25 @@ module.exports = function (Categories) {
], callback);
};
function duplicateCategoriesChildren(parentCid, cid, uid, callback) {
Categories.getChildren([cid], uid, function (err, children) {
if (err || !children.length) {
return callback(err);
}
children = children[0];
children.forEach(function (child) {
child.parentCid = parentCid;
child.cloneFromCid = child.cid;
child.cloneChildren = true;
child.uid = uid;
});
async.each(children, Categories.create, callback);
});
}
Categories.assignColours = function () {
var backgrounds = ['#AB4642', '#DC9656', '#F7CA88', '#A1B56C', '#86C1B9', '#7CAFC2', '#BA8BAF', '#A16946'];
var text = ['#fff', '#fff', '#333', '#fff', '#333', '#fff', '#fff', '#fff'];

@ -21,5 +21,10 @@
<option value="{categories.cid}">{categories.name}</option>
<!-- END categories -->
</select>
<label>
<input id="cloneChildren" name="cloneChildren" type="checkbox">
<strong>[[admin/manage/categories:clone-children]]</strong>
</label>
</div>
</form>
Loading…
Cancel
Save