mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-28 17:46:16 +01:00
fix: #8221, fix parent selection
This commit is contained in:
@@ -281,35 +281,40 @@ define('admin/manage/category', [
|
|||||||
}
|
}
|
||||||
|
|
||||||
Category.launchParentSelector = function () {
|
Category.launchParentSelector = function () {
|
||||||
var parents = [parseInt(ajaxify.data.category.cid, 10)];
|
socket.emit('categories.getSelectCategories', {}, function (err, allCategories) {
|
||||||
var categories = ajaxify.data.allCategories.filter(function (category) {
|
if (err) {
|
||||||
var isChild = parents.includes(parseInt(category.parentCid, 10));
|
return app.alertError(err.message);
|
||||||
if (isChild) {
|
|
||||||
parents.push(parseInt(category.cid, 10));
|
|
||||||
}
|
}
|
||||||
return category && !category.disabled && parseInt(category.cid, 10) !== parseInt(ajaxify.data.category.cid, 10) && !isChild;
|
var parents = [parseInt(ajaxify.data.category.cid, 10)];
|
||||||
});
|
var categories = allCategories.filter(function (category) {
|
||||||
|
var isChild = parents.includes(parseInt(category.parentCid, 10));
|
||||||
categorySelector.modal(categories, function (parentCid) {
|
if (isChild) {
|
||||||
var payload = {};
|
parents.push(parseInt(category.cid, 10));
|
||||||
|
|
||||||
payload[ajaxify.data.category.cid] = {
|
|
||||||
parentCid: parentCid,
|
|
||||||
};
|
|
||||||
|
|
||||||
socket.emit('admin.categories.update', payload, function (err) {
|
|
||||||
if (err) {
|
|
||||||
return app.alertError(err.message);
|
|
||||||
}
|
}
|
||||||
var parent = ajaxify.data.allCategories.filter(function (category) {
|
return category && !category.disabled && parseInt(category.cid, 10) !== parseInt(ajaxify.data.category.cid, 10) && !isChild;
|
||||||
return category && parseInt(category.cid, 10) === parseInt(parentCid, 10);
|
});
|
||||||
});
|
|
||||||
parent = parent[0];
|
|
||||||
|
|
||||||
$('button[data-action="removeParent"]').parent().removeClass('hide');
|
categorySelector.modal(categories, function (parentCid) {
|
||||||
$('button[data-action="setParent"]').addClass('hide');
|
var payload = {};
|
||||||
var buttonHtml = '<i class="fa ' + parent.icon + '"></i> ' + parent.name;
|
|
||||||
$('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide');
|
payload[ajaxify.data.category.cid] = {
|
||||||
|
parentCid: parentCid,
|
||||||
|
};
|
||||||
|
|
||||||
|
socket.emit('admin.categories.update', payload, function (err) {
|
||||||
|
if (err) {
|
||||||
|
return app.alertError(err.message);
|
||||||
|
}
|
||||||
|
var parent = allCategories.filter(function (category) {
|
||||||
|
return category && parseInt(category.cid, 10) === parseInt(parentCid, 10);
|
||||||
|
});
|
||||||
|
parent = parent[0];
|
||||||
|
|
||||||
|
$('button[data-action="removeParent"]').parent().removeClass('hide');
|
||||||
|
$('button[data-action="setParent"]').addClass('hide');
|
||||||
|
var buttonHtml = '<i class="fa ' + parent.icon + '"></i> ' + parent.name;
|
||||||
|
$('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user