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,31 @@
|
|
|
1
|
+
require_relative "./base"
|
|
2
|
+
|
|
3
|
+
module Adminterface
|
|
4
|
+
module Data
|
|
5
|
+
class TimeZones < Base
|
|
6
|
+
attr_reader :locale, :options
|
|
7
|
+
|
|
8
|
+
def initialize(locale, options = {})
|
|
9
|
+
@locale = locale
|
|
10
|
+
@options = options
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def call
|
|
14
|
+
I18n.with_locale(locale) { time_zones }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def time_zones
|
|
20
|
+
zones = ActiveSupport::TimeZone.all
|
|
21
|
+
zones.map do |zone|
|
|
22
|
+
{
|
|
23
|
+
identifier: zone.tzinfo.identifier,
|
|
24
|
+
name: zone.name,
|
|
25
|
+
translated_name: I18n.t(zone.name, scope: :timezones, default: zone.to_s)
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Encryption
|
|
3
|
+
class Encryptor
|
|
4
|
+
extend Callable
|
|
5
|
+
attr_reader :message
|
|
6
|
+
|
|
7
|
+
def initialize(message)
|
|
8
|
+
@message = message
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def call
|
|
12
|
+
Base64.encode64(public_key.public_encrypt(message))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def public_key_file
|
|
18
|
+
@public_key_file ||= File.read(Engine.root.join("lib/adminterface/public.pem"))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def public_key
|
|
22
|
+
@public_key ||= OpenSSL::PKey::RSA.new(public_key_file)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
# Initialize Engine
|
|
3
|
+
class Engine < ::Rails::Engine
|
|
4
|
+
isolate_namespace Adminterface
|
|
5
|
+
|
|
6
|
+
# Initializers: The load order matters
|
|
7
|
+
include ::Adminterface::Initializers::BatchActions
|
|
8
|
+
include ::Adminterface::Initializers::Configurations
|
|
9
|
+
include ::Adminterface::Initializers::Formtastic
|
|
10
|
+
include ::Adminterface::Initializers::Resource
|
|
11
|
+
include ::Adminterface::Initializers::ViewHelpers
|
|
12
|
+
include ::Adminterface::Initializers::Views
|
|
13
|
+
include ::Adminterface::Initializers::Comments
|
|
14
|
+
|
|
15
|
+
config.after_initialize do
|
|
16
|
+
unless defined?(::Rails::Generators) || defined?(::Rails::Console) ||
|
|
17
|
+
File.basename($0).eql?("rake")
|
|
18
|
+
::Adminterface::License.verify!
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module BaseController
|
|
4
|
+
def default_url_options
|
|
5
|
+
super.merge(tab: params[:tab], anchor: params[:anchor_id])
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
def set_resource_scope
|
|
11
|
+
session[:resource_scope] = {
|
|
12
|
+
controller: controller_name,
|
|
13
|
+
action: action_name
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def reset_tab
|
|
18
|
+
params.delete(:tab)
|
|
19
|
+
params.delete(:anchor_id)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def should_reset_tab?
|
|
23
|
+
!(same_controller? && same_action?)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def same_controller?
|
|
27
|
+
return true if resource_scope[:controller].blank?
|
|
28
|
+
|
|
29
|
+
resource_scope[:controller] == controller_name
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def same_action?
|
|
33
|
+
return true if resource_scope[:action].blank?
|
|
34
|
+
|
|
35
|
+
case resource_scope[:action]
|
|
36
|
+
when "edit", "update" then %w[edit update].include? action_name
|
|
37
|
+
else action_name == resource_scope[:action]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def resource_scope
|
|
42
|
+
session.fetch(:resource_scope, {})
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Overwrite activeadmin/lib/active_admin/base_controller.rb
|
|
49
|
+
ActiveSupport.on_load(:active_admin) do
|
|
50
|
+
ActiveAdmin::BaseController.class_eval do
|
|
51
|
+
prepend Adminterface::Extensions::BaseController
|
|
52
|
+
before_action :reset_tab, if: :should_reset_tab?
|
|
53
|
+
after_action :set_resource_scope
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module BatchActions
|
|
4
|
+
module ResourceExtension
|
|
5
|
+
def add_default_batch_action
|
|
6
|
+
destroy_options = {
|
|
7
|
+
priority: 100,
|
|
8
|
+
confirm: proc { I18n.t("active_admin.batch_actions.delete_confirmation", plural_model: active_admin_config.plural_resource_label.downcase) },
|
|
9
|
+
message: proc { I18n.t("active_admin.batch_actions.delete_message") },
|
|
10
|
+
if: proc { controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
add_batch_action :destroy, proc { I18n.t("active_admin.delete") }, destroy_options do |selected_ids|
|
|
14
|
+
batch_action_collection.find(selected_ids).each do |record|
|
|
15
|
+
authorize! ActiveAdmin::Auth::DESTROY, record
|
|
16
|
+
destroy_resource(record)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
redirect_to active_admin_config.route_collection_path(params),
|
|
20
|
+
notice: I18n.t("active_admin.batch_actions.succesfully_destroyed",
|
|
21
|
+
count: selected_ids.count,
|
|
22
|
+
model: active_admin_config.resource_label.downcase,
|
|
23
|
+
plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
module BatchAction
|
|
30
|
+
def confirm_dialog
|
|
31
|
+
@confirm_dialog ||= find_confirm_dialog
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def find_confirm_dialog
|
|
37
|
+
options = @options[:confirm_dialog] || {}
|
|
38
|
+
{
|
|
39
|
+
buttons: {
|
|
40
|
+
confirm: {
|
|
41
|
+
text: I18n.t(:confirm, scope: "active_admin.batch_actions.confirm_dialog"),
|
|
42
|
+
class: table_tools_css_classes.dig(:confirm_dialog, :confirm)
|
|
43
|
+
},
|
|
44
|
+
cancel: {
|
|
45
|
+
text: I18n.t(:cancel, scope: "active_admin.batch_actions.confirm_dialog"),
|
|
46
|
+
class: table_tools_css_classes.dig(:confirm_dialog, :cancel)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}.deep_merge(options)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Overwrite activeadmin/lib/active_admin/batch_actions/resource_extension.rb
|
|
56
|
+
ActiveAdmin::BatchActions::ResourceExtension.module_eval do
|
|
57
|
+
prepend Adminterface::Extensions::BatchActions::ResourceExtension
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
ActiveAdmin::BatchAction.class_eval do
|
|
61
|
+
include Adminterface::Configs::Finders
|
|
62
|
+
prepend Adminterface::Extensions::BatchAction
|
|
63
|
+
has_css_classes_for :table_tools
|
|
64
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module BatchActions
|
|
4
|
+
module BatchActionSelector
|
|
5
|
+
def dropdown_menu(name, options = {})
|
|
6
|
+
options[:button] ||= {}
|
|
7
|
+
options[:button] = {class: "#{options.dig(:button, :class)} #{table_tools_css_classes[:btn]}".squish}
|
|
8
|
+
super(name, options)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def build_drop_down
|
|
14
|
+
return if batch_actions_to_display.empty?
|
|
15
|
+
|
|
16
|
+
dropdown_menu I18n.t("active_admin.batch_actions.button_label"),
|
|
17
|
+
class: "batch_actions_selector dropdown_menu",
|
|
18
|
+
button: {class: "disabled"} do
|
|
19
|
+
batch_actions_to_display.each do |batch_action|
|
|
20
|
+
confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
|
|
21
|
+
|
|
22
|
+
options = {
|
|
23
|
+
id: "batch-action-#{batch_action.sym}",
|
|
24
|
+
class: "batch_action",
|
|
25
|
+
"data-action": batch_action.sym,
|
|
26
|
+
"data-confirm": confirmation_text,
|
|
27
|
+
"data-inputs": render_in_context(self, batch_action.inputs).to_json,
|
|
28
|
+
"data-aa-confirm-dialog": render_in_context(self, batch_action.confirm_dialog).to_json
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
default_title = render_or_call_method_or_proc_on(self, batch_action.title)
|
|
32
|
+
title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
|
|
33
|
+
label = I18n.t("active_admin.batch_actions.action_label", title: title)
|
|
34
|
+
|
|
35
|
+
item label, "#", **options
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Overwrite activeadmin/lib/active_admin/batch_actions/views/batch_action_selector.rb
|
|
45
|
+
ActiveAdmin::BatchActions::BatchActionSelector.class_eval do
|
|
46
|
+
prepend Adminterface::Extensions::BatchActions::BatchActionSelector
|
|
47
|
+
has_css_classes_for :table_tools
|
|
48
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module BatchActions
|
|
4
|
+
module ResourceSelectionToggleCell
|
|
5
|
+
def build(label_text = "")
|
|
6
|
+
if label_text.present?
|
|
7
|
+
div class: "form-check" do
|
|
8
|
+
input_html
|
|
9
|
+
label label_text, class: "form-check-label"
|
|
10
|
+
end
|
|
11
|
+
else
|
|
12
|
+
input_html
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def input_html
|
|
17
|
+
input type: "checkbox", id: "collection_selection_toggle_all",
|
|
18
|
+
name: "collection_selection_toggle_all", class: "toggle_all form-check-input"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
module ResourceSelectionCell
|
|
23
|
+
def build(resource)
|
|
24
|
+
input type: "checkbox", id: "batch_action_item_#{resource.id}", value: resource.id,
|
|
25
|
+
class: "collection_selection form-check-input", name: "collection_selection[]"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Overwrite activeadmin/lib/active_admin/batch_actions/views/selection_cells.rb
|
|
33
|
+
ActiveAdmin::BatchActions::ResourceSelectionToggleCell.class_eval do
|
|
34
|
+
prepend Adminterface::Extensions::BatchActions::ResourceSelectionToggleCell
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
ActiveAdmin::BatchActions::ResourceSelectionCell.class_eval do
|
|
38
|
+
prepend Adminterface::Extensions::BatchActions::ResourceSelectionCell
|
|
39
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module DynamicSettingsNode
|
|
4
|
+
def add_writer(name, type)
|
|
5
|
+
define_singleton_method("#{name}=") do |value|
|
|
6
|
+
send("#{name}_setting=", ActiveAdmin::DynamicSetting.build(merge_defaults(value, name), type))
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def merge_defaults(value, name)
|
|
13
|
+
return value unless Adminterface::Configs::DEFAULTS.key?(name)
|
|
14
|
+
|
|
15
|
+
Adminterface::Configs::DEFAULTS[name].deep_merge(value)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Overwrite activeadmin/lib/active_admin/dynamic_settings_node.rb
|
|
22
|
+
ActiveAdmin::DynamicSettingsNode.class_eval do
|
|
23
|
+
class << self
|
|
24
|
+
prepend Adminterface::Extensions::DynamicSettingsNode
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Filters
|
|
4
|
+
module ViewHelper
|
|
5
|
+
def active_admin_filters_form_for(search, filters, options = {})
|
|
6
|
+
options = defaults.deep_merge(options).deep_merge(required)
|
|
7
|
+
|
|
8
|
+
form_for search, options do |f|
|
|
9
|
+
filters.each do |attribute, opts|
|
|
10
|
+
next if opts.key?(:if) && !call_method_or_proc_on(self, opts[:if])
|
|
11
|
+
next if opts.key?(:unless) && call_method_or_proc_on(self, opts[:unless])
|
|
12
|
+
|
|
13
|
+
opts[:input_html] = instance_exec(&opts[:input_html]) if opts[:input_html].is_a?(Proc)
|
|
14
|
+
f.filter attribute, opts.except(:if, :unless)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
f.template.concat buttons(f)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def defaults
|
|
24
|
+
{
|
|
25
|
+
builder: ActiveAdmin::Filters::FormBuilder,
|
|
26
|
+
url: collection_path,
|
|
27
|
+
html: {class: "filter_form formtastic"}
|
|
28
|
+
}
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def required
|
|
32
|
+
{
|
|
33
|
+
html: {method: :get},
|
|
34
|
+
as: :q
|
|
35
|
+
}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def buttons(form)
|
|
39
|
+
content_tag :fieldset, class: "actions" do
|
|
40
|
+
content_tag :ol do
|
|
41
|
+
wrap_button { submit_button(form) } +
|
|
42
|
+
wrap_button { cancel_button } +
|
|
43
|
+
hidden_field_tags_for(params, except: except_hidden_fields)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def wrap_button(&block)
|
|
49
|
+
content_tag :li, &block
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def submit_button(form)
|
|
53
|
+
form.submit(I18n.t("active_admin.filters.buttons.filter"), class: submit_class)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def cancel_button
|
|
57
|
+
link_to(I18n.t("active_admin.filters.buttons.clear"), "#",
|
|
58
|
+
class: "#{cancel_class} clear_filters_btn")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def submit_class
|
|
62
|
+
@submit_class ||= find_configs(:css_classes, :filters, :actions, :submit)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def cancel_class
|
|
66
|
+
@cancel_class ||= find_configs(:css_classes, :filters, :actions, :cancel)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Overwirte lib/active_admin/filters/forms.rb
|
|
74
|
+
ActiveAdmin::Filters::ViewHelper.module_eval do
|
|
75
|
+
prepend Adminterface::Extensions::Filters::ViewHelper
|
|
76
|
+
end
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module FormBuilder
|
|
4
|
+
def semantic_errors(*args)
|
|
5
|
+
msgs = super(*args)
|
|
6
|
+
return if @object.errors.blank? || msgs.blank?
|
|
7
|
+
|
|
8
|
+
template.content_tag :div, msgs, class: form_css_classes[:error]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def field_set_and_list_wrapping(*args, &block)
|
|
12
|
+
# workaround to replace the ol inside the fieldset tag in f.has_many
|
|
13
|
+
fieldset = super
|
|
14
|
+
fieldset.gsub("<ol><div", "<div").gsub("</div></ol>", "</div>").html_safe
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def active_admin_config
|
|
20
|
+
@active_admin_config ||= template.active_admin_config
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
module HasManyBuilder
|
|
25
|
+
def initialize(*_args)
|
|
26
|
+
super
|
|
27
|
+
@options[:class] = "#{@options[:class]} #{item_class}".squish
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def render(&block)
|
|
31
|
+
html = "".html_safe
|
|
32
|
+
html << render_heading
|
|
33
|
+
html << template.capture { content_has_many(&block) }
|
|
34
|
+
html = wrap_div_or_li(html)
|
|
35
|
+
template.concat(html) if template.output_buffer
|
|
36
|
+
html
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def render_heading
|
|
40
|
+
return if heading.blank?
|
|
41
|
+
|
|
42
|
+
template.content_tag(:div, heading, class: "has-many-heading #{heading_class}")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def render_has_many_form(form_builder, parent, &block)
|
|
46
|
+
template.concat sortable_action(form_builder)
|
|
47
|
+
template.concat form_fields(form_builder, parent, &block)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def content_has_many(&block)
|
|
51
|
+
form_block = proc do |form_builder|
|
|
52
|
+
render_has_many_form(form_builder, options[:parent], &block)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
template.assigns[:has_many_block] = true
|
|
56
|
+
contents =
|
|
57
|
+
template.content_tag :div, class: "has-many-list" do
|
|
58
|
+
without_wrapper { inputs(options, &form_block) }
|
|
59
|
+
end.html_safe
|
|
60
|
+
|
|
61
|
+
js = new_record ? js_for_has_many(options[:class], &form_block) : ""
|
|
62
|
+
contents << js
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def form_fields(form_builder, parent)
|
|
66
|
+
index = parent && form_builder.send(:parent_child_index, parent)
|
|
67
|
+
template.content_tag :li, class: "has-many-inputs" do
|
|
68
|
+
template.concat(
|
|
69
|
+
template.content_tag(:ol) do
|
|
70
|
+
template.capture { yield(form_builder, index) }
|
|
71
|
+
end
|
|
72
|
+
)
|
|
73
|
+
template.concat form_actions(form_builder)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def form_actions(form_builder)
|
|
78
|
+
template.content_tag :ol, class: "has-many-actions" do
|
|
79
|
+
template.capture { has_many_actions(form_builder, "".html_safe) }
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def sortable_action(form_builder)
|
|
84
|
+
return unless sortable_column
|
|
85
|
+
|
|
86
|
+
form_builder.input sortable_column, as: :hidden
|
|
87
|
+
template.content_tag(:li, "", class: "handle")
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def has_many_actions(form_builder, contents)
|
|
91
|
+
if form_builder.object.new_record?
|
|
92
|
+
contents << template.content_tag(:li) do
|
|
93
|
+
template.link_to I18n.t("active_admin.has_many_remove"), "#",
|
|
94
|
+
class: "button has_many_remove #{destroy_class}".squish
|
|
95
|
+
end
|
|
96
|
+
elsif allow_destroy?(form_builder.object)
|
|
97
|
+
form_builder.input(:_destroy,
|
|
98
|
+
as: :boolean,
|
|
99
|
+
wrapper_html: {class: "button has_many_delete #{destroy_class}".squish},
|
|
100
|
+
label: I18n.t("active_admin.has_many_delete"))
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
contents
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def js_for_has_many(class_string, &form_block)
|
|
107
|
+
assoc_name = assoc_klass.model_name
|
|
108
|
+
placeholder = "NEW_#{assoc_name.to_s.underscore.upcase.tr("/", "_")}_RECORD"
|
|
109
|
+
opts = {
|
|
110
|
+
for: [assoc, assoc_klass.new],
|
|
111
|
+
class: class_string,
|
|
112
|
+
for_options: {child_index: placeholder}
|
|
113
|
+
}
|
|
114
|
+
html = template.capture { __getobj__.send(:inputs_for_nested_attributes, opts, &form_block) }
|
|
115
|
+
text = new_record.is_a?(String) ? new_record : I18n.t("active_admin.has_many_new", model: assoc_name.human)
|
|
116
|
+
|
|
117
|
+
template.link_to text, "#", class: "button has_many_add #{new_class}", data: {
|
|
118
|
+
html: CGI.escapeHTML(html).html_safe, placeholder: placeholder
|
|
119
|
+
}
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Force rendering div for the container
|
|
123
|
+
def already_in_an_inputs_block
|
|
124
|
+
false
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
private
|
|
128
|
+
|
|
129
|
+
def heading_class
|
|
130
|
+
@heading_class ||= form_css_classes.dig(:has_many, :heading)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def new_class
|
|
134
|
+
@new_class ||= form_css_classes.dig(:has_many, :new)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def item_class
|
|
138
|
+
@item_class ||= form_css_classes.dig(:has_many, :item)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def destroy_class
|
|
142
|
+
@destroy_class ||= form_css_classes.dig(:has_many, :destroy)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def active_admin_config
|
|
146
|
+
@active_admin_config ||= template.active_admin_config
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Overwrite activeadmin/lib/active_admin/form_builder.rb
|
|
153
|
+
ActiveAdmin::FormBuilder.class_eval do
|
|
154
|
+
include Adminterface::Configs::Finders
|
|
155
|
+
prepend Adminterface::Extensions::FormBuilder
|
|
156
|
+
has_css_classes_for :form
|
|
157
|
+
configure :default_text_area_height, 3
|
|
158
|
+
configure :default_inline_error_class, "inline-errors invalid-feedback"
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
ActiveAdmin::HasManyBuilder.class_eval do
|
|
162
|
+
include Adminterface::Configs::Finders
|
|
163
|
+
prepend Adminterface::Extensions::HasManyBuilder
|
|
164
|
+
has_css_classes_for :form
|
|
165
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Inputs
|
|
4
|
+
module Base
|
|
5
|
+
module ActiveAdminConfig
|
|
6
|
+
include Adminterface::Configs::Finders
|
|
7
|
+
|
|
8
|
+
def active_admin_config
|
|
9
|
+
template.active_admin_config
|
|
10
|
+
rescue => _e
|
|
11
|
+
::ActiveAdmin.application
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def inputs_config
|
|
15
|
+
active_admin_config.components.dig(:inputs)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Inputs
|
|
4
|
+
module Base
|
|
5
|
+
module Choices
|
|
6
|
+
def choice_wrapping_html_options(choice)
|
|
7
|
+
choice_options = super(choice)
|
|
8
|
+
choice_options[:class] = "#{choice_options[:class]} #{choice_wrapping_class}".squish
|
|
9
|
+
choice_options
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def legend_html
|
|
13
|
+
if render_label?
|
|
14
|
+
template.content_tag(:label, label_text, label_html_options.merge(class: "form-label"))
|
|
15
|
+
else
|
|
16
|
+
"".html_safe
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def choice_wrapping_class
|
|
23
|
+
"form-check #{inline? ? "form-check-inline" : nil}".squish
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def inline?
|
|
27
|
+
options[:inline].eql?(true)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module Adminterface
|
|
2
|
+
module Extensions
|
|
3
|
+
module Inputs
|
|
4
|
+
module Base
|
|
5
|
+
module Groupish
|
|
6
|
+
def input_html
|
|
7
|
+
return super unless grouping?
|
|
8
|
+
|
|
9
|
+
template.content_tag :div, class: "input-group" do
|
|
10
|
+
html = []
|
|
11
|
+
html.push prepend_html if prepend_html?
|
|
12
|
+
html.push super
|
|
13
|
+
html.push append_html if append_html?
|
|
14
|
+
html.join.html_safe
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def wrapper_html_options
|
|
19
|
+
return super unless grouping?
|
|
20
|
+
|
|
21
|
+
new_class = [super[:class], "input-group"].compact.join(" ")
|
|
22
|
+
super.merge(class: new_class)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def prepend_html
|
|
28
|
+
options[:prepend]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def append_html
|
|
32
|
+
options[:append]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def grouping?
|
|
36
|
+
append_html? || prepend_html?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def prepend_html?
|
|
40
|
+
prepend_html.present?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def append_html?
|
|
44
|
+
append_html.present?
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|