Class: CamaleonCms::SiteDecorator
- Inherits:
-
TermTaxonomyDecorator
- Object
- Draper::Decorator
- ApplicationDecorator
- TermTaxonomyDecorator
- CamaleonCms::SiteDecorator
- Defined in:
- app/decorators/camaleon_cms/site_decorator.rb
Instance Method Summary collapse
-
#draw_languages(list_class = "language_list list-inline pull-right", current_page = false, current_class = "current_l") ⇒ Object
draw languages configured for this site list_class: (String) Custom css classes for ul list current_page: (boolean) true: link with translation to current url, false: link with translation to root url.
-
#generate_breadcrumb(add_post_type = true) ⇒ Object
draw bread crumb for current site.
-
#manage_sites? ⇒ Boolean
check if current user can manage sites.
-
#plugin_installed?(plugin_key) ⇒ Boolean
check if plugin_key is already installed for this site.
-
#the_admin_url ⇒ Object
ADMIN ======================= admin root url for this site.
-
#the_categories(slug_or_id = nil) ⇒ Object
slug_or_id: nil => return all main_categories for this site slug_or_id: integer => return all main categories of the post_type with id = slug_or_id slug_or_id: string => return all main categories of the post_type with slug = slug_or_id.
-
#the_category(slug_or_id) ⇒ Object
return the category object with id or slug = slug_or_id from this site.
-
#the_contents(slug_or_id = "post") ⇒ Object
return all contents from this site registered for post_type = slug (filter visibility, hidden, expired, …) slug_or_id: slug or id of the post_type or array of slugs of post_types, default ‘post’.
- #the_description ⇒ Object
-
#the_full_categories ⇒ Object
return all categories for ths site (include all children categories).
- #the_icon ⇒ Object
-
#the_languages ⇒ Object
return Array of frontend languages configured for this site.
-
#the_logo(default = nil) ⇒ Object
return logo url for this site default: this url will be returned if logo is not present.
-
#the_path(*args) ⇒ Object
return the path for this site.
-
#the_post(slug_or_id) ⇒ Object
return the post with id or slug equal to slug_or_id slug_or_id: (String) for post slug slug_or_id: (Integer) for post id slug_or_id: (Array) array of post ids, return multiple posts return post model or nil.
-
#the_post_type(slug_or_id) ⇒ Object
return a post_type object with id or slug = slug_or_id Arguments: slug_or_id: string or integer return: slug_or_id: integer => return the post type with id = slug_or_id slug_or_id: string => return the post type with slug = slug_or_id slug_or_id: array => return all post types with slugs in the array of this site.
-
#the_post_types ⇒ Object
return all post types for this site.
-
#the_posts(slug_or_id = nil) ⇒ Object
return all contents for this site filteredby (visibility, hidden, expired, …) slug_or_id: (slug of the post_type) possible values: empty: return all posts of the current site string: return all posts of post_type with slug = slug_or_id integer: return all posts of post_type with id = slug_or_id array: return all posts of post_types with slug in slug_or_id.
-
#the_status ⇒ Object
return the text status of current site.
-
#the_status_options ⇒ Object
return an array for select options of all status for this site.
-
#the_tag(slug_or_id) ⇒ Object
return the post_tag object with id or slug = slug_or_id from this site sample: current_site.the_tag(‘test’).the_url sample2: current_site.the_tag(‘test’).the_posts.
-
#the_tags ⇒ Object
return all post tags for ths site.
-
#the_url(*args) ⇒ Object
return root url for this site args = true/false(default), as_path: true/false(default).
-
#the_user(id_or_username) ⇒ Object
return the user object with id or username = id_or_username from this site.
-
#visitor_role ⇒ Object
return the role_id of current visitor for this site if the visitor was not logged in, then return -1.
Methods inherited from TermTaxonomyDecorator
#the_content, #the_edit_link, #the_edit_url, #the_excerpt, #the_owner, #the_parent, #the_slug, #the_title
Methods included from CustomFieldsConcern
#render_fields, #the_field, #the_fields, #the_fields_grouped, #the_json_field, #the_json_fields
Methods inherited from ApplicationDecorator
#_calc_locale, #get_locale, #set_decoration_locale, #the_breadcrumb, #the_created_at, #the_id, #the_keywords, #the_slug, #the_updated_at
Methods included from MetasDecoratorMethods
Instance Method Details
#draw_languages(list_class = "language_list list-inline pull-right", current_page = false, current_class = "current_l") ⇒ Object
draw languages configured for this site list_class: (String) Custom css classes for ul list current_page: (boolean) true: link with translation to current url, false: link with translation to root url
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 115 def draw_languages(list_class = "language_list list-inline pull-right", current_page = false, current_class = "current_l") lan = object.get_languages return if lan.size < 2 res = ["<ul class='#{list_class}'>"] lan.each do |lang| path = lang.to_s+'.png' img = "<img src='#{h.asset_path("camaleon_cms/language/#{path}")}'/>" res << "<li class='#{ current_class if I18n.locale.to_s == lang.to_s}'> <a href='#{h.cama_url_to_fixed(current_page ? "url_for" : "cama_root_url", {locale: lang, cama_set_language: lang})}'>#{img}</a> </li>" end res << "</ul>" res.join("") end |
#generate_breadcrumb(add_post_type = true) ⇒ Object
draw bread crumb for current site
171 172 173 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 171 def (add_post_type = true) h.(self.the_title) end |
#manage_sites? ⇒ Boolean
check if current user can manage sites
184 185 186 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 184 def manage_sites? self.main_site? && h.cama_current_user.admin? end |
#plugin_installed?(plugin_key) ⇒ Boolean
check if plugin_key is already installed for this site
140 141 142 143 144 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 140 def plugin_installed?(plugin_key) res = false PluginRoutes.enabled_plugins(object).each{|plugin| res = true if plugin["key"] == plugin_key } res end |
#the_admin_url ⇒ Object
ADMIN =======================
admin root url for this site
177 178 179 180 181 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 177 def the_admin_url host = object.main_site? ? object.slug : (object.slug.include?(".") ? object.slug : "#{object.slug}.#{Cama::Site.main_site.slug}") port = (host.split(":")[1] rescue nil) h.cama_url_to_fixed("cama_admin_dashboard_url", host: host, port: port, locale: nil) end |
#the_categories(slug_or_id = nil) ⇒ Object
slug_or_id: nil => return all main_categories for this site slug_or_id: integer => return all main categories of the post_type with id = slug_or_id slug_or_id: string => return all main categories of the post_type with slug = slug_or_id
59 60 61 62 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 59 def the_categories(slug_or_id = nil) return the_post_type(slug_or_id).the_categories if slug_or_id.present? return object.categories unless slug_or_id.present? end |
#the_category(slug_or_id) ⇒ Object
return the category object with id or slug = slug_or_id from this site
65 66 67 68 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 65 def the_category(slug_or_id) return the_full_categories.where(id: slug_or_id).first.decorate rescue nil if slug_or_id.is_a?(Integer) return the_full_categories.find_by_slug(slug_or_id).decorate rescue nil if slug_or_id.is_a?(String) end |
#the_contents(slug_or_id = "post") ⇒ Object
return all contents from this site registered for post_type = slug (filter visibility, hidden, expired, …) slug_or_id: slug or id of the post_type or array of slugs of post_types, default ‘post’
20 21 22 23 24 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 20 def the_contents(slug_or_id = "post") return h.verify_front_visibility(object.posts.where("#{CamaleonCms::TermTaxonomy.table_name}.id = ?", slug_or_id)) if slug_or_id.is_a?(Integer) return h.verify_front_visibility(object.posts.where("#{CamaleonCms::TermTaxonomy.table_name}.slug = ?", slug_or_id)) if slug_or_id.is_a?(String) return h.verify_front_visibility(object.posts.where("#{CamaleonCms::TermTaxonomy.table_name}.slug in (?)", slug_or_id)) if slug_or_id.is_a?(Array) end |
#the_description ⇒ Object
4 5 6 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 4 def the_description the_content end |
#the_full_categories ⇒ Object
return all categories for ths site (include all children categories)
71 72 73 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 71 def the_full_categories object.full_categories end |
#the_icon ⇒ Object
14 15 16 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 14 def the_icon object.get_option("icon") || h.asset_url('camaleon_cms/favicon.ico') end |
#the_languages ⇒ Object
return Array of frontend languages configured for this site
129 130 131 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 129 def the_languages object.get_languages end |
#the_logo(default = nil) ⇒ Object
return logo url for this site default: this url will be returned if logo is not present.
10 11 12 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 10 def the_logo(default = nil) object.get_option("logo") || (default || "#{h.asset_url("camaleon_cms/camaleon.png")}") end |
#the_path(*args) ⇒ Object
return the path for this site
164 165 166 167 168 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 164 def the_path(*args) args = args. args[:as_path] = true the_url(args) end |
#the_post(slug_or_id) ⇒ Object
return the post with id or slug equal to slug_or_id slug_or_id: (String) for post slug slug_or_id: (Integer) for post id slug_or_id: (Array) array of post ids, return multiple posts return post model or nil
45 46 47 48 49 50 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 45 def the_post(slug_or_id) post = self.the_posts.find(slug_or_id) rescue nil if slug_or_id.is_a?(Integer) # id post = self.the_posts.find(slug_or_id) rescue nil if slug_or_id.is_a?(Array) # id post = self.the_posts.find_by_slug(slug_or_id) if slug_or_id.is_a?(String) # id post.present? ? post.decorate : nil end |
#the_post_type(slug_or_id) ⇒ Object
return a post_type object with id or slug = slug_or_id Arguments:
slug_or_id: string or integer
return: slug_or_id: integer => return the post type with id = slug_or_id slug_or_id: string => return the post type with slug = slug_or_id slug_or_id: array => return all post types with slugs in the array of this site
106 107 108 109 110 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 106 def the_post_type(slug_or_id) return object.post_types.find_by_slug(slug_or_id).decorate rescue nil if slug_or_id.is_a?(String) return object.post_types.find_by_slug(slug_or_id).decorate rescue nil if slug_or_id.is_a?(Array) return object.post_types.find(slug_or_id).decorate rescue nil if slug_or_id.is_a?(Integer) end |
#the_post_types ⇒ Object
return all post types for this site
95 96 97 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 95 def the_post_types object.post_types end |
#the_posts(slug_or_id = nil) ⇒ Object
return all contents for this site filteredby (visibility, hidden, expired, …) slug_or_id: (slug of the post_type) possible values:
empty: return all posts of the current site
string: return all posts of post_type with slug = slug_or_id
integer: return all posts of post_type with id = slug_or_id
array: return all posts of post_types with slug in slug_or_id
32 33 34 35 36 37 38 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 32 def the_posts(slug_or_id = nil) if slug_or_id.present? the_contents(slug_or_id) else h.verify_front_visibility(object.posts) end end |
#the_status ⇒ Object
return the text status of current site
189 190 191 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 189 def the_status I18n.t("camaleon_cms.models.site.status_options.#{object.status || 'active'}", default: (object.status || 'active').titleize) end |
#the_status_options ⇒ Object
return an array for select options of all status for this site
194 195 196 197 198 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 194 def ['active', 'inactive', 'maintenance'].map do |o| [I18n.t("camaleon_cms.models.site.status_options.#{o}", default: o.titleize), o == 'active' ? '': o] end end |
#the_tag(slug_or_id) ⇒ Object
return the post_tag object with id or slug = slug_or_id from this site sample: current_site.the_tag(‘test’).the_url sample2: current_site.the_tag(‘test’).the_posts
83 84 85 86 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 83 def the_tag(slug_or_id) return object..where(id: slug_or_id).first.decorate rescue nil if slug_or_id.is_a?(Integer) return object..find_by_slug(slug_or_id).decorate rescue nil if slug_or_id.is_a?(String) end |
#the_tags ⇒ Object
return all post tags for ths site
76 77 78 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 76 def object. end |
#the_url(*args) ⇒ Object
return root url for this site args = true/false(default), as_path: true/false(default)
148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 148 def the_url(*args) args = args. args[:site] = self args[:host], args[:port] = object.get_domain.to_s.split(':') if !args[:as_path] && (h.current_site rescue false) != self # fix for different site of current visited site h.cama_current_site_host_port(args) unless args[:as_path] args[:locale] = @_deco_locale unless args.include?(:locale) postfix = 'url' postfix = 'path' if args.delete(:as_path) skip_relative_url_root = args.delete(:skip_relative_url_root) h.cama_current_site_host_port(args) unless args.keys.include?(:host) res = h.cama_url_to_fixed("cama_root_#{postfix}", args) res = res.sub("/#{PluginRoutes.static_system_info['relative_url_root']}", '') if skip_relative_url_root && PluginRoutes.static_system_info['relative_url_root'].present? res end |
#the_user(id_or_username) ⇒ Object
return the user object with id or username = id_or_username from this site
89 90 91 92 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 89 def the_user(id_or_username) return object.users.where(id: id_or_username).first.decorate rescue nil if id_or_username.is_a?(Integer) return object.users.by_username(id_or_username).first.decorate rescue nil if id_or_username.is_a?(String) end |
#visitor_role ⇒ Object
return the role_id of current visitor for this site if the visitor was not logged in, then return -1
135 136 137 |
# File 'app/decorators/camaleon_cms/site_decorator.rb', line 135 def visitor_role h.signin? ? h.cama_current_user.role : '-1' end |