hancock_cms 1.0.2.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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