rails_admin_cms 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/rails_admin_cms/all.js.coffee +4 -1
- data/app/assets/javascripts/rails_admin_cms/cms.js.coffee +95 -13
- data/app/controllers/cms/forms_controller.rb +0 -3
- data/app/helpers/cms/form_helper.rb +3 -0
- data/app/helpers/cms/javascript_helper.rb +7 -0
- data/app/helpers/cms/view_helper.rb +1 -1
- data/app/helpers/cms/viewable_helper.rb +2 -2
- data/app/models/admin/form/row/as_header.rb +15 -0
- data/app/models/admin/viewable/form.rb +1 -1
- data/app/models/form.rb +5 -10
- data/app/models/form/row.rb +4 -0
- data/app/models/form/row/as_header.rb +19 -0
- data/app/models/form/static.rb +4 -0
- data/app/models/form/structure.rb +5 -3
- data/app/models/naming/form.rb +13 -0
- data/app/models/naming/viewable.rb +13 -0
- data/app/models/naming/viewable/block.rb +29 -0
- data/app/models/naming/viewable/form.rb +15 -0
- data/app/models/naming/viewable/page.rb +11 -0
- data/app/models/viewable.rb +1 -23
- data/app/models/viewable/block.rb +0 -24
- data/app/models/viewable/form.rb +11 -10
- data/app/models/viewable/page.rb +0 -6
- data/app/presenters/viewable/form_presenter.rb +1 -6
- data/app/presenters/viewable/view_presenter.rb +5 -1
- data/app/presenters/viewable_list_presenter.rb +2 -2
- data/app/presenters/viewable_presenter.rb +10 -2
- data/app/views/cms/forms/create.js.erb +2 -2
- data/app/views/cms/shared/_flash_messages.js.erb +1 -1
- data/config/routes.rb +2 -2
- data/lib/active_type/virtual_attributes_decorator.rb +27 -0
- data/lib/generators/cms/install/templates/app/views/cms/forms/contact/_form.html.erb +0 -7
- data/lib/generators/cms/install/templates/app/views/cms/forms/contact/new.html.erb +5 -0
- data/lib/generators/cms/install/templates/app/views/cms/pages/page.html.erb +3 -3
- data/lib/generators/cms/install/templates/config/initializers/rails_admin.rb +5 -5
- data/lib/rails_admin_cms.rb +1 -0
- data/lib/rails_admin_cms/version.rb +1 -1
- metadata +11 -5
- data/app/assets/javascripts/rails_admin_cms/cms/flashes.js.coffee +0 -2
- data/app/assets/javascripts/rails_admin_cms/cms/with_scope/forms.js.coffee +0 -4
- data/app/assets/javascripts/rails_admin_cms/cms/with_scope/viewables.js.coffee +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aca625467f4115ced159d95b214b2f6122102f59
|
4
|
+
data.tar.gz: 5a7620fc1c7846cfdc0c7a4aaf7b7b8b9fdd89b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d1d94efde4c1c8a0ccb665a8a71cf878d11b2d7316b59516cc6fdbfd81a36be89de1da854bbce6f1dbf6da03540c42a598e32d4e889dc11f1e3f55e181de788
|
7
|
+
data.tar.gz: 0fe2ddbd1f4c55f816af3f2b528712e721801448ceedaa0eb6f9d5424deaee49274f4e31aad608035ac4e64c083a7187d83fd8aa64ff8164d11eafb8bd94acd7
|
@@ -1,18 +1,100 @@
|
|
1
|
-
|
1
|
+
$.fn.extend
|
2
|
+
cms_data: (name = null) ->
|
3
|
+
if name?
|
4
|
+
$(this).data("js-#{ name }")
|
5
|
+
else
|
6
|
+
for key, value of $(this).data()
|
7
|
+
if key.match /^js/
|
8
|
+
return value
|
2
9
|
|
3
|
-
CMS
|
4
|
-
|
5
|
-
|
10
|
+
class CMS
|
11
|
+
@start: =>
|
12
|
+
@ready =>
|
13
|
+
@clear_event_handlers()
|
14
|
+
@flash_messages()
|
6
15
|
|
7
|
-
|
8
|
-
|
9
|
-
callback()
|
16
|
+
@ready_with_scope 'cms-forms', =>
|
17
|
+
@validate()
|
10
18
|
|
11
|
-
|
12
|
-
|
13
|
-
|
19
|
+
@ready_with_scope 'cms-edit-mode', =>
|
20
|
+
@element('cms-sortable').each ->
|
21
|
+
$(this).sortable
|
22
|
+
update: (event, ui) ->
|
23
|
+
url = $(this).cms_data()['url']
|
14
24
|
|
15
|
-
|
25
|
+
target = $(ui.item)
|
26
|
+
id = target.cms_data('cms-sortable-id')
|
27
|
+
unique_key = { position: target.index() + 1 }
|
28
|
+
payload = $.param(id: id, unique_key: unique_key)
|
16
29
|
|
17
|
-
|
18
|
-
|
30
|
+
$.post(url, payload)
|
31
|
+
|
32
|
+
|
33
|
+
# https://github.com/gemgento/rails_script/blob/master/lib/generators/rails_script/install/templates/base.js.coffee
|
34
|
+
@clear_event_handlers: =>
|
35
|
+
$(document).on 'page:before-change', ->
|
36
|
+
for element in [window, document]
|
37
|
+
for event, handlers of ($._data(element, 'events') || {})
|
38
|
+
for handler in handlers
|
39
|
+
if handler? && handler.namespace == ''
|
40
|
+
$(element).off event, handler.handler
|
41
|
+
|
42
|
+
@flash_messages: =>
|
43
|
+
@element('cms-flash').fadeIn().delay(3500).fadeOut(800)
|
44
|
+
|
45
|
+
@validate: =>
|
46
|
+
$.validate(validateOnBlur: false)
|
47
|
+
|
48
|
+
@with_scope_any: (body_classes..., handler) =>
|
49
|
+
for body_class in body_classes
|
50
|
+
if @with_scope(body_class, handler)
|
51
|
+
return
|
52
|
+
|
53
|
+
@with_scope_all: (body_classes..., handler) =>
|
54
|
+
for body_class in body_classes
|
55
|
+
if !$('body').hasClass(body_class)
|
56
|
+
return
|
57
|
+
handler()
|
58
|
+
|
59
|
+
@with_scope_none: (body_classes..., handler) =>
|
60
|
+
without_scope = true
|
61
|
+
for body_class in body_classes
|
62
|
+
if $('body').hasClass(body_class)
|
63
|
+
without_scope = false
|
64
|
+
if without_scope
|
65
|
+
handler()
|
66
|
+
|
67
|
+
@with_scope: (body_class, handler) =>
|
68
|
+
if $('body').hasClass(body_class)
|
69
|
+
handler()
|
70
|
+
true
|
71
|
+
else
|
72
|
+
false
|
73
|
+
|
74
|
+
@ready_with_scope_any: (body_classes..., handler) =>
|
75
|
+
@ready =>
|
76
|
+
@with_scope_any(body_classes..., handler)
|
77
|
+
|
78
|
+
@ready_with_scope_all: (body_classes..., handler) =>
|
79
|
+
@ready =>
|
80
|
+
@with_scope_all(body_classes..., handler)
|
81
|
+
|
82
|
+
@ready_with_scope_none: (body_classes..., handler) =>
|
83
|
+
@ready =>
|
84
|
+
@with_scope_none(body_classes..., handler)
|
85
|
+
|
86
|
+
@ready_with_scope: (body_class, handler) =>
|
87
|
+
@ready =>
|
88
|
+
@with_scope(body_class, handler)
|
89
|
+
|
90
|
+
@ready: (handler) =>
|
91
|
+
$(document).on 'ready page:change', ->
|
92
|
+
handler()
|
93
|
+
|
94
|
+
@element_on: (name, events, handler) =>
|
95
|
+
$(document).on(events, "[data-js-#{ name }]", handler)
|
96
|
+
|
97
|
+
@element: (name) =>
|
98
|
+
$("[data-js-#{ name }]")
|
99
|
+
|
100
|
+
window.CMS = CMS
|
@@ -4,6 +4,9 @@ module CMS
|
|
4
4
|
simple_form_for(cms_form_instance, cms_form_options(options)) do |f|
|
5
5
|
concat f.invisible_captcha(:_subtitle)
|
6
6
|
yield f
|
7
|
+
if @cms_view
|
8
|
+
concat f.input(:structure_id, as: :hidden, input_html: { value: cms_form_instance.structure_id })
|
9
|
+
end
|
7
10
|
end
|
8
11
|
end
|
9
12
|
|
@@ -8,7 +8,7 @@ module CMS
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
Viewable::Block.names.each do |type|
|
11
|
+
Naming::Viewable::Block.names.each do |type|
|
12
12
|
define_cms_view_helper(type)
|
13
13
|
|
14
14
|
define_method "cms_#{type}" do |name = 'cms', min = 1, max = nil| # max = FLOAT::INFINITY
|
@@ -18,7 +18,7 @@ module CMS
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
Viewable.names.each do |type|
|
21
|
+
Naming::Viewable.names.each do |type|
|
22
22
|
define_cms_view_helper(type)
|
23
23
|
|
24
24
|
define_method "cms_#{type}" do |name = 'cms', min = 1, max = nil| # max = FLOAT::INFINITY
|
@@ -12,7 +12,7 @@ module Admin
|
|
12
12
|
field :structure do
|
13
13
|
pretty_value do
|
14
14
|
h, name = bindings[:view], value.name
|
15
|
-
path = "#{h.dashboard_path}form~row
|
15
|
+
path = "#{ h.dashboard_path }form~row?#{ { model_name: 'form~row', scope: name }.to_query }"
|
16
16
|
h.link_to name, path
|
17
17
|
end
|
18
18
|
|
data/app/models/form.rb
CHANGED
@@ -7,6 +7,7 @@ module Form
|
|
7
7
|
validates :_subtitle, invisible_captcha: true
|
8
8
|
|
9
9
|
before_save :set_locale
|
10
|
+
after_save :send_email, if: :with_email?
|
10
11
|
|
11
12
|
delegate :virtual?, :has_attachments?, :has_collections?, to: :class
|
12
13
|
end
|
@@ -33,16 +34,6 @@ module Form
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
36
|
-
class << self
|
37
|
-
def structure_models
|
38
|
-
%w[
|
39
|
-
Form::Structure
|
40
|
-
Form::Field
|
41
|
-
Form::Email
|
42
|
-
]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
37
|
private
|
47
38
|
|
48
39
|
def set_locale
|
@@ -50,4 +41,8 @@ module Form
|
|
50
41
|
self.locale = I18n.locale
|
51
42
|
end
|
52
43
|
end
|
44
|
+
|
45
|
+
def send_email
|
46
|
+
CMS::FormsMailer.send_email(self).deliver_later
|
47
|
+
end
|
53
48
|
end
|
data/app/models/form/row.rb
CHANGED
@@ -14,6 +14,10 @@ module Form
|
|
14
14
|
delegate :with_email?, :send_to, :subject, :body, :email_column_key, :header, to: :structure
|
15
15
|
delegate :form_name, to: :viewable
|
16
16
|
|
17
|
+
def js_form_selector
|
18
|
+
"#new_form_#{model_name.element}"
|
19
|
+
end
|
20
|
+
|
17
21
|
def send_from
|
18
22
|
send(email_column_key) if email_column_key
|
19
23
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Form
|
2
|
+
class Row::AsHeader < Row
|
3
|
+
include Admin::Form::Row::AsHeader
|
4
|
+
|
5
|
+
before_save :set_label
|
6
|
+
|
7
|
+
alias_attribute :label, :locale
|
8
|
+
|
9
|
+
def with_email?
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def set_label
|
16
|
+
self.label = I18n.t('cms.form.header', locale: I18n.default_locale)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/app/models/form/static.rb
CHANGED
@@ -10,6 +10,8 @@ module Form
|
|
10
10
|
belongs_to :email, dependent: :destroy
|
11
11
|
|
12
12
|
validates :fields, length: { maximum: RailsAdminCMS::Config.custom_form_max_size }
|
13
|
+
validates :viewable, presence: true, on: :create
|
14
|
+
validates :email, presence: true, on: :create
|
13
15
|
|
14
16
|
after_create :create_header
|
15
17
|
after_update :expire_cache
|
@@ -30,17 +32,17 @@ module Form
|
|
30
32
|
end
|
31
33
|
|
32
34
|
def header
|
33
|
-
rows.first
|
35
|
+
rows.first.becomes Row::AsHeader
|
34
36
|
end
|
35
37
|
|
36
38
|
private
|
37
39
|
|
38
40
|
def create_header
|
39
|
-
|
41
|
+
Row::AsHeader.create!(structure: self)
|
40
42
|
end
|
41
43
|
|
42
44
|
def expire_cache
|
43
|
-
viewable.touch
|
45
|
+
viewable.try(:touch)
|
44
46
|
end
|
45
47
|
|
46
48
|
module Splitter
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Naming
|
2
|
+
module Viewable
|
3
|
+
module Block
|
4
|
+
class << self
|
5
|
+
def restricted_names
|
6
|
+
@_restricted_names ||= Naming::Viewable.names + begin
|
7
|
+
CMS.constants.grep(/Helper$/).map{ |name|
|
8
|
+
"CMS::#{name}".constantize.instance_methods.grep(/^cms_/)
|
9
|
+
}.flatten.map{ |name|
|
10
|
+
name.to_s.sub(/^cms_/, '')
|
11
|
+
}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def names
|
16
|
+
@_names ||= begin
|
17
|
+
names = CMS.html_names 'app/views/cms/blocks'
|
18
|
+
names.each do |name|
|
19
|
+
if name.in? restricted_names
|
20
|
+
raise ArgumentError, "'cms/blocks/_#{name}.html' partial should be called otherwise, '#{name}' taken"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
names
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/app/models/viewable.rb
CHANGED
@@ -21,7 +21,7 @@ module Viewable
|
|
21
21
|
scope :localized, -> { includes(:unique_key).where(unique_keys: { locale: I18n.locale }) }
|
22
22
|
scope :other_locale, ->(locale) { includes(:unique_key).where(unique_keys: { locale: locale }) }
|
23
23
|
|
24
|
-
delegate :has_unlocalized_fields?, :unlocalized_fields, :viewable_type,
|
24
|
+
delegate :has_unlocalized_fields?, :unlocalized_fields, :viewable_type, to: :class
|
25
25
|
end
|
26
26
|
|
27
27
|
class_methods do
|
@@ -42,18 +42,6 @@ module Viewable
|
|
42
42
|
def viewable_type
|
43
43
|
name
|
44
44
|
end
|
45
|
-
|
46
|
-
def dashed_name
|
47
|
-
@_dashed_name ||= underscored_name.dasherize
|
48
|
-
end
|
49
|
-
|
50
|
-
def underscored_name
|
51
|
-
@_underscored_name ||= name.underscore.gsub('/', '_')
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def short_type
|
56
|
-
viewable_type.demodulize.underscore
|
57
45
|
end
|
58
46
|
|
59
47
|
def list(locale = nil)
|
@@ -75,16 +63,6 @@ module Viewable
|
|
75
63
|
.merge(locale: locale || self.locale)
|
76
64
|
end
|
77
65
|
|
78
|
-
class << self
|
79
|
-
def models
|
80
|
-
@_models ||= names.map{ |name| "Viewable::#{name.camelize}" }
|
81
|
-
end
|
82
|
-
|
83
|
-
def names
|
84
|
-
@_names ||= CMS.rb_all_names 'app/models/viewable'
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
66
|
private
|
89
67
|
|
90
68
|
def expire_cache
|
@@ -11,29 +11,5 @@ module Viewable
|
|
11
11
|
def partial_name
|
12
12
|
@_partial_name ||= unique_key_name.partition('/').first
|
13
13
|
end
|
14
|
-
|
15
|
-
class << self
|
16
|
-
def restricted_names
|
17
|
-
@_restricted_names ||= Viewable.names + begin
|
18
|
-
CMS.constants.grep(/Helper$/).map{ |name|
|
19
|
-
"CMS::#{name}".constantize.instance_methods.grep(/^cms_/)
|
20
|
-
}.flatten.map{ |name|
|
21
|
-
name.to_s.sub(/^cms_/, '')
|
22
|
-
}
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def names
|
27
|
-
@_names ||= begin
|
28
|
-
names = CMS.html_names 'app/views/cms/blocks'
|
29
|
-
names.each do |name|
|
30
|
-
if name.in? restricted_names
|
31
|
-
raise ArgumentError, "'cms/blocks/_#{name}.html' partial should be called otherwise, '#{name}' taken"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
names
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
14
|
end
|
39
15
|
end
|
data/app/models/viewable/form.rb
CHANGED
@@ -13,16 +13,8 @@ module Viewable
|
|
13
13
|
has_unlocalized_fields :structure
|
14
14
|
|
15
15
|
class << self
|
16
|
-
def names
|
17
|
-
@_names ||= CMS.dir_names 'app/views/cms/forms'
|
18
|
-
end
|
19
|
-
|
20
|
-
def static_names
|
21
|
-
@_static_names ||= CMS.rb_names 'app/models/form'
|
22
|
-
end
|
23
|
-
|
24
16
|
def static?(name)
|
25
|
-
name.in? static_names
|
17
|
+
name.in? Naming::Viewable::Form.static_names
|
26
18
|
end
|
27
19
|
|
28
20
|
def not_static?(name)
|
@@ -35,13 +27,22 @@ module Viewable
|
|
35
27
|
end
|
36
28
|
|
37
29
|
def static?
|
38
|
-
form_name.in?
|
30
|
+
form_name.in? Naming::Viewable::Form.static_names
|
39
31
|
end
|
40
32
|
|
41
33
|
def not_static?
|
42
34
|
!static?
|
43
35
|
end
|
44
36
|
|
37
|
+
def fetch_row(form)
|
38
|
+
if structure.nil?
|
39
|
+
create_structure!(viewable: self, email: ::Form::Email.new)
|
40
|
+
end
|
41
|
+
attributes = form.attributes
|
42
|
+
attributes['structure_id'] = structure_id
|
43
|
+
rows.build(attributes)
|
44
|
+
end
|
45
|
+
|
45
46
|
private
|
46
47
|
|
47
48
|
def uuid_columns
|
data/app/models/viewable/page.rb
CHANGED
@@ -3,12 +3,7 @@ module Viewable
|
|
3
3
|
def initialize(model, context)
|
4
4
|
super
|
5
5
|
if m.not_static?
|
6
|
-
|
7
|
-
m.create_structure!(viewable: m, email: ::Form::Email.new)
|
8
|
-
end
|
9
|
-
attributes = h.cms_form_instance.attributes
|
10
|
-
attributes['structure_id'] = m.structure_id
|
11
|
-
h.cms_form_instance = m.rows.build(attributes)
|
6
|
+
h.cms_form_instance = m.fetch_row(h.cms_form_instance)
|
12
7
|
end
|
13
8
|
end
|
14
9
|
end
|
@@ -32,7 +32,11 @@ module Viewable
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def add_path
|
35
|
-
h.main_app.new_viewable_url(list_key: h.cms_list_key(
|
35
|
+
h.main_app.new_viewable_url(list_key: h.cms_list_key(short_type, m.unique_key_name), max: Float::INFINITY)
|
36
|
+
end
|
37
|
+
|
38
|
+
def short_type
|
39
|
+
m.viewable_type.demodulize.underscore
|
36
40
|
end
|
37
41
|
end
|
38
42
|
end
|
@@ -11,7 +11,7 @@ class ViewableListPresenter < BaseListPresenter
|
|
11
11
|
h.content_tag(:ul, sortable(class: "cms-wrapped-edit")) do
|
12
12
|
list.each.with_index(1) do |m, i|
|
13
13
|
name = method_name ? m.__send__(method_name) : i
|
14
|
-
h.concat(h.content_tag(:li, '
|
14
|
+
h.concat(h.content_tag(:li, h.cms_js_element('cms-sortable-id', m.unique_key.id)) do
|
15
15
|
m.edit_link(name)
|
16
16
|
end)
|
17
17
|
end
|
@@ -30,7 +30,7 @@ class ViewableListPresenter < BaseListPresenter
|
|
30
30
|
|
31
31
|
def sortable(options = {})
|
32
32
|
if h.cms_edit_mode?
|
33
|
-
|
33
|
+
h.cms_js_element('cms-sortable', { url: h.main_app.edit_viewable_url(format: :js) }, options)
|
34
34
|
else
|
35
35
|
options
|
36
36
|
end
|
@@ -2,7 +2,7 @@ class ViewablePresenter < BasePresenter
|
|
2
2
|
def edit_link(name = nil)
|
3
3
|
return unless h.cms_edit_mode?
|
4
4
|
|
5
|
-
h.link_to edit_path, class: "cms-edit cms-edit-#{
|
5
|
+
h.link_to edit_path, class: "cms-edit cms-edit-#{dashed_name}", 'data-no-turbolink' => true do
|
6
6
|
h.concat h.content_tag(:span, h.t('cms.edit'), class: "cms-edit-action")
|
7
7
|
h.concat " "
|
8
8
|
h.concat h.content_tag(:span, name, class: "cms-edit-name")
|
@@ -12,7 +12,7 @@ class ViewablePresenter < BasePresenter
|
|
12
12
|
def li_sortable_tag(options = nil)
|
13
13
|
options ||= {}
|
14
14
|
if h.cms_edit_mode?
|
15
|
-
options
|
15
|
+
options = h.cms_js_element('cms-sortable-id', m.unique_key.id, options)
|
16
16
|
end
|
17
17
|
h.content_tag :li, options do
|
18
18
|
yield
|
@@ -24,4 +24,12 @@ class ViewablePresenter < BasePresenter
|
|
24
24
|
def edit_path
|
25
25
|
h.rails_admin.edit_path(model_name: m.class.name.underscore.gsub('/', '~'), id: m.id)
|
26
26
|
end
|
27
|
+
|
28
|
+
def dashed_name
|
29
|
+
@_dashed_name ||= underscored_name.dasherize
|
30
|
+
end
|
31
|
+
|
32
|
+
def underscored_name
|
33
|
+
@_underscored_name ||= m.class.name.underscore.gsub('/', '_')
|
34
|
+
end
|
27
35
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
$('
|
2
|
-
|
1
|
+
$('<%= cms_form_instance.js_form_selector %>').replaceWith("<%= j render cms_form_partial %>");
|
2
|
+
CMS.validate();
|
3
3
|
<%= render 'cms/shared/flash_messages' %>
|
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
CMS.element('cms-flash').replaceWith("<%= j cms_flash_messages %>");
|
2
2
|
CMS.flash_messages();
|
data/config/routes.rb
CHANGED
@@ -20,12 +20,12 @@ Rails.application.routes.draw do
|
|
20
20
|
localized do
|
21
21
|
resources :files, format: false, only: [:show]
|
22
22
|
|
23
|
-
Viewable::Page.names.each do |name|
|
23
|
+
Naming::Viewable::Page.names.each do |name|
|
24
24
|
get name => 'pages#show', format: false,
|
25
25
|
defaults: { cms_view_type: name, cms_body_class: name }
|
26
26
|
end
|
27
27
|
|
28
|
-
Viewable::Form.names.each do |name|
|
28
|
+
Naming::Viewable::Form.names.each do |name|
|
29
29
|
get name => 'forms#new', format: false,
|
30
30
|
defaults: { cms_view_type: name, cms_body_class: name }
|
31
31
|
post name => 'forms#create',
|
@@ -0,0 +1,27 @@
|
|
1
|
+
ActiveType::Object.class_eval do
|
2
|
+
def type_for_attribute(attribute)
|
3
|
+
virtual_columns_hash[attribute]
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
ActiveType::VirtualAttributes::VirtualColumn.class_eval do
|
8
|
+
def type
|
9
|
+
@type_caster.type
|
10
|
+
end
|
11
|
+
|
12
|
+
def klass
|
13
|
+
case type
|
14
|
+
when :integer then Fixnum
|
15
|
+
when :float then Float
|
16
|
+
when :decimal then BigDecimal
|
17
|
+
when :datetime, :timestamp, :time then Time
|
18
|
+
when :date then Date
|
19
|
+
when :text, :string, :binary then String
|
20
|
+
when :boolean then Object
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
ActiveType::TypeCaster.class_eval do
|
26
|
+
attr_reader :type
|
27
|
+
end
|
@@ -1,12 +1,7 @@
|
|
1
|
-
<%# cms_form %>
|
2
|
-
|
3
1
|
<% cms_cache do
|
4
2
|
select = cms_select(1, Float::INFINITY)
|
5
3
|
-%>
|
6
4
|
|
7
|
-
<%#= @cms_view.edit_link %>
|
8
|
-
<%#= @cms_view.add_link %>
|
9
|
-
|
10
5
|
<%= cms_form_for do |f| %>
|
11
6
|
<%= f.input :name, input_html: cms_validate_presence %>
|
12
7
|
<%= f.input :email, input_html: cms_validate_email %>
|
@@ -22,8 +17,6 @@
|
|
22
17
|
-%>
|
23
18
|
<%# end %>
|
24
19
|
|
25
|
-
<%#= f.input :structure_id, as: :hidden, input_html: { value: cms_form_instance.structure_id } %>
|
26
|
-
|
27
20
|
<%= f.submit cms_form_send, cms_form_sending %>
|
28
21
|
<% end %>
|
29
22
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%# cms_page %>
|
1
|
+
<%# view = cms_page %>
|
2
2
|
|
3
3
|
<% cms_cache do
|
4
4
|
menu = cms_link(0, Float::INFINITY)
|
@@ -8,8 +8,8 @@
|
|
8
8
|
# view_block = cms_view_example
|
9
9
|
-%>
|
10
10
|
|
11
|
-
<%#=
|
12
|
-
<%#=
|
11
|
+
<%#= view.edit_link %>
|
12
|
+
<%#= view.add_link %>
|
13
13
|
|
14
14
|
<%= menu.ul_sortable_tag do %>
|
15
15
|
<% menu.each do |link| %>
|
@@ -23,7 +23,7 @@ RailsAdmin.config do |config|
|
|
23
23
|
dashboard # mandatory
|
24
24
|
index # mandatory
|
25
25
|
new do
|
26
|
-
except Viewable.models + Form.structure_models + %w[
|
26
|
+
except Naming::Viewable.models + Naming::Form.structure_models + %w[
|
27
27
|
UniqueKey
|
28
28
|
Setting
|
29
29
|
Rich::RichFile
|
@@ -31,18 +31,18 @@ RailsAdmin.config do |config|
|
|
31
31
|
]
|
32
32
|
end
|
33
33
|
export do
|
34
|
-
except Viewable.models + Form.structure_models + %w[
|
34
|
+
except Naming::Viewable.models + Naming::Form.structure_models + %w[
|
35
35
|
UniqueKey
|
36
36
|
]
|
37
37
|
end
|
38
38
|
bulk_delete do
|
39
|
-
except Viewable.models + Form.structure_models + %w[
|
39
|
+
except Naming::Viewable.models + Naming::Form.structure_models + %w[
|
40
40
|
UniqueKey
|
41
41
|
Setting
|
42
42
|
]
|
43
43
|
end
|
44
44
|
show do
|
45
|
-
except Viewable.models + Form.structure_models + %w[
|
45
|
+
except Naming::Viewable.models + Naming::Form.structure_models + %w[
|
46
46
|
UniqueKey
|
47
47
|
]
|
48
48
|
end
|
@@ -52,7 +52,7 @@ RailsAdmin.config do |config|
|
|
52
52
|
]
|
53
53
|
end
|
54
54
|
delete do
|
55
|
-
except Form.structure_models + %w[
|
55
|
+
except Naming::Form.structure_models + %w[
|
56
56
|
UniqueKey
|
57
57
|
Setting
|
58
58
|
]
|
data/lib/rails_admin_cms.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrice Lebel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -600,9 +600,6 @@ files:
|
|
600
600
|
- Rakefile
|
601
601
|
- app/assets/javascripts/rails_admin_cms/all.js.coffee
|
602
602
|
- app/assets/javascripts/rails_admin_cms/cms.js.coffee
|
603
|
-
- app/assets/javascripts/rails_admin_cms/cms/flashes.js.coffee
|
604
|
-
- app/assets/javascripts/rails_admin_cms/cms/with_scope/forms.js.coffee
|
605
|
-
- app/assets/javascripts/rails_admin_cms/cms/with_scope/viewables.js.coffee
|
606
603
|
- app/assets/stylesheets/rails_admin_cms/all.css.sass
|
607
604
|
- app/controllers/cms/attachments_controller.rb
|
608
605
|
- app/controllers/cms/files_controller.rb
|
@@ -613,6 +610,7 @@ files:
|
|
613
610
|
- app/controllers/concerns/cms/localize.rb
|
614
611
|
- app/helpers/cms/cache_helper.rb
|
615
612
|
- app/helpers/cms/form_helper.rb
|
613
|
+
- app/helpers/cms/javascript_helper.rb
|
616
614
|
- app/helpers/cms/locale_helper.rb
|
617
615
|
- app/helpers/cms/view_helper.rb
|
618
616
|
- app/helpers/cms/viewable_helper.rb
|
@@ -622,6 +620,7 @@ files:
|
|
622
620
|
- app/models/admin/form/email.rb
|
623
621
|
- app/models/admin/form/field.rb
|
624
622
|
- app/models/admin/form/row.rb
|
623
|
+
- app/models/admin/form/row/as_header.rb
|
625
624
|
- app/models/admin/form/static/object.rb
|
626
625
|
- app/models/admin/form/structure.rb
|
627
626
|
- app/models/admin/setting.rb
|
@@ -644,12 +643,18 @@ files:
|
|
644
643
|
- app/models/form/email.rb
|
645
644
|
- app/models/form/field.rb
|
646
645
|
- app/models/form/row.rb
|
646
|
+
- app/models/form/row/as_header.rb
|
647
647
|
- app/models/form/static.rb
|
648
648
|
- app/models/form/static/attachment.rb
|
649
649
|
- app/models/form/static/base.rb
|
650
650
|
- app/models/form/static/email.rb
|
651
651
|
- app/models/form/static/object.rb
|
652
652
|
- app/models/form/structure.rb
|
653
|
+
- app/models/naming/form.rb
|
654
|
+
- app/models/naming/viewable.rb
|
655
|
+
- app/models/naming/viewable/block.rb
|
656
|
+
- app/models/naming/viewable/form.rb
|
657
|
+
- app/models/naming/viewable/page.rb
|
653
658
|
- app/models/setting.rb
|
654
659
|
- app/models/unique_key.rb
|
655
660
|
- app/models/viewable.rb
|
@@ -704,6 +709,7 @@ files:
|
|
704
709
|
- db/migrate/20160101141844_create_form_row.rb
|
705
710
|
- db/migrate/20160102010317_create_form_field.rb
|
706
711
|
- db/migrate/20160103120544_create_form_email.rb
|
712
|
+
- lib/active_type/virtual_attributes_decorator.rb
|
707
713
|
- lib/generators/cms/install/USAGE
|
708
714
|
- lib/generators/cms/install/install_generator.rb
|
709
715
|
- lib/generators/cms/install/templates/Gemfile
|
@@ -1,14 +0,0 @@
|
|
1
|
-
#= require jquery-ui/sortable
|
2
|
-
|
3
|
-
CMS.ready_with_scope 'cms-edit-mode', ->
|
4
|
-
$('[data-cms-sortable]').each ->
|
5
|
-
$(this).sortable
|
6
|
-
update: (event, ui) ->
|
7
|
-
url = $(this).data('cms-sortable')['url']
|
8
|
-
|
9
|
-
target = $(ui.item)
|
10
|
-
id = target.data('cms-sortable-id')
|
11
|
-
unique_key = { position: target.index() + 1 }
|
12
|
-
payload = $.param(id: id, unique_key: unique_key)
|
13
|
-
|
14
|
-
$.post(url, payload)
|