ab_admin 0.3.6 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/{LICENSE.txt → MIT-LICENSE} +2 -4
- data/README.md +3 -3
- data/Rakefile +21 -3
- data/app/assets/images/admin/flags/b_de.png +0 -0
- data/app/assets/images/admin/flags/b_es.png +0 -0
- data/app/assets/images/admin/flags/b_fr.png +0 -0
- data/app/assets/images/admin/flags/flag_de.gif +0 -0
- data/app/assets/images/admin/flags/flag_de_nonact.gif +0 -0
- data/app/assets/images/admin/flags/flag_es.gif +0 -0
- data/app/assets/images/admin/flags/flag_es_nonact.gif +0 -0
- data/app/assets/images/admin/flags/flag_fr.gif +0 -0
- data/app/assets/images/admin/flags/flag_fr_nonact.gif +0 -0
- data/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +50 -60
- data/app/assets/javascripts/ab_admin/components/base_assets.js.coffee +86 -0
- data/app/assets/javascripts/ab_admin/components/croppable_image.js.coffee +4 -4
- data/app/assets/javascripts/ab_admin/components/gmaps.js.coffee +5 -0
- data/app/assets/javascripts/ab_admin/components/google_translate.js.coffee +0 -1
- data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +7 -3
- data/app/assets/javascripts/ab_admin/components/locator.js.coffee +1 -1
- data/app/assets/javascripts/ab_admin/components/select2_bridge.js.coffee +152 -0
- data/app/assets/javascripts/ab_admin/components/sortable_tree.js.coffee +1 -1
- data/app/assets/javascripts/ab_admin/core/batch_actions.js.coffee +5 -4
- data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +4 -11
- data/app/assets/javascripts/ab_admin/core/confirmation.js.coffee +4 -43
- data/app/assets/javascripts/ab_admin/core/deprecated_utils.js.coffee +44 -0
- data/app/assets/javascripts/ab_admin/core/init.js.coffee +8 -25
- data/app/assets/javascripts/ab_admin/core/pjax.js.coffee +18 -4
- data/app/assets/javascripts/ab_admin/core/search_form.js.coffee +5 -5
- data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +15 -86
- data/app/assets/javascripts/ab_admin/core/utils.js.coffee +38 -51
- data/app/assets/javascripts/ab_admin/core/view_layout.js.coffee +1 -1
- data/app/assets/javascripts/ab_admin/inputs/datetime_input.js.coffee +16 -18
- data/app/assets/javascripts/ab_admin/main.js +7 -7
- data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.css.scss +21 -8
- data/app/assets/stylesheets/ab_admin/components/_admin_comments.css.scss +17 -5
- data/app/assets/stylesheets/ab_admin/components/_base.css.scss +4 -0
- data/app/assets/stylesheets/ab_admin/components/_colored_tabs.css.scss +1 -4
- data/app/assets/stylesheets/ab_admin/components/_columns_hider.css.scss +5 -0
- data/app/assets/stylesheets/ab_admin/components/_form.css.scss +45 -16
- data/app/assets/stylesheets/ab_admin/components/_grid_view.css.scss +11 -0
- data/app/assets/stylesheets/ab_admin/components/_locale_tabs.css.scss +1 -1
- data/app/assets/stylesheets/ab_admin/components/_navigation.css.scss +11 -9
- data/app/assets/stylesheets/ab_admin/components/_table_view.css.scss +1 -1
- data/app/assets/stylesheets/ab_admin/components/_translations.css.scss +1 -0
- data/app/assets/stylesheets/ab_admin/components/{_sortable_tree.css.scss → _tree_view.css.scss} +8 -3
- data/app/assets/stylesheets/ab_admin/fileupload.css.scss +51 -43
- data/app/assets/stylesheets/ab_admin/main.css.scss +1 -3
- data/app/controllers/admin/admin_comments_controller.rb +14 -4
- data/app/controllers/admin/assets_controller.rb +44 -35
- data/app/controllers/admin/base_controller.rb +93 -38
- data/app/controllers/admin/locators_controller.rb +3 -2
- data/app/controllers/admin/manager_controller.rb +20 -9
- data/app/controllers/admin/structures_controller.rb +9 -1
- data/app/controllers/admin/users_controller.rb +1 -2
- data/app/views/ab_admin/devise/sessions/new.html.slim +1 -1
- data/app/views/admin/admin_comments/_comment.html.slim +21 -7
- data/app/views/admin/admin_comments/_comments.html.slim +1 -1
- data/app/views/admin/admin_comments/_form.html.slim +8 -3
- data/app/views/admin/admin_comments/_list_block.html.slim +7 -0
- data/app/views/admin/admin_comments/create.js.erb +3 -2
- data/app/views/admin/admin_comments/destroy.js.erb +1 -1
- data/app/views/admin/admin_comments/index.js.erb +14 -0
- data/app/views/admin/assets/batch_edit.html.slim +14 -0
- data/app/views/admin/base/_modal_form_layout.html.slim +12 -0
- data/app/views/admin/base/_search_layout.html.slim +4 -3
- data/app/views/admin/base/_table.html.slim +2 -2
- data/app/views/admin/base/create.js.erb +13 -8
- data/app/views/admin/base/history.html.slim +18 -0
- data/app/views/admin/base/index.html.slim +3 -3
- data/app/views/admin/base/new.js.erb +14 -8
- data/app/views/admin/base/show.html.slim +1 -2
- data/app/views/admin/base/show.js.erb +7 -0
- data/app/views/admin/fileupload/_asset_templates.html.slim +29 -0
- data/app/views/admin/fileupload/_container.html.slim +13 -12
- data/app/views/admin/fileupload/_file.html.slim +2 -2
- data/app/views/admin/fileupload/_image.html.slim +8 -0
- data/app/views/admin/fileupload/_video.html.slim +2 -2
- data/app/views/admin/headers/_form.html.slim +2 -0
- data/app/views/admin/locators/edit.html.slim +1 -1
- data/app/views/admin/locators/show.html.slim +1 -2
- data/app/views/admin/manager/_form.html.slim +17 -3
- data/app/views/admin/manager/_modal_form.html.slim +19 -0
- data/app/views/admin/manager/_table.html.slim +3 -3
- data/app/views/admin/manager/show.html.slim +1 -0
- data/app/views/admin/shared/_content_actions.html.slim +39 -0
- data/app/views/admin/shared/_locale_tabs.html.slim +3 -3
- data/app/views/admin/shared/inputs/_checkbox_tree.html.slim +9 -3
- data/app/views/admin/structures/_form.html.slim +4 -7
- data/app/views/admin/users/_form.html.slim +2 -4
- data/app/views/admin/users/_search_form.html.slim +0 -1
- data/app/views/admin/users/_table.html.slim +8 -10
- data/app/views/layouts/admin/_footer.html.slim +3 -4
- data/app/views/layouts/admin/_navigation.html.slim +2 -2
- data/app/views/layouts/admin/application.html.slim +7 -9
- data/app/views/layouts/admin/devise.html.slim +3 -4
- data/config/locales/de.yml +319 -0
- data/config/locales/en.devise.yml +44 -31
- data/config/locales/en.yml +166 -143
- data/config/locales/it.devise.yml +54 -41
- data/config/locales/it.yml +178 -163
- data/config/locales/ru.devise.yml +70 -56
- data/config/locales/ru.yml +280 -264
- data/config/routes.rb +6 -3
- data/db/migrate/20130101000001_create_users.rb +7 -11
- data/db/migrate/20130101000003_create_assets.rb +5 -5
- data/db/migrate/20130101000004_create_headers.rb +2 -6
- data/db/migrate/20130101000005_create_static_pages.rb +1 -5
- data/db/migrate/20130101000006_create_structures.rb +5 -9
- data/db/migrate/20130101000007_base_translations.rb +3 -1
- data/db/migrate/20130101000008_create_admin_comments.rb +5 -5
- data/db/migrate/20130101000009_create_tracks.rb +20 -0
- data/lib/ab_admin.rb +36 -4
- data/lib/ab_admin/abstract_resource.rb +28 -7
- data/lib/ab_admin/carrierwave/base_uploader.rb +85 -5
- data/lib/ab_admin/carrierwave/glue.rb +6 -1
- data/lib/ab_admin/concerns/admin_addition.rb +26 -9
- data/lib/ab_admin/concerns/asset_human_names.rb +23 -0
- data/lib/ab_admin/concerns/fileuploads.rb +102 -0
- data/lib/ab_admin/concerns/has_tracking.rb +32 -0
- data/lib/ab_admin/concerns/nested_set.rb +9 -9
- data/lib/ab_admin/concerns/silencer.rb +5 -5
- data/lib/ab_admin/concerns/utilities.rb +28 -16
- data/lib/ab_admin/concerns/validations.rb +1 -1
- data/lib/ab_admin/config/base.rb +10 -2
- data/lib/ab_admin/controllers/callbacks.rb +2 -2
- data/lib/ab_admin/controllers/can_can_manager_resource.rb +3 -2
- data/lib/ab_admin/controllers/fv.rb +16 -0
- data/lib/ab_admin/controllers/head_options.rb +6 -4
- data/lib/ab_admin/core_ext/hash.rb +25 -70
- data/lib/ab_admin/core_ext/string.rb +17 -4
- data/lib/ab_admin/engine.rb +2 -8
- data/lib/ab_admin/hooks.rb +8 -3
- data/lib/ab_admin/hooks/active_model_hooks.rb +1 -1
- data/lib/ab_admin/hooks/globalize_hooks.rb +35 -0
- data/lib/ab_admin/hooks/paginate_hooks.rb +3 -1
- data/lib/ab_admin/i18n_tools/model_translator.rb +1 -1
- data/lib/ab_admin/menu/abstract_builder.rb +14 -0
- data/lib/ab_admin/menu/base_group.rb +26 -0
- data/lib/ab_admin/menu/builder.rb +16 -0
- data/lib/ab_admin/menu/group.rb +24 -0
- data/lib/ab_admin/menu/item.rb +23 -0
- data/lib/ab_admin/models/admin_comment.rb +68 -0
- data/lib/ab_admin/models/asset.rb +30 -19
- data/lib/ab_admin/models/attachment_file.rb +2 -1
- data/lib/ab_admin/models/header.rb +15 -0
- data/lib/ab_admin/models/locator.rb +1 -3
- data/lib/ab_admin/models/settings.rb +10 -10
- data/lib/ab_admin/models/structure.rb +20 -9
- data/lib/ab_admin/models/track.rb +61 -0
- data/lib/ab_admin/models/type_model.rb +30 -17
- data/lib/ab_admin/models/user.rb +18 -49
- data/lib/ab_admin/utils.rb +16 -7
- data/lib/ab_admin/utils/logger.rb +11 -7
- data/lib/ab_admin/utils/mysql.rb +10 -0
- data/lib/ab_admin/version.rb +1 -1
- data/lib/ab_admin/views/admin_helpers.rb +20 -9
- data/lib/ab_admin/views/admin_navigation_helpers.rb +44 -21
- data/lib/ab_admin/views/content_only_wrapper.rb +14 -0
- data/lib/ab_admin/views/form_builder.rb +27 -89
- data/lib/ab_admin/views/helpers.rb +1 -28
- data/lib/ab_admin/views/inputs/capture_block_input.rb +16 -0
- data/lib/ab_admin/views/inputs/date_time_picker_input.rb +45 -0
- data/lib/ab_admin/views/inputs/token_input.rb +2 -1
- data/lib/ab_admin/views/inputs/uploader_input.rb +101 -0
- data/lib/ab_admin/views/manager_helpers.rb +12 -0
- data/lib/ab_admin/views/search_form_builder.rb +36 -13
- data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +1 -1
- data/lib/generators/ab_admin/install/install_generator.rb +3 -2
- data/lib/generators/ab_admin/install/templates/config/ab_admin.rb.erb +1 -1
- data/lib/generators/ab_admin/install/templates/config/admin_menu.rb +1 -1
- data/lib/generators/ab_admin/install/templates/config/i18n-js.yml +1 -1
- data/lib/generators/ab_admin/install/templates/config/nginx.conf +22 -9
- data/lib/generators/ab_admin/install/templates/config/robots.txt +7 -0
- data/lib/generators/ab_admin/install/templates/config/seeds.rb +2 -1
- data/lib/generators/ab_admin/install/templates/models/ability.rb +2 -7
- data/lib/generators/ab_admin/install/templates/models/admin_comment.rb +3 -28
- data/lib/generators/ab_admin/install/templates/models/asset.rb +4 -2
- data/lib/generators/ab_admin/install/templates/models/attachment_file.rb +1 -1
- data/lib/generators/ab_admin/install/templates/models/avatar.rb +2 -2
- data/lib/generators/ab_admin/install/templates/models/gender_type.rb +1 -1
- data/lib/generators/ab_admin/install/templates/models/header.rb +2 -2
- data/lib/generators/ab_admin/install/templates/models/locator.rb +0 -1
- data/lib/generators/ab_admin/install/templates/models/picture.rb +1 -1
- data/lib/generators/ab_admin/install/templates/models/settings.rb +1 -1
- data/lib/generators/ab_admin/install/templates/models/structure.rb +6 -8
- data/lib/generators/ab_admin/install/templates/models/track.rb +5 -0
- data/lib/generators/ab_admin/install/templates/models/user.rb +2 -3
- data/lib/generators/ab_admin/install/templates/script/unicorn.sh +0 -2
- data/lib/generators/ab_admin/install/templates/spec/factories/user_factory.rb +1 -2
- data/lib/generators/ab_admin/install/templates/uploaders/attachment_file_uploader.rb +1 -1
- data/lib/generators/ab_admin/install/templates/uploaders/avatar_uploader.rb +1 -1
- data/lib/generators/ab_admin/install/templates/uploaders/picture_uploader.rb +1 -1
- data/lib/generators/ab_admin/model/templates/resource.erb +1 -1
- data/lib/generators/ab_admin/resource/templates/_form.slim.erb +49 -45
- data/lib/generators/ab_admin/resource/templates/_table.slim.erb +1 -1
- data/lib/generators/template.rb +32 -56
- data/lib/tasks/assets.rake +1 -0
- metadata +197 -698
- data/.gitignore +0 -41
- data/Gemfile +0 -77
- data/Guardfile +0 -35
- data/TODO +0 -4
- data/ab_admin.gemspec +0 -59
- data/app/views/admin/fileupload/_asset.html.slim +0 -8
- data/app/views/admin/fileupload/_ftmpl.html.slim +0 -6
- data/app/views/admin/fileupload/_tmpl.html.slim +0 -9
- data/app/views/admin/fileupload/_vtmpl.html.slim +0 -10
- data/app/views/admin/shared/_batch_actions.html.slim +0 -27
- data/cucumber.yml +0 -10
- data/features/dsl/action_items.feature +0 -79
- data/features/dsl/admin_comments.feature +0 -30
- data/features/dsl/batch_actions.feature +0 -69
- data/features/dsl/config.feature +0 -44
- data/features/dsl/custom_actions.feature +0 -62
- data/features/dsl/export.feature +0 -42
- data/features/dsl/form.feature +0 -77
- data/features/dsl/in_place_edit.feature +0 -26
- data/features/dsl/list_edit.feature +0 -46
- data/features/dsl/parent_resource.feature +0 -18
- data/features/dsl/resource_action_items.feature +0 -40
- data/features/dsl/search.feature +0 -41
- data/features/dsl/show.feature +0 -37
- data/features/dsl/table.feature +0 -71
- data/features/dsl/tree.feature +0 -37
- data/features/index_views/table.feature +0 -20
- data/features/locators.feature +0 -40
- data/features/menu.feature +0 -35
- data/features/settings.feature +0 -36
- data/features/step_definitions/configuration_steps.rb +0 -94
- data/features/step_definitions/dsl/action_items_steps.rb +0 -13
- data/features/step_definitions/dsl/admin_comments_steps.rb +0 -12
- data/features/step_definitions/dsl/batch_actions_steps.rb +0 -27
- data/features/step_definitions/dsl/in_place_edit_steps.rb +0 -7
- data/features/step_definitions/dsl/parent_resource_steps.rb +0 -8
- data/features/step_definitions/dsl/resource_action_items_steps.rb +0 -14
- data/features/step_definitions/dsl/show_steps.rb +0 -8
- data/features/step_definitions/dsl/table_steps.rb +0 -38
- data/features/step_definitions/dsl/tree_steps.rb +0 -28
- data/features/step_definitions/menu_steps.rb +0 -20
- data/features/step_definitions/settings_steps.rb +0 -7
- data/features/step_definitions/structure_steps.rb +0 -7
- data/features/step_definitions/table_steps.rb +0 -23
- data/features/step_definitions/user_steps.rb +0 -72
- data/features/step_definitions/web_steps/browsing_steps.rb +0 -108
- data/features/step_definitions/web_steps/debug_steps.rb +0 -6
- data/features/step_definitions/web_steps/form_steps.rb +0 -190
- data/features/step_definitions/web_steps/i18n_steps.rb +0 -8
- data/features/step_definitions/web_steps/step_scoper.rb +0 -9
- data/features/step_definitions/web_steps/transforms_steps.rb +0 -3
- data/features/structure/tree.feature +0 -21
- data/features/support/capybara_helpers.rb +0 -15
- data/features/support/carrierwave.rb +0 -21
- data/features/support/env.rb +0 -40
- data/features/support/paths.rb +0 -55
- data/features/support/selector_helpers.rb +0 -9
- data/features/support/selectors.rb +0 -43
- data/features/support/tolerance_for_selenium_sync_issues.rb +0 -27
- data/features/user/sign_in.feature +0 -27
- data/features/user/sign_out.feature +0 -11
- data/features/user/user_edit.feature +0 -19
- data/features/user/user_show.feature +0 -9
- data/lib/ab_admin/hooks/quiet_scope_page.rb +0 -16
- data/lib/ab_admin/hooks/simple_form_hooks.rb +0 -31
- data/lib/ab_admin/menu_builder.rb +0 -89
- data/lib/ab_admin/views/inputs/date_time_input.rb +0 -65
- data/lib/generators/ab_admin/install/templates/models/user_state.rb +0 -6
- data/lib/generators/ab_admin/resource/templates/_form.haml.erb +0 -71
- data/lib/generators/ab_admin/resource/templates/_search_form.haml.erb +0 -35
- data/lib/generators/ab_admin/resource/templates/_table.haml.erb +0 -33
- data/spec/ab_admin_spec.rb +0 -23
- data/spec/dummy/Rakefile +0 -7
- data/spec/dummy/app/assets/images/rails.png +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +0 -15
- data/spec/dummy/app/assets/stylesheets/application.css +0 -13
- data/spec/dummy/app/controllers/application_controller.rb +0 -3
- data/spec/dummy/app/controllers/products_controller.rb +0 -5
- data/spec/dummy/app/controllers/welcome_controller.rb +0 -5
- data/spec/dummy/app/mailers/.gitkeep +0 -0
- data/spec/dummy/app/models/ab_admin/ab_admin_catalogue.rb +0 -5
- data/spec/dummy/app/models/ab_admin/ab_admin_collection.rb +0 -35
- data/spec/dummy/app/models/ab_admin/ab_admin_product.rb +0 -74
- data/spec/dummy/app/models/admin_menu.rb +0 -18
- data/spec/dummy/app/models/catalogue.rb +0 -10
- data/spec/dummy/app/models/ckeditor/asset.rb +0 -7
- data/spec/dummy/app/models/ckeditor/attachment_file.rb +0 -7
- data/spec/dummy/app/models/ckeditor/picture.rb +0 -7
- data/spec/dummy/app/models/collection.rb +0 -20
- data/spec/dummy/app/models/product.rb +0 -32
- data/spec/dummy/app/uploaders/ckeditor_attachment_file_uploader.rb +0 -42
- data/spec/dummy/app/uploaders/ckeditor_picture_uploader.rb +0 -53
- data/spec/dummy/app/views/admin/collections/_form.html.slim +0 -24
- data/spec/dummy/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy/app/views/products/show.html.erb +0 -2
- data/spec/dummy/app/views/welcome/index.html.erb +0 -2
- data/spec/dummy/config.ru +0 -4
- data/spec/dummy/config/application.rb +0 -82
- data/spec/dummy/config/boot.rb +0 -10
- data/spec/dummy/config/database.yml +0 -26
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -37
- data/spec/dummy/config/environments/production.rb +0 -67
- data/spec/dummy/config/environments/test.rb +0 -37
- data/spec/dummy/config/i18n-js.yml +0 -21
- data/spec/dummy/config/initializers/ab_admin.rb +0 -15
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy/config/initializers/ckeditor.rb +0 -18
- data/spec/dummy/config/initializers/devise.rb +0 -232
- data/spec/dummy/config/initializers/inflections.rb +0 -15
- data/spec/dummy/config/initializers/mime_types.rb +0 -5
- data/spec/dummy/config/initializers/secret_token.rb +0 -7
- data/spec/dummy/config/initializers/session_store.rb +0 -8
- data/spec/dummy/config/initializers/simple_form.rb +0 -142
- data/spec/dummy/config/initializers/simple_form_bootstrap.rb +0 -45
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/spec/dummy/config/locales/devise.en.yml +0 -60
- data/spec/dummy/config/locales/en.yml +0 -5
- data/spec/dummy/config/locales/simple_form.en.yml +0 -26
- data/spec/dummy/config/routes.rb +0 -14
- data/spec/dummy/config/settings/development.local.yml +0 -9
- data/spec/dummy/config/settings/development.yml +0 -7
- data/spec/dummy/db/migrate/20130129151853_create_ckeditor_assets.rb +0 -26
- data/spec/dummy/db/migrate/20130130161853_create_collections.rb +0 -10
- data/spec/dummy/db/migrate/20130130162046_create_products.rb +0 -13
- data/spec/dummy/db/migrate/20130130175446_create_globalize_collection_product.rb +0 -11
- data/spec/dummy/db/migrate/20130207224516_create_catalogues.rb +0 -16
- data/spec/dummy/db/migrate/20130209223506_add_lat_lon_zoom_to_products.rb +0 -7
- data/spec/dummy/db/seeds.rb +0 -46
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/lib/capybara_irb.rb +0 -42
- data/spec/dummy/lib/tasks/.gitkeep +0 -0
- data/spec/dummy/lib/tasks/cucumber.rake +0 -65
- data/spec/dummy/lib/templates/slim/scaffold/_form.html.slim +0 -10
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/public/404.html +0 -26
- data/spec/dummy/public/422.html +0 -26
- data/spec/dummy/public/500.html +0 -25
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/cucumber +0 -10
- data/spec/dummy/script/rails +0 -6
- data/spec/factories/assets.rb +0 -52
- data/spec/factories/catalogues.rb +0 -7
- data/spec/factories/collections.rb +0 -8
- data/spec/factories/files/rails.png +0 -0
- data/spec/factories/products.rb +0 -17
- data/spec/factories/sequences.rb +0 -7
- data/spec/factories/structures.rb +0 -17
- data/spec/factories/users.rb +0 -30
- data/spec/generators/ckeditor_assets_generator_spec.rb +0 -19
- data/spec/generators/install_generator_spec.rb +0 -48
- data/spec/generators/model_generator_spec.rb +0 -31
- data/spec/generators/resource_generator_spec.rb +0 -36
- data/spec/models/ab_admin/abstract_resource_spec.rb +0 -5
- data/spec/models/avatar_spec.rb +0 -162
- data/spec/models/picture_uploader_spec.rb +0 -49
- data/spec/models/structure_spec.rb +0 -69
- data/spec/models/user_spec.rb +0 -159
- data/spec/shared_behaviors/concerns.rb +0 -20
- data/spec/spec_helper.rb +0 -96
- data/spec/support/controller_macros.rb +0 -52
- data/spec/support/custom_capybara_matchers.rb +0 -58
- data/spec/support/mailer_macros.rb +0 -17
- data/spec/support/shared_connection.rb +0 -11
- data/vendor/assets/images/ab_admin/clear.png +0 -0
- data/vendor/assets/images/ab_admin/loading.gif +0 -0
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/core.js +0 -899
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/index.js +0 -2
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.bg.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.br.js +0 -13
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.cs.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.da.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.de.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.es.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.fi.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.fr.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.id.js +0 -13
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.is.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.it.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ja.js +0 -13
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.kr.js +0 -13
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.lt.js +0 -15
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.lv.js +0 -16
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ms.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.nb.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.nl.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pl.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pt.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ro.js +0 -15
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ru.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sk.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sl.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sv.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.th.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.tr.js +0 -15
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.js +0 -14
- data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.js +0 -13
- data/vendor/assets/javascripts/ab_admin/bootstrap-editable-inline.js +0 -2895
- data/vendor/assets/javascripts/ab_admin/bootstrap-editable.js +0 -4523
- data/vendor/assets/javascripts/ab_admin/bootstrap-tab-multi.js +0 -135
- data/vendor/assets/javascripts/ab_admin/bootstrap-timepicker.js +0 -377
- data/vendor/assets/javascripts/ab_admin/fileupload/admin-fileuploader.js.coffee +0 -111
- data/vendor/assets/javascripts/ab_admin/fileupload/fileuploader.js +0 -1301
- data/vendor/assets/javascripts/ab_admin/jquery.Jcrop.js +0 -1083
- data/vendor/assets/javascripts/ab_admin/jquery_nested_form.js.coffee +0 -66
- data/vendor/assets/javascripts/bootstrap-wysihtml5/locales/ru.js +0 -48
- data/vendor/assets/javascripts/handlebars.min.js +0 -1
- data/vendor/assets/javascripts/jquery.cookie.js +0 -42
- data/vendor/assets/javascripts/jquery.hotkeys.js +0 -106
- data/vendor/assets/javascripts/jquery.pjax.js +0 -688
- data/vendor/assets/javascripts/jquery.tmpl.min.js +0 -10
- data/vendor/assets/javascripts/jquery.ui.nestedSortable.js +0 -356
- data/vendor/assets/javascripts/jquery/jquery-ui.min.js +0 -15
- data/vendor/assets/javascripts/jquery/jquery.min.js +0 -4
- data/vendor/assets/javascripts/underscore.min.js +0 -5
- data/vendor/assets/stylesheets/ab_admin/bootstrap-datepicker.css.scss +0 -274
- data/vendor/assets/stylesheets/ab_admin/bootstrap-editable.scss +0 -461
- data/vendor/assets/stylesheets/ab_admin/bootstrap-timepicker.css.scss +0 -88
- data/vendor/assets/stylesheets/ab_admin/jquery.Jcrop.min.css.scss +0 -28
data/lib/ab_admin/models/user.rb
CHANGED
@@ -6,9 +6,9 @@ module AbAdmin
|
|
6
6
|
included do
|
7
7
|
has_one :avatar, as: :assetable, dependent: :destroy, autosave: true
|
8
8
|
|
9
|
-
scope :managers, where(user_role_id: [::UserRoleType.admin.id, ::UserRoleType.moderator.id])
|
10
|
-
scope :active, where(
|
11
|
-
scope :admin, includes(:avatar)
|
9
|
+
scope :managers, -> { where(user_role_id: [::UserRoleType.admin.id, ::UserRoleType.moderator.id]) }
|
10
|
+
scope :active, -> { where(locked_at: nil) }
|
11
|
+
scope :admin, -> { includes(:avatar) }
|
12
12
|
|
13
13
|
after_initialize :init
|
14
14
|
before_validation :generate_login
|
@@ -17,18 +17,6 @@ module AbAdmin
|
|
17
17
|
validate :check_role
|
18
18
|
|
19
19
|
enumerated_attribute :user_role_type, id_attribute: :user_role_id, class: ::UserRoleType
|
20
|
-
enumerated_attribute :trust_state_type, id_attribute: :trust_state, class: ::UserState
|
21
|
-
end
|
22
|
-
|
23
|
-
def set_default_role
|
24
|
-
self.user_role_id ||= ::UserRoleType.default.id
|
25
|
-
end
|
26
|
-
|
27
|
-
def generate_password!
|
28
|
-
raw_password = Rails.env.test? ? '654321' : ::Devise.friendly_token[0..7]
|
29
|
-
self.password = self.password_confirmation = raw_password
|
30
|
-
self.save(validate: false)
|
31
|
-
raw_password
|
32
20
|
end
|
33
21
|
|
34
22
|
def name
|
@@ -39,37 +27,30 @@ module AbAdmin
|
|
39
27
|
[first_name.presence, last_name.presence].compact.join(' ')
|
40
28
|
end
|
41
29
|
|
42
|
-
def activate
|
43
|
-
self.trust_state = ::UserState.active.id
|
44
|
-
self.locked_at = nil
|
45
|
-
end
|
46
|
-
|
47
|
-
def activate!
|
48
|
-
confirm!
|
49
|
-
activate
|
50
|
-
save
|
51
|
-
end
|
52
|
-
|
53
30
|
def suspend!
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
def delete!
|
58
|
-
self.update_attribute(:trust_state, ::UserState.deleted.id)
|
31
|
+
update_attribute(:locked_at, Time.now.utc)
|
59
32
|
end
|
60
33
|
|
61
|
-
def
|
62
|
-
|
34
|
+
def activate!
|
35
|
+
confirm! unless confirmed?
|
36
|
+
unlock_access! if access_locked?
|
63
37
|
end
|
64
38
|
|
65
|
-
def
|
66
|
-
|
39
|
+
def generate_password!
|
40
|
+
raw_password = AbAdmin.test_env? ? '654321' : AbAdmin.friendly_token
|
41
|
+
self.password = self.password_confirmation = raw_password
|
42
|
+
self.save(validate: false)
|
43
|
+
raw_password
|
67
44
|
end
|
68
45
|
|
69
46
|
def moderator?
|
70
47
|
has_role?(:admin) || has_role?(:moderator)
|
71
48
|
end
|
72
49
|
|
50
|
+
def admin_access?
|
51
|
+
moderator?
|
52
|
+
end
|
53
|
+
|
73
54
|
def default?
|
74
55
|
has_role?(:default)
|
75
56
|
end
|
@@ -82,20 +63,8 @@ module AbAdmin
|
|
82
63
|
user_role_type.code == role_name
|
83
64
|
end
|
84
65
|
|
85
|
-
def
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
def trusted?
|
90
|
-
self.trust_state == ::UserState.active.id
|
91
|
-
end
|
92
|
-
|
93
|
-
def active_for_authentication?
|
94
|
-
super && trusted?
|
95
|
-
end
|
96
|
-
|
97
|
-
def inactive_message
|
98
|
-
trusted? ? super : :unconfirmed
|
66
|
+
def set_default_role
|
67
|
+
self.user_role_id ||= ::UserRoleType.default.id
|
99
68
|
end
|
100
69
|
|
101
70
|
protected
|
data/lib/ab_admin/utils.rb
CHANGED
@@ -5,8 +5,8 @@ module AbAdmin
|
|
5
5
|
autoload :Logger, 'ab_admin/utils/logger'
|
6
6
|
autoload :Mysql, 'ab_admin/utils/mysql'
|
7
7
|
|
8
|
-
def load_files!(
|
9
|
-
Dir[Rails.root.join("#{
|
8
|
+
def load_files!(base_path = 'lib/utils')
|
9
|
+
Dir[Rails.root.join("#{base_path}/**/*.rb")].each do |path|
|
10
10
|
require_dependency path
|
11
11
|
end
|
12
12
|
end
|
@@ -45,7 +45,7 @@ module AbAdmin
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def l_path(locale=nil)
|
48
|
-
|
48
|
+
locale ||= I18n.locale
|
49
49
|
locale == I18n.default_locale ? '' : "/#{locale}"
|
50
50
|
end
|
51
51
|
|
@@ -55,8 +55,8 @@ module AbAdmin
|
|
55
55
|
Rack::Utils.escape_html(raw_html.no_html.squish)
|
56
56
|
end
|
57
57
|
|
58
|
-
#
|
59
|
-
|
58
|
+
# html like: '<!-- html comment --><script>script content</script><div>div content</div><p>p content</p>'
|
59
|
+
# normalized to: "<p>div content</p><p>p content</p>"
|
60
60
|
def normalize_html(raw_html)
|
61
61
|
@@sanitizer ||= Sanitizer.new
|
62
62
|
@@sanitizer.normalize_html(raw_html)
|
@@ -67,7 +67,8 @@ module AbAdmin
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def full_url(path)
|
70
|
-
|
70
|
+
return path if path =~ %r{^(http|//)}
|
71
|
+
host = AbAdmin.base_url || Rails.application.config.action_mailer.default_url_options[:host] || 'www.example.com'
|
71
72
|
"http://#{host}#{path}"
|
72
73
|
end
|
73
74
|
|
@@ -101,12 +102,13 @@ module AbAdmin
|
|
101
102
|
end
|
102
103
|
|
103
104
|
def display_name(resource)
|
105
|
+
return unless resource
|
104
106
|
resource.send(display_name_method_for(resource))
|
105
107
|
end
|
106
108
|
|
107
109
|
def safe_display_name(resource)
|
108
110
|
return unless display_name_method_for(resource)
|
109
|
-
|
111
|
+
display_name(resource)
|
110
112
|
end
|
111
113
|
|
112
114
|
def pretty_data(object)
|
@@ -126,5 +128,12 @@ module AbAdmin
|
|
126
128
|
end
|
127
129
|
end
|
128
130
|
|
131
|
+
def test_env?
|
132
|
+
Rails.env.test? || Rails.env.cucumber?
|
133
|
+
end
|
134
|
+
|
135
|
+
def friendly_token(n=10)
|
136
|
+
SecureRandom.base64(16).tr('+/=', 'xyz').first(n)
|
137
|
+
end
|
129
138
|
end
|
130
139
|
end
|
@@ -2,17 +2,21 @@ module AbAdmin
|
|
2
2
|
module Utils
|
3
3
|
module Logger
|
4
4
|
|
5
|
-
class
|
6
|
-
def
|
7
|
-
"
|
5
|
+
class ExtendedLogger < ::Logger
|
6
|
+
def exception(e, options={})
|
7
|
+
message = "#{e.message} #{"DATA:#{options[:data].inspect}" if options && options[:data]}"
|
8
|
+
backtrace = e.backtrace.map { |l| "#{' ' * 2}#{l}" }.join("\n")
|
9
|
+
error("#{message}\n#{backtrace}\n\n")
|
10
|
+
end
|
11
|
+
|
12
|
+
def reopen
|
13
|
+
@logdev = LogDevice.new(@logdev.filename)
|
8
14
|
end
|
9
15
|
end
|
10
16
|
|
11
17
|
def self.for_file(filename)
|
12
|
-
|
13
|
-
|
14
|
-
logger = ::Logger.new(logfile)
|
15
|
-
logger.formatter = ShortFormatter.new
|
18
|
+
logger = ExtendedLogger.new(Rails.root.join('log', filename))
|
19
|
+
logger.formatter = ::Logger::Formatter.new
|
16
20
|
logger
|
17
21
|
end
|
18
22
|
|
data/lib/ab_admin/utils/mysql.rb
CHANGED
@@ -12,6 +12,16 @@ module AbAdmin
|
|
12
12
|
transaction { connection.execute("TRUNCATE TABLE #{quoted_table_name};") }
|
13
13
|
end
|
14
14
|
|
15
|
+
# remove duplicate records by columns
|
16
|
+
def remove_duplicates(*cols)
|
17
|
+
conds = cols.map { |col| "#{table_name}.#{col} IS NOT NULL AND #{table_name}.#{col} = t.#{col}" }.join(' AND ')
|
18
|
+
query = <<-SQL
|
19
|
+
DELETE FROM #{table_name} USING #{table_name}, #{table_name} AS t WHERE #{table_name}.id < t.id AND #{conds}
|
20
|
+
SQL
|
21
|
+
connection.execute(query)
|
22
|
+
end
|
23
|
+
|
24
|
+
|
15
25
|
# Disables key updates for model table
|
16
26
|
def disable_keys
|
17
27
|
connection.execute("ALTER TABLE #{quoted_table_name} DISABLE KEYS")
|
data/lib/ab_admin/version.rb
CHANGED
@@ -38,13 +38,13 @@ module AbAdmin
|
|
38
38
|
data = {
|
39
39
|
type: options[:type],
|
40
40
|
source: options[:source].try(:to_json),
|
41
|
-
model:
|
42
|
-
url:
|
41
|
+
model: item.class.model_name.singular,
|
42
|
+
url: options[:url] || "/admin/#{item.class.model_name.plural}/#{item.id}",
|
43
43
|
name: attr,
|
44
44
|
value: options[:value] || item[attr],
|
45
45
|
title: options[:title] || item[attr]
|
46
46
|
}
|
47
|
-
link_to admin_pretty_data(data[:title].to_s).html_safe, '#', class:
|
47
|
+
link_to admin_pretty_data(data[:title].to_s).html_safe, '#', class: "editable #{options[:class]}", data: data.update(options[:data] || {})
|
48
48
|
end
|
49
49
|
|
50
50
|
def options_for_ckeditor(options = {})
|
@@ -60,14 +60,24 @@ module AbAdmin
|
|
60
60
|
items.map { |item| admin_tree_item(item) }.join.html_safe
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
63
|
+
def admin_layout_css
|
64
64
|
css = []
|
65
65
|
css << 'content_with_sidebar' if settings[:sidebar] || content_for?(:sidebar)
|
66
|
-
css << 'well' if settings[:well]
|
67
|
-
css << "#{
|
66
|
+
css << 'well' if settings[:well] && current_index_view != 'tree'
|
67
|
+
css << "#{current_index_view}_view"
|
68
68
|
css
|
69
69
|
end
|
70
70
|
|
71
|
+
def admin_title
|
72
|
+
base = @breadcrumbs ? @breadcrumbs.map_val(:name).reverse : []
|
73
|
+
base << @page_title || 'Ab Admin'
|
74
|
+
base.join(' - ')
|
75
|
+
end
|
76
|
+
|
77
|
+
def include_fv
|
78
|
+
"<script type='text/javascript'>window.fv = #{fv.to_h.to_json}</script>".html_safe
|
79
|
+
end
|
80
|
+
|
71
81
|
def admin_comments
|
72
82
|
render 'admin/admin_comments/comments'
|
73
83
|
end
|
@@ -107,7 +117,8 @@ module AbAdmin
|
|
107
117
|
image = item.send(options[:assoc])
|
108
118
|
return nil unless image
|
109
119
|
version = options[:version] || image.class.thumb_size
|
110
|
-
|
120
|
+
popover_content = "<img class='image_link_popover popover_#{options[:assoc]}' src='#{image.url(options[:full_version])}'></img>"
|
121
|
+
popover_data = {content: popover_content, title: AbAdmin.display_name(item)}
|
111
122
|
|
112
123
|
html_options = options.delete(:html_options) || {}
|
113
124
|
html_options.reverse_merge!(rel: 'popover', remote: options[:remote], data: popover_data)
|
@@ -120,10 +131,10 @@ module AbAdmin
|
|
120
131
|
|
121
132
|
# input_set 'title', legend_class: 'do_sort', label_class: 'label-info' do
|
122
133
|
def input_set(title, options={}, &block)
|
123
|
-
options.reverse_merge!(class: "inputs well well-small #{options.delete(:legend_class) || 'do_sort'}", id: options.delete(:legend_id))
|
134
|
+
options.reverse_merge!(class: "inputs well well-small clearfix #{options.delete(:legend_class) || 'do_sort'}", id: options.delete(:legend_id))
|
124
135
|
html = content_tag(:label, title, class: "input_set label #{options.delete(:label_class)}")
|
125
136
|
html.concat(capture(&block)) if block_given?
|
126
|
-
content_tag(:
|
137
|
+
content_tag(:div, html, options)
|
127
138
|
end
|
128
139
|
|
129
140
|
def ha(attr)
|
@@ -13,6 +13,15 @@ module AbAdmin
|
|
13
13
|
form_for([:admin, object].flatten, *(args << options), &block)
|
14
14
|
end
|
15
15
|
|
16
|
+
def list_sort_link(attribute, options={})
|
17
|
+
adapter = options[:adapter] || @search
|
18
|
+
if adapter && adapter.klass == resource_class
|
19
|
+
sort_link(adapter, attribute, options)
|
20
|
+
else
|
21
|
+
attribute.is_a?(Symbol) ? ha(attribute) : attribute
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
16
25
|
def sort_link(search, attribute, *args)
|
17
26
|
name = attribute.is_a?(Symbol) ? ha(attribute) : attribute
|
18
27
|
return name unless search
|
@@ -20,24 +29,25 @@ module AbAdmin
|
|
20
29
|
options = args.first.is_a?(Hash) ? args.shift.dup : {}
|
21
30
|
search_params = params[:q] || {}.with_indifferent_access
|
22
31
|
attr_name = (options.delete(:column) || attribute).to_s
|
32
|
+
default_order = options.delete :default_order
|
23
33
|
|
24
34
|
if existing_sort = search.sorts.detect { |s| s.name == attr_name }
|
25
35
|
prev_attr, prev_dir = existing_sort.name, existing_sort.dir
|
36
|
+
current_dir = prev_attr == attr_name ? prev_dir : nil
|
37
|
+
else
|
38
|
+
current_dir = nil
|
26
39
|
end
|
27
40
|
|
28
|
-
default_order = options.delete :default_order
|
29
|
-
current_dir = prev_attr == attr_name ? prev_dir : nil
|
30
|
-
|
31
41
|
if current_dir
|
32
42
|
new_dir = current_dir == 'desc' ? 'asc' : 'desc'
|
33
43
|
else
|
34
44
|
new_dir = default_order || 'asc'
|
35
45
|
end
|
36
46
|
|
37
|
-
html_options =
|
47
|
+
html_options = options.delete(:html_options) || {}
|
38
48
|
html_options[:class] = ['sort_link', current_dir, html_options[:class]].compact.join(' ')
|
39
|
-
options.merge!(q: search_params.merge(s: "#{attr_name} #{new_dir}"))
|
40
49
|
|
50
|
+
options.merge!(q: search_params.merge(s: "#{attr_name} #{new_dir}"))
|
41
51
|
link_to [name, order_indicator_for(current_dir)].join(' ').html_safe, url_for(options), html_options
|
42
52
|
end
|
43
53
|
|
@@ -47,7 +57,7 @@ module AbAdmin
|
|
47
57
|
elsif order == 'desc'
|
48
58
|
'▼'
|
49
59
|
else
|
50
|
-
'<span class="order_indicator">▲▼</
|
60
|
+
'<span class="order_indicator">▲▼</span>'
|
51
61
|
end
|
52
62
|
end
|
53
63
|
|
@@ -64,9 +74,13 @@ module AbAdmin
|
|
64
74
|
item_link_to_can? :show, item, icon('info-sign', true), resource_path(item),
|
65
75
|
class: 'btn btn-info', title: t('admin.actions.show.link')
|
66
76
|
when :preview
|
67
|
-
|
68
|
-
|
77
|
+
preview_path = preview_resource_path(item)
|
78
|
+
if preview_path
|
79
|
+
link_to icon('eye-open', true), preview_path, class: 'btn btn-inverse', title: t('admin.actions.preview.link'), target: '_blank'
|
69
80
|
end
|
81
|
+
when :history
|
82
|
+
item_link_to_can? :history, item, icon('book', true), history_resource_path(item),
|
83
|
+
class: 'btn btn-info', title: t('admin.actions.history.link')
|
70
84
|
when AbAdmin::Config::ActionItem
|
71
85
|
instance_exec(item, &action.data) if action.for_context?(self)
|
72
86
|
else
|
@@ -90,6 +104,8 @@ module AbAdmin
|
|
90
104
|
if path = preview_resource_path(resource)
|
91
105
|
link_to t('admin.actions.preview.link'), path, class: 'btn btn-inverse', title: t('admin.actions.preview.link'), target: '_blank'
|
92
106
|
end
|
107
|
+
when :history
|
108
|
+
link_to_can? :history, t('admin.actions.history.link'), history_resource_path, class: 'btn btn-info'
|
93
109
|
when AbAdmin::Config::ActionItem
|
94
110
|
instance_exec(&action.data) if action.for_context?(self)
|
95
111
|
else
|
@@ -103,7 +119,7 @@ module AbAdmin
|
|
103
119
|
end
|
104
120
|
|
105
121
|
def item_link_to_can?(act, item, *args, &block)
|
106
|
-
if can?(act,
|
122
|
+
if can?(act, item)
|
107
123
|
if block_given?
|
108
124
|
link_to(*args, &block)
|
109
125
|
else
|
@@ -115,7 +131,6 @@ module AbAdmin
|
|
115
131
|
def model_admin_menu_link(model)
|
116
132
|
content_tag :li, class: ('active' if controller_name.split('/').last == model.model_name.plural) do
|
117
133
|
link_to model.model_name.human(count: 9), "/admin/#{model.model_name.plural}"
|
118
|
-
#link_to model.model_name.human(count: 9), {action: :index, controller: "admin/#{model.model_name.plural}"}
|
119
134
|
end
|
120
135
|
end
|
121
136
|
|
@@ -143,9 +158,17 @@ module AbAdmin
|
|
143
158
|
end
|
144
159
|
|
145
160
|
def item_index_actions(item)
|
146
|
-
resource_action_items.map do |act|
|
161
|
+
actions = resource_action_items.map do |act|
|
147
162
|
short_action_link(act, item)
|
148
|
-
end
|
163
|
+
end
|
164
|
+
actions << admin_comments_button(item) if settings[:comments] && settings[:comments][:list]
|
165
|
+
actions.join(' ').html_safe
|
166
|
+
end
|
167
|
+
|
168
|
+
def admin_comments_button(item)
|
169
|
+
title = [icon('comment', true), item.admin_comments_count_non_zero].compact.join(' ').html_safe
|
170
|
+
link_to title, admin_admin_comments_path(resource_type: item.class.name, resource_id: item.id), remote: true,
|
171
|
+
class: 'btn btn-info list_admin_comments_link'
|
149
172
|
end
|
150
173
|
|
151
174
|
def batch_action_toggle
|
@@ -159,7 +182,7 @@ module AbAdmin
|
|
159
182
|
def batch_action_item(item)
|
160
183
|
if settings[:batch]
|
161
184
|
content_tag :td do
|
162
|
-
check_box_tag '
|
185
|
+
check_box_tag 'by_ids[]', item.id, false, id: "batch_action_item_#{item.id}", class: 'batch_check'
|
163
186
|
end
|
164
187
|
end
|
165
188
|
end
|
@@ -175,16 +198,16 @@ module AbAdmin
|
|
175
198
|
end
|
176
199
|
end
|
177
200
|
|
178
|
-
def auto_edit_link(
|
179
|
-
return
|
180
|
-
return if cannot?(:edit,
|
181
|
-
admin_edit_link(
|
201
|
+
def auto_edit_link(record, options = {})
|
202
|
+
return options[:missing] unless record
|
203
|
+
return options[:title] || AbAdmin.display_name(record) if cannot?(:edit, record)
|
204
|
+
admin_edit_link(record, options)
|
182
205
|
end
|
183
206
|
|
184
|
-
def auto_show_link(
|
185
|
-
return
|
186
|
-
return if cannot?(:read,
|
187
|
-
admin_show_link(
|
207
|
+
def auto_show_link(record, options = {})
|
208
|
+
return options[:missing] unless record
|
209
|
+
return options[:title] || AbAdmin.display_name(record) if cannot?(:read, record)
|
210
|
+
admin_show_link(record, options)
|
188
211
|
end
|
189
212
|
|
190
213
|
def admin_edit_link(record, options = {})
|