Class: Structure

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
PageParts::Extension, PublicActivity::Model, Sunrise::Models::Structure, TranslationCms::Taggable, TranslationCms::WhiteList
Defined in:
app/models/defaults/structure.rb

Overview

Schema Information

Table name: structures

id                 :integer          not null, primary key
slug               :string(100)      not null
structure_type_id  :integer          default(0)
position_type_id   :integer          default(0)
is_visible         :boolean          default(TRUE)
redirect_url       :string(255)
parent_id          :integer
lft                :integer          default(0)
rgt                :integer          default(0)
depth              :integer          default(0)
created_at         :datetime
updated_at         :datetime
is_update_traking  :boolean          default(FALSE)
title_translations :hstore           default({})

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TranslationCms::Taggable

#cached_meta_tags, #meta_tag

Class Method Details

.page_text(slug, content = :main) ⇒ Object



65
66
67
# File 'app/models/defaults/structure.rb', line 65

def self.page_text(slug, content = :main)
  with_type(StructureType.page).where(slug: slug).first.try(content)
end

Instance Method Details

#contentObject



73
74
75
# File 'app/models/defaults/structure.rb', line 73

def content
  normalized_content
end

#content!Object



77
78
79
80
81
# File 'app/models/defaults/structure.rb', line 77

def content!
  Rails.cache.fetch "structures_#{slug}_content", expires_in: 4.hours do
    main
  end
end

#normalized_content(block = nil) ⇒ Object



69
70
71
# File 'app/models/defaults/structure.rb', line 69

def normalized_content(block = nil)
  self[(block || 'main').to_sym].try(:gsub, '<p>&nbsp;</p>', '<p></p>')
end

#parent_pathObject



99
100
101
# File 'app/models/defaults/structure.rb', line 99

def parent_path
  parent_services.reverse.map(&:slug).join('/')
end

#parent_servicesObject



91
92
93
# File 'app/models/defaults/structure.rb', line 91

def parent_services
  ancestors.select(&:service_page?)
end

#published_atObject



83
84
85
# File 'app/models/defaults/structure.rb', line 83

def published_at
  created_at
end

#service_infoObject



95
96
97
# File 'app/models/defaults/structure.rb', line 95

def service_info
  super || build_service_info
end

#service_page?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'app/models/defaults/structure.rb', line 87

def service_page?
  ancestors.where(structure_type_id: StructureType.services.id).exists?
end

#track_keyObject



112
113
114
115
116
117
# File 'app/models/defaults/structure.rb', line 112

def track_key
  @track_key ||= [
    'page_update',
    id
  ].join('_')
end

#track_updatesObject



119
120
121
# File 'app/models/defaults/structure.rb', line 119

def track_updates
  self.updated_at = Time.zone.now if is_update_traking
end

#track_valueObject



108
109
110
# File 'app/models/defaults/structure.rb', line 108

def track_value
  updated_at.to_i.to_s(16)
end

#trackable?Boolean

track updates feature

Returns:

  • (Boolean)


104
105
106
# File 'app/models/defaults/structure.rb', line 104

def trackable?
  is_update_traking
end