sibu 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +20 -20
- data/README.md +38 -38
- data/Rakefile +36 -36
- data/app/assets/config/sibu_manifest.js +2 -2
- data/app/assets/fonts/sibu/Sibu.eot +0 -0
- data/app/assets/fonts/sibu/Sibu.svg +13 -13
- data/app/assets/fonts/sibu/Sibu.ttf +0 -0
- data/app/assets/fonts/sibu/Sibu.woff +0 -0
- data/app/assets/javascripts/cropper/cropper.js +3694 -3694
- data/app/assets/javascripts/quill/quill.js +11401 -11401
- data/app/assets/javascripts/sibu/common.js +6 -6
- data/app/assets/javascripts/sibu/sibu.js.erb +155 -155
- data/app/assets/javascripts/tabs/van11y-accessible-tab-panel-aria.js +465 -465
- data/app/assets/stylesheets/cropper/cropper.css +304 -304
- data/app/assets/stylesheets/quill/quill.snow.css +945 -945
- data/app/assets/stylesheets/sibu/defaults.scss +336 -331
- data/app/assets/stylesheets/sibu/icons.scss +40 -40
- data/app/assets/stylesheets/sibu/sibu.css +131 -131
- data/app/controllers/sibu/application_controller.rb +14 -14
- data/app/controllers/sibu/documents_controller.rb +35 -35
- data/app/controllers/sibu/images_controller.rb +78 -78
- data/app/controllers/sibu/pages_controller.rb +197 -197
- data/app/controllers/sibu/sites_controller.rb +81 -81
- data/app/helpers/sibu/application_helper.rb +11 -11
- data/app/helpers/sibu/documents_helper.rb +4 -4
- data/app/helpers/sibu/images_helper.rb +4 -4
- data/app/helpers/sibu/pages_helper.rb +194 -194
- data/app/helpers/sibu/sites_helper.rb +23 -23
- data/app/jobs/sibu/application_job.rb +4 -4
- data/app/mailers/sibu/application_mailer.rb +6 -6
- data/app/models/concerns/sibu/document_uploader.rb +8 -8
- data/app/models/concerns/sibu/image_uploader.rb +31 -31
- data/app/models/concerns/sibu/sections_concern.rb +134 -134
- data/app/models/concerns/sibu/style_uploader.rb +1 -1
- data/app/models/concerns/sibu/user_concern.rb +8 -8
- data/app/models/sibu/application_record.rb +5 -5
- data/app/models/sibu/document.rb +16 -16
- data/app/models/sibu/dynamic_style.rb +76 -76
- data/app/models/sibu/image.rb +19 -19
- data/app/models/sibu/page.rb +66 -66
- data/app/models/sibu/site.rb +97 -97
- data/app/models/sibu/site_template.rb +22 -22
- data/app/views/layouts/sibu/application.html.erb +23 -23
- data/app/views/layouts/sibu/edit_content.html.erb +262 -262
- data/app/views/layouts/sibu/site.html.erb +45 -45
- data/app/views/sibu/documents/_form.html.erb +14 -14
- data/app/views/sibu/documents/index.html.erb +37 -37
- data/app/views/sibu/documents/new.html.erb +12 -12
- data/app/views/sibu/images/_edit_form.html.erb +23 -23
- data/app/views/sibu/images/_form.html.erb +34 -34
- data/app/views/sibu/images/edit.js.erb +2 -2
- data/app/views/sibu/images/index.html.erb +13 -13
- data/app/views/sibu/images/new.html.erb +12 -12
- data/app/views/sibu/images/show.html.erb +2 -2
- data/app/views/sibu/pages/_code_edit_panel.html.erb +17 -17
- data/app/views/sibu/pages/_element_actions.html.erb +4 -4
- data/app/views/sibu/pages/_error_panel.html.erb +4 -4
- data/app/views/sibu/pages/_form.html.erb +62 -62
- data/app/views/sibu/pages/_group_edit_panel.html.erb +3 -3
- data/app/views/sibu/pages/_link_edit_panel.html.erb +50 -50
- data/app/views/sibu/pages/_map_edit_panel.html.erb +27 -27
- data/app/views/sibu/pages/_media_edit_panel.html.erb +46 -46
- data/app/views/sibu/pages/_new_section_panel.html.erb +43 -43
- data/app/views/sibu/pages/_paragraph_edit_panel.html.erb +18 -18
- data/app/views/sibu/pages/_text_edit_panel.html.erb +19 -19
- data/app/views/sibu/pages/child_element.js.erb +6 -6
- data/app/views/sibu/pages/clone_element.js.erb +6 -6
- data/app/views/sibu/pages/create_section.js.erb +6 -6
- data/app/views/sibu/pages/delete_element.js.erb +6 -6
- data/app/views/sibu/pages/delete_section.js.erb +6 -6
- data/app/views/sibu/pages/destroy.html.erb +2 -2
- data/app/views/sibu/pages/edit.html.erb +8 -8
- data/app/views/sibu/pages/edit_content.html.erb +3 -3
- data/app/views/sibu/pages/edit_element.js.erb +100 -100
- data/app/views/sibu/pages/edit_section.js.erb +7 -7
- data/app/views/sibu/pages/index.html.erb +40 -40
- data/app/views/sibu/pages/new.html.erb +8 -8
- data/app/views/sibu/pages/new_section.js.erb +19 -19
- data/app/views/sibu/pages/show.html.erb +3 -3
- data/app/views/sibu/pages/update.html.erb +2 -2
- data/app/views/sibu/pages/update_element.js.erb +5 -5
- data/app/views/sibu/pages/update_section.js.erb +5 -5
- data/app/views/sibu/sites/_form.html.erb +125 -125
- data/app/views/sibu/sites/destroy.html.erb +2 -2
- data/app/views/sibu/sites/edit.html.erb +9 -9
- data/app/views/sibu/sites/edit_styles.html.erb +8 -8
- data/app/views/sibu/sites/index.html.erb +41 -41
- data/app/views/sibu/sites/new.html.erb +18 -18
- data/app/views/sibu/sites/update.html.erb +2 -2
- data/config/initializers/constants.rb +2 -2
- data/config/initializers/shrine.rb +18 -18
- data/config/routes.rb +30 -30
- data/config/tinymce.yml +5 -5
- data/db/migrate/20180124095041_create_sibu_sites.rb +12 -12
- data/db/migrate/20180124095213_create_sibu_pages.rb +15 -15
- data/db/migrate/20180124145030_create_sibu_site_templates.rb +10 -10
- data/db/migrate/20180125231638_add_user_id_to_sites.rb +5 -5
- data/db/migrate/20180126114522_rename_url_to_path_in_pages.rb +5 -5
- data/db/migrate/20180126114628_add_domain_to_sites.rb +5 -5
- data/db/migrate/20180127211533_create_sibu_images.rb +11 -11
- data/db/migrate/20180208082317_rename_images_user_id_to_site_id.rb +5 -5
- data/db/migrate/20180208125024_rename_image_data_column.rb +5 -5
- data/db/migrate/20180210181644_add_defaults_to_site_templates.rb +6 -6
- data/db/migrate/20180214134653_add_fields_to_sites.rb +5 -5
- data/db/migrate/20180227151519_add_default_templates_to_site_templates.rb +5 -5
- data/db/migrate/20180301121902_add_style_data_to_sites.rb +5 -5
- data/db/migrate/20180301152101_add_default_styles_to_templates.rb +5 -5
- data/db/migrate/20180321144021_move_images_to_user_level.rb +7 -7
- data/db/migrate/20180321170310_add_version_to_sibu_sites.rb +7 -7
- data/db/migrate/20180405095448_create_sibu_documents.rb +10 -10
- data/db/migrate/20190110204854_add_custom_data_to_sibu_pages.rb +5 -5
- data/lib/sibu.rb +4 -4
- data/lib/sibu/engine.rb +19 -19
- data/lib/sibu/utils.rb +14 -14
- data/lib/sibu/version.rb +3 -3
- data/lib/tasks/sibu_tasks.rake +4 -4
- metadata +3 -3
data/app/models/sibu/image.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
|
-
module Sibu
|
2
|
-
class Image < ApplicationRecord
|
3
|
-
include ImageUploader::Attachment.new(:file)
|
4
|
-
extend Sibu::UserConcern
|
5
|
-
|
6
|
-
store :metadata, accessors: [:alt, :reference, :credits], coder: JSON
|
7
|
-
|
8
|
-
validates_presence_of :file_data
|
9
|
-
|
10
|
-
def self.empty
|
11
|
-
empty_img = where("metadata ILIKE '%default_empty_image%'").first
|
12
|
-
if empty_img.nil?
|
13
|
-
empty_img = new(reference: 'default_empty_image', file: File.new('app/assets/images/empty.png'))
|
14
|
-
empty_img.save
|
15
|
-
end
|
16
|
-
empty_img
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
1
|
+
module Sibu
|
2
|
+
class Image < ApplicationRecord
|
3
|
+
include ImageUploader::Attachment.new(:file)
|
4
|
+
extend Sibu::UserConcern
|
5
|
+
|
6
|
+
store :metadata, accessors: [:alt, :reference, :credits], coder: JSON
|
7
|
+
|
8
|
+
validates_presence_of :file_data
|
9
|
+
|
10
|
+
def self.empty
|
11
|
+
empty_img = where("metadata ILIKE '%default_empty_image%'").first
|
12
|
+
if empty_img.nil?
|
13
|
+
empty_img = new(reference: 'default_empty_image', file: File.new('app/assets/images/empty.png'))
|
14
|
+
empty_img.save
|
15
|
+
end
|
16
|
+
empty_img
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/app/models/sibu/page.rb
CHANGED
@@ -1,66 +1,66 @@
|
|
1
|
-
module Sibu
|
2
|
-
class Page < ApplicationRecord
|
3
|
-
include Sibu::SectionsConcern
|
4
|
-
|
5
|
-
belongs_to :site, :class_name => 'Sibu::Site'
|
6
|
-
|
7
|
-
store :custom_data, accessors: [:header_code, :footer_code], coder: JSON
|
8
|
-
store :metadata, accessors: [:title, :description, :keywords, :source, :external_id, :is_home], coder: JSON
|
9
|
-
|
10
|
-
before_save :update_path
|
11
|
-
validates_presence_of :name, :site
|
12
|
-
|
13
|
-
def self.lookup(domain_name, page_query)
|
14
|
-
page_path = (page_query || '').strip.split('?')[0]
|
15
|
-
if page_path.blank?
|
16
|
-
joins(:site).where("sibu_sites.domain = ? AND COALESCE(sibu_pages.path, '') = ''", domain_name).first
|
17
|
-
else
|
18
|
-
paths = page_path.split('/').inject([]) {|p, s| p << (p.length == 0 ? s : "#{p[-1]}/#{s}")}
|
19
|
-
joins(:site).where("sibu_sites.domain = ? AND COALESCE(sibu_pages.path, '') IN (?)", domain_name, paths)
|
20
|
-
.order(path: :desc)
|
21
|
-
.first
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def save_and_init
|
26
|
-
if valid?
|
27
|
-
template_defaults = site.site_template.pages.first
|
28
|
-
self.sections = template_defaults[:sections] if template_defaults
|
29
|
-
end
|
30
|
-
save
|
31
|
-
end
|
32
|
-
|
33
|
-
def update_path
|
34
|
-
prefix = site.version == Sibu::Site::DEFAULT_VERSION ? '' : "#{site.version}/"
|
35
|
-
if is_home == 'true'
|
36
|
-
self.path = ''
|
37
|
-
else
|
38
|
-
self.path = "#{prefix}#{name.parameterize}" if self.path.blank?
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def site_template
|
43
|
-
site.site_template
|
44
|
-
end
|
45
|
-
|
46
|
-
def deep_copy
|
47
|
-
new_page = deep_dup
|
48
|
-
new_page.name = name + ' - copie'
|
49
|
-
new_page
|
50
|
-
end
|
51
|
-
|
52
|
-
def update_templates(sections_templates)
|
53
|
-
sections.each do |s|
|
54
|
-
s["template"] = sections_templates[s["id"]]
|
55
|
-
end
|
56
|
-
save
|
57
|
-
end
|
58
|
-
|
59
|
-
def reorder_sections(*ordered_ids)
|
60
|
-
if ordered_ids.length == sections.length
|
61
|
-
self.sections = ordered_ids.map {|section_id| sections.find {|sec| sec["id"] == section_id}}
|
62
|
-
save
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
1
|
+
module Sibu
|
2
|
+
class Page < ApplicationRecord
|
3
|
+
include Sibu::SectionsConcern
|
4
|
+
|
5
|
+
belongs_to :site, :class_name => 'Sibu::Site'
|
6
|
+
|
7
|
+
store :custom_data, accessors: [:header_code, :footer_code], coder: JSON
|
8
|
+
store :metadata, accessors: [:title, :description, :keywords, :source, :external_id, :is_home], coder: JSON
|
9
|
+
|
10
|
+
before_save :update_path
|
11
|
+
validates_presence_of :name, :site
|
12
|
+
|
13
|
+
def self.lookup(domain_name, page_query)
|
14
|
+
page_path = (page_query || '').strip.split('?')[0]
|
15
|
+
if page_path.blank?
|
16
|
+
joins(:site).where("sibu_sites.domain = ? AND COALESCE(sibu_pages.path, '') = ''", domain_name).first
|
17
|
+
else
|
18
|
+
paths = page_path.split('/').inject([]) {|p, s| p << (p.length == 0 ? s : "#{p[-1]}/#{s}")}
|
19
|
+
joins(:site).where("sibu_sites.domain = ? AND COALESCE(sibu_pages.path, '') IN (?)", domain_name, paths)
|
20
|
+
.order(path: :desc)
|
21
|
+
.first
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def save_and_init
|
26
|
+
if valid?
|
27
|
+
template_defaults = site.site_template.pages.first
|
28
|
+
self.sections = template_defaults[:sections] if template_defaults
|
29
|
+
end
|
30
|
+
save
|
31
|
+
end
|
32
|
+
|
33
|
+
def update_path
|
34
|
+
prefix = site.version == Sibu::Site::DEFAULT_VERSION ? '' : "#{site.version}/"
|
35
|
+
if is_home == 'true'
|
36
|
+
self.path = ''
|
37
|
+
else
|
38
|
+
self.path = "#{prefix}#{name.parameterize}" if self.path.blank?
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def site_template
|
43
|
+
site.site_template
|
44
|
+
end
|
45
|
+
|
46
|
+
def deep_copy
|
47
|
+
new_page = deep_dup
|
48
|
+
new_page.name = name + ' - copie'
|
49
|
+
new_page
|
50
|
+
end
|
51
|
+
|
52
|
+
def update_templates(sections_templates)
|
53
|
+
sections.each do |s|
|
54
|
+
s["template"] = sections_templates[s["id"]]
|
55
|
+
end
|
56
|
+
save
|
57
|
+
end
|
58
|
+
|
59
|
+
def reorder_sections(*ordered_ids)
|
60
|
+
if ordered_ids.length == sections.length
|
61
|
+
self.sections = ordered_ids.map {|section_id| sections.find {|sec| sec["id"] == section_id}}
|
62
|
+
save
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/app/models/sibu/site.rb
CHANGED
@@ -1,97 +1,97 @@
|
|
1
|
-
module Sibu
|
2
|
-
class Site < ApplicationRecord
|
3
|
-
include StyleUploader::Attachment.new(:style, cache: :styles_cache, store: :styles_store)
|
4
|
-
include Sibu::SectionsConcern
|
5
|
-
extend Sibu::UserConcern
|
6
|
-
|
7
|
-
store :custom_data, accessors: [:primary_font, :secondary_font, :primary_color, :secondary_color, :header_code, :footer_code],
|
8
|
-
coder: JSON
|
9
|
-
store :metadata, accessors: [:analytics_id], coder: JSON
|
10
|
-
|
11
|
-
belongs_to :site_template, :class_name => 'Sibu::SiteTemplate'
|
12
|
-
has_many :pages, :class_name => 'Sibu::Page', dependent: :destroy
|
13
|
-
|
14
|
-
validates_presence_of :name, :site_template, :version
|
15
|
-
|
16
|
-
DEFAULT_VERSION = 'fr'
|
17
|
-
|
18
|
-
def style_url
|
19
|
-
style ? style.url : site_template.path
|
20
|
-
end
|
21
|
-
|
22
|
-
def main_color
|
23
|
-
primary_color.blank? ? site_template.primary_color : primary_color
|
24
|
-
end
|
25
|
-
|
26
|
-
def alt_color
|
27
|
-
secondary_color.blank? ? site_template.secondary_color : secondary_color
|
28
|
-
end
|
29
|
-
|
30
|
-
def main_font
|
31
|
-
primary_font.blank? ? site_template.primary_font : primary_font
|
32
|
-
end
|
33
|
-
|
34
|
-
def alt_font
|
35
|
-
secondary_font.blank? ? site_template.secondary_font : secondary_font
|
36
|
-
end
|
37
|
-
|
38
|
-
def section_template(section)
|
39
|
-
"#{site_template.path}/#{section["category"]}/#{section["template"]}"
|
40
|
-
end
|
41
|
-
|
42
|
-
def not_found
|
43
|
-
"shared/#{site_template.path}/not_found"
|
44
|
-
end
|
45
|
-
|
46
|
-
def page(path)
|
47
|
-
pages.where(path: path).first
|
48
|
-
end
|
49
|
-
|
50
|
-
def page_by_id(page_id)
|
51
|
-
pages.where(id: page_id).select(:id, :path).first
|
52
|
-
end
|
53
|
-
|
54
|
-
def save_and_init
|
55
|
-
if valid?
|
56
|
-
self.sections = site_template.sections
|
57
|
-
site_template.pages.each do |p|
|
58
|
-
self.pages << Sibu::Page.new(p)
|
59
|
-
end
|
60
|
-
self.primary_color = site_template.primary_color
|
61
|
-
self.secondary_color = site_template.secondary_color
|
62
|
-
self.primary_font = site_template.primary_font
|
63
|
-
self.secondary_font = site_template.secondary_font
|
64
|
-
end
|
65
|
-
save
|
66
|
-
end
|
67
|
-
|
68
|
-
def pages_path_by_id
|
69
|
-
Hash[pages.collect {|p| [p.id.to_s, p.path]}]
|
70
|
-
end
|
71
|
-
|
72
|
-
def init_pages(source)
|
73
|
-
site_data = Rails.application.config.sibu[:site_data][source]
|
74
|
-
site_data.pages.each do |p|
|
75
|
-
self.pages << Sibu::Page.new(p)
|
76
|
-
end
|
77
|
-
save!
|
78
|
-
end
|
79
|
-
|
80
|
-
def init_sections(source)
|
81
|
-
site_data = Rails.application.config.sibu[:site_data][source]
|
82
|
-
self.sections = site_data.sections(self)
|
83
|
-
save!
|
84
|
-
end
|
85
|
-
|
86
|
-
def deep_copy
|
87
|
-
site_copy = deep_dup
|
88
|
-
pages.each do |p|
|
89
|
-
site_copy.name = name + ' - copie'
|
90
|
-
site_copy.domain = nil
|
91
|
-
site_copy.pages << p.deep_dup
|
92
|
-
end
|
93
|
-
|
94
|
-
site_copy
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
1
|
+
module Sibu
|
2
|
+
class Site < ApplicationRecord
|
3
|
+
include StyleUploader::Attachment.new(:style, cache: :styles_cache, store: :styles_store)
|
4
|
+
include Sibu::SectionsConcern
|
5
|
+
extend Sibu::UserConcern
|
6
|
+
|
7
|
+
store :custom_data, accessors: [:primary_font, :secondary_font, :primary_color, :secondary_color, :header_code, :footer_code],
|
8
|
+
coder: JSON
|
9
|
+
store :metadata, accessors: [:analytics_id], coder: JSON
|
10
|
+
|
11
|
+
belongs_to :site_template, :class_name => 'Sibu::SiteTemplate'
|
12
|
+
has_many :pages, :class_name => 'Sibu::Page', dependent: :destroy
|
13
|
+
|
14
|
+
validates_presence_of :name, :site_template, :version
|
15
|
+
|
16
|
+
DEFAULT_VERSION = 'fr'
|
17
|
+
|
18
|
+
def style_url
|
19
|
+
style ? style.url : site_template.path
|
20
|
+
end
|
21
|
+
|
22
|
+
def main_color
|
23
|
+
primary_color.blank? ? site_template.primary_color : primary_color
|
24
|
+
end
|
25
|
+
|
26
|
+
def alt_color
|
27
|
+
secondary_color.blank? ? site_template.secondary_color : secondary_color
|
28
|
+
end
|
29
|
+
|
30
|
+
def main_font
|
31
|
+
primary_font.blank? ? site_template.primary_font : primary_font
|
32
|
+
end
|
33
|
+
|
34
|
+
def alt_font
|
35
|
+
secondary_font.blank? ? site_template.secondary_font : secondary_font
|
36
|
+
end
|
37
|
+
|
38
|
+
def section_template(section)
|
39
|
+
"#{site_template.path}/#{section["category"]}/#{section["template"]}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def not_found
|
43
|
+
"shared/#{site_template.path}/not_found"
|
44
|
+
end
|
45
|
+
|
46
|
+
def page(path)
|
47
|
+
pages.where(path: path).first
|
48
|
+
end
|
49
|
+
|
50
|
+
def page_by_id(page_id)
|
51
|
+
pages.where(id: page_id).select(:id, :path).first
|
52
|
+
end
|
53
|
+
|
54
|
+
def save_and_init
|
55
|
+
if valid?
|
56
|
+
self.sections = site_template.sections
|
57
|
+
site_template.pages.each do |p|
|
58
|
+
self.pages << Sibu::Page.new(p)
|
59
|
+
end
|
60
|
+
self.primary_color = site_template.primary_color
|
61
|
+
self.secondary_color = site_template.secondary_color
|
62
|
+
self.primary_font = site_template.primary_font
|
63
|
+
self.secondary_font = site_template.secondary_font
|
64
|
+
end
|
65
|
+
save
|
66
|
+
end
|
67
|
+
|
68
|
+
def pages_path_by_id
|
69
|
+
Hash[pages.collect {|p| [p.id.to_s, p.path]}]
|
70
|
+
end
|
71
|
+
|
72
|
+
def init_pages(source)
|
73
|
+
site_data = Rails.application.config.sibu[:site_data][source]
|
74
|
+
site_data.pages.each do |p|
|
75
|
+
self.pages << Sibu::Page.new(p)
|
76
|
+
end
|
77
|
+
save!
|
78
|
+
end
|
79
|
+
|
80
|
+
def init_sections(source)
|
81
|
+
site_data = Rails.application.config.sibu[:site_data][source]
|
82
|
+
self.sections = site_data.sections(self)
|
83
|
+
save!
|
84
|
+
end
|
85
|
+
|
86
|
+
def deep_copy
|
87
|
+
site_copy = deep_dup
|
88
|
+
pages.each do |p|
|
89
|
+
site_copy.name = name + ' - copie'
|
90
|
+
site_copy.domain = nil
|
91
|
+
site_copy.pages << p.deep_dup
|
92
|
+
end
|
93
|
+
|
94
|
+
site_copy
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -1,22 +1,22 @@
|
|
1
|
-
module Sibu
|
2
|
-
class SiteTemplate < ApplicationRecord
|
3
|
-
store :default_sections, accessors: [:sections], coder: JSON
|
4
|
-
store :default_pages, accessors: [:pages], coder: JSON
|
5
|
-
store :default_templates, accessors: [:templates], coder: JSON
|
6
|
-
store :default_styles, accessors: [:primary_font, :secondary_font, :primary_color, :secondary_color], coder: JSON
|
7
|
-
|
8
|
-
def reference
|
9
|
-
name.parameterize.gsub('-', '_')
|
10
|
-
end
|
11
|
-
|
12
|
-
def available_sections(path_prefix = 'app/views/shared')
|
13
|
-
sections_list = []
|
14
|
-
Dir.glob(File.join(Rails.root, "#{path_prefix}/#{path}/*/")).each do |dir|
|
15
|
-
cat = dir.split('/').last
|
16
|
-
sections_list += Dir.glob(dir + "*.erb").map {|f| f.split('/').last}.
|
17
|
-
map {|f| f[1..-1].gsub('.html.erb', '')}.map {|f| {"id" => "sibu_template_#{f}", "category" => cat, "template" => f}}
|
18
|
-
end
|
19
|
-
sections_list
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
1
|
+
module Sibu
|
2
|
+
class SiteTemplate < ApplicationRecord
|
3
|
+
store :default_sections, accessors: [:sections], coder: JSON
|
4
|
+
store :default_pages, accessors: [:pages], coder: JSON
|
5
|
+
store :default_templates, accessors: [:templates], coder: JSON
|
6
|
+
store :default_styles, accessors: [:primary_font, :secondary_font, :primary_color, :secondary_color], coder: JSON
|
7
|
+
|
8
|
+
def reference
|
9
|
+
name.parameterize.gsub('-', '_')
|
10
|
+
end
|
11
|
+
|
12
|
+
def available_sections(path_prefix = 'app/views/shared')
|
13
|
+
sections_list = []
|
14
|
+
Dir.glob(File.join(Rails.root, "#{path_prefix}/#{path}/*/")).each do |dir|
|
15
|
+
cat = dir.split('/').last
|
16
|
+
sections_list += Dir.glob(dir + "*.erb").map {|f| f.split('/').last}.
|
17
|
+
map {|f| f[1..-1].gsub('.html.erb', '')}.map {|f| {"id" => "sibu_template_#{f}", "category" => cat, "template" => f}}
|
18
|
+
end
|
19
|
+
sections_list
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,23 +1,23 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html class="sibu">
|
3
|
-
<head>
|
4
|
-
<title><%= conf[:title] %></title>
|
5
|
-
<%= stylesheet_link_tag conf[:stylesheet], media: 'all' %>
|
6
|
-
<%= javascript_include_tag conf[:javascript] %>
|
7
|
-
<%= javascript_include_tag 'sibu/common' %>
|
8
|
-
<%= csrf_meta_tags %>
|
9
|
-
</head>
|
10
|
-
<body>
|
11
|
-
<% [:top_panel, :side_panel, :content_panel, :bottom_panel].each do |panel| %>
|
12
|
-
<% unless conf[panel].blank? %>
|
13
|
-
<div class="sibu_panel">
|
14
|
-
<%= render conf[panel] %>
|
15
|
-
</div>
|
16
|
-
<% end %>
|
17
|
-
<% end %>
|
18
|
-
<script>
|
19
|
-
sibuCallback("<%= "#{action_name}_#{controller_name}".camelize(:lower) %>");
|
20
|
-
</script>
|
21
|
-
<%= yield :scripts %>
|
22
|
-
</body>
|
23
|
-
</html>
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html class="sibu">
|
3
|
+
<head>
|
4
|
+
<title><%= conf[:title] %></title>
|
5
|
+
<%= stylesheet_link_tag conf[:stylesheet], media: 'all' %>
|
6
|
+
<%= javascript_include_tag conf[:javascript] %>
|
7
|
+
<%= javascript_include_tag 'sibu/common' %>
|
8
|
+
<%= csrf_meta_tags %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<% [:top_panel, :side_panel, :content_panel, :bottom_panel].each do |panel| %>
|
12
|
+
<% unless conf[panel].blank? %>
|
13
|
+
<div class="sibu_panel">
|
14
|
+
<%= render conf[panel] %>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
18
|
+
<script>
|
19
|
+
sibuCallback("<%= "#{action_name}_#{controller_name}".camelize(:lower) %>");
|
20
|
+
</script>
|
21
|
+
<%= yield :scripts %>
|
22
|
+
</body>
|
23
|
+
</html>
|