Class: CategorySerializer

Inherits:
SiteCategorySerializer show all
Defined in:
app/serializers/category_serializer.rb

Direct Known Subclasses

WebHookCategorySerializer

Defined Under Namespace

Classes: CategorySettingSerializer

Instance Method Summary collapse

Methods inherited from SiteCategorySerializer

#allowed_tag_groups, #allowed_tags, #form_template_ids, #include_allow_global_tags?, #include_allowed_tag_groups?, #include_allowed_tags?, #include_required_tag_groups?

Methods inherited from BasicCategorySerializer

#can_edit, #description, #description_excerpt, #description_text, #include_can_edit?, #include_parent_category_id?, #name

Methods inherited from ApplicationSerializer

expire_cache_fragment!, fragment_cache

Methods inherited from ActiveModel::Serializer

#include!

Instance Method Details

#available_groupsObject



76
77
78
# File 'app/serializers/category_serializer.rb', line 76

def available_groups
  Group.order(:name).pluck(:name) - group_permissions.map { |g| g[:group_name] }
end

#can_deleteObject



80
81
82
# File 'app/serializers/category_serializer.rb', line 80

def can_delete
  true
end

#custom_fieldsObject



123
124
125
# File 'app/serializers/category_serializer.rb', line 123

def custom_fields
  object.custom_fields
end

#group_permissionsObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/serializers/category_serializer.rb', line 46

def group_permissions
  @group_permissions ||=
    begin
      perms =
        object
          .category_groups
          .joins(:group)
          .includes(:group)
          .merge(Group.visible_groups(scope&.user, "groups.name ASC", include_everyone: true))
          .map { |cg| { permission_type: cg.permission_type, group_name: cg.group.name } }

      if perms.length == 0 && !object.read_restricted
        perms << {
          permission_type: CategoryGroup.permission_types[:full],
          group_name: Group[:everyone]&.name.presence || :everyone,
        }
      end

      perms
    end
end

#include_available_groups?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'app/serializers/category_serializer.rb', line 72

def include_available_groups?
  scope && scope.can_edit?(object)
end

#include_can_delete?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'app/serializers/category_serializer.rb', line 96

def include_can_delete?
  scope && scope.can_delete?(object)
end

#include_cannot_delete_reason?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'app/serializers/category_serializer.rb', line 100

def include_cannot_delete_reason?
  !include_can_delete? && scope && scope.can_edit?(object)
end

#include_category_setting?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/serializers/category_serializer.rb', line 42

def include_category_setting?
  object.association(:category_setting).loaded?
end

#include_custom_fields?Boolean

Returns:

  • (Boolean)


127
128
129
# File 'app/serializers/category_serializer.rb', line 127

def include_custom_fields?
  true
end

#include_email_in?Boolean

Returns:

  • (Boolean)


104
105
106
# File 'app/serializers/category_serializer.rb', line 104

def include_email_in?
  scope && scope.can_edit?(object)
end

#include_email_in_allow_strangers?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'app/serializers/category_serializer.rb', line 108

def include_email_in_allow_strangers?
  scope && scope.can_edit?(object)
end

#include_group_permissions?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'app/serializers/category_serializer.rb', line 68

def include_group_permissions?
  scope&.can_edit?(object)
end

#include_is_special?Boolean

Returns:

  • (Boolean)


84
85
86
87
88
89
90
# File 'app/serializers/category_serializer.rb', line 84

def include_is_special?
  [
    SiteSetting.meta_category_id,
    SiteSetting.staff_category_id,
    SiteSetting.uncategorized_category_id,
  ].include? object.id
end

#include_notification_level?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'app/serializers/category_serializer.rb', line 112

def include_notification_level?
  scope && scope.user
end

#include_reviewable_by_group_name?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/serializers/category_serializer.rb', line 38

def include_reviewable_by_group_name?
  SiteSetting.enable_category_group_moderation? && object.reviewable_by_group_id.present?
end

#is_specialObject



92
93
94
# File 'app/serializers/category_serializer.rb', line 92

def is_special
  true
end

#notification_levelObject



116
117
118
119
120
121
# File 'app/serializers/category_serializer.rb', line 116

def notification_level
  user = scope && scope.user
  object.notification_level ||
    (user && CategoryUser.where(user: user, category: object).first.try(:notification_level)) ||
    CategoryUser.default_notification_level
end

#reviewable_by_group_nameObject



34
35
36
# File 'app/serializers/category_serializer.rb', line 34

def reviewable_by_group_name
  object.reviewable_by_group.name
end