adminterface 0.0.0 → 0.2.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.
- checksums.yaml +4 -4
- data/LICENSE.md +1 -1
- data/README.md +61 -0
- data/Rakefile +43 -0
- data/app/assets/config/adminterface_manifest.js +1 -0
- data/app/assets/stylesheets/adminterface/_base.scss +20 -0
- data/app/assets/stylesheets/adminterface/_print.scss +56 -0
- data/app/assets/stylesheets/adminterface/components/_active_admin_comment.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_all.scss +24 -0
- data/app/assets/stylesheets/adminterface/components/_aside.scss +28 -0
- data/app/assets/stylesheets/adminterface/components/_attributes_table.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_comments.scss +7 -0
- data/app/assets/stylesheets/adminterface/components/_divider.scss +28 -0
- data/app/assets/stylesheets/adminterface/components/_filters.scss +27 -0
- data/app/assets/stylesheets/adminterface/components/_flash.scss +4 -0
- data/app/assets/stylesheets/adminterface/components/_footer.scss +4 -0
- data/app/assets/stylesheets/adminterface/components/_form.scss +219 -0
- data/app/assets/stylesheets/adminterface/components/_header.scss +30 -0
- data/app/assets/stylesheets/adminterface/components/_index.scss +1 -0
- data/app/assets/stylesheets/adminterface/components/_index_as_grid.scss +5 -0
- data/app/assets/stylesheets/adminterface/components/_index_as_table.scss +1 -0
- data/app/assets/stylesheets/adminterface/components/_index_footer.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_modal_dialog.scss +4 -0
- data/app/assets/stylesheets/adminterface/components/_pagination.scss +3 -0
- data/app/assets/stylesheets/adminterface/components/_panel.scss +21 -0
- data/app/assets/stylesheets/adminterface/components/_sidebar.scss +13 -0
- data/app/assets/stylesheets/adminterface/components/_site_title.scss +17 -0
- data/app/assets/stylesheets/adminterface/components/_table_for.scss +37 -0
- data/app/assets/stylesheets/adminterface/components/_table_tools.scss +19 -0
- data/app/assets/stylesheets/adminterface/components/_thumbnail.scss +29 -0
- data/app/assets/stylesheets/adminterface/components/_title_bar.scss +36 -0
- data/app/assets/stylesheets/adminterface/components/inputs/_all.scss +2 -0
- data/app/assets/stylesheets/adminterface/components/inputs/_password.scss +28 -0
- data/app/assets/stylesheets/adminterface/components/inputs/_text.scss +30 -0
- data/app/assets/stylesheets/adminterface/helpers/_aa_icon.scss +1 -0
- data/app/assets/stylesheets/adminterface/helpers/_all.scss +2 -0
- data/app/assets/stylesheets/adminterface/helpers/_pointer.scss +1 -0
- data/app/assets/stylesheets/adminterface/layouts/_all.scss +4 -0
- data/app/assets/stylesheets/adminterface/layouts/_base.scss +5 -0
- data/app/assets/stylesheets/adminterface/layouts/_logged_in.scss +30 -0
- data/app/assets/stylesheets/adminterface/layouts/_logged_out.scss +14 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_all.scss +4 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_mixins.scss +195 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_navigation_aside.scss +33 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_navigation_sidebar.scss +15 -0
- data/app/assets/stylesheets/adminterface/layouts/types/_navigation_top.scss +33 -0
- data/app/assets/stylesheets/adminterface/mixins/_all.scss +3 -0
- data/app/assets/stylesheets/adminterface/mixins/_layouts.scss +38 -0
- data/app/assets/stylesheets/adminterface/mixins/_utilities.scss +39 -0
- data/app/assets/stylesheets/adminterface/mixins/_variables.scss +100 -0
- data/app/assets/stylesheets/adminterface/placeholders/_aa_icon.scss +10 -0
- data/app/assets/stylesheets/adminterface/placeholders/_all.scss +3 -0
- data/app/assets/stylesheets/adminterface/placeholders/_background.scss +5 -0
- data/app/assets/stylesheets/adminterface/placeholders/_typography.scss +11 -0
- data/app/assets/stylesheets/adminterface/vendors/_all.scss +4 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/_all.scss +6 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/_variables.scss +51 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_buttons.scss +5 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_dropdowns.scss +28 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_navs.scss +25 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/form/_labels.scss +5 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_tables.scss +2 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_typography.scss +2 -0
- data/app/assets/stylesheets/adminterface/vendors/flatpickr/_all.scss +2 -0
- data/app/assets/stylesheets/adminterface/vendors/flatpickr/_variables.scss +7 -0
- data/app/assets/stylesheets/adminterface/vendors/flatpickr/main.scss +50 -0
- data/app/assets/stylesheets/adminterface/vendors/tom_select/_all.scss +1 -0
- data/app/assets/stylesheets/adminterface/vendors/tom_select/_main.scss +6 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_actiontext.scss +36 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_all.scss +3 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_trix_editor.scss +86 -0
- data/app/assets/stylesheets/adminterface/vendors/trix/_variables.scss +31 -0
- data/app/javascript/adminterface/base.js +14 -0
- data/app/javascript/adminterface/config.js +129 -0
- data/app/javascript/adminterface/initializers/batch_actions.js +9 -0
- data/app/javascript/adminterface/initializers/bootstrap.js +29 -0
- data/app/javascript/adminterface/initializers/confirm_dialog.js +23 -0
- data/app/javascript/adminterface/initializers/detached_dropdown.js +16 -0
- data/app/javascript/adminterface/initializers/drawer_menu_item_toggler.js +15 -0
- data/app/javascript/adminterface/initializers/filters.js +23 -0
- data/app/javascript/adminterface/initializers/has_many.js +7 -0
- data/app/javascript/adminterface/initializers/header_toggler.js +10 -0
- data/app/javascript/adminterface/initializers/index.js +2 -0
- data/app/javascript/adminterface/initializers/per_page.js +12 -0
- data/app/javascript/adminterface/initializers/plugins/flatpickr.js +24 -0
- data/app/javascript/adminterface/initializers/plugins/input_counter.js +21 -0
- data/app/javascript/adminterface/initializers/plugins/password_visibility.js +23 -0
- data/app/javascript/adminterface/initializers/plugins/tom_select.js +24 -0
- data/app/javascript/adminterface/lib/__tests__/detached_dropdown.spec.js +70 -0
- data/app/javascript/adminterface/lib/__tests__/filters.spec.js +151 -0
- data/app/javascript/adminterface/lib/__tests__/utils.spec.js +281 -0
- data/app/javascript/adminterface/lib/batch_actions.js +106 -0
- data/app/javascript/adminterface/lib/checkbox_toggler.js +55 -0
- data/app/javascript/adminterface/lib/confirm_dialog.js +113 -0
- data/app/javascript/adminterface/lib/detached_dropdown.js +34 -0
- data/app/javascript/adminterface/lib/filters.js +34 -0
- data/app/javascript/adminterface/lib/has_many.js +122 -0
- data/app/javascript/adminterface/lib/header_toggler.js +54 -0
- data/app/javascript/adminterface/lib/input.js +108 -0
- data/app/javascript/adminterface/lib/inputs/base/groupish.js +55 -0
- data/app/javascript/adminterface/lib/inputs/base/pluginish.js +63 -0
- data/app/javascript/adminterface/lib/inputs/base_input.js +87 -0
- data/app/javascript/adminterface/lib/inputs/boolean_input.js +30 -0
- data/app/javascript/adminterface/lib/inputs/check_boxes_input.js +14 -0
- data/app/javascript/adminterface/lib/inputs/choices_input.js +96 -0
- data/app/javascript/adminterface/lib/inputs/color_input.js +14 -0
- data/app/javascript/adminterface/lib/inputs/country_input.js +90 -0
- data/app/javascript/adminterface/lib/inputs/datalist_input.js +41 -0
- data/app/javascript/adminterface/lib/inputs/date_picker_input.js +11 -0
- data/app/javascript/adminterface/lib/inputs/datetime_picker_input.js +11 -0
- data/app/javascript/adminterface/lib/inputs/hidden_input.js +21 -0
- data/app/javascript/adminterface/lib/inputs/password_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/radio_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/select_input.js +68 -0
- data/app/javascript/adminterface/lib/inputs/string_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/switch_input.js +9 -0
- data/app/javascript/adminterface/lib/inputs/text_input.js +12 -0
- data/app/javascript/adminterface/lib/inputs/time_picker_input.js +13 -0
- data/app/javascript/adminterface/lib/inputs/time_zone_input.js +66 -0
- data/app/javascript/adminterface/lib/per_page.js +18 -0
- data/app/javascript/adminterface/lib/plugins/input_counter.js +94 -0
- data/app/javascript/adminterface/lib/plugins/password_visibility.js +70 -0
- data/app/javascript/adminterface/lib/table_checkbox_toggler.js +47 -0
- data/app/javascript/adminterface/lib/utils.js +148 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +19 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +21 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +19 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +24 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +23 -0
- data/app/views/active_admin/devise/shared/_links.html.erb +25 -0
- data/app/views/active_admin/devise/shared/_omniauth.html.erb +10 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +19 -0
- data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +12 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +27 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +56 -0
- data/config/locales/active_admin.en.yml +25 -0
- data/lib/adminterface/callable.rb +7 -0
- data/lib/adminterface/configs.rb +76 -0
- data/lib/adminterface/data/base.rb +11 -0
- data/lib/adminterface/data/countries.rb +44 -0
- data/lib/adminterface/data/time_zones.rb +31 -0
- data/lib/adminterface/data.rb +6 -0
- data/lib/adminterface/encryption/encryptor.rb +26 -0
- data/lib/adminterface/engine.rb +22 -0
- data/lib/adminterface/extensions/base_controller.rb +55 -0
- data/lib/adminterface/extensions/batch_actions/resource_extension.rb +64 -0
- data/lib/adminterface/extensions/batch_actions/views/batch_action_selector.rb +48 -0
- data/lib/adminterface/extensions/batch_actions/views/selection_cells.rb +39 -0
- data/lib/adminterface/extensions/dsl.rb +13 -0
- data/lib/adminterface/extensions/dynamic_settings_node.rb +26 -0
- data/lib/adminterface/extensions/filters/forms.rb +76 -0
- data/lib/adminterface/extensions/form_builder.rb +165 -0
- data/lib/adminterface/extensions/inputs/base/active_admin_config.rb +21 -0
- data/lib/adminterface/extensions/inputs/base/choices.rb +33 -0
- data/lib/adminterface/extensions/inputs/base/groupish.rb +50 -0
- data/lib/adminterface/extensions/inputs/base/html.rb +15 -0
- data/lib/adminterface/extensions/inputs/base/labelling.rb +15 -0
- data/lib/adminterface/extensions/inputs/base/pluginish.rb +56 -0
- data/lib/adminterface/extensions/inputs/base/stringish.rb +19 -0
- data/lib/adminterface/extensions/inputs/base/wrapping.rb +25 -0
- data/lib/adminterface/extensions/inputs/base.rb +19 -0
- data/lib/adminterface/extensions/inputs/boolean_input.rb +42 -0
- data/lib/adminterface/extensions/inputs/check_boxes_input.rb +34 -0
- data/lib/adminterface/extensions/inputs/color_input.rb +29 -0
- data/lib/adminterface/extensions/inputs/country_input.rb +33 -0
- data/lib/adminterface/extensions/inputs/datalist_input.rb +26 -0
- data/lib/adminterface/extensions/inputs/date_picker_input.rb +30 -0
- data/lib/adminterface/extensions/inputs/date_select_input.rb +7 -0
- data/lib/adminterface/extensions/inputs/datetime_picker_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/datetime_select_input.rb +7 -0
- data/lib/adminterface/extensions/inputs/email_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/file_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/filters/base/search_method_select.rb +37 -0
- data/lib/adminterface/extensions/inputs/filters/base.rb +3 -0
- data/lib/adminterface/extensions/inputs/filters/boolean_input.rb +4 -0
- data/lib/adminterface/extensions/inputs/filters/check_boxes_input.rb +12 -0
- data/lib/adminterface/extensions/inputs/filters/date_picker_input.rb +4 -0
- data/lib/adminterface/extensions/inputs/filters/date_range_input.rb +50 -0
- data/lib/adminterface/extensions/inputs/filters/select_input.rb +4 -0
- data/lib/adminterface/extensions/inputs/number_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/password_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/phone_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/radio_input.rb +41 -0
- data/lib/adminterface/extensions/inputs/range_input.rb +22 -0
- data/lib/adminterface/extensions/inputs/rich_text_area_input.rb +21 -0
- data/lib/adminterface/extensions/inputs/search_input.rb +23 -0
- data/lib/adminterface/extensions/inputs/select_input.rb +33 -0
- data/lib/adminterface/extensions/inputs/string_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/switch_input.rb +11 -0
- data/lib/adminterface/extensions/inputs/text_input.rb +27 -0
- data/lib/adminterface/extensions/inputs/time_picker_input.rb +19 -0
- data/lib/adminterface/extensions/inputs/time_select_input.rb +7 -0
- data/lib/adminterface/extensions/inputs/time_zone_input.rb +33 -0
- data/lib/adminterface/extensions/inputs/url_input.rb +23 -0
- data/lib/adminterface/extensions/menu_item.rb +16 -0
- data/lib/adminterface/extensions/namespace_settings.rb +30 -0
- data/lib/adminterface/extensions/orm/active_record/comments/views/active_admin_comments.rb +122 -0
- data/lib/adminterface/extensions/resource/action_items.rb +117 -0
- data/lib/adminterface/extensions/sidebar_section.rb +35 -0
- data/lib/adminterface/extensions/view_helpers/alert_helper.rb +36 -0
- data/lib/adminterface/extensions/view_helpers/component_helper.rb +23 -0
- data/lib/adminterface/extensions/views/action_items.rb +39 -0
- data/lib/adminterface/extensions/views/columns.rb +59 -0
- data/lib/adminterface/extensions/views/components/active_admin_form.rb +47 -0
- data/lib/adminterface/extensions/views/components/attributes_table.rb +28 -0
- data/lib/adminterface/extensions/views/components/blank_slate.rb +19 -0
- data/lib/adminterface/extensions/views/components/dropdown_menu.rb +55 -0
- data/lib/adminterface/extensions/views/components/icon.rb +26 -0
- data/lib/adminterface/extensions/views/components/index_list.rb +43 -0
- data/lib/adminterface/extensions/views/components/menu.rb +18 -0
- data/lib/adminterface/extensions/views/components/menu_item.rb +64 -0
- data/lib/adminterface/extensions/views/components/paginated_collection.rb +52 -0
- data/lib/adminterface/extensions/views/components/panel.rb +71 -0
- data/lib/adminterface/extensions/views/components/scopes.rb +53 -0
- data/lib/adminterface/extensions/views/components/sidebar_section.rb +39 -0
- data/lib/adminterface/extensions/views/components/site_title.rb +36 -0
- data/lib/adminterface/extensions/views/components/status_tag.rb +26 -0
- data/lib/adminterface/extensions/views/components/table_for.rb +23 -0
- data/lib/adminterface/extensions/views/components/tabs.rb +76 -0
- data/lib/adminterface/extensions/views/footer.rb +27 -0
- data/lib/adminterface/extensions/views/header.rb +59 -0
- data/lib/adminterface/extensions/views/index_as_grid.rb +53 -0
- data/lib/adminterface/extensions/views/index_as_table.rb +77 -0
- data/lib/adminterface/extensions/views/pages/base.rb +164 -0
- data/lib/adminterface/extensions/views/pages/form.rb +27 -0
- data/lib/adminterface/extensions/views/pages/index.rb +136 -0
- data/lib/adminterface/extensions/views/pages/page.rb +18 -0
- data/lib/adminterface/extensions/views/title_bar.rb +74 -0
- data/lib/adminterface/fixtures/components.yml +73 -0
- data/lib/adminterface/fixtures/css_classes.yml +107 -0
- data/lib/adminterface/initializers/batch_actions.rb +15 -0
- data/lib/adminterface/initializers/comments.rb +13 -0
- data/lib/adminterface/initializers/configurations.rb +38 -0
- data/lib/adminterface/initializers/formtastic.rb +58 -0
- data/lib/adminterface/initializers/resource.rb +20 -0
- data/lib/adminterface/initializers/view_helpers.rb +14 -0
- data/lib/adminterface/initializers/views.rb +39 -0
- data/lib/adminterface/license.rb +18 -0
- data/lib/adminterface/licensing/base.rb +99 -0
- data/lib/adminterface/licensing/commercial.rb +7 -0
- data/lib/adminterface/licensing/notice.rb +54 -0
- data/lib/adminterface/licensing/personal.rb +13 -0
- data/lib/adminterface/public.pem +9 -0
- data/lib/adminterface/version.rb +3 -0
- data/lib/adminterface.rb +55 -0
- data/lib/generators/adminterface/comments/comments_generator.rb +29 -0
- data/lib/generators/adminterface/comments/templates/README +13 -0
- data/lib/generators/adminterface/comments/templates/active_admin_comment_action_text.rb +18 -0
- data/lib/generators/adminterface/comments/templates/migrations/drop_body_for_active_admin_comments.rb.erb +28 -0
- data/lib/generators/adminterface/configs/configs_generator.rb +19 -0
- data/lib/generators/adminterface/configs/templates/README +33 -0
- data/lib/generators/adminterface/install/install_generator.rb +41 -0
- data/lib/generators/adminterface/install/templates/dashboard.rb +32 -0
- data/lib/generators/adminterface/views/views_generator.rb +15 -0
- data/lib/generators/adminterface/webpacker/templates/README +27 -0
- data/lib/generators/adminterface/webpacker/templates/active_admin.js +12 -0
- data/lib/generators/adminterface/webpacker/templates/active_admin.scss +8 -0
- data/lib/generators/adminterface/webpacker/templates/print.scss +3 -0
- data/lib/generators/adminterface/webpacker/webpacker_generator.rb +55 -0
- data/lib/tasks/adminterface_tasks.rake +4 -0
- metadata +285 -9
- data/lib/name.rb +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Components
|
|
5
|
+
module Tabs
|
|
6
|
+
def build_menu_item(title, options, &_block)
|
|
7
|
+
fragment = options.fetch(:id, fragmentize(title))
|
|
8
|
+
html_options = options.fetch(:html_options, {})
|
|
9
|
+
li html_options.merge(class: "nav-item") do
|
|
10
|
+
if @http
|
|
11
|
+
params[:tab] ||= @default_tab || fragment
|
|
12
|
+
link_to title, url_for(tab: fragment, anchor: id, anchor_id: id), class: toggler_class(fragment)
|
|
13
|
+
else
|
|
14
|
+
link_to title, "##{fragment}", class: toggler_class(fragment), data: {"bs-toggle": "tab", "bs-target": "##{fragment}"}
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def build_content_item(title, options, &block)
|
|
20
|
+
fragment = options.fetch(:id, fragmentize(title))
|
|
21
|
+
options = options.reverse_merge(id: fragmentize(title))
|
|
22
|
+
div(options.merge(class: tab_pane_class(fragment)), &block)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def default_css_class
|
|
26
|
+
tabs_css_classes
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def nav_html_options
|
|
30
|
+
nav_html[:class] = "nav #{default_css_class} #{nav_html[:class]}".squish
|
|
31
|
+
nav_html[:role] = "tablist"
|
|
32
|
+
nav_html
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def content_html_options
|
|
36
|
+
content_html[:class] = "tab-content #{content_html[:class]}".squish
|
|
37
|
+
content_html
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def toggler_class(fragment)
|
|
43
|
+
"nav-link #{current_tab?(fragment) ? "active" : nil}".squish
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def tab_pane_class(fragment)
|
|
47
|
+
"tab-pane #{current_tab?(fragment) ? "active" : nil}".squish
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def current_tab?(fragment)
|
|
51
|
+
fragment.eql?(params[:tab]) || (!@http && @tabs_content&.children.blank?)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Overwrite activeadmin/lib/active_admin/views/components/tabs.rb
|
|
60
|
+
ActiveAdmin::Views::Tabs.class_eval do
|
|
61
|
+
prepend Adminterface::Extensions::Views::Components::Tabs
|
|
62
|
+
has_css_classes_for :tabs
|
|
63
|
+
attr_accessor :nav_html, :content_html, :id
|
|
64
|
+
|
|
65
|
+
def build(options = {}, &_block)
|
|
66
|
+
@nav_html = options.delete(:nav_html) || {}
|
|
67
|
+
@content_html = options.delete(:content_html) || {}
|
|
68
|
+
@http = options.delete(:http) { false }
|
|
69
|
+
@default_tab = options.delete(:default)
|
|
70
|
+
@id = options[:id]
|
|
71
|
+
super(options)
|
|
72
|
+
|
|
73
|
+
@menu = ul(**nav_html_options)
|
|
74
|
+
@tabs_content = div(**content_html_options)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Footer
|
|
5
|
+
def default_class_name
|
|
6
|
+
"#{super} #{footer_css_classes[:wrapper]}".squish
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def para(message)
|
|
10
|
+
super(message, class: footer_css_classes[:body])
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def powered_by_message
|
|
14
|
+
I18n.t("active_admin.powered_by",
|
|
15
|
+
active_admin: link_to("Adminterface", "https://github.com/CMDBrew/adminterface", target: "_blank", rel: "noopener"),
|
|
16
|
+
version: Adminterface::VERSION).html_safe
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Overwrite activeadmin/lib/active_admin/views/header.rb
|
|
24
|
+
ActiveAdmin::Views::Footer.class_eval do
|
|
25
|
+
prepend Adminterface::Extensions::Views::Footer
|
|
26
|
+
has_css_classes_for :footer
|
|
27
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Header
|
|
5
|
+
ID = "header-nav".freeze
|
|
6
|
+
|
|
7
|
+
def tag_name
|
|
8
|
+
:nav
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def build_navigations
|
|
14
|
+
add_class "navbar #{header_css_classes[:wrapper]}".squish
|
|
15
|
+
add_class header_position_class if header_position_class.present?
|
|
16
|
+
site_title @namespace
|
|
17
|
+
navbar_toggler
|
|
18
|
+
navbar_nav
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def navbar_nav
|
|
22
|
+
div id: ID, class: "collapse navbar-collapse" do
|
|
23
|
+
global_navigation @menu, id: "main-nav", class: "navbar-nav"
|
|
24
|
+
utility_navigation @utility_menu, id: "utility-nav", class: "navbar-nav"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def navbar_toggler
|
|
29
|
+
button(class: "navbar-toggler", 'data-bs-target': "##{ID}", 'data-bs-toggle': "collapse") do
|
|
30
|
+
span class: "navbar-toggler-icon"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def header_position_class
|
|
35
|
+
header_components.dig(:css_class, header_components[:position]&.to_sym)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Overwrite activeadmin/lib/active_admin/views/header.rb
|
|
43
|
+
ActiveAdmin::Views::Header.class_eval do
|
|
44
|
+
prepend Adminterface::Extensions::Views::Header
|
|
45
|
+
has_css_classes_for :header
|
|
46
|
+
has_components_for :header
|
|
47
|
+
|
|
48
|
+
def build(namespace, menu)
|
|
49
|
+
super(id: "header")
|
|
50
|
+
|
|
51
|
+
@namespace = namespace
|
|
52
|
+
@menu = menu
|
|
53
|
+
@utility_menu = @namespace.fetch_menu(:utility_navigation)
|
|
54
|
+
|
|
55
|
+
div class: "header-container #{header_css_classes[:container]}".squish do
|
|
56
|
+
build_navigations
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module IndexAsGrid
|
|
5
|
+
def size
|
|
6
|
+
@page_presenter[:size] || index_as_grid_components[:breakpoint]
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
protected
|
|
10
|
+
|
|
11
|
+
def build_table
|
|
12
|
+
resource_selection_toggle_panel if active_admin_config.batch_actions.any?
|
|
13
|
+
div class: "index_grid" do
|
|
14
|
+
@collection.in_groups_of(number_of_columns).each do |group|
|
|
15
|
+
build_row(group)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def build_row(group)
|
|
21
|
+
div class: index_as_grid_css_classes[:group] do
|
|
22
|
+
group.each do |item|
|
|
23
|
+
next if item.blank?
|
|
24
|
+
|
|
25
|
+
build_item(item)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def build_item(item)
|
|
31
|
+
div class: "#{column_klass} #{index_as_grid_css_classes[:item]}".squish, for: item do
|
|
32
|
+
instance_exec(item, &@page_presenter.block)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def span_size
|
|
37
|
+
12 / number_of_columns
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def column_klass
|
|
41
|
+
["col", size, span_size].delete_if(&:blank?).join("-")
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Overwrite activeadmin/lib/active_admin/views/index_as_grid.rb
|
|
49
|
+
ActiveAdmin::Views::IndexAsGrid.class_eval do
|
|
50
|
+
prepend Adminterface::Extensions::Views::IndexAsGrid
|
|
51
|
+
has_css_classes_for :index_as_grid
|
|
52
|
+
has_components_for :index_as_grid
|
|
53
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module IndexAsTable
|
|
5
|
+
def table_for(*args, &block)
|
|
6
|
+
div class: index_as_table_css_classes[:wrapper] do
|
|
7
|
+
super(*args, &block)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def default_class_name
|
|
12
|
+
"#{super} index"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module IndexTableFor
|
|
17
|
+
def default_css_classes
|
|
18
|
+
"#{super} #{index_as_table_css_classes[:table]}".squish
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def dropdown_menu(*args, &block)
|
|
22
|
+
options = args.extract_options!
|
|
23
|
+
super(*args, options.merge(button: {class: index_as_table_css_classes.dig(:actions, :dropdown, :toggle)}), &block)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
module TableActions
|
|
28
|
+
def default_class_name
|
|
29
|
+
"#{super} #{index_as_table_css_classes.dig(:actions, :buttons, :group)}".squish
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def item(*args)
|
|
33
|
+
options = args.extract_options!
|
|
34
|
+
options[:class] = "#{options[:class]} #{index_as_table_css_classes.dig(:actions, :buttons, :item)}".squish
|
|
35
|
+
options["data-aa-confirm-dialog"] = confirm_dialog_config.to_json if confirm?(options)
|
|
36
|
+
text_node link_to(*args, options)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def confirm?(options)
|
|
40
|
+
options.dig(:data, :confirm).present?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def confirm_dialog_config
|
|
44
|
+
{
|
|
45
|
+
buttons: {
|
|
46
|
+
confirm: {
|
|
47
|
+
text: I18n.t(:confirm, scope: "active_admin.confirm_dialog"),
|
|
48
|
+
class: confirm_dialog_css_classes[:confirm]
|
|
49
|
+
},
|
|
50
|
+
cancel: {
|
|
51
|
+
text: I18n.t(:cancel, scope: "active_admin.confirm_dialog"),
|
|
52
|
+
class: confirm_dialog_css_classes[:cancel]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Overwrite activeadmin/lib/active_admin/views/index_as_table.rb
|
|
63
|
+
ActiveAdmin::Views::IndexAsTable.class_eval do
|
|
64
|
+
prepend Adminterface::Extensions::Views::IndexAsTable
|
|
65
|
+
has_css_classes_for :index_as_table
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
ActiveAdmin::Views::IndexAsTable::IndexTableFor.class_eval do
|
|
69
|
+
prepend Adminterface::Extensions::Views::IndexTableFor
|
|
70
|
+
has_css_classes_for :index_as_table
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
ActiveAdmin::Views::IndexAsTable::IndexTableFor::TableActions.class_eval do
|
|
74
|
+
prepend Adminterface::Extensions::Views::TableActions
|
|
75
|
+
has_css_classes_for :index_as_table
|
|
76
|
+
has_css_classes_for :confirm_dialog
|
|
77
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Pages
|
|
5
|
+
module Base
|
|
6
|
+
def build(*args)
|
|
7
|
+
super
|
|
8
|
+
build_breakpoint_helpers
|
|
9
|
+
build_meta_tags_for_js
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def build_meta_tags_for_js
|
|
15
|
+
div id: "meta-tags-for-js" do
|
|
16
|
+
meta name: "countries", content: ::Adminterface::Data::Countries.call(I18n.locale).to_json
|
|
17
|
+
meta name: "time_zones", content: ::Adminterface::Data::TimeZones.call(I18n.locale).to_json
|
|
18
|
+
meta name: "translations", content: I18n.t("active_admin").to_json
|
|
19
|
+
meta name: "components", content: {inputs: inputs_components}.to_json
|
|
20
|
+
meta name: "css_classes", content: {confirm_dialog: confirm_dialog_css_classes}.to_json
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def build_breakpoint_helpers
|
|
25
|
+
div id: "breakpoint-helpers" do
|
|
26
|
+
span class: "breakpoint-up-helper"
|
|
27
|
+
span class: "breakpoint-down-helper"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def build_page
|
|
32
|
+
within body(class: body_classes) do
|
|
33
|
+
header(active_admin_namespace, current_menu)
|
|
34
|
+
title_bar(active_admin_namespace, title, action_items_for_action)
|
|
35
|
+
|
|
36
|
+
div id: "wrapper" do
|
|
37
|
+
build_flash_messages
|
|
38
|
+
build_unsupported_browser
|
|
39
|
+
build_page_content
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def build_page_content
|
|
45
|
+
div id: "active_admin_content" do
|
|
46
|
+
build_left_sidebar_content
|
|
47
|
+
build_body_content
|
|
48
|
+
build_right_sidebar_content
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def build_body_content
|
|
53
|
+
div main_html_options do
|
|
54
|
+
div class: content_wrapper_class do
|
|
55
|
+
build_main_content_wrapper
|
|
56
|
+
footer active_admin_namespace
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def build_left_sidebar_content
|
|
62
|
+
return if skip_left_sidebar?
|
|
63
|
+
|
|
64
|
+
div sidebar(sidebar_sections_for_action_for_position("left"), class: "container"), id: "sidebar-left"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def build_right_sidebar_content
|
|
68
|
+
return if skip_right_sidebar?
|
|
69
|
+
|
|
70
|
+
div sidebar(sidebar_sections_for_action_for_position("right"), class: "container"), id: "sidebar-right"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def skip_left_sidebar?
|
|
74
|
+
skip_sidebar? || sidebar_sections_for_action_for_position("left").empty?
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def skip_right_sidebar?
|
|
78
|
+
skip_sidebar? || sidebar_sections_for_action_for_position("right").empty?
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def sidebar_sections_for_action_for_position(position)
|
|
82
|
+
sections = sidebar_sections_for_action.select { |x| x.position.eql?(position) }
|
|
83
|
+
sections += sidebar_sections_for_action.select { |x| x.position.blank? } if sidebar_position.eql?(position)
|
|
84
|
+
sections
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def body_classes
|
|
88
|
+
super.add "#{html_css_classes[:body]} layout-navigation-#{header_position} #{sidebar_class}".squish
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def sidebar_class
|
|
92
|
+
classes = []
|
|
93
|
+
classes.push "with-left-sidebar" unless skip_left_sidebar?
|
|
94
|
+
classes.push "with-right-sidebar" unless skip_right_sidebar?
|
|
95
|
+
classes.push "without-sidebar" if classes.empty?
|
|
96
|
+
classes.join(" ")
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def build_flash_messages
|
|
100
|
+
return if flash_messages.blank?
|
|
101
|
+
|
|
102
|
+
div class: "flashes" do
|
|
103
|
+
flash_messages.each do |type, messages|
|
|
104
|
+
[*messages].each do |message|
|
|
105
|
+
div class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]} #{flash_dismissible_class}".squish do
|
|
106
|
+
text_node(message)
|
|
107
|
+
button(class: "btn-close", "data-bs-dismiss": "alert", "aria-label": "Close") if flash_dismissible?
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def flash_dismissible?
|
|
115
|
+
flash_components[:dismissible].eql?(true)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def flash_dismissible_class
|
|
119
|
+
return unless flash_dismissible?
|
|
120
|
+
"alert-dismissible"
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def main_html_options
|
|
124
|
+
options = config[:main] || {}
|
|
125
|
+
options[:class] = "#{sidebar_class} #{options[:class]}".squish
|
|
126
|
+
options[:id] = "main"
|
|
127
|
+
options
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def content_wrapper_class
|
|
131
|
+
klass =
|
|
132
|
+
case self.class.to_s
|
|
133
|
+
when "ActiveAdmin::Views::Pages::Index"
|
|
134
|
+
html_css_classes.dig(:container, :index)
|
|
135
|
+
when "ActiveAdmin::Views::Pages::Form"
|
|
136
|
+
html_css_classes.dig(:container, :form)
|
|
137
|
+
when "ActiveAdmin::Views::Pages::Show"
|
|
138
|
+
html_css_classes.dig(:container, :show)
|
|
139
|
+
when "ActiveAdmin::Views::Pages::Page"
|
|
140
|
+
html_css_classes.dig(:container, :page)
|
|
141
|
+
end
|
|
142
|
+
klass || "container"
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def sidebar_position
|
|
146
|
+
sidebar_components[:position]
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def header_position
|
|
150
|
+
header_components[:position]
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Overwrite activeadmin/lib/active_admin/views/pages/base.rb
|
|
159
|
+
ActiveAdmin::Views::Pages::Base.class_eval do
|
|
160
|
+
include Adminterface::Configs::Finders
|
|
161
|
+
prepend Adminterface::Extensions::Views::Pages::Base
|
|
162
|
+
has_css_classes_for :html, :flash, :confirm_dialog
|
|
163
|
+
has_components_for :flash, :sidebar, :header, :inputs
|
|
164
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Pages
|
|
5
|
+
module Form
|
|
6
|
+
def main_content
|
|
7
|
+
options = default_form_options.merge form_presenter.options
|
|
8
|
+
|
|
9
|
+
if options[:partial]
|
|
10
|
+
render options[:partial]
|
|
11
|
+
elsif options[:multiple]
|
|
12
|
+
instance_exec(&form_presenter.block)
|
|
13
|
+
else
|
|
14
|
+
active_admin_form_for resource, options, &form_presenter.block
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Overwrite activeadmin/lib/active_admin/views/pages/form.rb
|
|
24
|
+
ActiveAdmin::Views::Pages::Form.class_eval do
|
|
25
|
+
prepend Adminterface::Extensions::Views::Pages::Form
|
|
26
|
+
alias_method :form_section, :active_admin_form_for
|
|
27
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Pages
|
|
5
|
+
module Index
|
|
6
|
+
FILTER_OPTS = %w[sidebar table_tools aside].freeze
|
|
7
|
+
|
|
8
|
+
def main_content
|
|
9
|
+
unless FILTER_OPTS.include?(filter_position)
|
|
10
|
+
raise "Invalid layouts -> filter. Available options are: #{FILTER_OPTS.join(", ")}"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
build_table_tools
|
|
14
|
+
wrap_with_batch_action_form do
|
|
15
|
+
build_collection
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def build_page
|
|
20
|
+
super.add_child(build_aside)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def build_table_tools
|
|
24
|
+
return unless any_table_tools?
|
|
25
|
+
|
|
26
|
+
div class: "table_tools" do
|
|
27
|
+
build_scopes
|
|
28
|
+
build_table_tools_filters
|
|
29
|
+
div class: "scope_ctrls" do
|
|
30
|
+
build_batch_actions_selector
|
|
31
|
+
build_index_list
|
|
32
|
+
build_table_tools_filter_toggler
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def action_items_for_action
|
|
40
|
+
if filter_position.eql?("aside")
|
|
41
|
+
items = super << aside_filter_action
|
|
42
|
+
items.sort_by { |x| [x.group, x.priority] }
|
|
43
|
+
else
|
|
44
|
+
super
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def aside_filter_action
|
|
49
|
+
ActiveAdmin::ActionItem.new(:filter, only: :index, group: 90) do
|
|
50
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
51
|
+
link_to localizer.t(:filter_model), "#",
|
|
52
|
+
id: "filters-toggler",
|
|
53
|
+
data: {"bs-toggle": "collapse", "bs-target": "#filters"},
|
|
54
|
+
title: I18n.t(:filters, scope: "active_admin.sidebars")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def build_aside
|
|
59
|
+
return if filter_sections.blank?
|
|
60
|
+
return unless filter_position.eql?("aside")
|
|
61
|
+
|
|
62
|
+
div id: "filters", class: "collapse aside" do
|
|
63
|
+
button "", type: "button", id: "filters-close", class: "btn-close", href: "#", "data-bs-toggle": "collapse", "data-bs-target": "#filters"
|
|
64
|
+
filter_sections.collect { |x| sidebar_section(x) }
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def build_table_tools_filters
|
|
69
|
+
return if filter_sections.blank?
|
|
70
|
+
return unless filter_position.eql?("table_tools")
|
|
71
|
+
|
|
72
|
+
div id: "filters", class: "collapse table-tools" do
|
|
73
|
+
filter_sections.collect { |x| sidebar_section(x) }
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def build_table_tools_filter_toggler
|
|
78
|
+
return if filter_sections.blank?
|
|
79
|
+
return unless filter_position.eql?("table_tools")
|
|
80
|
+
|
|
81
|
+
div id: "filters-toggler" do
|
|
82
|
+
a span(I18n.t("active_admin.sidebars.filters")),
|
|
83
|
+
href: "#", class: "filter_toggler #{table_tools_css_classes[:btn]}",
|
|
84
|
+
'data-bs-toggle': "collapse", 'data-bs-target': "#filters"
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def filter_section?(section)
|
|
89
|
+
section.name.to_sym == :filters
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def filter_sections
|
|
93
|
+
sections = []
|
|
94
|
+
available_sidebar_sections.collect do |section|
|
|
95
|
+
next unless filter_section?(section)
|
|
96
|
+
|
|
97
|
+
sections.push section
|
|
98
|
+
end
|
|
99
|
+
sections
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def skip_sidebar?
|
|
103
|
+
sidebar_sections_for_action.empty? || assigns[:skip_sidebar] == true
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def available_sidebar_sections
|
|
107
|
+
if active_admin_config&.sidebar_sections?
|
|
108
|
+
active_admin_config.sidebar_sections_for(params[:action], self)
|
|
109
|
+
else
|
|
110
|
+
[]
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def sidebar_sections_for_action
|
|
115
|
+
if filter_position.eql?("sidebar")
|
|
116
|
+
available_sidebar_sections
|
|
117
|
+
else
|
|
118
|
+
available_sidebar_sections.reject { |x| x.name.to_sym == :filters }
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def filter_position
|
|
123
|
+
filter_components[:position]
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Overwrite activeadmin/lib/active_admin/views/pages/index.rb
|
|
132
|
+
ActiveAdmin::Views::Pages::Index.class_eval do
|
|
133
|
+
prepend Adminterface::Extensions::Views::Pages::Index
|
|
134
|
+
has_css_classes_for :table_tools
|
|
135
|
+
has_components_for :filter
|
|
136
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Views
|
|
4
|
+
module Pages
|
|
5
|
+
module Page
|
|
6
|
+
def body_classes
|
|
7
|
+
super.add "page"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Overwrite activeadmin/lib/active_admin/views/pages/page.rb
|
|
16
|
+
ActiveAdmin::Views::Pages::Page.class_eval do
|
|
17
|
+
prepend Adminterface::Extensions::Views::Pages::Page
|
|
18
|
+
end
|