hancock_cms 1.0.2.3 → 2.0.0

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.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-gemset +1 -1
  3. data/.ruby-version +1 -1
  4. data/README.md +9 -13
  5. data/app/assets/images/{hancock/rails_admin → rails-admin}/hancock_logo.svg +0 -0
  6. data/app/assets/javascripts/hancock/cms.coffee +1 -1
  7. data/app/assets/javascripts/hancock/rails_admin/cms.ui.coffee +38 -10
  8. data/app/assets/javascripts/jquery.placeholder.js +2 -3
  9. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  10. data/app/assets/stylesheets/hancock/cms/devise.sass +22 -36
  11. data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +147 -364
  12. data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
  13. data/app/controllers/concerns/hancock/current_user.rb +1 -1
  14. data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
  15. data/app/controllers/concerns/hancock/errors.rb +7 -6
  16. data/app/controllers/concerns/hancock/no_cache.rb +12 -0
  17. data/app/controllers/hancock/registrations_controller.rb +7 -2
  18. data/app/controllers/hancock/sessions_controller.rb +7 -3
  19. data/app/helpers/hancock/powered_helper.rb +3 -3
  20. data/app/models/concerns/hancock/boolean_field.rb +2 -7
  21. data/app/models/concerns/hancock/cacheable.rb +33 -0
  22. data/app/models/concerns/hancock/decorators/embedded_element.rb +9 -1
  23. data/app/models/concerns/hancock/enableable.rb +0 -1
  24. data/app/models/concerns/hancock/hash_field.rb +8 -9
  25. data/app/models/concerns/hancock/html_field.rb +3 -6
  26. data/app/models/concerns/hancock/mappable.rb +0 -1
  27. data/app/models/concerns/hancock/model_localizeable.rb +1 -4
  28. data/app/models/concerns/hancock/rails_admin_patch.rb +3 -22
  29. data/app/models/concerns/hancock/sort_field.rb +3 -26
  30. data/app/models/concerns/hancock/sortable.rb +0 -3
  31. data/app/views/blocks/_footer.html.slim +1 -1
  32. data/app/views/devise/passwords/edit.html.slim +2 -0
  33. data/app/views/devise/passwords/new.html.slim +2 -0
  34. data/app/views/devise/registrations/edit.html.slim +2 -0
  35. data/app/views/devise/registrations/new.html.slim +2 -0
  36. data/app/views/devise/sessions/new.html.slim +2 -0
  37. data/app/views/hancock/home/index.html.slim +1 -4
  38. data/app/views/layouts/application.html.slim +11 -20
  39. data/app/views/layouts/hancock/devise/confirmations.html.slim +4 -7
  40. data/app/views/layouts/hancock/devise/passwords.html.slim +4 -7
  41. data/app/views/layouts/hancock/devise/registrations.html.slim +4 -7
  42. data/app/views/layouts/hancock/devise/sessions.html.slim +4 -7
  43. data/app/views/layouts/hancock/devise/unlocks.html.slim +4 -7
  44. data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
  45. data/app/views/layouts/rails_admin/_footer_navigation.html.slim +5 -21
  46. data/app/views/layouts/rails_admin/_navigation.html.slim +47 -13
  47. data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +12 -5
  48. data/app/views/layouts/rails_admin/application.html.haml +39 -4
  49. data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
  50. data/app/views/rails_admin/main/_hancock_html_ml.html.slim +34 -31
  51. data/app/views/shared/_admin_link.html.slim +2 -4
  52. data/{app/models/concerns/hancock → config/initializers}/embedded_findable.rb +2 -2
  53. data/config/locales/en.hancock.yml +0 -1
  54. data/config/locales/ru.devise.yml +18 -22
  55. data/config/locales/ru.hancock.yml +5 -5
  56. data/config/locales/ru.rails_admin.yml +0 -3
  57. data/hancock_cms.gemspec +3 -6
  58. data/lib/filename_to_slug.rb +20 -0
  59. data/lib/generators/hancock/cms/ability_generator.rb +0 -1
  60. data/lib/generators/hancock/cms/admin_generator.rb +0 -1
  61. data/lib/generators/hancock/cms/application_generator.rb +0 -1
  62. data/lib/generators/hancock/cms/assets_generator.rb +0 -1
  63. data/lib/generators/hancock/cms/layout_generator.rb +0 -1
  64. data/lib/generators/hancock/cms/model_generator.rb +0 -1
  65. data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
  66. data/lib/generators/hancock/cms/rack_generator.rb +0 -1
  67. data/lib/generators/hancock/cms/robots_generator.rb +0 -1
  68. data/lib/generators/hancock/cms/scripts_generator.rb +0 -1
  69. data/lib/generators/hancock/cms/templates/Gemfile.erb +4 -1
  70. data/lib/generators/hancock/cms/templates/ability.erb +1 -1
  71. data/lib/generators/hancock/cms/templates/admin.erb +6 -12
  72. data/lib/generators/hancock/cms/templates/assets/javascripts/application.coffee.erb +1 -1
  73. data/lib/generators/hancock/cms/templates/hancock_cms.erb +2 -4
  74. data/lib/generators/hancock/cms/templates/model.erb +6 -5
  75. data/lib/generators/hancock/cms/templates/robots.txt.erb +1 -5
  76. data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
  77. data/lib/generators/hancock/cms/templates/scripts/server.sh +1 -1
  78. data/lib/generators/hancock/cms/templates/scripts/server_alt.sh +1 -1
  79. data/lib/generators/hancock/cms/unicorn_god_generator.rb +0 -1
  80. data/lib/generators/hancock/cms/utils.rb +0 -2
  81. data/lib/hancock/admin/embedded_element.rb +2 -10
  82. data/lib/hancock/admin.rb +21 -132
  83. data/lib/hancock/configuration.rb +2 -6
  84. data/lib/hancock/controller.rb +1 -10
  85. data/lib/hancock/engine.rb +34 -34
  86. data/lib/hancock/model.rb +5 -29
  87. data/lib/hancock/models/embedded_element.rb +0 -2
  88. data/lib/hancock/models/mongoid/embedded_element.rb +1 -20
  89. data/lib/hancock/plugin_configuration.rb +1 -1
  90. data/lib/hancock/rails_admin_ext/config.rb +14 -45
  91. data/lib/hancock/rails_admin_ext/hancock_hash.rb +1 -8
  92. data/lib/hancock/rails_admin_ext/hancock_html.rb +2 -17
  93. data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +5 -1
  94. data/lib/hancock/rails_admin_ext/hancock_slugs.rb +6 -2
  95. data/lib/hancock/rails_admin_ext/patches/field_patch.rb +1 -2
  96. data/lib/hancock/rails_admin_ext/patches/group_patch.rb +0 -9
  97. data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +0 -2
  98. data/lib/hancock/version.rb +1 -1
  99. data/lib/hancock_cms.rb +13 -21
  100. data/lib/manual_slug/active_record.rb +8 -8
  101. data/lib/rails_admin/custom_show_in_app.rb +32 -21
  102. data/release.sh +1 -1
  103. data/template.rb +386 -37
  104. metadata +15 -88
  105. data/.gitattributes +0 -4
  106. data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +0 -90
  107. data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +0 -41
  108. data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +0 -44
  109. data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +0 -106
  110. data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +0 -8
  111. data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +0 -25
  112. data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +0 -108
  113. data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +0 -12
  114. data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +0 -198
  115. data/app/helpers/hancock/settings_helper.rb +0 -44
  116. data/app/helpers/rails_admin/application/hancock_helper.rb +0 -19
  117. data/app/helpers/rails_admin/hancock/form_builder.rb +0 -44
  118. data/app/helpers/rails_admin/main/hancock_helper.rb +0 -27
  119. data/app/models/concerns/hancock/insertion_field.rb +0 -115
  120. data/app/views/blocks/_preloader.html.slim +0 -0
  121. data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +0 -2
  122. data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +0 -3
  123. data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +0 -24
  124. data/app/views/rails_admin/main/_form_hancock_enum.html.slim +0 -18
  125. data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +0 -20
  126. data/app/views/rails_admin/main/edit.html.haml +0 -18
  127. data/app/views/rails_admin/main/new.html.haml +0 -17
  128. data/config/initializers/rails_admin_mongoid_patch.rb +0 -27
  129. data/lib/generators/hancock/cms/setup_generator.rb +0 -488
  130. data/lib/generators/hancock/cms/templates/assets/stylesheets/hancock/rails_admin/custom/theming.sass.erb +0 -0
  131. data/lib/hancock/rails_admin_ext/hancock_array.rb +0 -19
  132. data/lib/hancock/rails_admin_ext/hancock_enum.rb +0 -33
  133. data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +0 -34
  134. data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +0 -14
  135. data/lib/hancock/rails_admin_ext/patches/has_fields.rb +0 -27
  136. data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +0 -25
  137. data/lib/hancock/rails_admin_settings_patch.rb +0 -216
@@ -1,108 +0,0 @@
1
- #= require ./en_ru_switcher
2
-
3
- $(document).on 'click', '.clear_navigation_filter_field', (e)->
4
- e.preventDefault()
5
- $("#navigation_filter").val("").trigger("keyup")
6
- return false
7
-
8
- $(document).on 'keydown', '#navigation_filter', (e)->
9
- _code = e.which || e.keyCode
10
- if _code == 13 or _code == 39 or _code == 37
11
- _navig = $(e.currentTarget).parent().siblings('.toolbar').find('.nav')
12
- return true if _navig.find("li:visible").length == 0 and _code != 13
13
- if (_selected = _navig.find("li.current_selected")).length == 1
14
- if _selected.find("a").length > 0
15
- _selected.find('a').click()
16
- else
17
- if _selected.hasClass('opened')
18
- _selected.addClass('forced-closed').removeClass('forced-opened').click()
19
- else
20
- return true if _code == 37
21
- _selected.removeClass('forced-closed').addClass('forced-opened').click()
22
- else
23
- return true if _code == 37
24
- if (_selected = _navig.find('li.visible[data-model]')).length == 1
25
- _selected.find('a').click()
26
- else
27
- return true if _code == 39
28
-
29
-
30
- e.preventDefault()
31
- return false
32
- else
33
- if _code == 38 or _code == 40
34
- e.preventDefault()
35
- if $('#navigation_filter').val().length == 0
36
- _possible_li_selector = "li.dropdown-header, li.visible"
37
- else
38
- _possible_li_selector = "li.opened, li.opened-filtered, li.visible"
39
- _navig = $(e.currentTarget).parent().siblings('.toolbar')
40
- _visibled = _navig.find(".nav").find(_possible_li_selector)
41
- _current = _visibled.filter(".current_selected")
42
- _navig.find(".nav li").removeClass("current_selected")
43
- if _code == 38 # up
44
- if _current.length == 0
45
- _current = _visibled.last()
46
- else
47
- _current = _current.prevAll(_possible_li_selector).first()
48
- _current = _visibled.last() if _current.length == 0
49
- else
50
- if _current.length == 0
51
- # # if we want select first child of single visible .dropdown-header
52
- # if _visibled.filter(".dropdown-header").length == 1
53
- # _current = _visibled.filter(".dropdown-header").nextAll(".visible").first()
54
- # else
55
- # _current = _visibled.first()
56
- # _current ||= _visibled.first()
57
- _current = _visibled.first()
58
- else
59
- _current = _current.nextAll(_possible_li_selector).first()
60
- _current = _visibled.first() if _current.length == 0
61
- _current.addClass("current_selected")
62
- return false
63
-
64
- else
65
- $(e.currentTarget).parent().siblings('.toolbar').find(".nav li").removeClass('forced-closed').removeClass('forced-opened')
66
- return true
67
-
68
-
69
-
70
-
71
- $(document).on 'keyup', '#navigation_filter', (e)->
72
- filter = e.currentTarget.value
73
- navigation_block = $(e.currentTarget).parent().siblings('.toolbar').find('.nav')
74
- nav_first_lvl = navigation_block.find("li.dropdown-header:not(.forced-closed, .forced-opened)").removeClass('hidden').removeClass('opened').removeClass('opened-filtered')
75
- nav_sec_lvl = navigation_block.find("li[data-model]:not(.forced-closed, .forced-opened)").removeClass('hidden').removeClass('visible')
76
- select_menu_items = (filter, nav_first_lvl, nav_sec_lvl)->
77
- if filter.length > 0
78
- filter = new RegExp(filter, "i")
79
-
80
- nav_first_lvl.each ->
81
- me = $(this)
82
- if !filter.test(me.html())
83
- me.addClass("hidden")
84
- else
85
- me.addClass("opened").addClass("opened-filtered")
86
-
87
- nav_sec_lvl.each ->
88
- me = $(this)
89
- return me.addClass("visible") if me.prevAll(".dropdown-header").first().hasClass('opened-filtered')
90
- if !filter.test(me.find('a').text()) and !filter.test(me.data('model')) and !filter.test(me.data('name-synonyms') || "")
91
- me.addClass("hidden")
92
- else
93
- me.addClass('visible').prevAll(".dropdown-header").first().removeClass('hidden').addClass('opened')
94
-
95
- select_menu_items(filter, nav_first_lvl, nav_sec_lvl)
96
- if navigation_block.find("li:visible").length == 0
97
- nav_first_lvl.removeClass('hidden').removeClass('opened')
98
- nav_sec_lvl.removeClass('hidden').removeClass('visible')
99
- select_menu_items(window.hancock_cms.ru_en_change_string(filter), nav_first_lvl, nav_sec_lvl)
100
-
101
- window.hancock_cms.navigation_mscroll()
102
-
103
-
104
-
105
- $(document).on "rails_admin.dom_ready", ->
106
- _search_field = $('form #filters_box ~ .input-group [type="search"][name="query"]:not(:focus)')
107
- _val = _search_field.val()
108
- _search_field.focus().val("").val(_val)
@@ -1,12 +0,0 @@
1
- #= require jquery.mCustomScrollbar.concat.min
2
-
3
- window.hancock_cms.navigation_mscroll = () ->
4
- $('.custom_scroll').mCustomScrollbar(
5
- scrollInertia: 60
6
- mouseWheelPixels: 60
7
- theme: 'minimal'
8
- mouseWheel:
9
- scrollAmount: 0
10
- )
11
- $(document).on 'rails_admin.dom_ready', ->
12
- window.hancock_cms.navigation_mscroll()
@@ -1,198 +0,0 @@
1
- body.rails_admin .form-horizontal .tab-content .tab-pane > .remove_nested_fields, body.rails_admin .form-horizontal .tab-content .tab-pane > .remove_nested_one_fields
2
- opacity: 1
3
- z-index: 10
4
- left: 50px
5
- top: 10px
6
-
7
- body.rails_admin .form-horizontal.denser
8
- margin-top: 15px
9
- fieldset > legend
10
- margin-bottom: 0px
11
- legend i
12
- font-size: 14px
13
-
14
- body.rails_admin .nav.nav-tabs
15
- margin-bottom: -1px
16
- border-bottom: 0px
17
- padding: 0px 5px
18
-
19
- body.rails_admin .form-horizontal .tab-content .tab-pane
20
- fieldset
21
- margin-left: 50px
22
- margin-right: 25px
23
-
24
- .form-horizontal.denser
25
- fieldset.opened
26
- min-height: 180px
27
- padding-bottom: 10px
28
- fieldset
29
- .form-group
30
- margin-left: 25px !important
31
- margin-top: 15px
32
- margin-bottom: 15px
33
- fieldset.default_fieldset
34
- padding-top: 0px
35
- border: 0px
36
-
37
- fieldset
38
- +border-radius(4px)
39
- border: 1px solid #e3e3e3
40
- background: #fff
41
- margin-bottom: 5px
42
- padding: 0px
43
- min-height: 30px
44
- overflow: visible
45
- padding-top: 29px
46
- &:first-child
47
- margin-top: 5px
48
- &:last-child
49
- margin-bottom: 0px
50
- legend
51
- height: 30px
52
- padding: 5px 10px
53
- font-size: 18px
54
- line-height: 20px
55
- top: 0px
56
- position: absolute
57
- .form-group
58
- margin-left: 25px
59
- margin-right: 0px
60
- margin-top: 15px
61
- margin-bottom: 15px
62
- .input-group
63
- float: none !important
64
- input[type=checkbox]
65
- width: 25px !important
66
- height: 25px !important
67
- label
68
- font-size: 13px
69
- label.dropdown-toggle
70
- width: auto
71
- .help-block
72
- margin-bottom: 0px
73
- color: #aaaaaa
74
- font-size: 12px
75
- line-height: 12px
76
- .ra-multiselect .ra-multiselect-column
77
- float: left
78
- margin-bottom: 5px
79
-
80
- fieldset.default.hover
81
- > .leftside_hider
82
- opacity: 0
83
-
84
- fieldset.hover
85
- > .leftside_hider
86
- opacity: 1.0
87
-
88
- fieldset
89
- +transition(all 0.3s)
90
- position: relative
91
- > .leftside_hider
92
- overflow: hidden
93
- width: 65px
94
- position: absolute
95
- top: 30px
96
- bottom: 0px
97
- background: rgba(100,100,100,0.05)
98
- cursor: pointer
99
- padding: 10px 0px
100
- z-index: 9
101
- opacity: 0
102
- +transition(background 0.3s, opacity 0.2s)
103
- &:hover
104
- background: rgba(100,100,100,0.1)
105
- &:active
106
- background: rgba(100,100,100,0.075)
107
-
108
- .scroll_fieldset_block
109
- overflow: visible
110
- position: absolute
111
- width: 45px
112
- top: 10px
113
- margin-left: 10px
114
- height: 126px
115
- opacity: 0.75
116
- cursor: pointer
117
- z-index: 10
118
- background: #fff
119
- border: 1px solid #e3e3e3
120
- +border-radius(4px)
121
- +transition(scale 0.3s, opacity 0.3s)
122
- +transform(scale(0))
123
- transform-origin: top center
124
- -webkit-transform-origin: top left
125
- -o-transform-origin: top left
126
- -moz-transform-origin: top left
127
- padding: 5px
128
- +box-shadow(0px 5px 10px -5px rgba(0, 0, 0, 0.5))
129
- &:hover
130
- opacity: 1.0
131
- > *
132
- height: 35px
133
- width: 35px
134
- +border-radius(4px)
135
- margin-bottom: 5px
136
- z-index: 11
137
- display: flex
138
- align-items: center
139
- justify-content: center
140
- background-color: #e53935
141
- +transition(all 0.3s)
142
- color: #fff
143
- &:hover
144
- background-color: #c73800
145
- opacity: 1
146
- &:active
147
- background-color: #e53935
148
- opacity: 1
149
-
150
- .links-list
151
- width: auto
152
- display: inline-flex
153
- background: #fff
154
- border: 1px solid #e3e3e3
155
- +border-radius(4px)
156
- +box-shadow(0px 5px 10px -5px rgba(0, 0, 0, 0.5))
157
- padding: 3px
158
-
159
- .select_fieldset
160
- +transition(all 0.3s)
161
- overflow: visible
162
- a, span
163
- background-color: #e53935
164
- display: inline-block
165
- text-align: center
166
- width: 50px
167
- height: 29px
168
- margin-right: 3px
169
- overflow: hidden
170
- white-space: nowrap
171
- text-overflow: ellipsis
172
- color: #ffffff
173
- padding: 0px 3px
174
- font-size: 10px
175
- line-height: 29px
176
- text-decoration: none
177
- +transition(all 0.3s)
178
- +border-radius(4px)
179
- &:hover
180
- background-color: #c73800
181
- opacity: 1
182
- &:last-child
183
- margin-right: 0px
184
- span
185
- background-color: lightblue
186
- cursor: auto
187
- color: black
188
- &:hover
189
- background-color: lightblue
190
- opacity: 1
191
-
192
- fieldset.opened, fieldset.default_fieldset
193
- .scroll_fieldset_block
194
- +transform(scale(1))
195
-
196
- fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active
197
- background-color: #ef3b36
198
- border-color: #e53a36
@@ -1,44 +0,0 @@
1
- module Hancock::SettingsHelper
2
-
3
- def hancock_settings(key, options = {}, &block)
4
- if key.is_a?(Hash)
5
- key, options = key[:key], key
6
- end
7
- ns = options.delete(:ns)
8
- settings_scope = options.delete(:settings_scope) || Settings.ns(ns)
9
- key ||= options.delete(:key)
10
- options.delete(:key)
11
-
12
- cache_keys = options[:cache_keys_str] || options[:cache_keys] || options[:cache_key] || []
13
- if cache_keys.is_a?(::Array)
14
- cache_keys = cache_keys.map { |k| k.to_s.strip }.join(" ")
15
- else
16
- cache_keys = cache_keys.to_s.strip
17
- end
18
- options.delete(:cache_keys)
19
- options.delete(:cache_key)
20
-
21
- # options[:loadable] = cache_keys.blank? if options[:loadable].nil? # temporary
22
- options[:cache_keys_str] = cache_keys
23
- options[:kind] ||= :html
24
-
25
- options[:default] = capture(&block) if block
26
- case (options.delete(:as) || :value).to_sym
27
- when :value
28
- ret = settings_scope.__send__(key, options)
29
- when :object
30
- ret = settings_scope.getnc(key)
31
- ret.loadable ||= options[:loadable]
32
- _old_cache_keys = options[:cache_keys_str].strip.split(" ")
33
- options[:cache_keys_str] = (_old_cache_keys + ret.cache_keys).uniq
34
- if (options[:cache_keys_str] - _old_cache_keys).blank?
35
- ret.cache_keys_str = options[:cache_keys_str]
36
- end
37
- ret.save unless ret.changes.blank?
38
- ret
39
- else
40
- ret = settings_scope.__send__(key, options)
41
- end
42
- end
43
-
44
- end
@@ -1,19 +0,0 @@
1
- require 'rails_admin/application_helper'
2
- module RailsAdmin::Application
3
- module HancockHelper
4
-
5
- def hancock_navigation(nodes_stack, nodes, level = 0)
6
- nodes.collect do |node|
7
- model_param = node.abstract_model.to_param
8
- url = rails_admin.url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
9
- level_class = " nav-level-#{level}" if level > 0
10
- nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : ''
11
- li = content_tag :li, data: {model: model_param, "name-synonyms": node.name_synonyms} do
12
- link_to nav_icon + capitalize_first_letter(node.label_plural), url, class: "pjax#{level_class}", title: capitalize_first_letter(node.label_plural)
13
- end
14
- li + hancock_navigation(nodes_stack, nodes_stack.select { |n| n.parent.to_s == node.abstract_model.model_name }, level + 1)
15
- end.join.html_safe
16
- end
17
-
18
- end
19
- end
@@ -1,44 +0,0 @@
1
- require 'rails_admin/form_builder'
2
- module RailsAdmin::Hancock
3
- class FormBuilder < ::RailsAdmin::FormBuilder
4
-
5
- def fieldset_for(fieldset, nested_in)
6
- fields = fieldset.with(
7
- form: self,
8
- object: @object,
9
- view: @template,
10
- controller: @template.controller,
11
- ).visible_fields
12
- return if fields.empty?
13
-
14
- _defailt_fieldset = fieldset.name == :default
15
- @template.content_tag :fieldset, class: _defailt_fieldset ? 'default_fieldset' : '' do
16
- if fieldset.leftside_hider
17
- leftside_hider = @template.content_tag(:div, class: 'control-group leftside_hider', title: _defailt_fieldset ? "" : "Свернуть блок") do
18
- @template.content_tag(:div, class: 'scroll_fieldset_block') do
19
- ret = []
20
- ret << @template.content_tag(:div, class: 'scroll_fieldset_top', title: "Вверх блока") do
21
- @template.content_tag(:i, "", class: 'fa fa-arrow-up')
22
- end
23
- ret << @template.content_tag(:div, class: 'select_fieldset', title: "Выбрать другой блок") do
24
- @template.content_tag(:i, "", class: 'fa fa-indent')
25
- end
26
- ret << @template.content_tag(:div, class: 'scroll_fieldset_bottom', title: "Вниз блока") do
27
- @template.content_tag(:i, "", class: 'fa fa-arrow-down')
28
- end
29
- ret.join.html_safe
30
- end
31
- end
32
- end
33
-
34
- contents = []
35
- contents << @template.content_tag(:legend, %(<i class="icon-chevron-#{(fieldset.active? ? 'down' : 'right')}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
36
- contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
37
- contents << leftside_hider if fieldset.leftside_hider and leftside_hider
38
- contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
39
- contents.join.html_safe
40
- end
41
- end
42
-
43
- end
44
- end
@@ -1,27 +0,0 @@
1
- require 'rails_admin/main_helper'
2
- module RailsAdmin::Main
3
- module HancockHelper
4
-
5
- def hancock_rails_admin_form_for(*args, &block)
6
- options = args.extract_options!.reverse_merge(builder: RailsAdmin::Hancock::FormBuilder)
7
- (options[:html] ||= {})[:novalidate] ||= !RailsAdmin::Config.browser_validations
8
-
9
- form_for(*(args << options), &block) << after_nested_form_callbacks
10
- end
11
-
12
- def hancock_main_navigation
13
- nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
14
- node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
15
-
16
- nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes|
17
- nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
18
- li_stack = hancock_navigation nodes_stack, nodes
19
-
20
- label = navigation_label || t('admin.misc.navigation')
21
-
22
- %(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
23
- end.join.html_safe
24
- end
25
-
26
- end
27
- end
@@ -1,115 +0,0 @@
1
- module Hancock::InsertionField
2
- extend ActiveSupport::Concern
3
-
4
- included do
5
- class_attribute :added_insertions, :removed_insertions, :insertions_fields
6
- self.removed_insertions ||= []
7
- self.added_insertions ||= []
8
- self.insertions_fields ||= {}
9
- def possible_insertions
10
- self.class.possible_insertions
11
- end
12
-
13
- # /(\[\[(\w+?)\]\] | \{\{(self\.(\w+?))\}\} | \{\{(([\w\-\.]+?)\.(\w+?))\}\} | \{\{(\w+?)\}\} | \{\{(BS\|(\w+?))\}\})/
14
- #
15
- # reg1 = /\[\[(?<new_bs>(?<new_bs_name>\w+?))\]\]/i
16
- # reg2 = /\{\{(?<insertion_old>self\.(?<insertion_old_name>\w+?))\}\}/i
17
- # reg3 = /\{\{(?<setting_with_ns>(?<setting_with_ns_ns>[\w\-\.]+?)\.(?<setting_with_ns_name>\w+?))\}\}/i
18
- # reg4 = /\{\{(?<setting>(?<setting_name>\w+?))\}\}/i
19
- # reg5 = /\{\{(?<old_bs>BS\|(?<old_bs_name>\w+?))\}\}/i
20
- # reg6 = /\{\{\{\{(?<insertion>(?<insertion_name>\w+?))\}\}\}\}/i
21
- private
22
- def process_with_insertions(_data)
23
- if _data.nil?
24
- ''
25
- else
26
- if _data.is_a?(Symbol)
27
- if insertions_fields.include?(_data)
28
- _data = self.send(_data)
29
- else
30
- return ''
31
- end
32
- end
33
- # {{self.%insertion%}}
34
- _ret = _data.gsub(/\{\{self\.(.*?)\}\}/) do
35
- get_insertion($1)
36
- # {{"some_text"}} #temporary disabled - need tests
37
- # end.gsub(/\{\{(['"])(.*?)(\1)\}\}/) do
38
- # $2
39
- # {{%ns%.%key%}}
40
- end.gsub(/\{\{(([^\.]*?)\.)?(.*?)\}\}/) do
41
- (Settings and !$3.nil? and $2 != "self") ? Settings.ns($2).get($3).val : "" #temp
42
- end
43
- _ret
44
- end
45
- end
46
- def get_insertion(name)
47
- begin
48
- self.send(name) if possible_insertions.include?(name)
49
- rescue
50
- ""
51
- end
52
- end
53
- end
54
-
55
- class_methods do
56
- def insertions_field(name, opts = {type: String, default: ''})
57
- field name, opts
58
- insertions_for name, opts
59
- end
60
- def insertions_for(name, opts = {})
61
- return if name.blank?
62
- name = name.to_sym
63
- return if insertions_fields.keys.include?(name)
64
- (opts.delete(:add_insertions) || []).each do |_ins|
65
- add_insertion _ins
66
- end
67
- (["page_#{name}", name.to_s] + (opts.delete(:remove_insertions) || [])).uniq.each do |_ins|
68
- remove_insertion _ins
69
- end
70
- _method_name = opts[:as].present? ? opts[:as] : "page_#{name}"
71
- insertions_fields[name] = {
72
- method: _method_name,
73
- options: opts
74
- }
75
- if _method_name
76
- class_eval <<-RUBY
77
- def #{_method_name}
78
- process_with_insertions(#{name})
79
- end
80
- RUBY
81
- end
82
- name
83
- end
84
-
85
- def insertion(name, opts = {})
86
- name = name.to_s.strip
87
- if opts[:remove]
88
- self.removed_insertions << name unless self.removed_insertions.include?(name)
89
- else
90
- self.added_insertions << name unless self.added_insertions.include?(name)
91
- end
92
- end
93
- def add_insertion(name)
94
- insertion(name.to_s.strip)
95
- end
96
- def remove_insertion(name, opts = {})
97
- insertion(name.to_s.strip, opts.merge({remove: true}))
98
- end
99
-
100
- def default_insertions
101
- # self.fields.keys # we was here but inheritance and we need check
102
-
103
- # # version with store in
104
- # return @default_insertions unless @default_insertions.nil?
105
- # @default_insertions =
106
- self.fields.select { |_name, _field|
107
- _field.options[:klass] and self <= _field.options[:klass]
108
- }.keys
109
- end
110
- def possible_insertions
111
- @possible_insertions ||= (default_insertions + added_insertions).map(&:to_s).uniq - removed_insertions.map(&:to_s)
112
- end
113
- end
114
-
115
- end
File without changes
@@ -1,2 +0,0 @@
1
- ul.nav.nav-pills.nav-stacked= hancock_main_navigation
2
- ul.nav.nav-pills.nav-stacked= static_navigation
@@ -1,3 +0,0 @@
1
- = text_field_tag 'navigation_filter', '', placeholder: 'Filter...', class: 'navigation_filter_field', autofocus: (action_name=="dashboard")
2
- span.clear_navigation_filter_field
3
- i.fa.fa-close
@@ -1,24 +0,0 @@
1
- .form-control-static
2
- span= field.form_value
3
- span= " "
4
- span= " "
5
- span= " "
6
- span= link_to '(изменить)', "#", onclick: "var _p = $(this).closest('.form-control-static'); _p.siblings('.hancock_enum').removeClass('hidden'); _p.remove(); return false;", style: 'color: grey;', onmouseover: 'this.style.color = "darkgrey";', onmouseout: 'this.style.color = "grey";'
7
- - unless field.multiple?
8
- = form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: field.form_value }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search'), class: 'hancock_enum hidden'})
9
- - else
10
- ruby:
11
- js_data = {
12
- xhr: false,
13
- sortable: false,
14
- cacheAll: true,
15
- regional: {
16
- chooseAll: t("admin.misc.chose_all"),
17
- chosen: t("admin.misc.chosen", name: config.label_plural),
18
- clearAll: t("admin.misc.clear_all"),
19
- search: t("admin.misc.search"),
20
- up: t("admin.misc.up"),
21
- down: t("admin.misc.down")
22
- }
23
- }
24
- = form.select field.method_name, field.enum, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true, class: 'hancock_enum hidden'})
@@ -1,18 +0,0 @@
1
- - unless field.multiple?
2
- = form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: field.form_value }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search'), class: 'hancock_enum'})
3
- - else
4
- ruby:
5
- js_data = {
6
- xhr: false,
7
- sortable: false,
8
- cacheAll: true,
9
- regional: {
10
- chooseAll: t("admin.misc.chose_all"),
11
- chosen: t("admin.misc.chosen", name: config.label_plural),
12
- clearAll: t("admin.misc.clear_all"),
13
- search: t("admin.misc.search"),
14
- up: t("admin.misc.up"),
15
- down: t("admin.misc.down")
16
- }
17
- }
18
- = form.select field.method_name, field.enum, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true, class: 'hancock_enum'})
@@ -1,20 +0,0 @@
1
- - unless field.multiple?
2
- / = form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: field.form_value }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search'), class: 'hancock_enum'})
3
- = form.select field.method_name, field.selection, { include_blank: true }.reverse_merge({ selected: field.form_value }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search_or_add_yours'), class: 'hancock_enum'})
4
- - else
5
- ruby:
6
- js_data = {
7
- xhr: false,
8
- sortable: false,
9
- cacheAll: true,
10
- regional: {
11
- chooseAll: t("admin.misc.chose_all"),
12
- chosen: t("admin.misc.chosen", name: config.label_plural),
13
- clearAll: t("admin.misc.clear_all"),
14
- search: t("admin.misc.search_or_add_yours"),
15
- up: t("admin.misc.up"),
16
- down: t("admin.misc.down")
17
- }
18
- }
19
- / = form.select field.method_name, field.enum, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true, class: 'hancock_enum'})
20
- = form.select field.method_name, field.selection, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json, unique: field.unique }, multiple: true, class: 'hancock_enum'})
@@ -1,18 +0,0 @@
1
- :ruby
2
- opts = {
3
- builder: (defined?(RailsAdmin::Hancock::FormBuilder) ? RailsAdmin::Hancock::FormBuilder : RailsAdmin::FormBuilder),
4
- url: edit_path(@abstract_model, @object.id),
5
- as: @abstract_model.param_key,
6
- html: {
7
- method: "put",
8
- multipart: true,
9
- class: "form-horizontal denser",
10
- data: {
11
- title: @page_name
12
- }
13
- }
14
- }
15
- = rails_admin_form_for @object, opts do |form|
16
- = form.generate action: :update
17
- / = hancock_rails_admin_form_for @object, opts do |form|
18
- / = form.generate action: :update