Module: Alchemy::Page::PageNatures
- Extended by:
 - ActiveSupport::Concern
 
- Included in:
 - Alchemy::Page
 
- Defined in:
 - app/models/alchemy/page/page_natures.rb
 
Instance Method Summary collapse
- 
  
    
      #cache_page?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Returns true if the page cache control headers should be set.
 - 
  
    
      #cache_version  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the version string that’s taken for Rails’ recycable cache key.
 - 
  
    
      #definition  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the self#page_layout definition from config/alchemy/page_layouts.yml file.
 - #editor_roles ⇒ Object
 - #expiration_time ⇒ Object
 - #folded?(user_id) ⇒ Boolean
 - 
  
    
      #has_limited_editors?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Returns an Array of Alchemy roles which are able to edit this template.
 - 
  
    
      #last_modified_at  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the timestamp that the page was last modified at, regardless of through publishing or editing page, or through a change of related objects through ingredients.
 - 
  
    
      #layout_display_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns translated name of the pages page_layout value.
 - 
  
    
      #layout_partial_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the name for the layout partial.
 - 
  
    
      #locked?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
True if page locked_at timestamp and locked_by id are set.
 - 
  
    
      #public?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Determines if this page has a public version and this version is public.
 - #rootpage? ⇒ Boolean
 - 
  
    
      #status  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a Hash describing the status of the Page.
 - 
  
    
      #status_message(status_type)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the long translated status message for given status type.
 - 
  
    
      #status_title(status_type)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the sort translated status title for given status type.
 
Instance Method Details
#cache_page? ⇒ Boolean
Returns true if the page cache control headers should be set.
Disable Alchemy’s page caching globally
# config/alchemy/config.yml
...
cache_pages: false
Disable caching on page layout level
# config/alchemy/page_layouts.yml
- name: contact
  cache: false
Note:
This only sets the cache control headers and skips rendering of the page body, if the cache is fresh. This does not disable the fragment caching in the views. So if you don’t want a page and it’s elements to be cached, then be sure to not use <% cache element %> in the views.
      146 147 148 149 150 151  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 146 def cache_page? return false unless caching_enabled? page_layout = PageLayout.get(self.page_layout) page_layout["cache"] != false && page_layout["searchresults"] != true end  | 
  
#cache_version ⇒ Object
Returns the version string that’s taken for Rails’ recycable cache key.
      106 107 108  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 106 def cache_version last_modified_at&.to_s end  | 
  
#definition ⇒ Object
Returns the self#page_layout definition from config/alchemy/page_layouts.yml file.
      82 83 84 85 86 87 88 89  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 82 def definition definition = PageLayout.get(page_layout) if definition.nil? log_warning "Page definition for `#{page_layout}` not found. Please check `page_layouts.yml` file." return {} end definition end  | 
  
#editor_roles ⇒ Object
      44 45 46 47 48  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 44 def editor_roles return unless has_limited_editors? definition["editable_by"] end  | 
  
#expiration_time ⇒ Object
      16 17 18  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 16 def expiration_time public_until ? public_until - Time.current : nil end  | 
  
#folded?(user_id) ⇒ Boolean
      24 25 26 27 28  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 24 def folded?(user_id) return unless Alchemy.user_class < ActiveRecord::Base folded_pages.where(user_id: user_id, folded: true).any? end  | 
  
#has_limited_editors? ⇒ Boolean
Returns an Array of Alchemy roles which are able to edit this template
# config/alchemy/page_layouts.yml
- name: contact
  editable_by:
    - freelancer
    - admin
  
      40 41 42  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 40 def has_limited_editors? definition["editable_by"].present? end  | 
  
#last_modified_at ⇒ Object
Returns the timestamp that the page was last modified at, regardless of through publishing or editing page, or through a change of related objects through ingredients. Respects the public version not changing if editing a preview.
In preview mode, it will take the draft version’s updated_at timestamp. In public mode, it will take the public version’s updated_at timestamp.
      117 118 119 120  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 117 def last_modified_at relevant_page_version = (Current.preview_page == self) ? draft_version : public_version relevant_page_version&.updated_at end  | 
  
#layout_display_name ⇒ Object
Returns translated name of the pages page_layout value. Page layout names are defined inside the config/alchemy/page_layouts.yml file. Translate the name in your config/locales language yml file.
      94 95 96  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 94 def layout_display_name Alchemy.t(page_layout, scope: "page_layout_names") end  | 
  
#layout_partial_name ⇒ Object
Returns the name for the layout partial
      100 101 102  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 100 def layout_partial_name page_layout.parameterize.underscore end  | 
  
#locked? ⇒ Boolean
True if page locked_at timestamp and locked_by id are set
      51 52 53  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 51 def locked? locked_by? && locked_at? end  | 
  
#public? ⇒ Boolean
Determines if this page has a public version and this version is public.
      12 13 14  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 12 def public? language.public? && !!public_version&.public? end  | 
  
#rootpage? ⇒ Boolean
      20 21 22  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 20 def rootpage? !new_record? && parent_id.blank? end  | 
  
#status ⇒ Object
Returns a Hash describing the status of the Page.
      57 58 59 60 61 62 63  | 
    
      # File 'app/models/alchemy/page/page_natures.rb', line 57 def status { public: public?, locked: locked?, restricted: restricted? } end  |