alchemy_cms 6.1.5 → 7.0.0.pre.b
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/brakeman-analysis.yml +2 -2
- data/.github/workflows/ci.yml +7 -10
- data/.github/workflows/lint.yml +17 -0
- data/.gitignore +1 -6
- data/.hound.yml +2 -3
- data/.rubocop.yml +4 -350
- data/.standard.yml +3 -0
- data/CHANGELOG.md +49 -19
- data/Gemfile +4 -2
- data/README.md +7 -9
- data/Rakefile +12 -7
- data/alchemy_cms.gemspec +3 -3
- data/app/assets/javascripts/alchemy/admin.js +0 -1
- data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +18 -32
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +33 -30
- data/app/assets/stylesheets/alchemy/elements.scss +16 -35
- data/app/assets/stylesheets/alchemy/forms.scss +0 -4
- data/app/assets/stylesheets/alchemy/node-select.scss +2 -2
- data/app/components/alchemy/ingredients/audio_view.rb +37 -0
- data/app/components/alchemy/ingredients/base_view.rb +38 -0
- data/app/components/alchemy/ingredients/boolean_view.rb +13 -0
- data/app/components/alchemy/ingredients/datetime_view.rb +22 -0
- data/app/components/alchemy/ingredients/file_view.rb +40 -0
- data/app/components/alchemy/ingredients/headline_view.rb +20 -0
- data/app/components/alchemy/ingredients/html_view.rb +9 -0
- data/app/components/alchemy/ingredients/link_view.rb +25 -0
- data/app/components/alchemy/ingredients/node_view.rb +11 -0
- data/app/components/alchemy/ingredients/page_view.rb +15 -0
- data/app/components/alchemy/ingredients/picture_view.rb +108 -0
- data/app/components/alchemy/ingredients/richtext_view.rb +22 -0
- data/app/components/alchemy/ingredients/select_view.rb +6 -0
- data/app/components/alchemy/ingredients/text_view.rb +41 -0
- data/app/components/alchemy/ingredients/video_view.rb +39 -0
- data/app/controllers/alchemy/admin/attachments_controller.rb +3 -4
- data/app/controllers/alchemy/admin/base_controller.rb +7 -7
- data/app/controllers/alchemy/admin/clipboard_controller.rb +2 -2
- data/app/controllers/alchemy/admin/elements_controller.rb +33 -43
- data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/nodes_controller.rb +2 -2
- data/app/controllers/alchemy/admin/pages_controller.rb +11 -11
- data/app/controllers/alchemy/admin/pictures_controller.rb +15 -15
- data/app/controllers/alchemy/admin/resources_controller.rb +28 -46
- data/app/controllers/alchemy/admin/styleguide_controller.rb +1 -0
- data/app/controllers/alchemy/admin/tags_controller.rb +11 -11
- data/app/controllers/alchemy/api/base_controller.rb +2 -2
- data/app/controllers/alchemy/api/elements_controller.rb +11 -13
- data/app/controllers/alchemy/api/ingredients_controller.rb +1 -1
- data/app/controllers/alchemy/api/nodes_controller.rb +1 -1
- data/app/controllers/alchemy/api/pages_controller.rb +14 -12
- data/app/controllers/alchemy/attachments_controller.rb +3 -3
- data/app/controllers/alchemy/base_controller.rb +1 -1
- data/app/controllers/alchemy/messages_controller.rb +18 -18
- data/app/controllers/alchemy/pages_controller.rb +10 -16
- data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +1 -0
- data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +5 -7
- data/app/controllers/concerns/alchemy/legacy_page_redirects.rb +5 -5
- data/app/decorators/alchemy/element_editor.rb +13 -33
- data/app/decorators/alchemy/ingredient_editor.rb +6 -6
- data/app/helpers/alchemy/admin/attachments_helper.rb +1 -1
- data/app/helpers/alchemy/admin/base_helper.rb +21 -22
- data/app/helpers/alchemy/admin/elements_helper.rb +1 -3
- data/app/helpers/alchemy/admin/form_helper.rb +1 -1
- data/app/helpers/alchemy/admin/navigation_helper.rb +7 -7
- data/app/helpers/alchemy/admin/pages_helper.rb +2 -2
- data/app/helpers/alchemy/admin/tags_helper.rb +3 -3
- data/app/helpers/alchemy/base_helper.rb +2 -2
- data/app/helpers/alchemy/elements_block_helper.rb +13 -48
- data/app/helpers/alchemy/elements_helper.rb +15 -23
- data/app/helpers/alchemy/pages_helper.rb +11 -15
- data/app/helpers/alchemy/url_helper.rb +1 -1
- data/app/mailers/alchemy/messages_mailer.rb +1 -1
- data/app/models/alchemy/attachment.rb +12 -9
- data/app/models/alchemy/base_record.rb +3 -0
- data/app/models/alchemy/eager_loading.rb +6 -7
- data/app/models/alchemy/element/definitions.rb +1 -1
- data/app/models/alchemy/element/element_ingredients.rb +4 -11
- data/app/models/alchemy/element/presenters.rb +9 -25
- data/app/models/alchemy/element.rb +4 -19
- data/app/models/alchemy/elements_repository.rb +1 -1
- data/app/models/alchemy/image_cropper_settings.rb +2 -2
- data/app/models/alchemy/ingredient.rb +29 -16
- data/app/models/alchemy/ingredient_validator.rb +1 -1
- data/app/models/alchemy/ingredients/audio.rb +2 -0
- data/app/models/alchemy/ingredients/datetime.rb +3 -1
- data/app/models/alchemy/ingredients/file.rb +7 -0
- data/app/models/alchemy/ingredients/headline.rb +6 -0
- data/app/models/alchemy/ingredients/link.rb +2 -0
- data/app/models/alchemy/ingredients/node.rb +2 -0
- data/app/models/alchemy/ingredients/page.rb +2 -0
- data/app/models/alchemy/ingredients/picture.rb +29 -0
- data/app/models/alchemy/ingredients/richtext.rb +17 -8
- data/app/models/alchemy/ingredients/select.rb +1 -0
- data/app/models/alchemy/ingredients/text.rb +8 -0
- data/app/models/alchemy/ingredients/video.rb +2 -0
- data/app/models/alchemy/language/code.rb +1 -1
- data/app/models/alchemy/language.rb +4 -4
- data/app/models/alchemy/legacy_page_url.rb +1 -1
- data/app/models/alchemy/node.rb +11 -8
- data/app/models/alchemy/page/page_elements.rb +19 -40
- data/app/models/alchemy/page/page_layouts.rb +0 -14
- data/app/models/alchemy/page/page_naming.rb +4 -4
- data/app/models/alchemy/page/page_natures.rb +1 -11
- data/app/models/alchemy/page/page_scopes.rb +5 -5
- data/app/models/alchemy/page.rb +11 -19
- data/app/models/alchemy/picture/calculations.rb +2 -2
- data/app/models/alchemy/picture/transformations.rb +2 -32
- data/app/models/alchemy/picture/url.rb +5 -5
- data/app/models/alchemy/picture.rb +22 -20
- data/app/models/alchemy/picture_thumb/create.rb +7 -18
- data/app/models/alchemy/picture_thumb/file_store.rb +33 -0
- data/app/models/alchemy/picture_thumb.rb +11 -11
- data/app/models/alchemy/picture_variant.rb +2 -3
- data/app/models/alchemy/tag.rb +8 -0
- data/app/models/concerns/alchemy/picture_thumbnails.rb +8 -8
- data/app/serializers/alchemy/base_serializer.rb +1 -1
- data/app/serializers/alchemy/element_serializer.rb +1 -6
- data/app/serializers/alchemy/page_tree_serializer.rb +7 -7
- data/app/services/alchemy/delete_elements.rb +1 -7
- data/app/services/alchemy/duplicate_element.rb +2 -7
- data/app/services/alchemy/tag_validations.rb +1 -1
- data/app/views/alchemy/admin/elements/_element.html.erb +8 -22
- data/app/views/alchemy/admin/elements/create.js.erb +1 -1
- data/app/views/alchemy/admin/elements/fold.js.erb +2 -2
- data/app/views/alchemy/admin/elements/order.js.erb +1 -1
- data/app/views/alchemy/admin/elements/update.js.erb +1 -2
- data/app/views/alchemy/admin/pages/_external_link.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_file_link.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +2 -2
- data/app/views/alchemy/admin/pages/edit.html.erb +1 -4
- data/app/views/alchemy/admin/pages/update.js.erb +10 -4
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -3
- data/app/views/alchemy/admin/pictures/_infos.html.erb +4 -6
- data/app/views/alchemy/ingredients/_audio_view.html.erb +1 -14
- data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_boolean_view.html.erb +1 -1
- data/app/views/alchemy/ingredients/_datetime_view.html.erb +3 -9
- data/app/views/alchemy/ingredients/_file_view.html.erb +3 -16
- data/app/views/alchemy/ingredients/_headline_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_headline_view.html.erb +4 -10
- data/app/views/alchemy/ingredients/_html_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_html_view.html.erb +1 -1
- data/app/views/alchemy/ingredients/_link_view.html.erb +4 -9
- data/app/views/alchemy/ingredients/_node_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_node_view.html.erb +1 -1
- data/app/views/alchemy/ingredients/_page_view.html.erb +1 -4
- data/app/views/alchemy/ingredients/_picture_editor.html.erb +4 -4
- data/app/views/alchemy/ingredients/_picture_view.html.erb +4 -5
- data/app/views/alchemy/ingredients/_richtext_editor.html.erb +11 -2
- data/app/views/alchemy/ingredients/_richtext_view.html.erb +3 -3
- data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -2
- data/app/views/alchemy/ingredients/_select_view.html.erb +1 -1
- data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_text_view.html.erb +3 -19
- data/app/views/alchemy/ingredients/_video_view.html.erb +3 -18
- data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +4 -3
- data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +1 -0
- data/app/views/alchemy/pages/_meta_data.html.erb +0 -1
- data/app/views/layouts/alchemy/admin.html.erb +10 -8
- data/bin/setup +37 -0
- data/bin/start +17 -0
- data/config/alchemy/config.yml +6 -6
- data/config/brakeman.ignore +56 -57
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/dragonfly.rb +1 -0
- data/config/initializers/mime_types.rb +1 -0
- data/config/initializers/mini_profiler.rb +1 -0
- data/config/initializers/simple_form.rb +3 -2
- data/config/locales/alchemy.en.yml +98 -112
- data/config/routes.rb +22 -36
- data/config/spring.rb +1 -0
- data/db/migrate/20230121212637_alchemy_six_point_one.rb +248 -0
- data/db/migrate/20230505132743_add_indexes_to_alchemy_pictures.rb +6 -0
- data/lib/alchemy/admin/locale.rb +3 -3
- data/lib/alchemy/admin/preview_url.rb +2 -2
- data/lib/alchemy/auth_accessors.rb +1 -1
- data/lib/alchemy/cache_digests/template_tracker.rb +6 -7
- data/lib/alchemy/config.rb +3 -3
- data/lib/alchemy/controller_actions.rb +4 -4
- data/lib/alchemy/deprecation.rb +2 -1
- data/lib/alchemy/dragonfly/processors/thumbnail.rb +1 -1
- data/lib/alchemy/element_definition.rb +2 -2
- data/lib/alchemy/engine.rb +2 -1
- data/lib/alchemy/errors.rb +0 -11
- data/lib/alchemy/filetypes.rb +7 -7
- data/lib/alchemy/forms/builder.rb +4 -4
- data/lib/alchemy/hints.rb +10 -10
- data/lib/alchemy/i18n.rb +6 -4
- data/lib/alchemy/install/tasks.rb +2 -1
- data/lib/alchemy/name_conversions.rb +1 -1
- data/lib/alchemy/page_layout.rb +1 -1
- data/lib/alchemy/permissions.rb +5 -17
- data/lib/alchemy/resource.rb +10 -10
- data/lib/alchemy/resources_helper.rb +7 -7
- data/lib/alchemy/routing_constraints.rb +5 -5
- data/lib/alchemy/searchable_resource.rb +38 -0
- data/lib/alchemy/seeder.rb +4 -3
- data/lib/alchemy/shell.rb +2 -1
- data/lib/alchemy/taggable.rb +3 -2
- data/lib/alchemy/tasks/tidy.rb +1 -38
- data/lib/alchemy/test_support/capybara_helpers.rb +69 -0
- data/lib/alchemy/test_support/config_stubbing.rb +1 -0
- data/lib/alchemy/test_support/factories/element_factory.rb +2 -4
- data/lib/alchemy/test_support/factories/ingredient_factory.rb +1 -1
- data/lib/alchemy/test_support/factories/page_factory.rb +5 -3
- data/lib/alchemy/test_support/having_crop_action_examples.rb +9 -9
- data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +33 -33
- data/lib/alchemy/test_support/integration_helpers.rb +4 -3
- data/lib/alchemy/test_support/shared_contexts.rb +2 -1
- data/lib/alchemy/test_support/shared_dom_ids_examples.rb +10 -10
- data/lib/alchemy/test_support/shared_ingredient_examples.rb +13 -7
- data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -0
- data/lib/alchemy/tinymce.rb +3 -43
- data/lib/alchemy/upgrader/seven_point_zero.rb +45 -0
- data/lib/alchemy/upgrader/tasks/.keep +0 -0
- data/lib/alchemy/upgrader.rb +9 -3
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy.rb +0 -19
- data/lib/alchemy_cms.rb +2 -2
- data/lib/generators/alchemy/base.rb +3 -2
- data/lib/generators/alchemy/elements/elements_generator.rb +2 -2
- data/lib/generators/alchemy/elements/templates/view.html.erb +1 -10
- data/lib/generators/alchemy/elements/templates/view.html.haml +1 -9
- data/lib/generators/alchemy/elements/templates/view.html.slim +1 -9
- data/lib/generators/alchemy/ingredient/ingredient_generator.rb +1 -0
- data/lib/generators/alchemy/install/files/alchemy.en.yml +7 -8
- data/lib/generators/alchemy/install/files/application.html.erb +1 -1
- data/lib/generators/alchemy/install/install_generator.rb +20 -23
- data/lib/generators/alchemy/install/templates/elements.yml.tt +12 -12
- data/lib/generators/alchemy/module/module_generator.rb +1 -0
- data/lib/generators/alchemy/page_layouts/page_layouts_generator.rb +1 -0
- data/lib/generators/alchemy/site_layouts/site_layouts_generator.rb +1 -0
- data/lib/generators/alchemy/views/views_generator.rb +2 -1
- data/lib/tasks/alchemy/thumbnails.rake +6 -25
- data/lib/tasks/alchemy/tidy.rake +2 -12
- data/lib/tasks/alchemy/upgrade.rake +13 -49
- data/package/admin.js +2 -0
- data/package/dist/admin.js +16 -0
- data/package/dist/admin.js.map +7 -0
- data/package/src/datepicker.js +1 -0
- data/package/src/tinymce.js +142 -0
- data/package.json +5 -3
- metadata +41 -135
- data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +0 -93
- data/app/controllers/alchemy/admin/contents_controller.rb +0 -21
- data/app/controllers/alchemy/admin/essence_audios_controller.rb +0 -30
- data/app/controllers/alchemy/admin/essence_files_controller.rb +0 -31
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +0 -43
- data/app/controllers/alchemy/admin/essence_videos_controller.rb +0 -34
- data/app/controllers/alchemy/api/contents_controller.rb +0 -52
- data/app/decorators/alchemy/content_editor.rb +0 -119
- data/app/helpers/alchemy/admin/contents_helper.rb +0 -42
- data/app/helpers/alchemy/admin/essences_helper.rb +0 -31
- data/app/models/alchemy/content/factory.rb +0 -143
- data/app/models/alchemy/content.rb +0 -247
- data/app/models/alchemy/element/element_contents.rb +0 -200
- data/app/models/alchemy/element/element_essences.rb +0 -133
- data/app/models/alchemy/essence_audio.rb +0 -13
- data/app/models/alchemy/essence_boolean.rb +0 -20
- data/app/models/alchemy/essence_date.rb +0 -25
- data/app/models/alchemy/essence_file.rb +0 -49
- data/app/models/alchemy/essence_headline.rb +0 -41
- data/app/models/alchemy/essence_html.rb +0 -23
- data/app/models/alchemy/essence_link.rb +0 -21
- data/app/models/alchemy/essence_node.rb +0 -19
- data/app/models/alchemy/essence_page.rb +0 -17
- data/app/models/alchemy/essence_picture.rb +0 -67
- data/app/models/alchemy/essence_picture_view.rb +0 -90
- data/app/models/alchemy/essence_richtext.rb +0 -44
- data/app/models/alchemy/essence_select.rb +0 -19
- data/app/models/alchemy/essence_text.rb +0 -23
- data/app/models/alchemy/essence_video.rb +0 -13
- data/app/presenters/alchemy/picture_view.rb +0 -88
- data/app/serializers/alchemy/content_serializer.rb +0 -17
- data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_date_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_file_serializer.rb +0 -13
- data/app/serializers/alchemy/essence_html_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_link_serializer.rb +0 -13
- data/app/serializers/alchemy/essence_picture_serializer.rb +0 -28
- data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -11
- data/app/serializers/alchemy/essence_select_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_text_serializer.rb +0 -22
- data/app/views/alchemy/admin/contents/create.js.erb +0 -21
- data/app/views/alchemy/admin/essence_audios/edit.html.erb +0 -7
- data/app/views/alchemy/admin/essence_files/edit.html.erb +0 -21
- data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -5
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +0 -30
- data/app/views/alchemy/admin/essence_pictures/save_link.js.erb +0 -3
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +0 -8
- data/app/views/alchemy/admin/essence_videos/edit.html.erb +0 -12
- data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +0 -13
- data/app/views/alchemy/essences/_essence_audio_editor.html.erb +0 -4
- data/app/views/alchemy/essences/_essence_audio_view.html.erb +0 -15
- data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +0 -11
- data/app/views/alchemy/essences/_essence_boolean_view.html.erb +0 -2
- data/app/views/alchemy/essences/_essence_date_editor.html.erb +0 -16
- data/app/views/alchemy/essences/_essence_date_view.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +0 -54
- data/app/views/alchemy/essences/_essence_file_view.html.erb +0 -18
- data/app/views/alchemy/essences/_essence_headline_editor.html.erb +0 -36
- data/app/views/alchemy/essences/_essence_headline_view.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_html_editor.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_html_view.html.erb +0 -2
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +0 -30
- data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_node_editor.html.erb +0 -27
- data/app/views/alchemy/essences/_essence_node_view.html.erb +0 -1
- data/app/views/alchemy/essences/_essence_page_editor.html.erb +0 -26
- data/app/views/alchemy/essences/_essence_page_view.html.erb +0 -5
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +0 -59
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +0 -6
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -14
- data/app/views/alchemy/essences/_essence_richtext_view.html.erb +0 -4
- data/app/views/alchemy/essences/_essence_select_editor.html.erb +0 -28
- data/app/views/alchemy/essences/_essence_select_view.html.erb +0 -2
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +0 -29
- data/app/views/alchemy/essences/_essence_text_view.html.erb +0 -17
- data/app/views/alchemy/essences/_essence_video_editor.html.erb +0 -4
- data/app/views/alchemy/essences/_essence_video_view.html.erb +0 -19
- data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +0 -59
- data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +0 -20
- data/app/views/alchemy/pages/show.rss.builder +0 -21
- data/db/migrate/20200226213334_alchemy_four_point_four.rb +0 -313
- data/db/migrate/20200423073425_create_alchemy_essence_nodes.rb +0 -11
- data/db/migrate/20200504210159_remove_site_id_from_nodes.rb +0 -28
- data/db/migrate/20200505215518_add_language_id_foreign_key_to_alchemy_pages.rb +0 -8
- data/db/migrate/20200511113603_add_menu_type_to_alchemy_nodes.rb +0 -27
- data/db/migrate/20200514091507_make_page_layoutpage_null_false.rb +0 -6
- data/db/migrate/20200519073500_remove_visible_from_alchemy_pages.rb +0 -24
- data/db/migrate/20200617110713_create_alchemy_picture_thumbs.rb +0 -22
- data/db/migrate/20200907111332_remove_tri_state_booleans.rb +0 -33
- data/db/migrate/20201207131309_create_page_versions.rb +0 -19
- data/db/migrate/20201207135820_add_page_version_id_to_alchemy_elements.rb +0 -76
- data/db/migrate/20210205143548_rename_public_on_and_public_until_on_alchemy_pages.rb +0 -10
- data/db/migrate/20210326105046_add_sanitized_body_to_alchemy_essence_richtexts.rb +0 -7
- data/db/migrate/20210406093436_add_alchemy_essence_headlines.rb +0 -12
- data/db/migrate/20210506135919_create_essence_audios.rb +0 -19
- data/db/migrate/20210506140258_create_essence_videos.rb +0 -23
- data/db/migrate/20210508091432_create_alchemy_ingredients.rb +0 -22
- data/db/migrate/20220514072456_restrict_on_delete_page_id_foreign_key_from_alchemy_nodes.rb +0 -13
- data/db/migrate/20220622130905_add_playsinline_to_alchemy_essence_videos.rb +0 -9
- data/lib/alchemy/essence.rb +0 -250
- data/lib/alchemy/test_support/essence_shared_examples.rb +0 -271
- data/lib/alchemy/test_support/factories/content_factory.rb +0 -20
- data/lib/alchemy/test_support/factories/essence_audio_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_file_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_page_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_picture_factory.rb +0 -11
- data/lib/alchemy/test_support/factories/essence_text_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_video_factory.rb +0 -7
- data/lib/alchemy/upgrader/five_point_zero.rb +0 -41
- data/lib/alchemy/upgrader/six_point_zero.rb +0 -21
- data/lib/alchemy/upgrader/tasks/add_page_versions.rb +0 -33
- data/lib/alchemy/upgrader/tasks/element_views_updater.rb +0 -34
- data/lib/alchemy/upgrader/tasks/harden_gutentag_migrations.rb +0 -29
- data/lib/alchemy/upgrader/tasks/ingredients_migrator.rb +0 -74
- data/lib/generators/alchemy/essence/essence_generator.rb +0 -49
- data/lib/generators/alchemy/essence/templates/editor.html.erb +0 -17
- data/lib/generators/alchemy/essence/templates/view.html.erb +0 -2
@@ -94,7 +94,7 @@ module Alchemy
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
-
# Edit the content of the page and all its elements and
|
97
|
+
# Edit the content of the page and all its elements and ingredients.
|
98
98
|
#
|
99
99
|
# Locks the page to current user to prevent other users from editing it meanwhile.
|
100
100
|
#
|
@@ -109,7 +109,7 @@ module Alchemy
|
|
109
109
|
@preview_urls = Alchemy.preview_sources.map do |klass|
|
110
110
|
[
|
111
111
|
klass.model_name.human,
|
112
|
-
klass.new(routes: Alchemy::Engine.routes).url_for(@page)
|
112
|
+
klass.new(routes: Alchemy::Engine.routes).url_for(@page)
|
113
113
|
]
|
114
114
|
end
|
115
115
|
@layoutpage = @page.layoutpage?
|
@@ -152,10 +152,10 @@ module Alchemy
|
|
152
152
|
respond_to do |format|
|
153
153
|
format.js do
|
154
154
|
@redirect_url = if @page.layoutpage?
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
155
|
+
alchemy.admin_layoutpages_path
|
156
|
+
else
|
157
|
+
alchemy.admin_pages_path
|
158
|
+
end
|
159
159
|
|
160
160
|
render :redirect
|
161
161
|
end
|
@@ -185,7 +185,7 @@ module Alchemy
|
|
185
185
|
format.html do
|
186
186
|
redirect_to(
|
187
187
|
params[:redirect_to].presence || admin_pages_path,
|
188
|
-
allow_other_host: true
|
188
|
+
allow_other_host: true
|
189
189
|
)
|
190
190
|
end
|
191
191
|
end
|
@@ -248,7 +248,7 @@ module Alchemy
|
|
248
248
|
Page.copy(
|
249
249
|
language_root_to_copy_from,
|
250
250
|
language_id: params[:languages][:new_lang_id],
|
251
|
-
language_code: @current_language.code
|
251
|
+
language_code: @current_language.code
|
252
252
|
)
|
253
253
|
end
|
254
254
|
|
@@ -322,7 +322,7 @@ module Alchemy
|
|
322
322
|
#
|
323
323
|
def process_url(ancestors_path, item)
|
324
324
|
default_urlname = (ancestors_path.blank? ? "" : "#{ancestors_path}/") + item["slug"].to_s
|
325
|
-
{
|
325
|
+
{my_urlname: default_urlname, children_path: default_urlname}
|
326
326
|
end
|
327
327
|
|
328
328
|
def load_resource
|
@@ -333,7 +333,7 @@ module Alchemy
|
|
333
333
|
request.raw_post.split("&").map do |i|
|
334
334
|
parts = i.split("=")
|
335
335
|
{
|
336
|
-
parts[0].gsub(/[^0-9]/, "") => parts[1]
|
336
|
+
parts[0].gsub(/[^0-9]/, "") => parts[1]
|
337
337
|
}
|
338
338
|
end
|
339
339
|
end
|
@@ -391,7 +391,7 @@ module Alchemy
|
|
391
391
|
PageTreeSerializer.new(
|
392
392
|
@page,
|
393
393
|
ability: current_ability,
|
394
|
-
user: current_alchemy_user
|
394
|
+
user: current_alchemy_user
|
395
395
|
)
|
396
396
|
end
|
397
397
|
|
@@ -32,7 +32,7 @@ module Alchemy
|
|
32
32
|
@query = Picture.ransack(params[:q])
|
33
33
|
@previous = filtered_pictures.where("name < ?", @picture.name).last
|
34
34
|
@next = filtered_pictures.where("name > ?", @picture.name).first
|
35
|
-
@assignments = @picture.
|
35
|
+
@assignments = @picture.picture_ingredients.joins(element: :page)
|
36
36
|
|
37
37
|
render action: "show"
|
38
38
|
end
|
@@ -44,7 +44,7 @@ module Alchemy
|
|
44
44
|
render json: {
|
45
45
|
url: @picture.url(options),
|
46
46
|
alt: @picture.name,
|
47
|
-
title: Alchemy.t(:image_name, name: @picture.name)
|
47
|
+
title: Alchemy.t(:image_name, name: @picture.name)
|
48
48
|
}
|
49
49
|
end
|
50
50
|
|
@@ -64,15 +64,15 @@ module Alchemy
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def update
|
67
|
-
if @picture.update(picture_params)
|
68
|
-
|
67
|
+
@message = if @picture.update(picture_params)
|
68
|
+
{
|
69
69
|
body: Alchemy.t(:picture_updated_successfully, name: @picture.name),
|
70
|
-
type: "notice"
|
70
|
+
type: "notice"
|
71
71
|
}
|
72
72
|
else
|
73
|
-
|
73
|
+
{
|
74
74
|
body: Alchemy.t(:picture_update_failed),
|
75
|
-
type: "error"
|
75
|
+
type: "error"
|
76
76
|
}
|
77
77
|
end
|
78
78
|
render :update
|
@@ -103,7 +103,7 @@ module Alchemy
|
|
103
103
|
if not_deletable.any?
|
104
104
|
flash[:warn] = Alchemy.t(
|
105
105
|
"These pictures could not be deleted, because they were in use",
|
106
|
-
names: not_deletable.to_sentence
|
106
|
+
names: not_deletable.to_sentence
|
107
107
|
)
|
108
108
|
else
|
109
109
|
flash[:notice] = Alchemy.t("Pictures deleted successfully", names: names.to_sentence)
|
@@ -111,7 +111,7 @@ module Alchemy
|
|
111
111
|
else
|
112
112
|
flash[:warn] = Alchemy.t("Could not delete Pictures")
|
113
113
|
end
|
114
|
-
rescue
|
114
|
+
rescue => e
|
115
115
|
flash[:error] = e.message
|
116
116
|
ensure
|
117
117
|
redirect_to_index
|
@@ -121,7 +121,7 @@ module Alchemy
|
|
121
121
|
name = @picture.name
|
122
122
|
@picture.destroy
|
123
123
|
flash[:notice] = Alchemy.t("Picture deleted successfully", name: name)
|
124
|
-
rescue
|
124
|
+
rescue => e
|
125
125
|
flash[:error] = e.message
|
126
126
|
ensure
|
127
127
|
redirect_to_index
|
@@ -153,8 +153,8 @@ module Alchemy
|
|
153
153
|
end
|
154
154
|
else
|
155
155
|
cookies[:alchemy_pictures_per_page] = params[:per_page] ||
|
156
|
-
|
157
|
-
|
156
|
+
cookies[:alchemy_pictures_per_page] ||
|
157
|
+
pictures_per_page_for_size
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
@@ -186,9 +186,9 @@ module Alchemy
|
|
186
186
|
def search_filter_params
|
187
187
|
@_search_filter_params ||= params.except(*COMMON_SEARCH_FILTER_EXCLUDES + [:picture_ids]).permit(
|
188
188
|
*common_search_filter_includes + [
|
189
|
-
|
190
|
-
|
191
|
-
|
189
|
+
:size,
|
190
|
+
:form_field_id
|
191
|
+
]
|
192
192
|
)
|
193
193
|
end
|
194
194
|
|
@@ -8,7 +8,7 @@ require "alchemy/resource_filter"
|
|
8
8
|
module Alchemy
|
9
9
|
module Admin
|
10
10
|
class ResourcesController < Alchemy::Admin::BaseController
|
11
|
-
COMMON_SEARCH_FILTER_EXCLUDES = [
|
11
|
+
COMMON_SEARCH_FILTER_EXCLUDES = %i[id utf8 _method _ format].freeze
|
12
12
|
|
13
13
|
include Alchemy::ResourcesHelper
|
14
14
|
|
@@ -18,7 +18,7 @@ module Alchemy
|
|
18
18
|
:resource_filters_for_select
|
19
19
|
|
20
20
|
before_action :load_resource,
|
21
|
-
only: [
|
21
|
+
only: %i[show edit update destroy]
|
22
22
|
|
23
23
|
before_action :authorize_resource
|
24
24
|
|
@@ -27,26 +27,18 @@ module Alchemy
|
|
27
27
|
@query.sorts = default_sort_order if @query.sorts.empty?
|
28
28
|
items = @query.result
|
29
29
|
|
30
|
-
if contains_relations?
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
if search_filter_params[:tagged_with].present?
|
35
|
-
items = items.tagged_with(search_filter_params[:tagged_with])
|
36
|
-
end
|
37
|
-
|
38
|
-
if search_filter_params[:filter].present?
|
39
|
-
items = apply_filters(items)
|
40
|
-
end
|
30
|
+
items = items.includes(*resource_relations_names) if contains_relations?
|
31
|
+
items = items.tagged_with(search_filter_params[:tagged_with]) if search_filter_params[:tagged_with].present?
|
32
|
+
items = apply_filters(items) if search_filter_params[:filter].present?
|
41
33
|
|
42
34
|
respond_to do |format|
|
43
|
-
format.html
|
35
|
+
format.html do
|
44
36
|
items = items.page(params[:page] || 1).per(items_per_page)
|
45
37
|
instance_variable_set("@#{resource_handler.resources_name}", items)
|
46
|
-
|
47
|
-
format.csv
|
38
|
+
end
|
39
|
+
format.csv do
|
48
40
|
instance_variable_set("@#{resource_handler.resources_name}", items)
|
49
|
-
|
41
|
+
end
|
50
42
|
end
|
51
43
|
end
|
52
44
|
|
@@ -58,7 +50,8 @@ module Alchemy
|
|
58
50
|
render action: "edit"
|
59
51
|
end
|
60
52
|
|
61
|
-
def edit
|
53
|
+
def edit
|
54
|
+
end
|
62
55
|
|
63
56
|
def create
|
64
57
|
instance_variable_set("@#{resource_handler.resource_name}", resource_handler.model.new(resource_params))
|
@@ -66,7 +59,7 @@ module Alchemy
|
|
66
59
|
render_errors_or_redirect(
|
67
60
|
resource_instance_variable,
|
68
61
|
resources_path(resource_instance_variable.class, search_filter_params),
|
69
|
-
flash_notice_for_resource_action
|
62
|
+
flash_notice_for_resource_action
|
70
63
|
)
|
71
64
|
end
|
72
65
|
|
@@ -75,7 +68,7 @@ module Alchemy
|
|
75
68
|
render_errors_or_redirect(
|
76
69
|
resource_instance_variable,
|
77
70
|
resources_path(resource_instance_variable.class, search_filter_params),
|
78
|
-
flash_notice_for_resource_action
|
71
|
+
flash_notice_for_resource_action
|
79
72
|
)
|
80
73
|
end
|
81
74
|
|
@@ -103,7 +96,7 @@ module Alchemy
|
|
103
96
|
def resource_filters
|
104
97
|
return unless resource_has_filters
|
105
98
|
|
106
|
-
@_resource_filters ||=
|
99
|
+
@_resource_filters ||= resource_model.alchemy_resource_filters
|
107
100
|
end
|
108
101
|
|
109
102
|
def resource_filters_for_select
|
@@ -114,23 +107,6 @@ module Alchemy
|
|
114
107
|
|
115
108
|
protected
|
116
109
|
|
117
|
-
def deprecated_resource_filters
|
118
|
-
if resource_has_deprecated_filters
|
119
|
-
Alchemy::Deprecation.warn(
|
120
|
-
"#{resource_model}.alchemy_resource_filters is using a legacy data structure. " \
|
121
|
-
"Please use an Array of Hashes instead. i.e. [{ name: 'foo', values: ['bar', 'baz'] }, ...] " \
|
122
|
-
"where values are scopes. With Alchemy 6.1 only the new structure will be supported."
|
123
|
-
)
|
124
|
-
|
125
|
-
@_resource_filters ||= [
|
126
|
-
{
|
127
|
-
name: :misc,
|
128
|
-
values: resource_model.alchemy_resource_filters,
|
129
|
-
},
|
130
|
-
]
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
110
|
def apply_filters(items)
|
135
111
|
sanitize_filter_params!
|
136
112
|
|
@@ -178,7 +154,10 @@ module Alchemy
|
|
178
154
|
when :destroy
|
179
155
|
verb = "removed"
|
180
156
|
end
|
181
|
-
flash[:notice] = Alchemy.t(
|
157
|
+
flash[:notice] = Alchemy.t(
|
158
|
+
"#{resource_handler.resource_name.classify} successfully #{verb}",
|
159
|
+
default: Alchemy.t("Successfully #{verb}")
|
160
|
+
)
|
182
161
|
end
|
183
162
|
|
184
163
|
def is_alchemy_module?
|
@@ -215,18 +194,20 @@ module Alchemy
|
|
215
194
|
|
216
195
|
def common_search_filter_includes
|
217
196
|
search_filters = [
|
218
|
-
{
|
219
|
-
|
220
|
-
|
221
|
-
|
197
|
+
{
|
198
|
+
q: [
|
199
|
+
resource_handler.search_field_name,
|
200
|
+
:s
|
201
|
+
]
|
202
|
+
},
|
222
203
|
:tagged_with,
|
223
204
|
:page,
|
224
|
-
:per_page
|
205
|
+
:per_page
|
225
206
|
]
|
226
207
|
|
227
208
|
if resource_has_filters
|
228
209
|
search_filters << {
|
229
|
-
filter: resource_filters.map { |f| f[:name] }
|
210
|
+
filter: resource_filters.map { |f| f[:name] }
|
230
211
|
}
|
231
212
|
end
|
232
213
|
|
@@ -234,7 +215,8 @@ module Alchemy
|
|
234
215
|
end
|
235
216
|
|
236
217
|
def items_per_page
|
237
|
-
cookies[:alchemy_items_per_page] =
|
218
|
+
cookies[:alchemy_items_per_page] =
|
219
|
+
params[:per_page] || cookies[:alchemy_items_per_page] || Alchemy::Config.get(:items_per_page)
|
238
220
|
end
|
239
221
|
|
240
222
|
def items_per_page_options
|
@@ -6,31 +6,31 @@ module Alchemy
|
|
6
6
|
before_action :load_tag, only: [:edit, :update, :destroy]
|
7
7
|
|
8
8
|
def index
|
9
|
-
@query =
|
9
|
+
@query = Tag.ransack(search_filter_params[:q])
|
10
10
|
@query.sorts = default_sort_order if @query.sorts.empty?
|
11
11
|
@tags = @query
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
.result
|
13
|
+
.page(params[:page] || 1)
|
14
|
+
.per(items_per_page)
|
15
|
+
.order("name ASC")
|
16
16
|
end
|
17
17
|
|
18
18
|
def new
|
19
|
-
@tag =
|
19
|
+
@tag = Tag.new
|
20
20
|
end
|
21
21
|
|
22
22
|
def create
|
23
|
-
@tag =
|
23
|
+
@tag = Tag.create(tag_params)
|
24
24
|
render_errors_or_redirect @tag, admin_tags_path, Alchemy.t("New Tag Created")
|
25
25
|
end
|
26
26
|
|
27
27
|
def edit
|
28
|
-
@tags =
|
28
|
+
@tags = Tag.order("name ASC").to_a - [@tag]
|
29
29
|
end
|
30
30
|
|
31
31
|
def update
|
32
32
|
if tag_params[:merge_to]
|
33
|
-
@new_tag =
|
33
|
+
@new_tag = Tag.find(tag_params[:merge_to])
|
34
34
|
Tag.replace(@tag, @new_tag)
|
35
35
|
operation_text = Alchemy.t("Replaced Tag") % {old_tag: @tag.name, new_tag: @new_tag.name}
|
36
36
|
@tag.destroy
|
@@ -57,7 +57,7 @@ module Alchemy
|
|
57
57
|
private
|
58
58
|
|
59
59
|
def load_tag
|
60
|
-
@tag =
|
60
|
+
@tag = Tag.find(params[:id])
|
61
61
|
end
|
62
62
|
|
63
63
|
def tag_params
|
@@ -67,7 +67,7 @@ module Alchemy
|
|
67
67
|
def tags_from_term(term)
|
68
68
|
return [] if term.blank?
|
69
69
|
|
70
|
-
|
70
|
+
Tag.where(["LOWER(name) LIKE ?", "#{term.downcase}%"])
|
71
71
|
end
|
72
72
|
|
73
73
|
def json_for_autocomplete(items, attribute)
|
@@ -12,11 +12,11 @@ module Alchemy
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def render_not_authorized
|
15
|
-
render json: {
|
15
|
+
render json: {error: "Not authorized"}, status: 403
|
16
16
|
end
|
17
17
|
|
18
18
|
def render_not_found
|
19
|
-
render json: {
|
19
|
+
render json: {error: "Record not found"}, status: 404
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -10,18 +10,18 @@ module Alchemy
|
|
10
10
|
#
|
11
11
|
def index
|
12
12
|
# Fix for cancancan not able to merge multiple AR scopes for logged in users
|
13
|
-
if cannot? :manage, Alchemy::Element
|
14
|
-
|
13
|
+
@elements = if cannot? :manage, Alchemy::Element
|
14
|
+
Alchemy::Element.accessible_by(current_ability, :index)
|
15
15
|
else
|
16
|
-
|
16
|
+
Alchemy::Element.all
|
17
17
|
end
|
18
18
|
|
19
19
|
@elements = @elements.not_nested.joins(:page_version).merge(PageVersion.published)
|
20
20
|
|
21
|
-
if params[:page_id].present?
|
22
|
-
@elements
|
21
|
+
@elements = if params[:page_id].present?
|
22
|
+
@elements.includes(:page).where(alchemy_pages: {id: params[:page_id]})
|
23
23
|
else
|
24
|
-
@elements
|
24
|
+
@elements.includes(*element_includes)
|
25
25
|
end
|
26
26
|
|
27
27
|
if params[:named].present?
|
@@ -47,17 +47,15 @@ module Alchemy
|
|
47
47
|
{
|
48
48
|
nested_elements: [
|
49
49
|
{
|
50
|
-
|
51
|
-
ingredients: :related_object,
|
50
|
+
ingredients: :related_object
|
52
51
|
},
|
53
|
-
:tags
|
54
|
-
]
|
52
|
+
:tags
|
53
|
+
]
|
55
54
|
},
|
56
55
|
{
|
57
|
-
|
58
|
-
ingredients: :related_object,
|
56
|
+
ingredients: :related_object
|
59
57
|
},
|
60
|
-
:tags
|
58
|
+
:tags
|
61
59
|
]
|
62
60
|
end
|
63
61
|
end
|
@@ -11,7 +11,7 @@ module Alchemy
|
|
11
11
|
|
12
12
|
if params[:page_id].present?
|
13
13
|
@ingredients = @ingredients
|
14
|
-
.where(alchemy_page_versions: {
|
14
|
+
.where(alchemy_page_versions: {page_id: params[:page_id]})
|
15
15
|
.merge(Alchemy::PageVersion.drafts)
|
16
16
|
.joins(element: :page_version)
|
17
17
|
end
|
@@ -30,11 +30,13 @@ module Alchemy
|
|
30
30
|
def nested
|
31
31
|
@page = Page.find_by(id: params[:page_id]) || Language.current_root_page
|
32
32
|
|
33
|
-
render json: PageTreeSerializer.new(
|
33
|
+
render json: PageTreeSerializer.new(
|
34
|
+
@page,
|
34
35
|
ability: current_ability,
|
35
36
|
user: current_alchemy_user,
|
36
37
|
elements: params[:elements],
|
37
|
-
full: true
|
38
|
+
full: true
|
39
|
+
)
|
38
40
|
end
|
39
41
|
|
40
42
|
# Returns a json object for page
|
@@ -70,7 +72,7 @@ module Alchemy
|
|
70
72
|
|
71
73
|
Language.current.pages.where(
|
72
74
|
urlname: params[:urlname],
|
73
|
-
language_code: params[:locale] || Language.current.code
|
75
|
+
language_code: params[:locale] || Language.current.code
|
74
76
|
).includes(page_includes).first
|
75
77
|
end
|
76
78
|
|
@@ -78,7 +80,7 @@ module Alchemy
|
|
78
80
|
{
|
79
81
|
total_count: total_count_value,
|
80
82
|
per_page: per_page_value,
|
81
|
-
page: page_value
|
83
|
+
page: page_value
|
82
84
|
}
|
83
85
|
end
|
84
86
|
|
@@ -95,7 +97,7 @@ module Alchemy
|
|
95
97
|
end
|
96
98
|
|
97
99
|
def page_value
|
98
|
-
params[:page]
|
100
|
+
params[:page]&.to_i
|
99
101
|
end
|
100
102
|
|
101
103
|
def page_includes
|
@@ -107,17 +109,17 @@ module Alchemy
|
|
107
109
|
{
|
108
110
|
nested_elements: [
|
109
111
|
{
|
110
|
-
|
112
|
+
ingredients: :related_object
|
111
113
|
},
|
112
|
-
:tags
|
113
|
-
]
|
114
|
+
:tags
|
115
|
+
]
|
114
116
|
},
|
115
117
|
{
|
116
|
-
|
118
|
+
ingredients: :related_object
|
117
119
|
},
|
118
|
-
:tags
|
119
|
-
]
|
120
|
-
}
|
120
|
+
:tags
|
121
|
+
]
|
122
|
+
}
|
121
123
|
]
|
122
124
|
end
|
123
125
|
end
|
@@ -13,8 +13,8 @@ module Alchemy
|
|
13
13
|
{
|
14
14
|
filename: @attachment.file_name,
|
15
15
|
type: @attachment.file_mime_type,
|
16
|
-
disposition: "inline"
|
17
|
-
}
|
16
|
+
disposition: "inline"
|
17
|
+
}
|
18
18
|
)
|
19
19
|
end
|
20
20
|
|
@@ -24,7 +24,7 @@ module Alchemy
|
|
24
24
|
send_file(
|
25
25
|
@attachment.file.path, {
|
26
26
|
filename: @attachment.file_name,
|
27
|
-
type: @attachment.file_mime_type
|
27
|
+
type: @attachment.file_mime_type
|
28
28
|
}
|
29
29
|
)
|
30
30
|
end
|
@@ -11,15 +11,15 @@ module Alchemy
|
|
11
11
|
# Make an Element with this options inside your @elements.yml file:
|
12
12
|
#
|
13
13
|
# - name: contactform
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
14
|
+
# ingredients:
|
15
|
+
# - role: mail_to
|
16
|
+
# type: Text
|
17
|
+
# - role: subject
|
18
|
+
# type: Text
|
19
|
+
# - role: mail_from
|
20
|
+
# type: Text
|
21
|
+
# - role: success_page
|
22
|
+
# type: Page
|
23
23
|
#
|
24
24
|
# The fields +mail_to+, +mail_from+, +subject+ and +success_page+ are recommended.
|
25
25
|
# The +Alchemy::MessagesController+ uses them to send your mails. So your customer has full controll of these values inside his contactform element.
|
@@ -41,19 +41,19 @@ module Alchemy
|
|
41
41
|
|
42
42
|
helper "alchemy/pages"
|
43
43
|
|
44
|
-
def index
|
44
|
+
def index # :nodoc:
|
45
45
|
redirect_to show_page_path(
|
46
46
|
urlname: @page.urlname,
|
47
|
-
locale: prefix_locale? ? @page.language_code : nil
|
47
|
+
locale: prefix_locale? ? @page.language_code : nil
|
48
48
|
)
|
49
49
|
end
|
50
50
|
|
51
|
-
def new
|
51
|
+
def new # :nodoc:
|
52
52
|
@message = Message.new
|
53
53
|
render template: "alchemy/pages/show"
|
54
54
|
end
|
55
55
|
|
56
|
-
def create
|
56
|
+
def create # :nodoc:
|
57
57
|
@message = Message.new(message_params)
|
58
58
|
@message.ip = request.remote_ip
|
59
59
|
@element = Element.find_by(id: @message.contact_form_id)
|
@@ -90,16 +90,16 @@ module Alchemy
|
|
90
90
|
|
91
91
|
def redirect_to_success_page
|
92
92
|
flash[:notice] = Alchemy.t(:success, scope: "contactform.messages")
|
93
|
-
if success_page
|
94
|
-
|
93
|
+
urlname = if success_page
|
94
|
+
success_page_urlname
|
95
95
|
elsif mailer_config["forward_to_page"] && mailer_config["mail_success_page"]
|
96
|
-
|
96
|
+
Page.find_by(urlname: mailer_config["mail_success_page"]).urlname
|
97
97
|
else
|
98
|
-
|
98
|
+
Language.current_root_page.urlname
|
99
99
|
end
|
100
100
|
redirect_to show_page_path(
|
101
101
|
urlname: urlname,
|
102
|
-
locale: prefix_locale? ? Language.current.code : nil
|
102
|
+
locale: prefix_locale? ? Language.current.code : nil
|
103
103
|
)
|
104
104
|
end
|
105
105
|
|