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/config/routes.rb
CHANGED
@@ -17,6 +17,8 @@ Rails.application.routes.draw do
|
|
17
17
|
resources :assets, only: [:create, :destroy] do
|
18
18
|
post :rotate, :main, :crop, on: :member
|
19
19
|
post :sort, on: :collection
|
20
|
+
get :batch_edit, on: :collection
|
21
|
+
post :batch_update, on: :collection
|
20
22
|
end
|
21
23
|
|
22
24
|
resource :settings, only: [:edit, :update] do
|
@@ -36,13 +38,14 @@ Rails.application.routes.draw do
|
|
36
38
|
get '/new', to: :new, as: 'new'
|
37
39
|
post '/batch', to: :batch, as: 'batch'
|
38
40
|
post '/rebuild', to: :rebuild, as: 'rebuild'
|
39
|
-
match '/custom_action', to: :custom_action, as: 'collection_action'
|
41
|
+
match '/custom_action', to: :custom_action, as: 'collection_action', via: :all
|
40
42
|
|
41
43
|
scope ':id' do
|
42
44
|
get '/edit', to: :edit, as: 'edit'
|
43
|
-
|
45
|
+
get '/history', to: :history, as: 'history'
|
46
|
+
match '/custom_action', to: :custom_action, as: 'member_action', via: :all
|
44
47
|
get '/', to: :show, as: 'show'
|
45
|
-
|
48
|
+
patch '/', to: :update, as: 'update'
|
46
49
|
delete '/', to: :destroy, as: 'destroy'
|
47
50
|
end
|
48
51
|
|
@@ -1,9 +1,8 @@
|
|
1
1
|
class CreateUsers < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table(:users) do |t|
|
4
4
|
t.string :login
|
5
5
|
t.integer :user_role_id, limit: 1, default: 1
|
6
|
-
t.integer :trust_state, limit: 1, default: 1
|
7
6
|
t.integer :gender, limit: 1, default: 1
|
8
7
|
t.string :first_name
|
9
8
|
t.string :last_name
|
@@ -50,18 +49,15 @@ class CreateUsers < ActiveRecord::Migration
|
|
50
49
|
t.string :unlock_token # Only if unlock strategy is :email or :both
|
51
50
|
t.datetime :locked_at
|
52
51
|
|
53
|
-
|
54
|
-
|
52
|
+
## Token authenticatable
|
53
|
+
## t.string :authentication_token
|
55
54
|
|
56
55
|
t.timestamps
|
57
56
|
end
|
58
57
|
|
59
|
-
add_index :users, :email,
|
60
|
-
add_index :users, :reset_password_token, unique
|
61
|
-
add_index :users, :confirmation_token, unique
|
62
|
-
|
63
|
-
|
64
|
-
def self.down
|
65
|
-
drop_table :users
|
58
|
+
add_index :users, :email, :unique => true
|
59
|
+
add_index :users, :reset_password_token, :unique => true
|
60
|
+
add_index :users, :confirmation_token, :unique => true
|
61
|
+
add_index :users, :unlock_token, :unique => true
|
66
62
|
end
|
67
63
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class CreateAssets < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table :assets do |t|
|
4
4
|
t.string :data_file_name, null: false
|
5
5
|
t.string :data_content_type
|
@@ -19,16 +19,16 @@ class CreateAssets < ActiveRecord::Migration
|
|
19
19
|
|
20
20
|
t.boolean :is_main, default: false, null: false
|
21
21
|
t.string :original_name
|
22
|
+
t.string :data_secure_token, limit: 20
|
23
|
+
t.string :cached_alt
|
24
|
+
t.string :cached_title
|
22
25
|
|
23
26
|
t.timestamps
|
24
27
|
end
|
25
28
|
|
26
29
|
add_index :assets, [:assetable_type, :type, :assetable_id]
|
27
30
|
add_index :assets, :guid
|
31
|
+
add_index :assets, :data_secure_token
|
28
32
|
add_index :assets, :user_id
|
29
33
|
end
|
30
|
-
|
31
|
-
def self.down
|
32
|
-
drop_table :assets
|
33
|
-
end
|
34
34
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class CreateHeaders < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table :headers do |t|
|
4
|
-
t.string :headerable_type, limit:
|
4
|
+
t.string :headerable_type, limit: 50, null: false
|
5
5
|
t.integer :headerable_id, null: false
|
6
6
|
|
7
7
|
t.timestamps
|
@@ -9,8 +9,4 @@ class CreateHeaders < ActiveRecord::Migration
|
|
9
9
|
|
10
10
|
add_index :headers, [:headerable_type, :headerable_id], unique: true
|
11
11
|
end
|
12
|
-
|
13
|
-
def self.down
|
14
|
-
drop_table :headers
|
15
|
-
end
|
16
12
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class CreateStaticPages < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table :static_pages do |t|
|
4
4
|
t.integer :structure_id, null: false
|
5
5
|
t.references :user
|
@@ -11,8 +11,4 @@ class CreateStaticPages < ActiveRecord::Migration
|
|
11
11
|
add_index :static_pages, :user_id
|
12
12
|
add_index :static_pages, :structure_id
|
13
13
|
end
|
14
|
-
|
15
|
-
def self.down
|
16
|
-
drop_table :static_pages
|
17
|
-
end
|
18
14
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
class CreateStructures < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table :structures do |t|
|
4
4
|
t.string :slug, null: false
|
5
|
-
t.integer :
|
6
|
-
t.integer :
|
5
|
+
t.integer :structure_type_id, limit: 1, default: 1
|
6
|
+
t.integer :position_type_id, limit: 1, default: 1
|
7
7
|
t.references :user
|
8
8
|
t.boolean :is_visible, default: true, null: false
|
9
9
|
|
@@ -15,13 +15,9 @@ class CreateStructures < ActiveRecord::Migration
|
|
15
15
|
t.timestamps
|
16
16
|
end
|
17
17
|
|
18
|
-
add_index :structures, :
|
19
|
-
add_index :structures,
|
18
|
+
add_index :structures, [:slug, :structure_type_id], unique: true
|
19
|
+
add_index :structures, :position_type_id
|
20
20
|
add_index :structures, :parent_id
|
21
21
|
add_index :structures, [:lft, :rgt]
|
22
22
|
end
|
23
|
-
|
24
|
-
def self.down
|
25
|
-
drop_table :structures
|
26
|
-
end
|
27
23
|
end
|
@@ -1,13 +1,15 @@
|
|
1
1
|
class BaseTranslations < ActiveRecord::Migration
|
2
2
|
def self.up
|
3
3
|
StaticPage.create_translation_table! title: :string, content: :text
|
4
|
-
Header.create_translation_table! title: :string, keywords: :string, description: :text
|
4
|
+
Header.create_translation_table! title: :string, h1: :string, keywords: :string, description: :text, seo_block: :text
|
5
5
|
Structure.create_translation_table! title: :string, redirect_url: :string
|
6
|
+
Asset.create_translation_table! name: :string, alt: :string
|
6
7
|
end
|
7
8
|
|
8
9
|
def self.down
|
9
10
|
StaticPage.drop_translation_table!
|
10
11
|
Header.drop_translation_table!
|
11
12
|
Structure.drop_translation_table!
|
13
|
+
Asset.drop_translation_table!
|
12
14
|
end
|
13
15
|
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
class CreateAdminComments < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table :admin_comments do |t|
|
4
|
-
t.
|
5
|
-
t.
|
6
|
-
t.string :author_name
|
4
|
+
t.references :user
|
5
|
+
t.string :user_name
|
7
6
|
t.integer :resource_id, null: false
|
8
|
-
t.string :resource_type, limit:
|
7
|
+
t.string :resource_type, limit: 50, null: false
|
8
|
+
t.references :resource_user
|
9
9
|
t.text :body
|
10
10
|
|
11
11
|
t.timestamps
|
12
12
|
end
|
13
13
|
|
14
14
|
add_index :admin_comments, :user_id
|
15
|
-
add_index :admin_comments, :
|
15
|
+
add_index :admin_comments, :resource_user_id
|
16
16
|
add_index :admin_comments, [:resource_type, :resource_id]
|
17
17
|
end
|
18
18
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CreateTracks < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :tracks do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :key
|
6
|
+
t.belongs_to :trackable, polymorphic: true
|
7
|
+
t.belongs_to :user
|
8
|
+
t.belongs_to :owner
|
9
|
+
t.column :trackable_changes, :mediumtext
|
10
|
+
t.text :parameters
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :tracks, [:trackable_type, :trackable_id]
|
16
|
+
add_index :tracks, :owner_id
|
17
|
+
add_index :tracks, :user_id
|
18
|
+
add_index :tracks, :key
|
19
|
+
end
|
20
|
+
end
|
data/lib/ab_admin.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
require 'inherited_resources'
|
3
2
|
require 'rack-pjax'
|
4
3
|
require 'has_scope'
|
@@ -11,7 +10,6 @@ require 'ab_admin/engine'
|
|
11
10
|
module AbAdmin
|
12
11
|
autoload :Utils, 'ab_admin/utils'
|
13
12
|
autoload :Devise, 'ab_admin/devise'
|
14
|
-
autoload :MenuBuilder, 'ab_admin/menu_builder'
|
15
13
|
autoload :AbstractResource, 'ab_admin/abstract_resource'
|
16
14
|
|
17
15
|
module Config
|
@@ -28,6 +26,14 @@ module AbAdmin
|
|
28
26
|
autoload :OptionalDisplay, 'ab_admin/config/optional_display'
|
29
27
|
end
|
30
28
|
|
29
|
+
module Menu
|
30
|
+
autoload :Builder, 'ab_admin/menu/builder'
|
31
|
+
autoload :AbstractBuilder, 'ab_admin/menu/abstract_builder'
|
32
|
+
autoload :Group, 'ab_admin/menu/group'
|
33
|
+
autoload :BaseGroup, 'ab_admin/menu/base_group'
|
34
|
+
autoload :Item, 'ab_admin/menu/item'
|
35
|
+
end
|
36
|
+
|
31
37
|
module Utils
|
32
38
|
autoload :XlsDocument, 'ab_admin/utils/xls_document'
|
33
39
|
autoload :CsvDocument, 'ab_admin/utils/csv_document'
|
@@ -51,6 +57,9 @@ module AbAdmin
|
|
51
57
|
autoload :NestedSet, 'ab_admin/concerns/nested_set'
|
52
58
|
autoload :Validations, 'ab_admin/concerns/validations'
|
53
59
|
autoload :Reloadable, 'ab_admin/concerns/reloadable'
|
60
|
+
autoload :HasTracking, 'ab_admin/concerns/has_tracking'
|
61
|
+
autoload :AssetHumanNames, 'ab_admin/concerns/asset_human_names'
|
62
|
+
autoload :Fileuploads, 'ab_admin/concerns/fileuploads'
|
54
63
|
end
|
55
64
|
|
56
65
|
module Controllers
|
@@ -58,6 +67,7 @@ module AbAdmin
|
|
58
67
|
autoload :HeadOptions, 'ab_admin/controllers/head_options'
|
59
68
|
autoload :Tree, 'ab_admin/controllers/tree'
|
60
69
|
autoload :CanCanManagerResource, 'ab_admin/controllers/can_can_manager_resource'
|
70
|
+
autoload :Fv, 'ab_admin/controllers/fv'
|
61
71
|
end
|
62
72
|
|
63
73
|
module Mailers
|
@@ -74,6 +84,8 @@ module AbAdmin
|
|
74
84
|
autoload :Locator, 'ab_admin/models/locator'
|
75
85
|
autoload :Settings, 'ab_admin/models/settings'
|
76
86
|
autoload :User, 'ab_admin/models/user'
|
87
|
+
autoload :Track, 'ab_admin/models/track'
|
88
|
+
autoload :AdminComment, 'ab_admin/models/admin_comment'
|
77
89
|
end
|
78
90
|
|
79
91
|
module Views
|
@@ -84,13 +96,16 @@ module AbAdmin
|
|
84
96
|
autoload :FormBuilder, 'ab_admin/views/form_builder'
|
85
97
|
autoload :SearchFormBuilder, 'ab_admin/views/search_form_builder'
|
86
98
|
autoload :UrlForRoutes, 'ab_admin/views/url_for_routes'
|
99
|
+
autoload :ContentOnlyWrapper, 'ab_admin/views/content_only_wrapper'
|
87
100
|
|
88
101
|
module Inputs
|
89
102
|
autoload :CkeditorInput, 'ab_admin/views/inputs/ckeditor_input'
|
90
103
|
autoload :ColorInput, 'ab_admin/views/inputs/color_input'
|
91
104
|
autoload :EditorInput, 'ab_admin/views/inputs/editor_input'
|
92
|
-
autoload :
|
105
|
+
autoload :DateTimePickerInput, 'ab_admin/views/inputs/date_time_picker_input'
|
93
106
|
autoload :TokenInput, 'ab_admin/views/inputs/token_input'
|
107
|
+
autoload :CaptureBlockInput, 'ab_admin/views/inputs/capture_block_input'
|
108
|
+
autoload :UploaderInput, 'ab_admin/views/inputs/uploader_input'
|
94
109
|
end
|
95
110
|
end
|
96
111
|
|
@@ -125,7 +140,7 @@ module AbAdmin
|
|
125
140
|
@@image_types = %w(image/jpeg image/png image/gif image/jpg image/pjpeg image/tiff image/x-png)
|
126
141
|
|
127
142
|
mattr_accessor :display_name_methods
|
128
|
-
@@display_name_methods = [:title, :name, :full_name]
|
143
|
+
@@display_name_methods = [:title, :name, :full_name, :id]
|
129
144
|
|
130
145
|
mattr_accessor :translate_models
|
131
146
|
@@translate_models = %w(User Asset Structure StaticPage Header AdminComment)
|
@@ -133,6 +148,23 @@ module AbAdmin
|
|
133
148
|
mattr_accessor :assets
|
134
149
|
@@assets = %w(ab_admin/devise.css bootstrap.js)
|
135
150
|
|
151
|
+
mattr_accessor :test_settings
|
152
|
+
@@test_settings = {}
|
153
|
+
|
154
|
+
mattr_accessor :footer_notes
|
155
|
+
|
156
|
+
mattr_accessor :default_url_options
|
157
|
+
|
158
|
+
mattr_accessor :locale
|
159
|
+
|
160
|
+
mattr_accessor :fileupload_url
|
161
|
+
@@fileupload_url = '/admin/assets'
|
162
|
+
|
163
|
+
mattr_accessor :uploads_dir
|
164
|
+
@@uploads_dir = 'uploads'
|
165
|
+
|
166
|
+
mattr_accessor :base_url
|
167
|
+
|
136
168
|
extend Utils
|
137
169
|
|
138
170
|
def self.setup
|
@@ -4,14 +4,17 @@ module AbAdmin
|
|
4
4
|
|
5
5
|
include Singleton
|
6
6
|
|
7
|
-
|
7
|
+
unless self.const_defined?(:ACTIONS)
|
8
|
+
ACTIONS = [:index, :show, :new, :edit, :create, :update, :destroy, :preview, :batch, :rebuild, :custom_action, :history]
|
9
|
+
end
|
8
10
|
|
9
|
-
attr_accessor :table, :search, :export, :form, :show, :preview_path, :actions, :
|
11
|
+
attr_accessor :model, :table, :search, :export, :form, :modal_form, :show, :preview_path, :actions, :custom_settings,
|
10
12
|
:batch_action_list, :action_items, :disabled_action_items, :resource_action_items, :tree_node_renderer,
|
11
13
|
:parent_resources, :custom_actions
|
12
14
|
|
13
15
|
def initialize
|
14
16
|
@actions = ACTIONS
|
17
|
+
@custom_settings = {}
|
15
18
|
@batch_action_list = [AbAdmin::Config::BatchAction.new(:destroy, confirm: I18n.t('admin.delete_confirmation'))]
|
16
19
|
@action_items = []
|
17
20
|
@disabled_action_items = []
|
@@ -25,7 +28,7 @@ module AbAdmin
|
|
25
28
|
|
26
29
|
def add_admin_addition_to_model
|
27
30
|
return unless @model
|
28
|
-
@model.send(:include, AbAdmin::Concerns::AdminAddition) unless
|
31
|
+
@model.send(:include, AbAdmin::Concerns::AdminAddition) unless has_module?(AbAdmin::Concerns::AdminAddition)
|
29
32
|
end
|
30
33
|
|
31
34
|
class << self
|
@@ -45,6 +48,10 @@ module AbAdmin
|
|
45
48
|
instance.form = ::AbAdmin::Config::Form.new(options, &block)
|
46
49
|
end
|
47
50
|
|
51
|
+
def modal_form(options={}, &block)
|
52
|
+
instance.modal_form = ::AbAdmin::Config::ModalForm.new(options, &block)
|
53
|
+
end
|
54
|
+
|
48
55
|
def show(options={}, &block)
|
49
56
|
instance.show = ::AbAdmin::Config::Show.new(options, &block)
|
50
57
|
end
|
@@ -66,13 +73,20 @@ module AbAdmin
|
|
66
73
|
|
67
74
|
def settings(value)
|
68
75
|
instance.custom_settings = value
|
76
|
+
if instance.custom_settings[:history]
|
77
|
+
instance.custom_settings[:history] = {} unless instance.custom_settings[:history].is_a?(Hash)
|
78
|
+
instance.model.send(:include, AbAdmin::Concerns::HasTracking) unless instance.has_module?(AbAdmin::Concerns::HasTracking)
|
79
|
+
end
|
80
|
+
if instance.custom_settings[:comments]
|
81
|
+
instance.custom_settings[:comments] = {} unless instance.custom_settings[:comments].is_a?(Hash)
|
82
|
+
end
|
69
83
|
end
|
70
84
|
|
71
85
|
def batch_action(name, options={}, &block)
|
72
|
-
if
|
73
|
-
instance.batch_action_list
|
86
|
+
if options
|
87
|
+
instance.batch_action_list << AbAdmin::Config::BatchAction.new(name.to_sym, options, &block)
|
74
88
|
else
|
75
|
-
instance.batch_action_list
|
89
|
+
instance.batch_action_list.reject!{|a| a.name == name.to_sym }
|
76
90
|
end
|
77
91
|
end
|
78
92
|
|
@@ -129,7 +143,10 @@ module AbAdmin
|
|
129
143
|
def default_action_items_for(action, for_resource)
|
130
144
|
@default_action_items_for[action] ||= begin
|
131
145
|
base = [:new]
|
132
|
-
|
146
|
+
if for_resource
|
147
|
+
base += [:edit, :show, :destroy, :preview]
|
148
|
+
base << :history if custom_settings[:history] && !custom_settings[:history][:sidebar]
|
149
|
+
end
|
133
150
|
disabled = action == :new ? [] : [action]
|
134
151
|
(base - disabled - @disabled_action_items) & @actions
|
135
152
|
end
|
@@ -145,6 +162,10 @@ module AbAdmin
|
|
145
162
|
custom_action
|
146
163
|
end
|
147
164
|
|
165
|
+
def has_module?(module_constant)
|
166
|
+
model.included_modules.include?(module_constant)
|
167
|
+
end
|
168
|
+
|
148
169
|
end
|
149
170
|
|
150
171
|
end
|
@@ -11,6 +11,13 @@ module AbAdmin
|
|
11
11
|
include ::CarrierWave::MimeTypes
|
12
12
|
include AbAdmin::Utils::EvalHelpers
|
13
13
|
|
14
|
+
class_attribute :transliterate
|
15
|
+
self.transliterate = true
|
16
|
+
|
17
|
+
attr_accessor :internal_identifier
|
18
|
+
|
19
|
+
before :cache, :save_original_name
|
20
|
+
|
14
21
|
storage :file
|
15
22
|
|
16
23
|
process :set_content_type
|
@@ -23,9 +30,81 @@ module AbAdmin
|
|
23
30
|
|
24
31
|
process :set_model_info
|
25
32
|
|
26
|
-
|
33
|
+
def save_original_name(file)
|
34
|
+
model.original_name ||= file.original_filename if file.respond_to?(:original_filename)
|
35
|
+
end
|
36
|
+
|
37
|
+
def full_filename(for_file=filename)
|
38
|
+
ext = File.extname(for_file)
|
39
|
+
human_filename_part = for_file.chomp(ext)
|
40
|
+
tech_filename_part = "#{version_name || secure_token}#{ext}"
|
41
|
+
human_filename_part == secure_token ? tech_filename_part : "#{human_filename_part}_#{tech_filename_part}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def full_original_filename
|
45
|
+
"#{version_name || secure_token}#{File.extname(store_filename)}"
|
46
|
+
end
|
47
|
+
|
48
|
+
# use secure token in the filename for non processed image
|
49
|
+
def secure_token
|
50
|
+
model.data_secure_token ||= AbAdmin.friendly_token(20).downcase
|
51
|
+
end
|
52
|
+
|
53
|
+
def store_model_filename(record)
|
54
|
+
old_file_name = filename
|
55
|
+
new_file_name = model_filename(old_file_name, record)
|
56
|
+
return if new_file_name.blank? || new_file_name == old_file_name
|
57
|
+
rename_via_move(new_file_name)
|
58
|
+
end
|
59
|
+
|
60
|
+
alias_method :store_filename, :filename
|
61
|
+
|
62
|
+
def filename
|
63
|
+
internal_identifier || model.send("#{mounted_as}_file_name") || (store_filename && "#{secure_token}#{File.extname(store_filename)}")
|
64
|
+
end
|
65
|
+
|
66
|
+
def write_internal_identifier(internal_identifier)
|
67
|
+
self.internal_identifier = internal_identifier
|
68
|
+
versions.values.each{|v| v.internal_identifier = internal_identifier }
|
69
|
+
end
|
70
|
+
|
71
|
+
# transliterate original filename
|
72
|
+
# allow to build custom filename
|
73
|
+
def model_filename(base_filename, record)
|
74
|
+
custom_file_name = model.build_filename(base_filename, record)
|
75
|
+
return unless custom_file_name
|
76
|
+
normalize_filename(custom_file_name) + File.extname(base_filename)
|
77
|
+
end
|
78
|
+
|
79
|
+
def normalize_filename(raw_filename)
|
80
|
+
I18n.transliterate(raw_filename).parameterize('_').gsub(/[\-_]+/, '_').downcase
|
81
|
+
end
|
82
|
+
|
83
|
+
# rename files via move
|
84
|
+
def rename_via_move(new_file_name)
|
85
|
+
dir = File.dirname(path)
|
86
|
+
|
87
|
+
moves = []
|
88
|
+
versions.values.unshift(self).each do |v|
|
89
|
+
from_path = File.join(dir, v.full_filename)
|
90
|
+
to_path = File.join(dir, v.full_filename(new_file_name))
|
91
|
+
return false if from_path == to_path || !File.exists?(from_path)
|
92
|
+
moves << [from_path, to_path]
|
93
|
+
end
|
94
|
+
moves.each { |move| FileUtils.mv(*move) }
|
95
|
+
|
96
|
+
write_internal_identifier new_file_name
|
97
|
+
model.send("write_#{mounted_as}_identifier")
|
98
|
+
retrieve_from_store!(new_file_name)
|
99
|
+
new_file_name
|
100
|
+
end
|
101
|
+
|
102
|
+
private :write_internal_identifier, :store_filename, :model_filename
|
103
|
+
|
104
|
+
# prevent large number of subdirectories
|
27
105
|
def store_dir
|
28
|
-
|
106
|
+
str_id = model.id.to_s.rjust(4, '0')
|
107
|
+
[AbAdmin.uploads_dir, model.class.to_s.underscore, str_id[0..2], str_id[3..-1]].join('/')
|
29
108
|
end
|
30
109
|
|
31
110
|
# Strips out all embedded information from the image
|
@@ -86,10 +165,11 @@ module AbAdmin
|
|
86
165
|
end
|
87
166
|
end
|
88
167
|
|
89
|
-
def watermark(
|
168
|
+
def watermark(watermark_path, gravity='SouthEast')
|
90
169
|
manipulate! do |img|
|
91
|
-
|
92
|
-
|
170
|
+
resolved_path = watermark_path.is_a?(Symbol) ? send(watermark_path) : watermark_path
|
171
|
+
watermark_image = ::MiniMagick::Image.open(resolved_path)
|
172
|
+
img.composite(watermark_image) { |c| c.gravity gravity }
|
93
173
|
end
|
94
174
|
end
|
95
175
|
|