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.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/README.md +9 -13
- data/app/assets/images/{hancock/rails_admin → rails-admin}/hancock_logo.svg +0 -0
- data/app/assets/javascripts/hancock/cms.coffee +1 -1
- data/app/assets/javascripts/hancock/rails_admin/cms.ui.coffee +38 -10
- data/app/assets/javascripts/jquery.placeholder.js +2 -3
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
- data/app/assets/stylesheets/hancock/cms/devise.sass +22 -36
- data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +147 -364
- data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
- data/app/controllers/concerns/hancock/current_user.rb +1 -1
- data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
- data/app/controllers/concerns/hancock/errors.rb +7 -6
- data/app/controllers/concerns/hancock/no_cache.rb +12 -0
- data/app/controllers/hancock/registrations_controller.rb +7 -2
- data/app/controllers/hancock/sessions_controller.rb +7 -3
- data/app/helpers/hancock/powered_helper.rb +3 -3
- data/app/models/concerns/hancock/boolean_field.rb +2 -7
- data/app/models/concerns/hancock/cacheable.rb +33 -0
- data/app/models/concerns/hancock/decorators/embedded_element.rb +9 -1
- data/app/models/concerns/hancock/enableable.rb +0 -1
- data/app/models/concerns/hancock/hash_field.rb +8 -9
- data/app/models/concerns/hancock/html_field.rb +3 -6
- data/app/models/concerns/hancock/mappable.rb +0 -1
- data/app/models/concerns/hancock/model_localizeable.rb +1 -4
- data/app/models/concerns/hancock/rails_admin_patch.rb +3 -22
- data/app/models/concerns/hancock/sort_field.rb +3 -26
- data/app/models/concerns/hancock/sortable.rb +0 -3
- data/app/views/blocks/_footer.html.slim +1 -1
- data/app/views/devise/passwords/edit.html.slim +2 -0
- data/app/views/devise/passwords/new.html.slim +2 -0
- data/app/views/devise/registrations/edit.html.slim +2 -0
- data/app/views/devise/registrations/new.html.slim +2 -0
- data/app/views/devise/sessions/new.html.slim +2 -0
- data/app/views/hancock/home/index.html.slim +1 -4
- data/app/views/layouts/application.html.slim +11 -20
- data/app/views/layouts/hancock/devise/confirmations.html.slim +4 -7
- data/app/views/layouts/hancock/devise/passwords.html.slim +4 -7
- data/app/views/layouts/hancock/devise/registrations.html.slim +4 -7
- data/app/views/layouts/hancock/devise/sessions.html.slim +4 -7
- data/app/views/layouts/hancock/devise/unlocks.html.slim +4 -7
- data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
- data/app/views/layouts/rails_admin/_footer_navigation.html.slim +5 -21
- data/app/views/layouts/rails_admin/_navigation.html.slim +47 -13
- data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +12 -5
- data/app/views/layouts/rails_admin/application.html.haml +39 -4
- data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
- data/app/views/rails_admin/main/_hancock_html_ml.html.slim +34 -31
- data/app/views/shared/_admin_link.html.slim +2 -4
- data/{app/models/concerns/hancock → config/initializers}/embedded_findable.rb +2 -2
- data/config/locales/en.hancock.yml +0 -1
- data/config/locales/ru.devise.yml +18 -22
- data/config/locales/ru.hancock.yml +5 -5
- data/config/locales/ru.rails_admin.yml +0 -3
- data/hancock_cms.gemspec +3 -6
- data/lib/filename_to_slug.rb +20 -0
- data/lib/generators/hancock/cms/ability_generator.rb +0 -1
- data/lib/generators/hancock/cms/admin_generator.rb +0 -1
- data/lib/generators/hancock/cms/application_generator.rb +0 -1
- data/lib/generators/hancock/cms/assets_generator.rb +0 -1
- data/lib/generators/hancock/cms/layout_generator.rb +0 -1
- data/lib/generators/hancock/cms/model_generator.rb +0 -1
- data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
- data/lib/generators/hancock/cms/rack_generator.rb +0 -1
- data/lib/generators/hancock/cms/robots_generator.rb +0 -1
- data/lib/generators/hancock/cms/scripts_generator.rb +0 -1
- data/lib/generators/hancock/cms/templates/Gemfile.erb +4 -1
- data/lib/generators/hancock/cms/templates/ability.erb +1 -1
- data/lib/generators/hancock/cms/templates/admin.erb +6 -12
- data/lib/generators/hancock/cms/templates/assets/javascripts/application.coffee.erb +1 -1
- data/lib/generators/hancock/cms/templates/hancock_cms.erb +2 -4
- data/lib/generators/hancock/cms/templates/model.erb +6 -5
- data/lib/generators/hancock/cms/templates/robots.txt.erb +1 -5
- data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
- data/lib/generators/hancock/cms/templates/scripts/server.sh +1 -1
- data/lib/generators/hancock/cms/templates/scripts/server_alt.sh +1 -1
- data/lib/generators/hancock/cms/unicorn_god_generator.rb +0 -1
- data/lib/generators/hancock/cms/utils.rb +0 -2
- data/lib/hancock/admin/embedded_element.rb +2 -10
- data/lib/hancock/admin.rb +21 -132
- data/lib/hancock/configuration.rb +2 -6
- data/lib/hancock/controller.rb +1 -10
- data/lib/hancock/engine.rb +34 -34
- data/lib/hancock/model.rb +5 -29
- data/lib/hancock/models/embedded_element.rb +0 -2
- data/lib/hancock/models/mongoid/embedded_element.rb +1 -20
- data/lib/hancock/plugin_configuration.rb +1 -1
- data/lib/hancock/rails_admin_ext/config.rb +14 -45
- data/lib/hancock/rails_admin_ext/hancock_hash.rb +1 -8
- data/lib/hancock/rails_admin_ext/hancock_html.rb +2 -17
- data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +5 -1
- data/lib/hancock/rails_admin_ext/hancock_slugs.rb +6 -2
- data/lib/hancock/rails_admin_ext/patches/field_patch.rb +1 -2
- data/lib/hancock/rails_admin_ext/patches/group_patch.rb +0 -9
- data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +0 -2
- data/lib/hancock/version.rb +1 -1
- data/lib/hancock_cms.rb +13 -21
- data/lib/manual_slug/active_record.rb +8 -8
- data/lib/rails_admin/custom_show_in_app.rb +32 -21
- data/release.sh +1 -1
- data/template.rb +386 -37
- metadata +15 -88
- data/.gitattributes +0 -4
- data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +0 -90
- data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +0 -41
- data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +0 -44
- data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +0 -106
- data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +0 -8
- data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +0 -25
- data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +0 -108
- data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +0 -12
- data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +0 -198
- data/app/helpers/hancock/settings_helper.rb +0 -44
- data/app/helpers/rails_admin/application/hancock_helper.rb +0 -19
- data/app/helpers/rails_admin/hancock/form_builder.rb +0 -44
- data/app/helpers/rails_admin/main/hancock_helper.rb +0 -27
- data/app/models/concerns/hancock/insertion_field.rb +0 -115
- data/app/views/blocks/_preloader.html.slim +0 -0
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +0 -2
- data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +0 -3
- data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +0 -24
- data/app/views/rails_admin/main/_form_hancock_enum.html.slim +0 -18
- data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +0 -20
- data/app/views/rails_admin/main/edit.html.haml +0 -18
- data/app/views/rails_admin/main/new.html.haml +0 -17
- data/config/initializers/rails_admin_mongoid_patch.rb +0 -27
- data/lib/generators/hancock/cms/setup_generator.rb +0 -488
- data/lib/generators/hancock/cms/templates/assets/stylesheets/hancock/rails_admin/custom/theming.sass.erb +0 -0
- data/lib/hancock/rails_admin_ext/hancock_array.rb +0 -19
- data/lib/hancock/rails_admin_ext/hancock_enum.rb +0 -33
- data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +0 -34
- data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +0 -14
- data/lib/hancock/rails_admin_ext/patches/has_fields.rb +0 -27
- data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +0 -25
- 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,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
|