rails_admin_cms 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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)
         
     |