activeadmin-selleo-cms 0.0.18 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- data/app/admin/active_admin/views_helper.rb +4 -0
- data/app/admin/activeadmin_selleo_cms/page.rb +42 -6
- data/app/assets/javascripts/activeadmin-selleo-cms/custom.js +35 -0
- data/app/assets/javascripts/activeadmin-selleo-cms/jquery-ui-timepicker-addon.js +1902 -0
- data/app/assets/javascripts/ckeditor/config.js +12 -1
- data/app/assets/stylesheets/activeadmin-selleo-cms/custom.css +5 -1
- data/app/assets/stylesheets/activeadmin-selleo-cms/jquery-ui-timepicker-addon.css +10 -0
- data/app/controllers/pages_controller.rb +9 -4
- data/app/controllers/searches_controller.rb +1 -1
- data/app/helpers/pages_helper.rb +9 -5
- data/app/models/activeadmin_selleo_cms/asset.rb +7 -1
- data/app/models/activeadmin_selleo_cms/attachment.rb +2 -0
- data/app/models/activeadmin_selleo_cms/image.rb +21 -0
- data/app/models/activeadmin_selleo_cms/layout.rb +27 -3
- data/app/models/activeadmin_selleo_cms/page.rb +33 -33
- data/app/models/activeadmin_selleo_cms/search.rb +1 -0
- data/app/models/activeadmin_selleo_cms/section.rb +33 -1
- data/app/views/admin/pages/_form.html.haml +2 -8
- data/app/views/admin/pages/_translated_fields.html.haml +52 -15
- data/app/views/admin/pages/reorder.html.haml +6 -0
- data/app/views/admin/pages/update_positions.js.erb +6 -0
- data/app/views/searches/show.html.haml +1 -1
- data/config/initializers/active_admin.rb +3 -0
- data/config/initializers/formtastic.rb +7 -0
- data/config/routes.rb +2 -7
- data/db/migrate/20130206173233_change_activeadmin_selleo_cms_searches.rb +29 -0
- data/db/migrate/20130207213528_change_activeadmin_selleo_cms_assets.rb +12 -0
- data/lib/activeadmin-selleo-cms/version.rb +1 -1
- data/lib/generators/activeadmin_selleo_cms/templates/cms.html.erb +7 -3
- data/spec/dummy/app/views/layouts/cms.html.erb +1 -1
- data/spec/dummy/db/snapshots/test_database.sql +1 -1
- data/spec/dummy/log/test.log +79024 -0
- data/spec/dummy/tmp/cache/assets/BEF/CA0/sprockets%2F3335c73d91157a627611592700a9654e +0 -0
- data/spec/dummy/tmp/cache/assets/C5A/610/sprockets%2Fbe898195780d802c102d152255d9e477 +0 -0
- data/spec/dummy/tmp/cache/assets/CB7/190/sprockets%2F136a9350fa75f3336af293952861ed6d +0 -0
- data/spec/dummy/tmp/cache/assets/CBA/D70/sprockets%2F8c5e2f7ea6f160a6792a442f01378479 +0 -0
- data/spec/dummy/tmp/cache/assets/CCF/2E0/sprockets%2Fde5b2bd811d24557c940a2239b7e3130 +0 -0
- data/spec/dummy/tmp/cache/assets/CD3/3E0/sprockets%2F373fa62090ab111ae606b963e1b8c793 +0 -0
- data/spec/dummy/tmp/cache/assets/CD6/930/sprockets%2Fb62a24129369fea572b674303a7fa12f +0 -0
- data/spec/dummy/tmp/cache/assets/CE2/D80/sprockets%2F28a4d5b1a75700c7579e3773f34ccd71 +0 -0
- data/spec/dummy/tmp/cache/assets/CE3/720/sprockets%2F8c9e2817b83ec580831f21b0c352c9c7 +0 -0
- data/spec/dummy/tmp/cache/assets/CED/FB0/sprockets%2Fa675d17ed83804639ec0264b624d98ed +0 -0
- data/spec/dummy/tmp/cache/assets/D2C/2E0/sprockets%2Fa031c32e27ced12f81d4326f8b52fb23 +0 -0
- data/spec/dummy/tmp/cache/assets/D5C/1D0/sprockets%2F0671a22da74f433700c99e13bfaaf0ce +0 -0
- data/spec/dummy/tmp/cache/assets/D63/6C0/sprockets%2F1ae1f1cf9d92d0e61b7006171a39fd4d +0 -0
- data/spec/dummy/tmp/cache/assets/D64/060/sprockets%2F3b86cba556132a40a7e49a7b4c7e17ad +0 -0
- data/spec/dummy/tmp/cache/assets/D92/B20/sprockets%2F871f050bda629a18e11ea8db7c1aca77 +0 -0
- data/spec/dummy/tmp/cache/assets/DB2/EA0/sprockets%2Ffead656b8b83fbae9f69435c33b4649d +0 -0
- data/spec/dummy/tmp/cache/assets/E37/3E0/sprockets%2F9e6d2d17ed6da64a2f1876d4cdfefcd1 +0 -0
- data/spec/dummy/tmp/capybara/capybara-201301312228138539754304.html +152 -0
- data/spec/dummy/tmp/capybara/capybara-201301312228185417992211.html +152 -0
- data/spec/dummy/tmp/capybara/capybara-201301312228232926906843.html +152 -0
- data/spec/dummy/tmp/capybara/capybara-201301312228302851745933.html +176 -0
- data/spec/dummy/tmp/capybara/capybara-20130131222835626927814.html +152 -0
- data/spec/dummy/tmp/capybara/capybara-201301312228403892930584.html +152 -0
- data/spec/dummy/tmp/capybara/capybara-201301312228491329185040.html +152 -0
- data/spec/dummy/tmp/capybara/capybara-201301312232412606495803.html +182 -0
- data/spec/dummy/tmp/capybara/capybara-201301312232508358940406.html +242 -0
- data/spec/dummy/tmp/capybara/capybara-201301312233036556441968.html +182 -0
- data/spec/dummy/tmp/capybara/capybara-201301312233093002404474.html +182 -0
- data/spec/models/activeadmin_selleo_cms/page_spec.rb +9 -0
- data/spec/support/pages_helper.rb +4 -4
- metadata +46 -5
- data/app/models/activeadmin_selleo_cms/header_image.rb +0 -12
- data/app/models/activeadmin_selleo_cms/icon.rb +0 -12
- data/app/modules/active_admin/views/index_as_list.rb +0 -28
@@ -160,7 +160,6 @@ CKEDITOR.editorConfig = function( config )
|
|
160
160
|
|
161
161
|
config.toolbar_Lite =
|
162
162
|
[
|
163
|
-
['FontSize'],
|
164
163
|
['Cut', 'Copy', 'Paste'],
|
165
164
|
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
|
166
165
|
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyFull'],
|
@@ -168,4 +167,16 @@ CKEDITOR.editorConfig = function( config )
|
|
168
167
|
['BulletedList', 'HorizontalRule']
|
169
168
|
];
|
170
169
|
|
170
|
+
config.toolbar_Minimal =
|
171
|
+
[
|
172
|
+
['Cut', 'Copy', 'Paste'],
|
173
|
+
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
|
174
|
+
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyFull']
|
175
|
+
];
|
176
|
+
|
177
|
+
config.toolbar_Header =
|
178
|
+
[
|
179
|
+
['Bold'],
|
180
|
+
];
|
181
|
+
|
171
182
|
};
|
@@ -56,4 +56,8 @@ div.translation > input {
|
|
56
56
|
|
57
57
|
table#translations td.key {
|
58
58
|
padding-top: 16px;
|
59
|
-
}
|
59
|
+
}
|
60
|
+
|
61
|
+
.sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
|
62
|
+
.sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
|
63
|
+
.sortable li span { position: absolute; margin-left: -1.3em; }
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
|
2
|
+
.ui-timepicker-div dl { text-align: left; }
|
3
|
+
.ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; }
|
4
|
+
.ui-timepicker-div dl dd { margin: 0 10px 10px 65px; }
|
5
|
+
.ui-timepicker-div td { font-size: 90%; }
|
6
|
+
.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
|
7
|
+
|
8
|
+
.ui-timepicker-rtl{ direction: rtl; }
|
9
|
+
.ui-timepicker-rtl dl { text-align: right; }
|
10
|
+
.ui-timepicker-rtl dl dd { margin: 0 65px 10px 10px; }
|
@@ -4,19 +4,24 @@ class PagesController < CmsController
|
|
4
4
|
private
|
5
5
|
|
6
6
|
def find_page
|
7
|
-
page_scope = ActiveadminSelleoCms::Page
|
8
7
|
root = ActiveadminSelleoCms::Page.root
|
9
8
|
|
10
9
|
raise "Create at least one page" unless root
|
11
10
|
|
12
|
-
|
13
|
-
|
11
|
+
page_id = nil
|
12
|
+
|
13
|
+
5.downto(1).each do |l|
|
14
|
+
if params["slug#{l}"] and page = ActiveadminSelleoCms::Page.where(parent_id: page_id).find_by_slug(params["slug#{l}"])
|
15
|
+
page_id = page.id
|
16
|
+
end
|
14
17
|
end
|
15
18
|
|
16
|
-
@page =
|
19
|
+
@page = ActiveadminSelleoCms::Page.find_by_id(page_id)
|
17
20
|
|
18
21
|
if !@page or (!@page.is_published? and @page != root)
|
19
22
|
redirect_to page_path(I18n.locale, root)
|
23
|
+
elsif @page.redirect_to_first_sub_page
|
24
|
+
redirect_to page_path(I18n.locale, @page.children.first || root)
|
20
25
|
end
|
21
26
|
end
|
22
27
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class SearchesController < CmsController
|
2
2
|
def show
|
3
|
-
@results = ActiveadminSelleoCms::Search.current_locale.search_by_content(params[:id])
|
3
|
+
@results = ActiveadminSelleoCms::Search.current_locale.search_by_content(params[:id])
|
4
4
|
render action: :show, layout: 'search'
|
5
5
|
end
|
6
6
|
end
|
data/app/helpers/pages_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module PagesHelper
|
2
2
|
def link_to_locale(link_name, locale, page=nil)
|
3
3
|
if page
|
4
|
-
link_to link_name,
|
4
|
+
link_to link_name, url_to_page(page, locale.to_s)
|
5
5
|
elsif request.fullpath.match(/^\/\w{2}\/.*/)
|
6
6
|
link_to link_name, request.fullpath.gsub(/^\/(\w{2})\//, "/#{locale.code}/")
|
7
7
|
else
|
@@ -11,19 +11,23 @@ module PagesHelper
|
|
11
11
|
|
12
12
|
def link_to_search_result(result)
|
13
13
|
if result.is_a? ActiveadminSelleoCms::Page
|
14
|
-
link_to result, result.url
|
14
|
+
"#{link_to result.breadcrumb, result.url} #{link_to "(e)", edit_admin_page_path(result.id), target: '_blank' if current_user}".html_safe
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def url_to_page(page)
|
18
|
+
def url_to_page(page, locale=I18n.locale)
|
19
19
|
return "#" unless page
|
20
|
-
|
20
|
+
_locale = I18n.locale
|
21
|
+
I18n.locale = locale
|
22
|
+
_url = if page.is_link_url
|
21
23
|
page.link_url
|
22
24
|
elsif page.redirect_to_first_sub_page
|
23
25
|
page.children.published.any? ? url_to_page(page.children.published.first) : "#"
|
24
26
|
else
|
25
|
-
page_path(
|
27
|
+
page_path(locale, page)
|
26
28
|
end
|
29
|
+
I18n.locale = _locale
|
30
|
+
return _url
|
27
31
|
end
|
28
32
|
|
29
33
|
def link_to_page(page, link_name=nil)
|
@@ -1,9 +1,15 @@
|
|
1
1
|
module ActiveadminSelleoCms
|
2
2
|
class Asset < ActiveRecord::Base
|
3
|
-
|
3
|
+
attr_protected :id
|
4
4
|
|
5
5
|
belongs_to :assetable, polymorphic: true
|
6
6
|
|
7
|
+
has_attached_file :cover,
|
8
|
+
:url => "/system/cms/covers/:id/:style_:basename.:extension",
|
9
|
+
:path => ":rails_root/public/system/cms/covers/:id/:style_:basename.:extension"
|
10
|
+
|
11
|
+
validates_attachment_size :cover, :less_than => 10.megabytes
|
12
|
+
|
7
13
|
def url(format=nil)
|
8
14
|
data.url(format)
|
9
15
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ActiveadminSelleoCms
|
2
|
+
class Image < ActiveadminSelleoCms::Asset
|
3
|
+
attr_accessor :image_width, :image_height, :resize_method
|
4
|
+
|
5
|
+
has_attached_file :data,
|
6
|
+
:url => "/system/cms/images/:id/:style_:basename.:extension",
|
7
|
+
:path => ":rails_root/public/system/cms/images/:id/:style_:basename.:extension",
|
8
|
+
:styles => Proc.new{ |attachment| attachment.instance.image_sizes },
|
9
|
+
:default_style => :normal
|
10
|
+
|
11
|
+
validates_attachment_size :data, :less_than => 1.megabytes
|
12
|
+
validates_attachment_presence :data
|
13
|
+
|
14
|
+
attr_protected :id
|
15
|
+
|
16
|
+
def image_sizes
|
17
|
+
{ :normal => "#{image_width || 640}x#{image_height || 480}#{resize_method || "#"}" }
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -37,13 +37,37 @@ module ActiveadminSelleoCms
|
|
37
37
|
end
|
38
38
|
|
39
39
|
class Section
|
40
|
-
attr_accessor :name, :type, :toolbar, :
|
40
|
+
attr_accessor :name, :type, :toolbar, :width, :height, :resize_method
|
41
41
|
|
42
42
|
def initialize(node)
|
43
43
|
@name = node.attributes["name"].content
|
44
|
-
@attachments = node.attributes["attachments"] ? true : false
|
45
44
|
@type = node.attributes["data-type"] ? node.attributes["data-type"].content : 'ckeditor'
|
46
|
-
@
|
45
|
+
@attachments = (['files'].include?(@type) or node.attributes["data-attachments"]) ? true : false
|
46
|
+
@attachment = (['file'].include?(@type) or node.attributes["data-attachment"]) ? true : false
|
47
|
+
@toolbar = node.attributes["data-toolbar"] ? node.attributes["data-toolbar"].content : 'Minimal'
|
48
|
+
@width = node.attributes["data-width"] ? node.attributes["data-width"].content : 640
|
49
|
+
@height = node.attributes["data-height"] ? node.attributes["data-height"].content : 480
|
50
|
+
@resize_method = node.attributes["data-resize-method"] ? node.attributes["data-resize-method"].content : "#"
|
51
|
+
end
|
52
|
+
|
53
|
+
def text?
|
54
|
+
['ckeditor', 'text'].include? @type
|
55
|
+
end
|
56
|
+
|
57
|
+
def image?
|
58
|
+
['image'].include? @type
|
59
|
+
end
|
60
|
+
|
61
|
+
def images?
|
62
|
+
['images'].include? @type
|
63
|
+
end
|
64
|
+
|
65
|
+
def attachments?
|
66
|
+
@attachments == true
|
67
|
+
end
|
68
|
+
|
69
|
+
def attachment?
|
70
|
+
@attachment == true
|
47
71
|
end
|
48
72
|
|
49
73
|
end
|
@@ -11,15 +11,13 @@ module ActiveadminSelleoCms
|
|
11
11
|
attr_protected :id
|
12
12
|
|
13
13
|
has_many :sections, as: :sectionable
|
14
|
-
has_one :icon, as: :assetable
|
15
|
-
has_one :header_image, as: :assetable
|
16
14
|
has_many :attachments, as: :assetable
|
17
15
|
has_many :assets, as: :assetable
|
18
16
|
has_many :searches, as: :searchable
|
19
17
|
# ZUO
|
20
18
|
#has_many :translations, class_name: 'ActiveadminSelleoCms::Page::Translation', foreign_key: :activeadmin_selleo_cms_page_id, dependent: :destroy, before_add: :set_nest
|
21
19
|
|
22
|
-
accepts_nested_attributes_for :translations, :sections, :children, :
|
20
|
+
accepts_nested_attributes_for :translations, :sections, :children, :attachments
|
23
21
|
|
24
22
|
validates_format_of :link_url, with: /^http/i, allow_blank: false, if: ->(page) { page.is_link_url }
|
25
23
|
validates_presence_of :layout_name
|
@@ -32,8 +30,8 @@ module ActiveadminSelleoCms
|
|
32
30
|
scope :latest, ->(n) { published.reorder("published_at DESC").limit(n) }
|
33
31
|
scope :most_read, ->(n) { published.reorder("views DESC").limit(n) }
|
34
32
|
scope :with_layout, ->(layout_name) { where(layout_name: layout_name) }
|
35
|
-
scope :with_setting_value, ->(key, value) { where("activeadmin_selleo_cms_pages.settings ~ '#{key}
|
36
|
-
scope :with_setting, ->(key) { where("activeadmin_selleo_cms_pages.settings ~ '#{key}
|
33
|
+
scope :with_setting_value, ->(key, value) { where("activeadmin_selleo_cms_pages.settings ~ '#{key}:\\s?\\W?#{value}\\W?\\s*$'") }
|
34
|
+
scope :with_setting, ->(key) { where("activeadmin_selleo_cms_pages.settings ~ '#{key}:\\s?'") }
|
37
35
|
|
38
36
|
before_validation do
|
39
37
|
self.slug = self.title.parameterize if title and slug.blank?
|
@@ -50,28 +48,25 @@ module ActiveadminSelleoCms
|
|
50
48
|
self.layout_name = Layout.all.first if new_record? and layout_name.blank?
|
51
49
|
end
|
52
50
|
|
53
|
-
|
54
|
-
|
51
|
+
after_initialize do
|
52
|
+
_settings = read_attribute(:settings) || {}
|
53
|
+
_settings.keys.each do |key|
|
54
|
+
eval "
|
55
|
+
def #{key}
|
56
|
+
(self.settings || {})[:#{key}]
|
57
|
+
end
|
58
|
+
def #{key}=(val)
|
59
|
+
self.settings ||= {}
|
60
|
+
val = true if val == '1'
|
61
|
+
val = false if val == '0'
|
62
|
+
self.settings[:#{key}] = val
|
63
|
+
end
|
64
|
+
"
|
65
|
+
end
|
55
66
|
end
|
56
67
|
|
57
|
-
def
|
58
|
-
|
59
|
-
unless (self.settings || {})[_method].nil?
|
60
|
-
eval "
|
61
|
-
def #{_method}
|
62
|
-
(self.settings || {})[:#{_method}]
|
63
|
-
end
|
64
|
-
def #{_method}=(val)
|
65
|
-
self.settings ||= {}
|
66
|
-
val = true if val == '1'
|
67
|
-
val = false if val == '0'
|
68
|
-
self.settings[:#{_method}] = val
|
69
|
-
end
|
70
|
-
"
|
71
|
-
send(method, *args)
|
72
|
-
else
|
73
|
-
super
|
74
|
-
end
|
68
|
+
def set_nest(translation)
|
69
|
+
translation.activeadmin_selleo_cms_page ||= self
|
75
70
|
end
|
76
71
|
|
77
72
|
def initialize_missing_sections
|
@@ -96,14 +91,6 @@ module ActiveadminSelleoCms
|
|
96
91
|
parent ? "#{parent.to_param}/#{slug}" : slug
|
97
92
|
end
|
98
93
|
|
99
|
-
def icon_url
|
100
|
-
icon ? icon.url : 'http://placehold.it/120x90'
|
101
|
-
end
|
102
|
-
|
103
|
-
def header_image_url
|
104
|
-
header_image ? header_image.url : 'http://placehold.it/770x385'
|
105
|
-
end
|
106
|
-
|
107
94
|
def roots
|
108
95
|
Page.published.roots
|
109
96
|
end
|
@@ -124,6 +111,19 @@ module ActiveadminSelleoCms
|
|
124
111
|
_url
|
125
112
|
end
|
126
113
|
|
114
|
+
def self.update_positions(page_ids)
|
115
|
+
begin
|
116
|
+
ActiveRecord::Base.transaction do
|
117
|
+
page_ids.each_cons(2) do |pair|
|
118
|
+
Page.find(pair.last).move_to_right_of(Page.find(pair.first))
|
119
|
+
end
|
120
|
+
end
|
121
|
+
return true
|
122
|
+
rescue
|
123
|
+
return false
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
127
|
class Translation
|
128
128
|
attr_protected :id
|
129
129
|
|
@@ -8,6 +8,8 @@ module ActiveadminSelleoCms
|
|
8
8
|
|
9
9
|
belongs_to :sectionable, polymorphic: true
|
10
10
|
|
11
|
+
delegate :layout, to: :sectionable
|
12
|
+
|
11
13
|
accepts_nested_attributes_for :translations
|
12
14
|
|
13
15
|
validates_presence_of :name
|
@@ -26,12 +28,42 @@ module ActiveadminSelleoCms
|
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
31
|
+
def image
|
32
|
+
if current_translation = translations.with_locales(I18n.fallbacks[I18n.locale]).detect{|t| t.image}
|
33
|
+
current_translation.image
|
34
|
+
else
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def attachment
|
40
|
+
if current_translation = translations.with_locales(I18n.fallbacks[I18n.locale]).detect{|t| t.attachment}
|
41
|
+
current_translation.attachment
|
42
|
+
else
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def images
|
48
|
+
if current_translation = translations.with_locales(I18n.fallbacks[I18n.locale]).detect{|t| t.images.any? }
|
49
|
+
current_translation.images
|
50
|
+
else
|
51
|
+
[]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
29
55
|
class Translation
|
30
56
|
attr_protected :id
|
31
57
|
|
32
58
|
has_many :attachments, as: :assetable
|
59
|
+
has_many :images, as: :assetable
|
60
|
+
has_one :attachment, as: :assetable
|
61
|
+
has_one :image, as: :assetable
|
33
62
|
|
34
|
-
accepts_nested_attributes_for :attachments
|
63
|
+
accepts_nested_attributes_for :attachments, reject_if: lambda{ |i| i[:data].blank? }
|
64
|
+
accepts_nested_attributes_for :attachment, reject_if: lambda{ |i| i[:data].blank? }
|
65
|
+
accepts_nested_attributes_for :image, reject_if: lambda{ |i| i[:data].blank? }
|
66
|
+
accepts_nested_attributes_for :images, reject_if: lambda{ |i| i[:data].blank? }
|
35
67
|
end
|
36
68
|
end
|
37
69
|
end
|
@@ -5,8 +5,9 @@
|
|
5
5
|
- current_locale = ActiveadminSelleoCms::Locale.find_by_code(I18n.locale)
|
6
6
|
- @page.initialize_missing_sections
|
7
7
|
- @section_forms = []
|
8
|
+
-#= @page.errors.full_messages
|
8
9
|
|
9
|
-
= form.inputs
|
10
|
+
= form.inputs general_options(@page) do
|
10
11
|
= form.input :layout_name, collection: ActiveadminSelleoCms::Layout.all.sort, include_blank: false, hint: "The form will reload on change"
|
11
12
|
= form.input :parent_id, as: :select, collection: nested_set_options(ActiveadminSelleoCms::Page, @page) {|i| "#{'-' * i.level} #{i.title}" }
|
12
13
|
= form.input :is_published, as: :boolean, input_html: { checked: @page.published_at.present? }
|
@@ -41,13 +42,6 @@
|
|
41
42
|
- else
|
42
43
|
= ""
|
43
44
|
|
44
|
-
- unless @page.new_record?
|
45
|
-
= form.inputs "Page icon", for: [:icon, form.object.icon || ActiveadminSelleoCms::Icon.new] do |icon_form|
|
46
|
-
= icon_form.input :data, label: "Icon", hint: (form.object.icon ? icon_form.template.image_tag(form.object.icon_url) : "No icon uploaded yet" )
|
47
|
-
|
48
|
-
= form.inputs "Header image", for: [:header_image, form.object.header_image || ActiveadminSelleoCms::HeaderImage.new] do |header_image_form|
|
49
|
-
= header_image_form.input :data, label: "Header image", hint: (form.object.header_image ? header_image_form.template.image_tag(form.object.header_image_url) : "No header image uploaded yet" )
|
50
|
-
|
51
45
|
= form.actions do
|
52
46
|
= form.action :submit
|
53
47
|
%li.cancel
|
@@ -8,20 +8,57 @@
|
|
8
8
|
= form.input :meta_keywords, input_html: { class: 'link-url-hide' }
|
9
9
|
= form.input :meta_description, input_html: { rows: 3, class: 'link-url-hide' }
|
10
10
|
= form.input :locale, :as => :hidden, :label => false
|
11
|
+
-#- unless @page.new_record?
|
11
12
|
- @section_forms.each do |section_form|
|
12
|
-
|
13
|
-
|
14
|
-
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
13
|
+
%section{:name => section_form.object.name}
|
14
|
+
= section_form.semantic_fields_for :translations do |section_form_translated|
|
15
|
+
- if section_form_translated.object.locale.to_sym == locale.code
|
16
|
+
- section = @page.layout.find_section(section_form.object.name)
|
17
|
+
|
18
|
+
- if section.text?
|
19
|
+
= section_form_translated.input :body, as: section.type, label: section.name.titleize, input_html: { toolbar: section.toolbar }
|
20
|
+
|
21
|
+
- elsif section.image?
|
22
|
+
= section_form_translated.inputs section.name.titleize, for: [:image, section_form_translated.object.image || ActiveadminSelleoCms::Image.new] do |image_form|
|
23
|
+
= image_form.input :image_width, as: :hidden, value: section.width
|
24
|
+
= image_form.input :image_height, as: :hidden, value: section.height
|
25
|
+
= image_form.input :resize_method, as: :hidden, value: section.resize_method
|
26
|
+
= image_form.input :data, label: "File to upload", input_html: { multiple: false }, hint: (section_form_translated.object.image ? section_form_translated.template.image_tag(section_form_translated.object.image.url) : "No icon uploaded yet" )
|
27
|
+
|
28
|
+
- elsif section.images?
|
29
|
+
= section_form_translated.inputs section.name.titleize, for: [:images, ActiveadminSelleoCms::Image.new] do |image_form|
|
30
|
+
= image_form.input :image_width, as: :hidden, value: section.width
|
31
|
+
= image_form.input :image_height, as: :hidden, value: section.height
|
32
|
+
= image_form.input :resize_method, as: :hidden, value: section.resize_method
|
33
|
+
= image_form.input :data, label: "File to upload", input_html: { multiple: false }
|
34
|
+
- unless section_form_translated.object.new_record?
|
35
|
+
- section_form_translated.object.images.each do |image|
|
36
|
+
%li{"data-asset-id" => image.id}
|
37
|
+
%label Image
|
38
|
+
= image.data_file_name
|
39
|
+
= link_to_function "Delete", "delete_asset(#{@page.id}, #{image.id})"
|
40
|
+
|
41
|
+
- elsif section.attachment?
|
42
|
+
= section_form_translated.inputs section.name.titleize, for: [:attachment, section_form_translated.object.image || ActiveadminSelleoCms::Attachment.new] do |attachment_form|
|
43
|
+
= attachment_form.input :data, label: "File to upload", input_html: { multiple: false }, hint: (section_form_translated.object.image ? link_to(section_form_translated.object.image.url) : "No file uploaded yet" )
|
44
|
+
= attachment_form.input :cover, label: "Cover image"
|
45
|
+
= attachment_form.input :caption
|
46
|
+
|
47
|
+
= section_form_translated.input :locale, :as => :hidden, :label => false
|
48
|
+
- if section.attachments?
|
49
|
+
= section_form_translated.inputs "#{section.name.titleize} attachments", for: [:attachments, ActiveadminSelleoCms::Attachment.new] do |attachment_form|
|
50
|
+
= attachment_form.input :data, label: "File to upload"
|
51
|
+
= attachment_form.input :cover, label: "Cover image"
|
52
|
+
= attachment_form.input :caption
|
53
|
+
- if section_form_translated.object.attachments.any? and !section_form_translated.object.new_record?
|
54
|
+
%li Existing files
|
55
|
+
- section_form_translated.object.attachments.each do |attachment|
|
56
|
+
%li{"data-asset-id" => attachment.id}
|
57
|
+
%label File
|
58
|
+
= attachment.data_file_name
|
59
|
+
= image_tag(attachment.cover.url) if attachment.cover.exists?
|
60
|
+
= attachment.caption
|
61
|
+
= link_to_function "Delete", "delete_asset(#{@page.id}, #{attachment.id})"
|
62
|
+
- else
|
63
|
+
= ""
|
27
64
|
|