mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Don't allow parent categories to be deleted. Also, remove
duplicated logic and rely on the server response for `can_delete` status.
This commit is contained in:
@@ -58,10 +58,6 @@ Discourse.EditCategoryController = Discourse.ObjectController.extend(Discourse.M
|
||||
return false;
|
||||
}.property('saving', 'name', 'color', 'deleting'),
|
||||
|
||||
deleteVisible: function() {
|
||||
return (this.get('id') && this.get('topic_count') === 0 && !this.get("isUncategorizedCategory"));
|
||||
}.property('id', 'topic_count'),
|
||||
|
||||
deleteDisabled: function() {
|
||||
return (this.get('deleting') || this.get('saving') || false);
|
||||
}.property('disabled', 'saving', 'deleting'),
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class='btn btn-primary' {{bind-attr disabled="disabled"}} {{action saveCategory}}>{{buttonTitle}}</button>
|
||||
{{#if deleteVisible}}
|
||||
{{#if can_delete}}
|
||||
<button class='btn btn-danger pull-right' {{bind-attr disabled="deleteDisabled"}} {{action deleteCategory}}><i class="fa fa-trash-o"></i>{{deleteButtonTitle}}</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
@@ -350,6 +350,10 @@ SQL
|
||||
self.where(id: slug.to_i, parent_category_id: parent_category_id).includes(:featured_users).first
|
||||
end
|
||||
|
||||
def has_children?
|
||||
id && Category.where(parent_category_id: id).exists?
|
||||
end
|
||||
|
||||
def uncategorized?
|
||||
id == SiteSetting.uncategorized_category_id
|
||||
end
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
class CategorySerializer < BasicCategorySerializer
|
||||
|
||||
attributes :read_restricted, :available_groups, :auto_close_hours, :group_permissions, :position
|
||||
attributes :read_restricted,
|
||||
:available_groups,
|
||||
:auto_close_hours,
|
||||
:group_permissions,
|
||||
:position,
|
||||
:can_delete
|
||||
|
||||
def group_permissions
|
||||
@group_permissions ||= begin
|
||||
@@ -21,4 +26,13 @@ class CategorySerializer < BasicCategorySerializer
|
||||
Group.order(:name).pluck(:name) - group_permissions.map{|g| g[:group_name]}
|
||||
end
|
||||
|
||||
|
||||
def can_delete
|
||||
true
|
||||
end
|
||||
|
||||
def include_can_delete?
|
||||
scope && scope.can_delete?(object)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user