avo 0.5.0.beta6 → 0.5.0.beta11
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of avo might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +48 -47
- data/Gemfile.lock +28 -18
- data/Rakefile +14 -14
- data/app/components/avo/common/badge_viewer_component.html.erb +1 -1
- data/app/components/avo/common/gravatar_viewer_component.html.erb +2 -2
- data/app/components/avo/common/gravatar_viewer_component.rb +2 -1
- data/app/components/avo/common/multiple_file_viewer_component.rb +1 -1
- data/app/components/avo/common/single_file_viewer_component.rb +1 -1
- data/app/components/avo/edit/field_wrapper_component.rb +3 -3
- data/app/components/avo/edit/fields/trix_field_component.html.erb +1 -1
- data/app/components/avo/index/field_wrapper_component.html.erb +1 -1
- data/app/components/avo/index/field_wrapper_component.rb +1 -1
- data/app/components/avo/index/fields/belongs_to_field_component.html.erb +1 -5
- data/app/components/avo/index/fields/boolean_group_field_component.html.erb +1 -1
- data/app/components/avo/index/fields/gravatar_field_component.html.erb +2 -1
- data/app/components/avo/index/fields/has_one_field_component.html.erb +1 -5
- data/app/components/avo/index/fields/id_field_component.html.erb +1 -1
- data/app/components/avo/index/grid_item_component.html.erb +2 -2
- data/app/components/avo/index/grid_item_component.rb +10 -9
- data/app/components/avo/index/resource_controls_component.html.erb +12 -4
- data/app/components/avo/index/resource_controls_component.rb +2 -2
- data/app/components/avo/panel_component.rb +7 -6
- data/app/components/avo/resource_component.rb +4 -3
- data/app/components/avo/show/field_wrapper_component.html.erb +1 -1
- data/app/components/avo/show/field_wrapper_component.rb +3 -3
- data/app/components/avo/show/fields/boolean_group_field_component.html.erb +1 -1
- data/app/components/avo/show/fields/external_image_field_component.html.erb +1 -1
- data/app/components/avo/views/resource_edit_component.rb +4 -3
- data/app/components/avo/views/resource_index_component.rb +8 -7
- data/app/components/avo/views/resource_new_component.rb +4 -3
- data/app/components/avo/views/resource_show_component.html.erb +14 -2
- data/app/components/avo/views/resource_show_component.rb +21 -21
- data/app/controllers/avo/actions_controller.rb +34 -32
- data/app/controllers/avo/application_controller.rb +124 -116
- data/app/controllers/avo/attachments_controller.rb +3 -3
- data/app/controllers/avo/base_controller.rb +80 -82
- data/app/controllers/avo/home_controller.rb +2 -2
- data/app/controllers/avo/relations_controller.rb +29 -28
- data/app/controllers/avo/resources_controller.rb +1 -1
- data/app/controllers/avo/search_controller.rb +20 -19
- data/app/helpers/avo/application_helper.rb +49 -43
- data/app/helpers/avo/resources_helper.rb +11 -11
- data/app/mailers/avo/application_mailer.rb +2 -2
- data/app/{frontend/css → packs/entrypoints}/application.css +12 -11
- data/app/{frontend/packs → packs/entrypoints}/application.js +9 -3
- data/app/{frontend → packs}/fonts/nunito-v16-latin-700.eot +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-700.svg +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-700.ttf +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-700.woff +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-700.woff2 +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-regular.eot +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-regular.svg +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-regular.ttf +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-regular.woff +0 -0
- data/app/{frontend → packs}/fonts/nunito-v16-latin-regular.woff2 +0 -0
- data/app/{frontend → packs}/images/logo.png +0 -0
- data/app/{frontend → packs}/importmap.json.erb +0 -0
- data/app/{frontend → packs}/js/controllers/action_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/actions_picker_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/alerts_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/attachments_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/boolean_filter_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/fields/code_field_controller.js +14 -14
- data/app/{frontend → packs}/js/controllers/fields/date_field_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/fields/simple_mde_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/filter_controller.js +20 -3
- data/app/{frontend → packs}/js/controllers/hidden_input_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/item_selector_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/modal_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/per_page_controller.js +5 -1
- data/app/{frontend → packs}/js/controllers/select_filter_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/tippy_controller.js +0 -0
- data/app/{frontend → packs}/js/controllers/toggle_panel_controller.js +0 -0
- data/app/{frontend → packs}/js/helpers/cast_boolean.js +0 -0
- data/app/{frontend → packs}/js/toastr.js +1 -0
- data/app/{frontend/css → packs/stylesheets}/alerts.css +0 -0
- data/app/packs/stylesheets/components/code.css +11 -0
- data/app/{frontend/css → packs/stylesheets}/components/status.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/fonts.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/loader.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/pagination.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/tailwindcss/base.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/tailwindcss/components.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/tailwindcss/utilities.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/tooltips.css +0 -0
- data/app/{frontend/css → packs/stylesheets}/typography.css +0 -0
- data/app/{frontend → packs}/svgs/arrow-circle-right.svg +0 -0
- data/app/{frontend → packs}/svgs/arrow-left.svg +0 -0
- data/app/{frontend → packs}/svgs/avocado.svg +0 -0
- data/app/{frontend → packs}/svgs/badge-check-sm.svg +0 -0
- data/app/{frontend → packs}/svgs/check-circle.svg +0 -0
- data/app/{frontend → packs}/svgs/chevron-down.svg +0 -0
- data/app/{frontend → packs}/svgs/chevron-up.svg +0 -0
- data/app/{frontend → packs}/svgs/code.svg +0 -0
- data/app/{frontend → packs}/svgs/color-swatch.svg +0 -0
- data/app/{frontend → packs}/svgs/document-text.svg +0 -0
- data/app/{frontend → packs}/svgs/download.svg +0 -0
- data/app/{frontend → packs}/svgs/edit.svg +0 -0
- data/app/{frontend → packs}/svgs/exclamation-circle-sm.svg +0 -0
- data/app/{frontend → packs}/svgs/exclamation-sm.svg +0 -0
- data/app/{frontend → packs}/svgs/exclamation.svg +0 -0
- data/app/{frontend → packs}/svgs/eye.svg +0 -0
- data/app/{frontend → packs}/svgs/filter.svg +0 -0
- data/app/{frontend → packs}/svgs/fire.svg +0 -0
- data/app/{frontend → packs}/svgs/game-board.svg +0 -0
- data/app/{frontend → packs}/svgs/globe.svg +0 -0
- data/app/{frontend → packs}/svgs/information-circle-sm.svg +0 -0
- data/app/{frontend → packs}/svgs/information-circle.svg +0 -0
- data/app/{frontend → packs}/svgs/library.svg +0 -0
- data/app/{frontend → packs}/svgs/photograph.svg +0 -0
- data/app/{frontend → packs}/svgs/play.svg +0 -0
- data/app/{frontend → packs}/svgs/plus-circle.svg +0 -0
- data/app/{frontend → packs}/svgs/plus.svg +0 -0
- data/app/{frontend → packs}/svgs/question-mark-circle.svg +0 -0
- data/app/{frontend → packs}/svgs/save.svg +0 -0
- data/app/{frontend → packs}/svgs/selector.svg +0 -0
- data/app/{frontend → packs}/svgs/sort-ascending.svg +0 -0
- data/app/{frontend → packs}/svgs/sort-descending.svg +0 -0
- data/app/{frontend → packs}/svgs/switch-horizontal.svg +0 -0
- data/app/{frontend → packs}/svgs/thumbs-down.svg +0 -0
- data/app/{frontend → packs}/svgs/thumbs-up.svg +0 -0
- data/app/{frontend → packs}/svgs/times.svg +0 -0
- data/app/{frontend → packs}/svgs/trash-sm.svg +0 -0
- data/app/{frontend → packs}/svgs/trash.svg +0 -0
- data/app/{frontend → packs}/svgs/view-grid-add.svg +0 -0
- data/app/{frontend → packs}/svgs/view-grid.svg +0 -0
- data/app/{frontend → packs}/svgs/view-list.svg +0 -0
- data/app/{frontend → packs}/svgs/x-circle.svg +0 -0
- data/app/views/avo/actions/show.html.erb +3 -39
- data/app/views/avo/attachments/show.html.erb +8 -1
- data/app/views/avo/base/_boolean_filter.html.erb +1 -0
- data/app/views/avo/base/_filters.html.erb +1 -0
- data/app/views/avo/base/_select_filter.html.erb +1 -0
- data/app/views/avo/partials/_paginator.html.erb +24 -5
- data/app/views/avo/relations/new.html.erb +5 -1
- data/app/views/layouts/avo/application.html.erb +0 -5
- data/avo.gemspec +31 -30
- data/bin/helpers.rb +0 -0
- data/bin/rspec +1 -0
- data/bin/webpack +3 -1
- data/config/initializers/inline_svg.rb +1 -1
- data/config/initializers/pagy.rb +1 -1
- data/config/routes.rb +12 -12
- data/config/spring.rb +5 -5
- data/config/webpack/aliases.js +1 -1
- data/config/webpack/base.js +14 -0
- data/config/webpack/development.js +2 -2
- data/config/webpack/production.js +2 -2
- data/config/webpack/test.js +2 -2
- data/config/webpacker.yml +5 -44
- data/db/factories.rb +4 -5
- data/lib/avo.rb +6 -6
- data/lib/avo/action_model.rb +20 -0
- data/lib/avo/app.rb +34 -62
- data/lib/avo/base_action.rb +55 -52
- data/lib/avo/base_resource.rb +69 -95
- data/lib/avo/configuration.rb +16 -22
- data/lib/avo/engine.rb +30 -14
- data/lib/avo/fields/badge_field.rb +2 -2
- data/lib/avo/fields/base_field.rb +38 -29
- data/lib/avo/fields/belongs_to_field.rb +13 -12
- data/lib/avo/fields/boolean_field.rb +4 -4
- data/lib/avo/fields/boolean_group_field.rb +3 -3
- data/lib/avo/fields/code_field.rb +4 -4
- data/lib/avo/fields/country_field.rb +2 -2
- data/lib/avo/fields/currency_field.rb +3 -3
- data/lib/avo/fields/date_field.rb +3 -3
- data/lib/avo/fields/date_time_field.rb +2 -2
- data/lib/avo/fields/external_image_field.rb +2 -2
- data/lib/avo/fields/field_extensions/has_field_name.rb +2 -9
- data/lib/avo/fields/field_extensions/visible_in_different_views.rb +34 -33
- data/lib/avo/fields/file_field.rb +1 -1
- data/lib/avo/fields/files_field.rb +2 -2
- data/lib/avo/fields/gravatar_field.rb +10 -10
- data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -1
- data/lib/avo/fields/has_many_field.rb +1 -1
- data/lib/avo/fields/has_one_field.rb +2 -2
- data/lib/avo/fields/heading_field.rb +2 -2
- data/lib/avo/fields/hidden_field.rb +1 -1
- data/lib/avo/fields/id_field.rb +3 -3
- data/lib/avo/fields/key_value_field.rb +12 -12
- data/lib/avo/fields/markdown_field.rb +2 -2
- data/lib/avo/fields/number_field.rb +3 -3
- data/lib/avo/fields/password_field.rb +1 -1
- data/lib/avo/fields/select_field.rb +8 -12
- data/lib/avo/fields/status_field.rb +4 -4
- data/lib/avo/fields/text_field.rb +2 -2
- data/lib/avo/fields/textarea_field.rb +2 -2
- data/lib/avo/fields/trix_field.rb +1 -1
- data/lib/avo/fields_collector.rb +30 -0
- data/lib/avo/filters/base_filter.rb +6 -6
- data/lib/avo/filters/boolean_filter.rb +1 -1
- data/lib/avo/filters/select_filter.rb +1 -1
- data/lib/avo/grid_collector.rb +39 -0
- data/lib/avo/has_context.rb +7 -0
- data/lib/avo/licensing/h_q.rb +56 -55
- data/lib/avo/licensing/license.rb +5 -5
- data/lib/avo/licensing/license_manager.rb +4 -4
- data/lib/avo/licensing/null_license.rb +2 -2
- data/lib/avo/licensing/pro_license.rb +1 -1
- data/lib/avo/loaders/fields_loader.rb +4 -4
- data/lib/avo/services/authorization_service.rb +2 -2
- data/lib/avo/services/panel_service.rb +4 -4
- data/lib/avo/version.rb +1 -1
- data/lib/generators/avo/action_generator.rb +4 -4
- data/lib/generators/avo/controller_generator.rb +4 -4
- data/lib/generators/avo/filter_generator.rb +5 -5
- data/lib/generators/avo/install_generator.rb +8 -8
- data/lib/generators/avo/locales_generator.rb +5 -5
- data/lib/generators/avo/partials_generator.rb +4 -4
- data/lib/generators/avo/resource_generator.rb +5 -5
- data/lib/generators/avo/templates/action.tt +1 -5
- data/lib/generators/avo/templates/resource/resource.tt +3 -13
- data/lib/tasks/avo_tasks.rake +13 -14
- data/public/avo-packs/css/application-4e16d6a6.css +5975 -0
- data/public/avo-packs/css/application-4e16d6a6.css.br +0 -0
- data/public/avo-packs/css/application-4e16d6a6.css.gz +0 -0
- data/public/avo-packs/css/application-4e16d6a6.css.map +1 -0
- data/public/avo-packs/css/application-4e16d6a6.css.map.br +0 -0
- data/public/avo-packs/css/application-4e16d6a6.css.map.gz +0 -0
- data/public/avo-packs/js/219-9aa2b689f44613118203.chunk.js +2 -0
- data/public/avo-packs/js/219-9aa2b689f44613118203.chunk.js.br +0 -0
- data/public/avo-packs/js/219-9aa2b689f44613118203.chunk.js.gz +0 -0
- data/public/avo-packs/js/219-9aa2b689f44613118203.chunk.js.map +1 -0
- data/public/avo-packs/js/219-9aa2b689f44613118203.chunk.js.map.br +0 -0
- data/public/avo-packs/js/219-9aa2b689f44613118203.chunk.js.map.gz +0 -0
- data/public/avo-packs/js/application-8eb130a4688f2c667703.js +26 -0
- data/public/avo-packs/js/{application-8849c6e2c8f75d55c666.js.LICENSE.txt → application-8eb130a4688f2c667703.js.LICENSE.txt} +17 -17
- data/public/avo-packs/js/application-8eb130a4688f2c667703.js.br +0 -0
- data/public/avo-packs/js/application-8eb130a4688f2c667703.js.gz +0 -0
- data/public/avo-packs/js/application-8eb130a4688f2c667703.js.map +1 -0
- data/public/avo-packs/js/application-8eb130a4688f2c667703.js.map.br +0 -0
- data/public/avo-packs/js/application-8eb130a4688f2c667703.js.map.gz +0 -0
- data/public/avo-packs/manifest.json +46 -23
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-00fbd8a72a3708b8314cce5f0515640e.svg → images/13ae283c0d7cc04efe7e.svg} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-00fbd8a72a3708b8314cce5f0515640e.svg.br → images/13ae283c0d7cc04efe7e.svg.br} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-00fbd8a72a3708b8314cce5f0515640e.svg.gz → images/13ae283c0d7cc04efe7e.svg.gz} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-35bd1c96bc2e402cf22ea812ae067995.svg → images/195026a50008c53526ef.svg} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-35bd1c96bc2e402cf22ea812ae067995.svg.br → images/195026a50008c53526ef.svg.br} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-35bd1c96bc2e402cf22ea812ae067995.svg.gz → images/195026a50008c53526ef.svg.gz} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-cb632c9fe211ba2c2bf1564c9a9295cc.woff → images/1f30e08faa7c60d1f7ac.woff} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-2cc22f9c0cf217cbfc371f3b74992305.ttf → images/1fd17dabf6b7d2b15348.ttf} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-2cc22f9c0cf217cbfc371f3b74992305.ttf.br → images/1fd17dabf6b7d2b15348.ttf.br} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-2cc22f9c0cf217cbfc371f3b74992305.ttf.gz → images/1fd17dabf6b7d2b15348.ttf.gz} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-bcf84d6cb8a0ac214c8c14ba9af834f3.woff2 → images/39a18f443d434999b89b.woff2} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-412073df419ad5f6f8f2ea76eb4aced9.woff2 → images/4ad349571e28bb59c5a5.woff2} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-2fae1e2418251b68fe5d0505ab93dd5c.eot → images/57a5470848663767abbf.eot} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-df8c4bee41b6ca0ed2b7b71456ed7fbb.ttf → images/b2e4cf0fab6c8ca66b7f.ttf} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-df8c4bee41b6ca0ed2b7b71456ed7fbb.ttf.br → images/b2e4cf0fab6c8ca66b7f.ttf.br} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-regular-df8c4bee41b6ca0ed2b7b71456ed7fbb.ttf.gz → images/b2e4cf0fab6c8ca66b7f.ttf.gz} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-df7e79af617f98cd3b95d320e8b2a1af.eot → images/b78d61ab7e046de8c156.eot} +0 -0
- data/public/avo-packs/media/{fonts/nunito-v16-latin-700-7c472b19cb573f537bad8ef62ca917ac.woff → images/c9ab29becb76ddab01d0.woff} +0 -0
- data/public/avo-packs/media/images/{logo-edf8d8d0d263e0c1f73bb32a222d9991.png → f1b4befac91a3336db9a.png} +0 -0
- metadata +144 -127
- data/app/frontend/css/components/code.css +0 -27
- data/app/views/layouts/avo/application_vue.html.erb +0 -61
- data/config/webpack/environment.js +0 -18
- data/db/migrate/20210305082639_add_url_to_teams.rb +0 -5
- data/public/avo-packs/css/application-c75ac28c.css +0 -6
- data/public/avo-packs/css/application-c75ac28c.css.br +0 -0
- data/public/avo-packs/css/application-c75ac28c.css.gz +0 -0
- data/public/avo-packs/js/1-0565987ca0c3045602ad.chunk.js +0 -2
- data/public/avo-packs/js/1-0565987ca0c3045602ad.chunk.js.br +0 -0
- data/public/avo-packs/js/1-0565987ca0c3045602ad.chunk.js.gz +0 -0
- data/public/avo-packs/js/1-0565987ca0c3045602ad.chunk.js.map +0 -1
- data/public/avo-packs/js/1-0565987ca0c3045602ad.chunk.js.map.br +0 -0
- data/public/avo-packs/js/1-0565987ca0c3045602ad.chunk.js.map.gz +0 -0
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js +0 -26
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.br +0 -0
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.gz +0 -0
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.map +0 -1
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.map.br +0 -0
- data/public/avo-packs/js/application-8849c6e2c8f75d55c666.js.map.gz +0 -0
- data/public/avo-packs/manifest.json.br +0 -0
- data/public/avo-packs/manifest.json.gz +0 -0
@@ -1,10 +1,10 @@
|
|
1
|
-
require_dependency
|
1
|
+
require_dependency "avo/application_controller"
|
2
2
|
|
3
3
|
module Avo
|
4
4
|
class HomeController < ApplicationController
|
5
5
|
def index
|
6
6
|
unless Rails.env.development?
|
7
|
-
redirect_to resources_path Avo::App.get_resources.
|
7
|
+
redirect_to resources_path Avo::App.get_resources.min_by { |resource| resource.route_key }.model_class
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_dependency
|
1
|
+
require_dependency "avo/base_controller"
|
2
2
|
|
3
3
|
module Avo
|
4
4
|
class RelationsController < BaseController
|
@@ -41,15 +41,15 @@ module Avo
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def create
|
44
|
-
if reflection_class ==
|
45
|
-
@model.send(
|
44
|
+
if reflection_class == "HasManyReflection"
|
45
|
+
@model.send(params[:related_name].to_s) << @attachment_model
|
46
46
|
else
|
47
47
|
@model.send("#{params[:related_name]}=", @attachment_model)
|
48
48
|
end
|
49
49
|
|
50
50
|
respond_to do |format|
|
51
51
|
if @model.save
|
52
|
-
format.html { redirect_to resource_path(@model), notice: t(
|
52
|
+
format.html { redirect_to resource_path(@model), notice: t("avo.attachment_class_attached", attachment_class: @attachment_class) }
|
53
53
|
format.json { render :show, status: :created, location: resource_path(@model) }
|
54
54
|
else
|
55
55
|
format.html { render :new }
|
@@ -59,45 +59,46 @@ module Avo
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def destroy
|
62
|
-
if reflection_class ==
|
63
|
-
@model.send(
|
62
|
+
if reflection_class == "HasManyReflection"
|
63
|
+
@model.send(params[:related_name].to_s).delete @attachment_model
|
64
64
|
else
|
65
65
|
@model.send("#{params[:related_name]}=", nil)
|
66
66
|
end
|
67
67
|
|
68
68
|
respond_to do |format|
|
69
|
-
format.html { redirect_to params[:referrer] ||
|
69
|
+
format.html { redirect_to params[:referrer] || resource_path(@model), notice: t("avo.attachment_class_detached", attachment_class: @attachment_class) }
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
73
|
private
|
74
|
-
def set_attachment_class
|
75
|
-
@attachment_class = @model._reflections[params[:related_name].to_s].klass
|
76
|
-
end
|
77
74
|
|
78
|
-
|
79
|
-
|
80
|
-
|
75
|
+
def set_attachment_class
|
76
|
+
@attachment_class = @model._reflections[params[:related_name].to_s].klass
|
77
|
+
end
|
81
78
|
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
def set_attachment_resource
|
80
|
+
@attachment_resource = App.get_resource_by_model_name @attachment_class
|
81
|
+
end
|
85
82
|
|
86
|
-
|
87
|
-
|
88
|
-
|
83
|
+
def set_attachment_model
|
84
|
+
@attachment_model = @model._reflections[params[:related_name].to_s].klass.find attachment_id
|
85
|
+
end
|
89
86
|
|
90
|
-
|
91
|
-
|
92
|
-
|
87
|
+
def set_reflection
|
88
|
+
@reflection = @model._reflections[params[:related_name].to_s]
|
89
|
+
end
|
90
|
+
|
91
|
+
def attachment_id
|
92
|
+
params[:related_id] || params.require(:fields).permit(:related_id)[:related_id]
|
93
|
+
end
|
93
94
|
|
94
|
-
|
95
|
-
|
95
|
+
def reflection_class
|
96
|
+
reflection = @model._reflections[params[:related_name]]
|
96
97
|
|
97
|
-
|
98
|
-
|
98
|
+
klass = reflection.class.name.demodulize.to_s
|
99
|
+
klass = reflection.through_reflection.class.name.demodulize.to_s if klass == "ThroughReflection"
|
99
100
|
|
100
|
-
|
101
|
-
|
101
|
+
klass
|
102
|
+
end
|
102
103
|
end
|
103
104
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_dependency
|
1
|
+
require_dependency "avo/application_controller"
|
2
2
|
|
3
3
|
module Avo
|
4
4
|
class SearchController < ApplicationController
|
@@ -8,9 +8,9 @@ module Avo
|
|
8
8
|
@authorization.set_record(resource_model).authorize_action :index
|
9
9
|
resources = []
|
10
10
|
|
11
|
-
|
11
|
+
App.get_resources
|
12
12
|
.select { |resource| resource.search.present? }
|
13
|
-
.select { |resource| AuthorizationService.authorize_action _current_user, resource.model,
|
13
|
+
.select { |resource| AuthorizationService.authorize_action _current_user, resource.model, "index" }
|
14
14
|
.each do |resource_model|
|
15
15
|
found_resources = add_link_to_search_results(search_resource(resource_model), resource_model)
|
16
16
|
resources.push({
|
@@ -31,26 +31,27 @@ module Avo
|
|
31
31
|
end
|
32
32
|
|
33
33
|
private
|
34
|
-
def add_link_to_search_results(resources, avo_resource)
|
35
|
-
resources.map do |model|
|
36
|
-
{
|
37
|
-
id: model.id,
|
38
|
-
search_label: model.send(avo_resource.class.title),
|
39
|
-
link: "/resources/#{model.class.to_s.singularize.underscore}/#{model.id}",
|
40
|
-
}
|
41
|
-
end
|
42
|
-
end
|
43
34
|
|
44
|
-
|
45
|
-
|
35
|
+
def add_link_to_search_results(resources, avo_resource)
|
36
|
+
resources.map do |model|
|
37
|
+
{
|
38
|
+
id: model.id,
|
39
|
+
search_label: model.send(avo_resource.class.title),
|
40
|
+
link: "/resources/#{model.class.to_s.singularize.underscore}/#{model.id}"
|
41
|
+
}
|
46
42
|
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def search_resource(avo_resource)
|
46
|
+
avo_resource.query_search(query: params[:q], via_resource_name: params[:via_resource_name], via_resource_id: params[:via_resource_id], user: _current_user)
|
47
|
+
end
|
47
48
|
|
48
|
-
|
49
|
-
|
49
|
+
# def authorize_user
|
50
|
+
# return if params[:action] == 'index'
|
50
51
|
|
51
|
-
|
52
|
+
# action = params[:action] == 'resource' ? :index : params[:action]
|
52
53
|
|
53
|
-
|
54
|
-
|
54
|
+
# return render_unauthorized unless AuthorizationService::authorize_action _current_user, avo_resource.model, action
|
55
|
+
# end
|
55
56
|
end
|
56
57
|
end
|
@@ -8,32 +8,40 @@ module Avo
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def render_logo
|
11
|
-
render partial:
|
11
|
+
render partial: "vendor/avo/partials/logo"
|
12
|
+
rescue
|
13
|
+
render partial: "avo/partials/logo"
|
12
14
|
end
|
13
15
|
|
14
16
|
def render_header
|
15
|
-
render partial:
|
17
|
+
render partial: "vendor/avo/partials/header"
|
18
|
+
rescue
|
19
|
+
render partial: "avo/partials/header"
|
16
20
|
end
|
17
21
|
|
18
22
|
def render_footer
|
19
|
-
render partial:
|
23
|
+
render partial: "vendor/avo/partials/footer"
|
24
|
+
rescue
|
25
|
+
render partial: "avo/partials/footer"
|
20
26
|
end
|
21
27
|
|
22
28
|
def render_scripts
|
23
|
-
render partial:
|
29
|
+
render partial: "vendor/avo/partials/scripts"
|
30
|
+
rescue
|
31
|
+
""
|
24
32
|
end
|
25
33
|
|
26
34
|
def render_license_warnings
|
27
|
-
render partial:
|
28
|
-
license: Avo::App.license.properties
|
35
|
+
render partial: "avo/sidebar/license_warnings", locals: {
|
36
|
+
license: Avo::App.license.properties
|
29
37
|
}
|
30
38
|
end
|
31
39
|
|
32
|
-
def render_license_warning(title:
|
33
|
-
render partial:
|
40
|
+
def render_license_warning(title: "", message: "", icon: "exclamation")
|
41
|
+
render partial: "avo/sidebar/license_warning", locals: {
|
34
42
|
title: title,
|
35
43
|
message: message,
|
36
|
-
icon: icon
|
44
|
+
icon: icon
|
37
45
|
}
|
38
46
|
end
|
39
47
|
|
@@ -44,7 +52,7 @@ module Avo
|
|
44
52
|
end
|
45
53
|
|
46
54
|
def empty_state(resource_name)
|
47
|
-
render partial:
|
55
|
+
render partial: "avo/partials/empty_state", locals: {resource_name: resource_name}
|
48
56
|
end
|
49
57
|
|
50
58
|
def turbo_frame_start(name)
|
@@ -52,7 +60,7 @@ module Avo
|
|
52
60
|
end
|
53
61
|
|
54
62
|
def turbo_frame_end(name)
|
55
|
-
|
63
|
+
"</turbo-frame>".html_safe if name.present?
|
56
64
|
end
|
57
65
|
|
58
66
|
def a_button(label = nil, **args, &block)
|
@@ -60,37 +68,37 @@ module Avo
|
|
60
68
|
|
61
69
|
locals = {
|
62
70
|
label: label,
|
63
|
-
args: args
|
71
|
+
args: args
|
64
72
|
}
|
65
73
|
|
66
|
-
if
|
67
|
-
render layout:
|
74
|
+
if block
|
75
|
+
render layout: "avo/partials/a_button", locals: locals do
|
68
76
|
capture(&block)
|
69
77
|
end
|
70
78
|
else
|
71
|
-
render partial:
|
79
|
+
render partial: "avo/partials/a_button", locals: locals
|
72
80
|
end
|
73
81
|
end
|
74
82
|
|
75
83
|
def a_link(label, url = nil, **args, &block)
|
76
84
|
args[:class] = button_classes(args[:class], color: args[:color], variant: args[:variant], size: args[:size])
|
77
85
|
|
78
|
-
if
|
86
|
+
if block
|
79
87
|
url = label
|
80
88
|
end
|
81
89
|
|
82
90
|
locals = {
|
83
91
|
label: label,
|
84
92
|
url: url,
|
85
|
-
args: args
|
93
|
+
args: args
|
86
94
|
}
|
87
95
|
|
88
|
-
if
|
89
|
-
render layout:
|
96
|
+
if block
|
97
|
+
render layout: "avo/partials/a_link", locals: locals do
|
90
98
|
capture(&block)
|
91
99
|
end
|
92
100
|
else
|
93
|
-
render partial:
|
101
|
+
render partial: "avo/partials/a_link", locals: locals
|
94
102
|
end
|
95
103
|
end
|
96
104
|
|
@@ -98,27 +106,27 @@ module Avo
|
|
98
106
|
classes = "inline-flex flex-grow-0 items-center text-sm font-bold leading-none fill-current whitespace-nowrap transition duration-100 rounded-lg shadow-xl transform transition duration-100 active:translate-x-px active:translate-y-px cursor-pointer disabled:cursor-not-allowed #{extra_classes}"
|
99
107
|
|
100
108
|
if color.present?
|
101
|
-
if variant.present?
|
102
|
-
classes +=
|
109
|
+
if variant.present? && (variant.to_sym == :outlined)
|
110
|
+
classes += " bg-white border"
|
103
111
|
|
104
112
|
classes += " hover:border-#{color}-700 border-#{color}-600 text-#{color}-600 hover:text-#{color}-700 disabled:border-gray-300 disabled:text-gray-600"
|
105
113
|
else
|
106
114
|
classes += " text-white bg-#{color}-500 hover:bg-#{color}-600 disabled:bg-#{color}-300"
|
107
115
|
end
|
108
116
|
else
|
109
|
-
classes +=
|
117
|
+
classes += " text-gray-700 bg-white hover:bg-gray-100 disabled:bg-gray-300"
|
110
118
|
end
|
111
119
|
|
112
120
|
size = size.present? ? size.to_sym : :md
|
113
|
-
case size
|
121
|
+
classes += case size
|
114
122
|
when :xs
|
115
|
-
|
123
|
+
" p-2 py-1"
|
116
124
|
when :sm
|
117
|
-
|
125
|
+
" p-3"
|
118
126
|
when :md
|
119
|
-
|
127
|
+
" p-4"
|
120
128
|
else
|
121
|
-
|
129
|
+
" p-4"
|
122
130
|
end
|
123
131
|
|
124
132
|
classes
|
@@ -126,23 +134,23 @@ module Avo
|
|
126
134
|
|
127
135
|
def svg(file_name, **args)
|
128
136
|
options = {}
|
129
|
-
options[:class]
|
130
|
-
options[:class] += args[:extra_class].present? ? " #{args[:extra_class]}" :
|
137
|
+
options[:class] = args[:class].present? ? args[:class] : "h-4 mr-1"
|
138
|
+
options[:class] += args[:extra_class].present? ? " #{args[:extra_class]}" : ""
|
131
139
|
|
132
140
|
# Create the path to the svgs directory
|
133
|
-
file_path = "#{Avo::Engine.root}/app/
|
134
|
-
file_path = "#{file_path}.svg" unless file_path.end_with?
|
141
|
+
file_path = "#{Avo::Engine.root}/app/packs/svgs/#{file_name}"
|
142
|
+
file_path = "#{file_path}.svg" unless file_path.end_with? ".svg"
|
135
143
|
|
136
144
|
# Create a cache hash
|
137
|
-
hash = Digest::MD5.hexdigest "#{file_path.underscore}_#{options
|
145
|
+
hash = Digest::MD5.hexdigest "#{file_path.underscore}_#{options}"
|
138
146
|
|
139
147
|
svg_content = Avo::App.cache_store.fetch "svg_file_#{hash}", expires_in: 1.year, cache_nils: false do
|
140
|
-
if File.
|
148
|
+
if File.exist?(file_path)
|
141
149
|
file = File.read(file_path)
|
142
150
|
|
143
151
|
# parse svg
|
144
152
|
doc = Nokogiri::HTML::DocumentFragment.parse file
|
145
|
-
svg = doc.at_css
|
153
|
+
svg = doc.at_css "svg"
|
146
154
|
|
147
155
|
# attach options
|
148
156
|
options.each do |attr, value|
|
@@ -151,23 +159,21 @@ module Avo
|
|
151
159
|
|
152
160
|
# cast to html
|
153
161
|
doc.to_html.html_safe
|
154
|
-
else
|
155
|
-
nil
|
156
162
|
end
|
157
163
|
end
|
158
164
|
|
159
|
-
return
|
165
|
+
return "(not found)" if svg_content.to_s.blank?
|
160
166
|
|
161
167
|
svg_content
|
162
168
|
end
|
163
169
|
|
164
|
-
def input_classes(extra_classes =
|
165
|
-
classes =
|
170
|
+
def input_classes(extra_classes = "", has_error: false)
|
171
|
+
classes = "appearance-none inline-flex bg-blue-gray-100 disabled:bg-blue-gray-300 disabled:cursor-not-allowed focus:bg-white text-blue-gray-700 disabled:text-blue-gray-700 rounded-md py-2 px-3 leading-tight border outline-none outline"
|
166
172
|
|
167
|
-
if has_error
|
168
|
-
|
173
|
+
classes += if has_error
|
174
|
+
" border-red-600"
|
169
175
|
else
|
170
|
-
|
176
|
+
" border-blue-gray-300"
|
171
177
|
end
|
172
178
|
|
173
179
|
classes += " #{extra_classes}"
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module Avo
|
2
2
|
module ResourcesHelper
|
3
3
|
def resource_table(resources, resource)
|
4
|
-
render partial:
|
4
|
+
render partial: "avo/partials/resource_table", locals: {
|
5
5
|
resources: resources,
|
6
|
-
resource: resource
|
6
|
+
resource: resource
|
7
7
|
}
|
8
8
|
end
|
9
9
|
|
10
10
|
def resource_grid(resources, resource)
|
11
|
-
render partial:
|
11
|
+
render partial: "avo/partials/resource_grid", locals: {
|
12
12
|
resources: resources,
|
13
|
-
resource: resource
|
13
|
+
resource: resource
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
@@ -23,7 +23,7 @@ module Avo
|
|
23
23
|
render partial: field.partial_path_for(:index), locals: {
|
24
24
|
field: field,
|
25
25
|
index: index,
|
26
|
-
resource: resource
|
26
|
+
resource: resource
|
27
27
|
}
|
28
28
|
end
|
29
29
|
end
|
@@ -37,7 +37,7 @@ module Avo
|
|
37
37
|
render partial: field.partial_path_for(:show), locals: {
|
38
38
|
field: field,
|
39
39
|
index: index,
|
40
|
-
resource: resource
|
40
|
+
resource: resource
|
41
41
|
}
|
42
42
|
end
|
43
43
|
end
|
@@ -53,7 +53,7 @@ module Avo
|
|
53
53
|
index: index,
|
54
54
|
resource: resource,
|
55
55
|
form: form,
|
56
|
-
displayed_in_modal: displayed_in_modal
|
56
|
+
displayed_in_modal: displayed_in_modal
|
57
57
|
}
|
58
58
|
end
|
59
59
|
end
|
@@ -77,9 +77,9 @@ module Avo
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def filter_wrapper(name: nil, index: nil, **args, &block)
|
80
|
-
render layout:
|
80
|
+
render layout: "layouts/avo/filter_wrapper", locals: {
|
81
81
|
name: name,
|
82
|
-
index: index
|
82
|
+
index: index
|
83
83
|
} do
|
84
84
|
capture(&block)
|
85
85
|
end
|
@@ -91,9 +91,9 @@ module Avo
|
|
91
91
|
|
92
92
|
def item_selector_input(floating: false, size: :md)
|
93
93
|
"<input type='checkbox'
|
94
|
-
class='mx-3 #{
|
94
|
+
class='mx-3 #{"absolute inset-auto left-0 mt-2 z-10 hidden group-hover:block checked:block" if floating} #{size.to_sym == :lg ? "w-5 h-5" : "w-4 h-4"}'
|
95
95
|
data-action='input->item-selector#toggle'
|
96
|
-
title='#{t
|
96
|
+
title='#{t "avo.select_item"}'
|
97
97
|
data-tippy='tooltip'
|
98
98
|
/>"
|
99
99
|
end
|