activeadmin 1.4.2 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +306 -144
- data/CONTRIBUTING.md +21 -16
- data/README.md +44 -11
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +2 -14
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
- data/app/views/active_admin/devise/registrations/new.html.erb +1 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/config/locales/ar.yml +3 -2
- data/config/locales/bg.yml +1 -1
- data/config/locales/bs.yml +1 -0
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de-CH.yml +1 -0
- data/config/locales/de.yml +1 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +1 -0
- data/config/locales/en-GB.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/he.yml +1 -1
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +5 -0
- data/config/locales/id.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +3 -2
- data/config/locales/lv.yml +1 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +1 -0
- data/config/locales/nl.yml +1 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt-PT.yml +1 -0
- data/config/locales/ro.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sv-SE.yml +1 -0
- data/config/locales/tr.yml +1 -0
- data/config/locales/uk.yml +3 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -0
- data/config/locales/zh-TW.yml +1 -0
- data/docs/0-installation.md +2 -2
- data/docs/12-arbre-components.md +13 -0
- data/docs/13-authorization-adapter.md +6 -6
- data/docs/2-resource-customization.md +1 -1
- data/docs/3-index-pages/index-as-table.md +7 -0
- data/docs/CNAME +1 -1
- data/docs/Gemfile +0 -1
- data/docs/Gemfile.lock +3 -4
- data/docs/_config.yml +2 -0
- data/docs/_includes/top-menu.html +2 -2
- data/docs/index.html +109 -8
- data/docs/stylesheets/main.css +29 -0
- data/lib/active_admin.rb +10 -4
- data/lib/active_admin/application.rb +11 -18
- data/lib/active_admin/application_settings.rb +3 -0
- data/lib/active_admin/asset_registration.rb +0 -8
- data/lib/active_admin/base_controller.rb +6 -6
- data/lib/active_admin/base_controller/authorization.rb +3 -4
- data/lib/active_admin/batch_actions/controller.rb +2 -2
- data/lib/active_admin/batch_actions/resource_extension.rb +9 -5
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +4 -3
- data/lib/active_admin/dependency.rb +3 -75
- data/lib/active_admin/dsl.rb +1 -8
- data/lib/active_admin/error.rb +4 -2
- data/lib/active_admin/filters/active_filter.rb +5 -4
- data/lib/active_admin/filters/active_sidebar.rb +5 -1
- data/lib/active_admin/filters/forms.rb +2 -2
- data/lib/active_admin/filters/formtastic_addons.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +3 -3
- data/lib/active_admin/form_builder.rb +3 -3
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +1 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/menu_item.rb +1 -1
- data/lib/active_admin/namespace.rb +2 -2
- data/lib/active_admin/namespace_settings.rb +7 -4
- data/lib/active_admin/orm/active_record/comments.rb +4 -4
- data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +18 -5
- data/lib/active_admin/resource.rb +17 -3
- data/lib/active_admin/resource/action_items.rb +1 -1
- data/lib/active_admin/resource/attributes.rb +7 -4
- data/lib/active_admin/resource/belongs_to.rb +6 -1
- data/lib/active_admin/resource/menu.rb +3 -3
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/routes.rb +20 -7
- data/lib/active_admin/resource/scopes.rb +3 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller.rb +2 -0
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_dsl.rb +6 -4
- data/lib/active_admin/router.rb +3 -2
- data/lib/active_admin/scope.rb +11 -7
- data/lib/active_admin/settings_node.rb +1 -1
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +13 -4
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +7 -1
- data/lib/active_admin/views/components/attributes_table.rb +3 -3
- data/lib/active_admin/views/components/paginated_collection.rb +2 -2
- data/lib/active_admin/views/components/sidebar_section.rb +0 -3
- data/lib/active_admin/views/components/status_tag.rb +6 -19
- data/lib/active_admin/views/components/table_for.rb +2 -2
- data/lib/active_admin/views/components/tabs.rb +11 -2
- data/lib/active_admin/views/footer.rb +1 -1
- data/lib/active_admin/views/index_as_table.rb +12 -4
- data/lib/active_admin/views/pages/base.rb +3 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +6 -2
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +24 -2
- data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
- data/lib/generators/active_admin/page/page_generator.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/ransack_ext.rb +3 -3
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
- metadata +113 -100
- data/.circleci/config.yml +0 -467
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -46
- data/.mdlrc +0 -1
- data/.rspec +0 -1
- data/.rspec_parallel +0 -2
- data/.rubocop.yml +0 -94
- data/.simplecov +0 -11
- data/.yardopts +0 -7
- data/Gemfile +0 -10
- data/Gemfile.common +0 -53
- data/Gemfile.lock +0 -431
- data/Rakefile +0 -23
- data/activeadmin.gemspec +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
- data/bin/install_chromedriver.sh +0 -17
- data/codecov.yml +0 -25
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -11
- data/cucumber.yml +0 -7
- data/gemfiles/rails_42.gemfile +0 -10
- data/gemfiles/rails_42.gemfile.lock +0 -410
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_50.gemfile.lock +0 -424
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_51.gemfile.lock +0 -423
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/active_admin_master.rb +0 -111
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/tasks/application_generator.rb +0 -48
- data/tasks/docs.rake +0 -64
- data/tasks/gemfiles.rake +0 -8
- data/tasks/lint.rake +0 -110
- data/tasks/local.rake +0 -27
- data/tasks/test.rake +0 -43
data/Rakefile
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'bundler/gem_tasks'
|
2
|
-
|
3
|
-
# Import all our rake tasks
|
4
|
-
FileList['tasks/**/*.rake'].each { |task| import task }
|
5
|
-
|
6
|
-
task default: :test
|
7
|
-
|
8
|
-
begin
|
9
|
-
require 'jasmine'
|
10
|
-
load 'jasmine/tasks/jasmine.rake'
|
11
|
-
rescue LoadError
|
12
|
-
task :jasmine do
|
13
|
-
abort 'Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine'
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
task :console do
|
18
|
-
require 'irb'
|
19
|
-
require 'irb/completion'
|
20
|
-
|
21
|
-
ARGV.clear
|
22
|
-
IRB.start
|
23
|
-
end
|
data/activeadmin.gemspec
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "lib", "active_admin", "version")
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = 'activeadmin'
|
5
|
-
s.license = 'MIT'
|
6
|
-
s.version = ActiveAdmin::VERSION
|
7
|
-
s.homepage = 'http://activeadmin.info'
|
8
|
-
s.authors = ['Greg Bell']
|
9
|
-
s.email = ['gregdbell@gmail.com']
|
10
|
-
s.description = 'The administration framework for Ruby on Rails.'
|
11
|
-
s.summary = 'The administration framework for Ruby on Rails.'
|
12
|
-
|
13
|
-
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
14
|
-
f.match(%r{^(spec|features)/})
|
15
|
-
end
|
16
|
-
|
17
|
-
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
18
|
-
|
19
|
-
s.required_ruby_version = '>= 2.3'
|
20
|
-
|
21
|
-
s.add_dependency 'arbre', '>= 1.1.1'
|
22
|
-
s.add_dependency 'coffee-rails'
|
23
|
-
s.add_dependency 'formtastic', '~> 3.1'
|
24
|
-
s.add_dependency 'formtastic_i18n'
|
25
|
-
s.add_dependency 'inherited_resources', '>= 1.9.0'
|
26
|
-
s.add_dependency 'jquery-rails', '>= 4.2.0'
|
27
|
-
s.add_dependency 'kaminari', '>= 0.15'
|
28
|
-
s.add_dependency 'railties', '>= 4.2', '< 5.3'
|
29
|
-
s.add_dependency 'ransack', '>= 1.8.7'
|
30
|
-
s.add_dependency 'sass', '~> 3.1'
|
31
|
-
s.add_dependency 'sprockets', '< 4.1'
|
32
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
#= require jquery3
|
2
|
-
#= require jquery-ui/widgets/datepicker
|
3
|
-
#= require jquery-ui/widgets/dialog
|
4
|
-
#= require jquery-ui/widgets/sortable
|
5
|
-
#= require jquery-ui/widgets/tabs
|
6
|
-
#= require jquery-ui/widget
|
7
|
-
#= require jquery_ujs
|
8
|
-
#= require_self
|
9
|
-
#= require_tree ./lib
|
10
|
-
#= require_tree ./ext
|
11
|
-
#= require_tree ./initializers
|
12
|
-
|
13
|
-
window.ActiveAdmin = {}
|
@@ -1,6 +0,0 @@
|
|
1
|
-
# Short-circuits `_focusTabbable` to focus on the modal itself instead of
|
2
|
-
# elements inside the modal. Without this, if a datepicker is the first input,
|
3
|
-
# it'll immediately pop up when the modal opens.
|
4
|
-
# See this ticket for more info: http://bugs.jqueryui.com/ticket/4731
|
5
|
-
$.ui.dialog.prototype._focusTabbable = ->
|
6
|
-
@uiDialog.focus()
|
@@ -1,11 +0,0 @@
|
|
1
|
-
onDOMReady = ->
|
2
|
-
# In order for index scopes to overflow properly onto the next line, we have
|
3
|
-
# to manually set its width based on the width of the batch action button.
|
4
|
-
if (batch_actions_selector = $('.table_tools .batch_actions_selector')).length
|
5
|
-
batch_actions_selector.next().css
|
6
|
-
width: "calc(100% - 10px - #{batch_actions_selector.outerWidth()}px)"
|
7
|
-
'float': 'right'
|
8
|
-
|
9
|
-
$(document).
|
10
|
-
ready(onDOMReady).
|
11
|
-
on 'page:load turbolinks:load', onDOMReady
|
@@ -1,14 +0,0 @@
|
|
1
|
-
onDOMReady = ->
|
2
|
-
$(document).on 'focus', 'input.datepicker:not(.hasDatepicker)', ->
|
3
|
-
input = $(@)
|
4
|
-
|
5
|
-
# Only create datepickers in compatible browsers
|
6
|
-
return if input[0].type is 'date'
|
7
|
-
|
8
|
-
defaults = dateFormat: 'yy-mm-dd'
|
9
|
-
options = input.data 'datepicker-options'
|
10
|
-
input.datepicker $.extend(defaults, options)
|
11
|
-
|
12
|
-
$(document).
|
13
|
-
ready(onDOMReady).
|
14
|
-
on 'page:load turbolinks:load', onDOMReady
|
@@ -1,26 +0,0 @@
|
|
1
|
-
onDOMReady = ->
|
2
|
-
# Clear Filters button
|
3
|
-
$('.clear_filters_btn').click (e) ->
|
4
|
-
params = window.location.search.slice(1).split('&')
|
5
|
-
regex = /^(q\[|q%5B|q%5b|page|commit)/
|
6
|
-
if typeof Turbolinks != 'undefined'
|
7
|
-
Turbolinks.visit(window.location.href.split('?')[0] + '?' + (param for param in params when not param.match(regex)).join('&'))
|
8
|
-
e.preventDefault()
|
9
|
-
else
|
10
|
-
window.location.search = (param for param in params when not param.match(regex)).join('&')
|
11
|
-
|
12
|
-
# Filter form: don't send any inputs that are empty
|
13
|
-
$('.filter_form').submit (e) ->
|
14
|
-
$(@).find(':input').filter(-> @value is '').prop 'disabled', true
|
15
|
-
if typeof Turbolinks != 'undefined'
|
16
|
-
Turbolinks.visit(window.location.href.split('?')[0] + '?' + $( this ).serialize())
|
17
|
-
e.preventDefault()
|
18
|
-
|
19
|
-
# Filter form: for filters that let you choose the query method from
|
20
|
-
# a dropdown, apply that choice to the filter input field.
|
21
|
-
$('.filter_form_field.select_and_search select').change ->
|
22
|
-
$(@).siblings('input').prop name: "q[#{@value}]"
|
23
|
-
|
24
|
-
$(document).
|
25
|
-
ready(onDOMReady).
|
26
|
-
on 'page:load turbolinks:load', onDOMReady
|
@@ -1,42 +0,0 @@
|
|
1
|
-
onDOMReady = ->
|
2
|
-
#
|
3
|
-
# Use ActiveAdmin.modal_dialog to prompt user if confirmation is required for current Batch Action
|
4
|
-
#
|
5
|
-
$('.batch_actions_selector li a').click (e)->
|
6
|
-
e.stopPropagation() # prevent Rails UJS click event
|
7
|
-
e.preventDefault()
|
8
|
-
if message = $(@).data 'confirm'
|
9
|
-
ActiveAdmin.modal_dialog message, $(@).data('inputs'), (inputs)=>
|
10
|
-
$(@).trigger 'confirm:complete', inputs
|
11
|
-
else
|
12
|
-
$(@).trigger 'confirm:complete'
|
13
|
-
|
14
|
-
$('.batch_actions_selector li a').on 'confirm:complete', (e, inputs)->
|
15
|
-
if val = JSON.stringify inputs
|
16
|
-
$('#batch_action_inputs').removeAttr('disabled').val val
|
17
|
-
else
|
18
|
-
$('#batch_action_inputs').attr 'disabled', 'disabled'
|
19
|
-
|
20
|
-
$('#batch_action').val $(@).data 'action'
|
21
|
-
$('#collection_selection').submit()
|
22
|
-
|
23
|
-
#
|
24
|
-
# Add checkbox selection to resource tables and lists if batch actions are enabled
|
25
|
-
#
|
26
|
-
|
27
|
-
if $(".batch_actions_selector").length && $(":checkbox.toggle_all").length
|
28
|
-
|
29
|
-
if $(".paginated_collection table.index_table").length
|
30
|
-
$(".paginated_collection table.index_table").tableCheckboxToggler()
|
31
|
-
else
|
32
|
-
$(".paginated_collection").checkboxToggler()
|
33
|
-
|
34
|
-
$(document).on 'change', '.paginated_collection :checkbox', ->
|
35
|
-
if $(".paginated_collection :checkbox:checked").length
|
36
|
-
$(".batch_actions_selector").each -> $(@).aaDropdownMenu("enable")
|
37
|
-
else
|
38
|
-
$(".batch_actions_selector").each -> $(@).aaDropdownMenu("disable")
|
39
|
-
|
40
|
-
$(document).
|
41
|
-
ready(onDOMReady).
|
42
|
-
on 'page:load turbolinks:load', onDOMReady
|
@@ -1,46 +0,0 @@
|
|
1
|
-
class ActiveAdmin.CheckboxToggler
|
2
|
-
constructor: (@options, @container)->
|
3
|
-
defaults = {}
|
4
|
-
@options = $.extend defaults, @options
|
5
|
-
@_init()
|
6
|
-
@_bind()
|
7
|
-
|
8
|
-
_init: ->
|
9
|
-
if not @container
|
10
|
-
throw new Error('Container element not found')
|
11
|
-
else
|
12
|
-
@$container = $(@container)
|
13
|
-
|
14
|
-
if not @$container.find('.toggle_all').length
|
15
|
-
throw new Error('"toggle all" checkbox not found')
|
16
|
-
else
|
17
|
-
@toggle_all_checkbox = @$container.find '.toggle_all'
|
18
|
-
|
19
|
-
@checkboxes = @$container.find(':checkbox').not @toggle_all_checkbox
|
20
|
-
|
21
|
-
_bind: ->
|
22
|
-
@checkboxes.change (e)=> @_didChangeCheckbox e.target
|
23
|
-
@toggle_all_checkbox.change => @_didChangeToggleAllCheckbox()
|
24
|
-
|
25
|
-
_didChangeCheckbox: (checkbox)->
|
26
|
-
numChecked = @checkboxes.filter(':checked').length
|
27
|
-
|
28
|
-
allChecked = numChecked == @checkboxes.length
|
29
|
-
someChecked = numChecked > 0 && numChecked < @checkboxes.length
|
30
|
-
|
31
|
-
@toggle_all_checkbox.prop checked: allChecked, indeterminate: someChecked
|
32
|
-
|
33
|
-
_didChangeToggleAllCheckbox: ->
|
34
|
-
setting = @toggle_all_checkbox.prop 'checked'
|
35
|
-
@checkboxes.prop checked: setting
|
36
|
-
setting
|
37
|
-
|
38
|
-
option: (key, value) ->
|
39
|
-
if $.isPlainObject(key)
|
40
|
-
@options = $.extend(true, @options, key)
|
41
|
-
else if key?
|
42
|
-
@options[key]
|
43
|
-
else
|
44
|
-
@options[key] = value
|
45
|
-
|
46
|
-
$.widget.bridge 'checkboxToggler', ActiveAdmin.CheckboxToggler
|
@@ -1,104 +0,0 @@
|
|
1
|
-
class ActiveAdmin.DropdownMenu
|
2
|
-
|
3
|
-
constructor: (@options, @element) ->
|
4
|
-
@$element = $(@element)
|
5
|
-
|
6
|
-
defaults = {
|
7
|
-
fadeInDuration: 20,
|
8
|
-
fadeOutDuration: 100,
|
9
|
-
onClickActionItemCallback: null
|
10
|
-
}
|
11
|
-
|
12
|
-
@options = $.extend defaults, @options
|
13
|
-
@isOpen = false
|
14
|
-
|
15
|
-
@$menuButton = @$element.find '.dropdown_menu_button'
|
16
|
-
@$menuList = @$element.find '.dropdown_menu_list_wrapper'
|
17
|
-
|
18
|
-
@_buildMenuList()
|
19
|
-
@_bind()
|
20
|
-
|
21
|
-
open: ->
|
22
|
-
@isOpen = true
|
23
|
-
@$menuList.fadeIn @options.fadeInDuration
|
24
|
-
|
25
|
-
@_position()
|
26
|
-
@
|
27
|
-
|
28
|
-
|
29
|
-
close: ->
|
30
|
-
@isOpen = false
|
31
|
-
@$menuList.fadeOut this.options.fadeOutDuration
|
32
|
-
@
|
33
|
-
|
34
|
-
destroy: ->
|
35
|
-
@$element = null
|
36
|
-
@
|
37
|
-
|
38
|
-
isDisabled: ->
|
39
|
-
@$menuButton.hasClass 'disabled'
|
40
|
-
|
41
|
-
disable: ->
|
42
|
-
@$menuButton.addClass 'disabled'
|
43
|
-
|
44
|
-
enable: ->
|
45
|
-
@$menuButton.removeClass 'disabled'
|
46
|
-
|
47
|
-
option: (key, value) ->
|
48
|
-
if $.isPlainObject(key)
|
49
|
-
@options = $.extend(true, @options, key)
|
50
|
-
else if key?
|
51
|
-
@options[key]
|
52
|
-
else
|
53
|
-
@options[key] = value
|
54
|
-
|
55
|
-
# Private
|
56
|
-
|
57
|
-
_buildMenuList: ->
|
58
|
-
@$nipple = $('<div class="dropdown_menu_nipple"></div>')
|
59
|
-
@$menuList.prepend @$nipple
|
60
|
-
@$menuList.hide()
|
61
|
-
|
62
|
-
_bind: ->
|
63
|
-
$('body').click =>
|
64
|
-
@close() if @isOpen
|
65
|
-
|
66
|
-
@$menuButton.click =>
|
67
|
-
unless @isDisabled()
|
68
|
-
if @isOpen then @close() else @open()
|
69
|
-
false
|
70
|
-
|
71
|
-
_position: ->
|
72
|
-
@$menuList.css 'top', @$menuButton.position().top + @$menuButton.outerHeight() + 10
|
73
|
-
|
74
|
-
button_left = @$menuButton.position().left
|
75
|
-
button_center = @$menuButton.outerWidth() / 2
|
76
|
-
button_right = button_left + button_center * 2
|
77
|
-
menu_center = @$menuList.outerWidth() / 2
|
78
|
-
nipple_center = @$nipple.outerWidth() / 2
|
79
|
-
window_right = $(window).width()
|
80
|
-
|
81
|
-
centered_menu_left = button_left + button_center - menu_center
|
82
|
-
centered_menu_right = button_left + button_center + menu_center
|
83
|
-
|
84
|
-
if centered_menu_left < 0
|
85
|
-
# Left align with button
|
86
|
-
@$menuList.css 'left', button_left
|
87
|
-
@$nipple.css 'left', button_center - nipple_center
|
88
|
-
else if centered_menu_right > window_right
|
89
|
-
# Right align with button
|
90
|
-
@$menuList.css 'right', window_right - button_right
|
91
|
-
@$nipple.css 'right', button_center - nipple_center
|
92
|
-
else
|
93
|
-
# Center align under button
|
94
|
-
@$menuList.css 'left', centered_menu_left
|
95
|
-
@$nipple.css 'left', menu_center - nipple_center
|
96
|
-
|
97
|
-
$.widget.bridge 'aaDropdownMenu', ActiveAdmin.DropdownMenu
|
98
|
-
|
99
|
-
onDOMReady = ->
|
100
|
-
$('.dropdown_menu').aaDropdownMenu()
|
101
|
-
|
102
|
-
$(document).
|
103
|
-
ready(onDOMReady).
|
104
|
-
on 'page:load turbolinks:load', onDOMReady
|
@@ -1,19 +0,0 @@
|
|
1
|
-
ActiveAdmin.flash =
|
2
|
-
class Flash
|
3
|
-
@error: (message, close_after) ->
|
4
|
-
new @ message, "error", close_after
|
5
|
-
@notice: (message, close_after) ->
|
6
|
-
new @ message, "notice", close_after
|
7
|
-
reference: ->
|
8
|
-
@reference
|
9
|
-
constructor: (@message, @type = "notice", close_after) ->
|
10
|
-
@reference = jQuery("<div>").addClass("flash flash_#{@type}").text(@message)
|
11
|
-
jQuery ".flashes"
|
12
|
-
.append @reference
|
13
|
-
@close_after close_after if close_after?
|
14
|
-
close_after: (close_after) ->
|
15
|
-
setTimeout =>
|
16
|
-
@close()
|
17
|
-
, close_after * 1000
|
18
|
-
close: ->
|
19
|
-
@reference.remove()
|
@@ -1,79 +0,0 @@
|
|
1
|
-
$ ->
|
2
|
-
# Provides a before-removal hook:
|
3
|
-
# $ ->
|
4
|
-
# # This is a good place to tear down JS plugins to prevent memory leaks.
|
5
|
-
# $(document).on 'has_many_remove:before', '.has_many_container', (e, fieldset, container)->
|
6
|
-
# fieldset.find('.select2').select2 'destroy'
|
7
|
-
#
|
8
|
-
# # If you need to do anything after removing the items you can use the
|
9
|
-
# has_many_remove:after hook
|
10
|
-
# $(document).on 'has_many_remove:after', '.has_many_container', (e, fieldset, container)->
|
11
|
-
# list_item_count = container.find('.has_many_fields').length
|
12
|
-
# alert("There are now #{list_item_count} items in the list")
|
13
|
-
#
|
14
|
-
$(document).on 'click', 'a.button.has_many_remove', (e)->
|
15
|
-
e.preventDefault()
|
16
|
-
parent = $(@).closest '.has_many_container'
|
17
|
-
to_remove = $(@).closest 'fieldset'
|
18
|
-
recompute_positions parent
|
19
|
-
|
20
|
-
parent.trigger 'has_many_remove:before', [to_remove, parent]
|
21
|
-
to_remove.remove()
|
22
|
-
parent.trigger 'has_many_remove:after', [to_remove, parent]
|
23
|
-
|
24
|
-
# Provides before and after creation hooks:
|
25
|
-
# $ ->
|
26
|
-
# # The before hook allows you to prevent the creation of new records.
|
27
|
-
# $(document).on 'has_many_add:before', '.has_many_container', (e, container)->
|
28
|
-
# if $(@).children('fieldset').length >= 3
|
29
|
-
# alert "you've reached the maximum number of items"
|
30
|
-
# e.preventDefault()
|
31
|
-
#
|
32
|
-
# # The after hook is a good place to initialize JS plugins and the like.
|
33
|
-
# $(document).on 'has_many_add:after', '.has_many_container', (e, fieldset, container)->
|
34
|
-
# fieldset.find('select').chosen()
|
35
|
-
#
|
36
|
-
$(document).on 'click', 'a.button.has_many_add', (e)->
|
37
|
-
e.preventDefault()
|
38
|
-
parent = $(@).closest '.has_many_container'
|
39
|
-
parent.trigger before_add = $.Event('has_many_add:before'), [parent]
|
40
|
-
|
41
|
-
unless before_add.isDefaultPrevented()
|
42
|
-
index = parent.data('has_many_index') || parent.children('fieldset').length - 1
|
43
|
-
parent.data has_many_index: ++index
|
44
|
-
|
45
|
-
regex = new RegExp $(@).data('placeholder'), 'g'
|
46
|
-
html = $(@).data('html').replace regex, index
|
47
|
-
|
48
|
-
fieldset = $(html).insertBefore(@)
|
49
|
-
recompute_positions parent
|
50
|
-
parent.trigger 'has_many_add:after', [fieldset, parent]
|
51
|
-
|
52
|
-
$(document).on 'change','.has_many_container[data-sortable] :input[name$="[_destroy]"]', ->
|
53
|
-
recompute_positions $(@).closest '.has_many'
|
54
|
-
|
55
|
-
init_sortable()
|
56
|
-
$(document).on 'has_many_add:after', '.has_many_container', init_sortable
|
57
|
-
|
58
|
-
|
59
|
-
init_sortable = ->
|
60
|
-
elems = $('.has_many_container[data-sortable]:not(.ui-sortable)')
|
61
|
-
elems.sortable \
|
62
|
-
items: '> fieldset',
|
63
|
-
handle: '> ol > .handle',
|
64
|
-
stop: recompute_positions
|
65
|
-
elems.each recompute_positions
|
66
|
-
|
67
|
-
recompute_positions = (parent)->
|
68
|
-
parent = if parent instanceof jQuery then parent else $(@)
|
69
|
-
input_name = parent.data 'sortable'
|
70
|
-
position = parseInt(parent.data('sortable-start') || 0, 10)
|
71
|
-
|
72
|
-
parent.children('fieldset').each ->
|
73
|
-
# We ignore nested inputs, so when defining your has_many, be sure to keep
|
74
|
-
# your sortable input at the root of the has_many block.
|
75
|
-
destroy_input = $(@).find "> ol > .input > :input[name$='[_destroy]']"
|
76
|
-
sortable_input = $(@).find "> ol > .input > :input[name$='[#{input_name}]']"
|
77
|
-
|
78
|
-
if sortable_input.length
|
79
|
-
sortable_input.val if destroy_input.is ':checked' then '' else position++
|