Class: SiteSerializer
- Inherits:
-
ApplicationSerializer
- Object
- ActiveModel::Serializer
- ApplicationSerializer
- SiteSerializer
- Includes:
- NavigationMenuTagsMixin
- Defined in:
- app/serializers/site_serializer.rb
Constant Summary collapse
- SIDEBAR_TOP_TAGS_TO_SHOW =
5
Instance Method Summary collapse
- #anonymous_default_navigation_menu_tags ⇒ Object
- #anonymous_sidebar_sections ⇒ Object
- #anonymous_top_menu_items ⇒ Object
- #can_associate_groups ⇒ Object
- #can_create_tag ⇒ Object
- #can_tag_pms ⇒ Object
- #can_tag_topics ⇒ Object
- #categories ⇒ Object
- #censored_regexp ⇒ Object
- #custom_emoji_translation ⇒ Object
- #default_archetype ⇒ Object
- #default_dark_color_scheme ⇒ Object
- #denied_emojis ⇒ Object
- #displayed_about_plugin_stat_groups ⇒ Object
- #filters ⇒ Object
- #groups ⇒ Object
- #hashtag_configurations ⇒ Object
- #hashtag_icons ⇒ Object
- #include_anonymous_default_navigation_menu_tags? ⇒ Boolean
- #include_anonymous_sidebar_sections? ⇒ Boolean
- #include_can_associate_groups? ⇒ Boolean
- #include_denied_emojis? ⇒ Boolean
- #include_navigation_menu_site_top_tags? ⇒ Boolean
- #include_privacy_policy_url? ⇒ Boolean
- #include_shared_drafts_category_id? ⇒ Boolean
- #include_tags_filter_regexp? ⇒ Boolean
- #include_top_tags? ⇒ Boolean
- #include_topic_featured_link_allowed_category_ids? ⇒ Boolean
- #include_tos_url? ⇒ Boolean
- #include_user_tips? ⇒ Boolean
- #include_whispers_allowed_groups_names? ⇒ Boolean
- #include_wizard_required? ⇒ Boolean
- #markdown_additional_options ⇒ Object
- #navigation_menu_site_top_tags ⇒ Object
- #periods ⇒ Object
- #post_action_types ⇒ Object
- #post_types ⇒ Object
- #privacy_policy_url ⇒ Object
- #shared_drafts_category_id ⇒ Object
- #tags_filter_regexp ⇒ Object
- #top_menu_items ⇒ Object
- #top_tags ⇒ Object
- #topic_featured_link_allowed_category_ids ⇒ Object
- #topic_flag_types ⇒ Object
- #tos_url ⇒ Object
- #uncategorized_category_id ⇒ Object
- #user_color_schemes ⇒ Object
- #user_field_max_length ⇒ Object
- #user_themes ⇒ Object
- #user_tips ⇒ Object
- #watched_words_link ⇒ Object
- #watched_words_replace ⇒ Object
- #whispers_allowed_groups_names ⇒ Object
- #wizard_required ⇒ Object
Methods included from NavigationMenuTagsMixin
Methods inherited from ApplicationSerializer
expire_cache_fragment!, fragment_cache
Methods inherited from ActiveModel::Serializer
Instance Method Details
#anonymous_default_navigation_menu_tags ⇒ Object
274 275 276 277 278 279 280 281 282 283 |
# File 'app/serializers/site_serializer.rb', line 274 def @anonymous_default_navigation_menu_tags ||= begin tag_names = SiteSetting..split("|") - DiscourseTagging.hidden_tag_names(scope) (Tag.where(name: tag_names)) end end |
#anonymous_sidebar_sections ⇒ Object
291 292 293 294 295 296 297 |
# File 'app/serializers/site_serializer.rb', line 291 def SidebarSection .public_sections .includes(:sidebar_urls) .order("(section_type IS NOT NULL) DESC, (public IS TRUE) DESC") .map { |section| SidebarSectionSerializer.new(section, root: false) } end |
#anonymous_top_menu_items ⇒ Object
148 149 150 |
# File 'app/serializers/site_serializer.rb', line 148 def Discourse..map(&:to_s) end |
#can_associate_groups ⇒ Object
172 173 174 |
# File 'app/serializers/site_serializer.rb', line 172 def can_associate_groups scope.can_associate_groups? end |
#can_create_tag ⇒ Object
160 161 162 |
# File 'app/serializers/site_serializer.rb', line 160 def can_create_tag scope.can_create_tag? end |
#can_tag_pms ⇒ Object
168 169 170 |
# File 'app/serializers/site_serializer.rb', line 168 def can_tag_pms scope.can_tag_pms? end |
#can_tag_topics ⇒ Object
164 165 166 |
# File 'app/serializers/site_serializer.rb', line 164 def can_tag_topics scope.can_tag_topics? end |
#categories ⇒ Object
236 237 238 |
# File 'app/serializers/site_serializer.rb', line 236 def categories object.categories.map { |c| c.to_h } end |
#censored_regexp ⇒ Object
212 213 214 |
# File 'app/serializers/site_serializer.rb', line 212 def censored_regexp WordWatcher.serializable_word_matcher_regexp(:censor, engine: :js) end |
#custom_emoji_translation ⇒ Object
216 217 218 |
# File 'app/serializers/site_serializer.rb', line 216 def custom_emoji_translation Plugin::CustomEmoji.translations end |
#default_archetype ⇒ Object
120 121 122 |
# File 'app/serializers/site_serializer.rb', line 120 def default_archetype Archetype.default end |
#default_dark_color_scheme ⇒ Object
83 84 85 |
# File 'app/serializers/site_serializer.rb', line 83 def default_dark_color_scheme ColorScheme.find_by_id(SiteSetting.default_dark_mode_color_scheme_id).as_json end |
#denied_emojis ⇒ Object
311 312 313 |
# File 'app/serializers/site_serializer.rb', line 311 def denied_emojis @denied_emojis ||= Emoji.denied end |
#displayed_about_plugin_stat_groups ⇒ Object
252 253 254 |
# File 'app/serializers/site_serializer.rb', line 252 def displayed_about_plugin_stat_groups About.displayed_plugin_stat_groups end |
#filters ⇒ Object
136 137 138 |
# File 'app/serializers/site_serializer.rb', line 136 def filters Discourse.filters.map(&:to_s) end |
#groups ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'app/serializers/site_serializer.rb', line 87 def groups cache_anon_fragment("group_names") do object .groups .order(:name) .select(:id, :name, :flair_icon, :flair_upload_id, :flair_bg_color, :flair_color) .map do |g| { id: g.id, name: g.name, flair_url: g.flair_url, flair_bg_color: g.flair_bg_color, flair_color: g.flair_color, } end .as_json end end |
#hashtag_configurations ⇒ Object
244 245 246 |
# File 'app/serializers/site_serializer.rb', line 244 def hashtag_configurations HashtagAutocompleteService.contexts_with_ordered_types end |
#hashtag_icons ⇒ Object
248 249 250 |
# File 'app/serializers/site_serializer.rb', line 248 def hashtag_icons HashtagAutocompleteService.data_source_icon_map end |
#include_anonymous_default_navigation_menu_tags? ⇒ Boolean
285 286 287 288 289 |
# File 'app/serializers/site_serializer.rb', line 285 def scope.anonymous? && !SiteSetting. && SiteSetting.tagging_enabled && SiteSetting..present? && .present? end |
#include_anonymous_sidebar_sections? ⇒ Boolean
299 300 301 |
# File 'app/serializers/site_serializer.rb', line 299 def scope.anonymous? end |
#include_can_associate_groups? ⇒ Boolean
176 177 178 |
# File 'app/serializers/site_serializer.rb', line 176 def include_can_associate_groups? scope.is_admin? end |
#include_denied_emojis? ⇒ Boolean
315 316 317 |
# File 'app/serializers/site_serializer.rb', line 315 def include_denied_emojis? denied_emojis.present? end |
#include_navigation_menu_site_top_tags? ⇒ Boolean
270 271 272 |
# File 'app/serializers/site_serializer.rb', line 270 def !SiteSetting. && SiteSetting.tagging_enabled end |
#include_privacy_policy_url? ⇒ Boolean
331 332 333 |
# File 'app/serializers/site_serializer.rb', line 331 def include_privacy_policy_url? privacy_policy_url.present? end |
#include_shared_drafts_category_id? ⇒ Boolean
224 225 226 |
# File 'app/serializers/site_serializer.rb', line 224 def include_shared_drafts_category_id? scope.can_see_shared_draft? && SiteSetting.shared_drafts_enabled? end |
#include_tags_filter_regexp? ⇒ Boolean
180 181 182 |
# File 'app/serializers/site_serializer.rb', line 180 def SiteSetting.tagging_enabled end |
#include_top_tags? ⇒ Boolean
188 189 190 |
# File 'app/serializers/site_serializer.rb', line 188 def Tag. end |
#include_topic_featured_link_allowed_category_ids? ⇒ Boolean
204 205 206 |
# File 'app/serializers/site_serializer.rb', line 204 def include_topic_featured_link_allowed_category_ids? SiteSetting.topic_featured_link_enabled end |
#include_tos_url? ⇒ Boolean
323 324 325 |
# File 'app/serializers/site_serializer.rb', line 323 def include_tos_url? tos_url.present? end |
#include_user_tips? ⇒ Boolean
132 133 134 |
# File 'app/serializers/site_serializer.rb', line 132 def include_user_tips? SiteSetting.enable_user_tips end |
#include_whispers_allowed_groups_names? ⇒ Boolean
307 308 309 |
# File 'app/serializers/site_serializer.rb', line 307 def include_whispers_allowed_groups_names? scope.can_see_whispers? end |
#include_wizard_required? ⇒ Boolean
200 201 202 |
# File 'app/serializers/site_serializer.rb', line 200 def include_wizard_required? Wizard.user_requires_completion?(scope.user) end |
#markdown_additional_options ⇒ Object
240 241 242 |
# File 'app/serializers/site_serializer.rb', line 240 def Site. end |
#navigation_menu_site_top_tags ⇒ Object
258 259 260 261 262 263 264 265 266 267 268 |
# File 'app/serializers/site_serializer.rb', line 258 def if .present? tag_names = [0...SIDEBAR_TOP_TAGS_TO_SHOW] serialized = (Tag.where(name: tag_names)) # Ensures order of top tags is preserved serialized.sort_by { |tag| tag_names.index(tag[:name]) } else [] end end |
#periods ⇒ Object
140 141 142 |
# File 'app/serializers/site_serializer.rb', line 140 def periods TopTopic.periods.map(&:to_s) end |
#post_action_types ⇒ Object
106 107 108 109 110 111 |
# File 'app/serializers/site_serializer.rb', line 106 def post_action_types cache_fragment("post_action_types_#{I18n.locale}") do types = ordered_flags(PostActionType.types.values) ActiveModel::ArraySerializer.new(types).as_json end end |
#post_types ⇒ Object
124 125 126 |
# File 'app/serializers/site_serializer.rb', line 124 def post_types Post.types end |
#privacy_policy_url ⇒ Object
327 328 329 |
# File 'app/serializers/site_serializer.rb', line 327 def privacy_policy_url Discourse.privacy_policy_url end |
#shared_drafts_category_id ⇒ Object
220 221 222 |
# File 'app/serializers/site_serializer.rb', line 220 def shared_drafts_category_id SiteSetting.shared_drafts_category.to_i end |
#tags_filter_regexp ⇒ Object
184 185 186 |
# File 'app/serializers/site_serializer.rb', line 184 def DiscourseTagging::TAGS_FILTER_REGEXP.source end |
#top_menu_items ⇒ Object
144 145 146 |
# File 'app/serializers/site_serializer.rb', line 144 def Discourse..map(&:to_s) end |
#top_tags ⇒ Object
192 193 194 |
# File 'app/serializers/site_serializer.rb', line 192 def @top_tags ||= Tag.(guardian: scope) end |
#topic_featured_link_allowed_category_ids ⇒ Object
208 209 210 |
# File 'app/serializers/site_serializer.rb', line 208 def topic_featured_link_allowed_category_ids scope.topic_featured_link_allowed_category_ids end |
#topic_flag_types ⇒ Object
113 114 115 116 117 118 |
# File 'app/serializers/site_serializer.rb', line 113 def topic_flag_types cache_fragment("post_action_flag_types_#{I18n.locale}") do types = ordered_flags(PostActionType.topic_flag_types.values) ActiveModel::ArraySerializer.new(types, each_serializer: TopicFlagTypeSerializer).as_json end end |
#tos_url ⇒ Object
319 320 321 |
# File 'app/serializers/site_serializer.rb', line 319 def tos_url Discourse.tos_url end |
#uncategorized_category_id ⇒ Object
152 153 154 |
# File 'app/serializers/site_serializer.rb', line 152 def uncategorized_category_id SiteSetting.uncategorized_category_id end |
#user_color_schemes ⇒ Object
73 74 75 76 77 78 79 80 81 |
# File 'app/serializers/site_serializer.rb', line 73 def user_color_schemes cache_fragment("user_color_schemes") do schemes = ColorScheme.includes(:color_scheme_colors).where("user_selectable").order(:name) ActiveModel::ArraySerializer.new( schemes, each_serializer: ColorSchemeSelectableSerializer, ).as_json end end |
#user_field_max_length ⇒ Object
156 157 158 |
# File 'app/serializers/site_serializer.rb', line 156 def user_field_max_length UserField.max_length end |
#user_themes ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'app/serializers/site_serializer.rb', line 55 def user_themes cache_fragment("user_themes") do Theme .where("id = :default OR user_selectable", default: SiteSetting.default_theme_id) .order("lower(name)") .pluck(:id, :name, :color_scheme_id) .map do |id, n, cs| { theme_id: id, name: n, default: id == SiteSetting.default_theme_id, color_scheme_id: cs, } end .as_json end end |
#user_tips ⇒ Object
128 129 130 |
# File 'app/serializers/site_serializer.rb', line 128 def user_tips User.user_tips end |
#watched_words_link ⇒ Object
232 233 234 |
# File 'app/serializers/site_serializer.rb', line 232 def watched_words_link WordWatcher.word_matcher_regexps(:link, engine: :js) end |
#watched_words_replace ⇒ Object
228 229 230 |
# File 'app/serializers/site_serializer.rb', line 228 def watched_words_replace WordWatcher.word_matcher_regexps(:replace, engine: :js) end |
#whispers_allowed_groups_names ⇒ Object
303 304 305 |
# File 'app/serializers/site_serializer.rb', line 303 def whispers_allowed_groups_names Group.where(id: SiteSetting.whispers_allowed_groups_map).pluck(:name) end |
#wizard_required ⇒ Object
196 197 198 |
# File 'app/serializers/site_serializer.rb', line 196 def wizard_required true end |