alchemy_cms 5.3.1 → 6.0.0.b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +6 -14
- data/.gitignore +1 -1
- data/.hound.yml +1 -1
- data/.rubocop.yml +46 -4
- data/CHANGELOG.md +80 -52
- data/Gemfile +4 -2
- data/README.md +5 -2
- data/Rakefile +0 -18
- data/alchemy_cms.gemspec +78 -65
- data/app/assets/javascripts/alchemy/admin.js +2 -2
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -27
- data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +2 -1
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +2 -7
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -25
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +2 -0
- data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +1 -1
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +3 -1
- data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +40 -27
- data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +24 -0
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +119 -0
- data/app/assets/javascripts/alchemy/page_select.js +8 -13
- data/app/assets/javascripts/alchemy/templates/index.js +0 -1
- data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
- data/app/assets/javascripts/alchemy/templates/page.hbs +7 -17
- data/app/assets/stylesheets/alchemy/admin.scss +1 -1
- data/app/assets/stylesheets/alchemy/archive.scss +4 -4
- data/app/assets/stylesheets/alchemy/buttons.scss +0 -4
- data/app/assets/stylesheets/alchemy/elements.scss +73 -61
- data/app/assets/stylesheets/alchemy/images.scss +8 -0
- data/app/assets/stylesheets/alchemy/node-select.scss +4 -3
- data/app/assets/stylesheets/alchemy/page-select.scss +5 -29
- data/app/assets/stylesheets/alchemy/sitemap.scss +7 -9
- data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +3 -3
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +7 -7
- data/app/controllers/alchemy/admin/attachments_controller.rb +6 -2
- data/app/controllers/alchemy/admin/base_controller.rb +8 -16
- data/app/controllers/alchemy/admin/elements_controller.rb +58 -34
- data/app/controllers/alchemy/admin/essence_audios_controller.rb +30 -0
- data/app/controllers/alchemy/admin/essence_files_controller.rb +0 -14
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +8 -79
- data/app/controllers/alchemy/admin/essence_videos_controller.rb +33 -0
- data/app/controllers/alchemy/admin/ingredients_controller.rb +30 -0
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +0 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +19 -23
- data/app/controllers/alchemy/admin/pictures_controller.rb +35 -9
- data/app/controllers/alchemy/api/elements_controller.rb +10 -5
- data/app/controllers/alchemy/api/pages_controller.rb +3 -15
- data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +13 -3
- data/app/controllers/concerns/alchemy/admin/crop_action.rb +26 -0
- data/app/decorators/alchemy/element_editor.rb +23 -1
- data/app/decorators/alchemy/ingredient_editor.rb +154 -0
- data/app/helpers/alchemy/admin/elements_helper.rb +1 -0
- data/app/helpers/alchemy/admin/essences_helper.rb +1 -1
- data/app/helpers/alchemy/admin/ingredients_helper.rb +42 -0
- data/app/helpers/alchemy/elements_block_helper.rb +22 -7
- data/app/helpers/alchemy/elements_helper.rb +12 -5
- data/app/helpers/alchemy/pages_helper.rb +3 -11
- data/app/jobs/alchemy/base_job.rb +11 -0
- data/app/jobs/alchemy/publish_page_job.rb +11 -0
- data/app/models/alchemy/attachment.rb +1 -1
- data/app/models/alchemy/content/factory.rb +23 -27
- data/app/models/alchemy/content.rb +1 -6
- data/app/models/alchemy/element/definitions.rb +29 -27
- data/app/models/alchemy/element/element_contents.rb +131 -122
- data/app/models/alchemy/element/element_essences.rb +100 -98
- data/app/models/alchemy/element/element_ingredients.rb +176 -0
- data/app/models/alchemy/element/presenters.rb +89 -87
- data/app/models/alchemy/element.rb +40 -73
- data/app/models/alchemy/elements_repository.rb +126 -0
- data/app/models/alchemy/essence_audio.rb +12 -0
- data/app/models/alchemy/essence_headline.rb +40 -0
- data/app/models/alchemy/essence_picture.rb +4 -116
- data/app/models/alchemy/essence_richtext.rb +12 -0
- data/app/models/alchemy/essence_video.rb +12 -0
- data/app/models/alchemy/image_cropper_settings.rb +87 -0
- data/app/models/alchemy/ingredient.rb +219 -0
- data/app/models/alchemy/ingredient_validator.rb +97 -0
- data/app/models/alchemy/ingredients/audio.rb +29 -0
- data/app/models/alchemy/ingredients/boolean.rb +21 -0
- data/app/models/alchemy/ingredients/datetime.rb +20 -0
- data/app/models/alchemy/ingredients/file.rb +30 -0
- data/app/models/alchemy/ingredients/headline.rb +42 -0
- data/app/models/alchemy/ingredients/html.rb +19 -0
- data/app/models/alchemy/ingredients/link.rb +16 -0
- data/app/models/alchemy/ingredients/node.rb +23 -0
- data/app/models/alchemy/ingredients/page.rb +23 -0
- data/app/models/alchemy/ingredients/picture.rb +41 -0
- data/app/models/alchemy/ingredients/richtext.rb +57 -0
- data/app/models/alchemy/ingredients/select.rb +10 -0
- data/app/models/alchemy/ingredients/text.rb +17 -0
- data/app/models/alchemy/ingredients/video.rb +33 -0
- data/app/models/alchemy/language.rb +0 -11
- data/app/models/alchemy/node.rb +1 -1
- data/app/models/alchemy/page/fixed_attributes.rb +53 -51
- data/app/models/alchemy/page/page_elements.rb +186 -205
- data/app/models/alchemy/page/page_naming.rb +66 -64
- data/app/models/alchemy/page/page_natures.rb +139 -142
- data/app/models/alchemy/page/page_scopes.rb +113 -102
- data/app/models/alchemy/page/publisher.rb +50 -0
- data/app/models/alchemy/page/url_path.rb +1 -1
- data/app/models/alchemy/page.rb +69 -36
- data/app/models/alchemy/page_version.rb +58 -0
- data/app/models/alchemy/picture/calculations.rb +2 -8
- data/app/models/alchemy/picture/preprocessor.rb +2 -0
- data/app/models/alchemy/picture/transformations.rb +21 -93
- data/app/models/alchemy/picture.rb +4 -2
- data/app/models/concerns/alchemy/picture_thumbnails.rb +181 -0
- data/app/models/concerns/alchemy/touch_elements.rb +2 -2
- data/app/presenters/alchemy/picture_view.rb +88 -0
- data/app/serializers/alchemy/element_serializer.rb +5 -0
- data/app/serializers/alchemy/page_serializer.rb +1 -7
- data/app/serializers/alchemy/page_tree_serializer.rb +6 -5
- data/app/services/alchemy/delete_elements.rb +44 -0
- data/app/services/alchemy/duplicate_element.rb +56 -0
- data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -2
- data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +3 -3
- data/app/views/alchemy/admin/attachments/assign.js.erb +11 -0
- data/app/views/alchemy/admin/crop.html.erb +36 -0
- data/app/views/alchemy/admin/elements/_element.html.erb +14 -10
- data/app/views/alchemy/admin/elements/{_element_footer.html.erb → _footer.html.erb} +0 -0
- data/app/views/alchemy/admin/elements/{_new_element_form.html.erb → _form.html.erb} +1 -1
- data/app/views/alchemy/admin/elements/{_element_header.html.erb → _header.html.erb} +1 -1
- data/app/views/alchemy/admin/elements/{_element_toolbar.html.erb → _toolbar.html.erb} +5 -6
- data/app/views/alchemy/admin/elements/{trash.js.erb → destroy.js.erb} +1 -3
- data/app/views/alchemy/admin/elements/new.html.erb +3 -3
- data/app/views/alchemy/admin/elements/order.js.erb +0 -17
- data/app/views/alchemy/admin/elements/update.js.erb +3 -2
- data/app/views/alchemy/admin/essence_audios/edit.html.erb +7 -0
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +0 -1
- data/app/views/alchemy/admin/essence_videos/edit.html.erb +11 -0
- data/app/views/alchemy/admin/ingredients/_audio_fields.html.erb +4 -0
- data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +18 -0
- data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +25 -0
- data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +8 -0
- data/app/views/alchemy/admin/ingredients/edit.html.erb +4 -0
- data/app/views/alchemy/admin/layoutpages/edit.html.erb +0 -5
- data/app/views/alchemy/admin/nodes/_node.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_anchor_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_external_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_file_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_form.html.erb +0 -25
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +5 -16
- data/app/views/alchemy/admin/pages/_page.html.erb +133 -111
- data/app/views/alchemy/admin/pages/_sitemap.html.erb +16 -10
- data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +5 -2
- data/app/views/alchemy/admin/pages/_toolbar.html.erb +12 -0
- data/app/views/alchemy/admin/pages/edit.html.erb +37 -25
- data/app/views/alchemy/admin/pages/fold.js.erb +2 -0
- data/app/views/alchemy/admin/pages/index.html.erb +1 -1
- data/app/views/alchemy/admin/pages/sort.html.erb +19 -0
- data/app/views/alchemy/admin/pages/update.js.erb +0 -7
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +2 -4
- data/app/views/alchemy/admin/partials/_routes.html.erb +8 -19
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +4 -8
- data/app/views/alchemy/admin/pictures/_infos.html.erb +0 -1
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +4 -4
- data/app/views/alchemy/admin/pictures/assign.js.erb +10 -0
- data/app/views/alchemy/admin/resources/_form.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_audio_editor.html.erb +4 -0
- data/app/views/alchemy/essences/_essence_audio_view.html.erb +15 -0
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +15 -6
- data/app/views/alchemy/essences/_essence_headline_editor.html.erb +36 -0
- data/app/views/alchemy/essences/_essence_headline_view.html.erb +10 -0
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +8 -4
- data/app/views/alchemy/essences/_essence_page_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +27 -12
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +12 -4
- data/app/views/alchemy/essences/_essence_video_editor.html.erb +4 -0
- data/app/views/alchemy/essences/_essence_video_view.html.erb +18 -0
- data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +21 -16
- data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +2 -2
- data/app/views/alchemy/ingredients/_audio_editor.html.erb +5 -0
- data/app/views/alchemy/ingredients/_audio_view.html.erb +14 -0
- data/app/views/alchemy/ingredients/_boolean_editor.html.erb +11 -0
- data/app/views/alchemy/ingredients/_boolean_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_datetime_editor.html.erb +17 -0
- data/app/views/alchemy/ingredients/_datetime_view.html.erb +9 -0
- data/app/views/alchemy/ingredients/_file_editor.html.erb +50 -0
- data/app/views/alchemy/ingredients/_file_view.html.erb +17 -0
- data/app/views/alchemy/ingredients/_headline_editor.html.erb +30 -0
- data/app/views/alchemy/ingredients/_headline_view.html.erb +9 -0
- data/app/views/alchemy/ingredients/_html_editor.html.erb +8 -0
- data/app/views/alchemy/ingredients/_html_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_link_editor.html.erb +24 -0
- data/app/views/alchemy/ingredients/_link_view.html.erb +9 -0
- data/app/views/alchemy/ingredients/_node_editor.html.erb +25 -0
- data/app/views/alchemy/ingredients/_node_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_page_editor.html.erb +24 -0
- data/app/views/alchemy/ingredients/_page_view.html.erb +4 -0
- data/app/views/alchemy/ingredients/_picture_editor.html.erb +59 -0
- data/app/views/alchemy/ingredients/_picture_view.html.erb +5 -0
- data/app/views/alchemy/ingredients/_richtext_editor.html.erb +12 -0
- data/app/views/alchemy/ingredients/_richtext_view.html.erb +3 -0
- data/app/views/alchemy/ingredients/_select_editor.html.erb +29 -0
- data/app/views/alchemy/ingredients/_select_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_text_editor.html.erb +19 -0
- data/app/views/alchemy/ingredients/_text_view.html.erb +16 -0
- data/app/views/alchemy/ingredients/_video_editor.html.erb +5 -0
- data/app/views/alchemy/ingredients/_video_view.html.erb +17 -0
- data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +20 -0
- data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +57 -0
- data/config/brakeman.ignore +66 -159
- data/config/initializers/dragonfly.rb +2 -0
- data/config/locales/alchemy.en.yml +26 -15
- data/config/routes.rb +19 -26
- data/db/migrate/20201207131309_create_page_versions.rb +19 -0
- data/db/migrate/20201207135820_add_page_version_id_to_alchemy_elements.rb +76 -0
- data/db/migrate/20210205143548_rename_public_on_and_public_until_on_alchemy_pages.rb +10 -0
- data/db/migrate/20210326105046_add_sanitized_body_to_alchemy_essence_richtexts.rb +7 -0
- data/db/migrate/20210406093436_add_alchemy_essence_headlines.rb +12 -0
- data/db/migrate/20210506135919_create_essence_audios.rb +19 -0
- data/db/migrate/20210506140258_create_essence_videos.rb +23 -0
- data/db/migrate/20210508091432_create_alchemy_ingredients.rb +22 -0
- data/lib/alchemy/admin/preview_url.rb +2 -0
- data/lib/alchemy/deprecation.rb +1 -1
- data/lib/alchemy/dragonfly/processors/auto_orient.rb +18 -0
- data/lib/alchemy/elements_finder.rb +14 -60
- data/lib/alchemy/engine.rb +1 -8
- data/lib/alchemy/essence.rb +1 -2
- data/lib/alchemy/hints.rb +8 -4
- data/lib/alchemy/page_layout.rb +0 -13
- data/lib/alchemy/permissions.rb +31 -29
- data/lib/alchemy/resource.rb +13 -3
- data/lib/alchemy/tasks/tidy.rb +29 -0
- data/lib/alchemy/test_support/essence_shared_examples.rb +0 -1
- data/lib/alchemy/test_support/factories/element_factory.rb +8 -8
- data/lib/alchemy/test_support/factories/essence_audio_factory.rb +7 -0
- data/lib/alchemy/test_support/factories/essence_video_factory.rb +7 -0
- data/lib/alchemy/test_support/factories/ingredient_factory.rb +25 -0
- data/lib/alchemy/test_support/factories/page_factory.rb +20 -1
- data/lib/alchemy/test_support/factories/page_version_factory.rb +23 -0
- data/lib/alchemy/test_support/having_crop_action_examples.rb +170 -0
- data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +646 -0
- data/lib/alchemy/test_support/shared_ingredient_editor_examples.rb +21 -0
- data/lib/alchemy/test_support/shared_ingredient_examples.rb +57 -0
- data/lib/alchemy/test_support.rb +2 -11
- data/lib/alchemy/tinymce.rb +17 -0
- data/lib/alchemy/upgrader/five_point_zero.rb +0 -32
- data/lib/alchemy/upgrader/six_point_zero.rb +21 -0
- data/lib/alchemy/upgrader/tasks/add_page_versions.rb +33 -0
- data/lib/alchemy/upgrader/tasks/ingredients_migrator.rb +51 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +0 -1
- data/lib/generators/alchemy/elements/elements_generator.rb +1 -0
- data/lib/generators/alchemy/elements/templates/view.html.erb +9 -0
- data/lib/generators/alchemy/elements/templates/view.html.haml +9 -0
- data/lib/generators/alchemy/elements/templates/view.html.slim +9 -0
- data/lib/generators/alchemy/ingredient/ingredient_generator.rb +38 -0
- data/lib/generators/alchemy/ingredient/templates/editor.html.erb +14 -0
- data/lib/generators/alchemy/ingredient/templates/model.rb.tt +13 -0
- data/lib/generators/alchemy/ingredient/templates/view.html.erb +1 -0
- data/lib/generators/alchemy/install/install_generator.rb +1 -2
- data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +1 -1
- data/lib/generators/alchemy/menus/templates/node.html.erb +1 -1
- data/lib/generators/alchemy/menus/templates/node.html.haml +1 -1
- data/lib/generators/alchemy/menus/templates/node.html.slim +1 -1
- data/lib/generators/alchemy/menus/templates/wrapper.html.erb +1 -1
- data/lib/generators/alchemy/menus/templates/wrapper.html.haml +1 -1
- data/lib/generators/alchemy/menus/templates/wrapper.html.slim +1 -1
- data/lib/tasks/alchemy/tidy.rake +12 -0
- data/lib/tasks/alchemy/upgrade.rake +21 -15
- data/package/admin.js +8 -4
- data/package/src/file_editors.js +28 -0
- data/package/src/image_cropper.js +103 -0
- data/package/src/image_loader.js +58 -0
- data/package/src/node_tree.js +5 -5
- data/package/src/picture_editors.js +169 -0
- data/package/src/utils/__tests__/ajax.spec.js +20 -12
- data/package/src/utils/ajax.js +8 -3
- data/package.json +3 -2
- data/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +3 -18
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +434 -0
- data/vendor/assets/stylesheets/jquery.Jcrop.min.scss +2 -28
- metadata +291 -53
- data/.rspec +0 -1
- data/app/assets/javascripts/alchemy/alchemy.image_cropper.js.coffee +0 -44
- data/app/assets/javascripts/alchemy/alchemy.trash_window.js.coffee +0 -30
- data/app/assets/javascripts/alchemy/templates/page_folder.hbs +0 -3
- data/app/assets/stylesheets/alchemy/trash.scss +0 -8
- data/app/controllers/alchemy/admin/trash_controller.rb +0 -44
- data/app/views/alchemy/admin/essence_files/assign.js.erb +0 -3
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -4
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +0 -48
- data/app/views/alchemy/admin/trash/clear.js.erb +0 -4
- data/app/views/alchemy/admin/trash/index.html.erb +0 -31
- data/lib/alchemy/error_tracking/airbrake_handler.rb +0 -13
- data/lib/alchemy/error_tracking.rb +0 -14
- data/lib/alchemy/test_support/factories.rb +0 -20
- data/package/src/page_publication_fields.js +0 -27
- data/package/src/page_sorter.js +0 -68
- data/package/src/sitemap.js +0 -152
data/config/brakeman.ignore
CHANGED
@@ -3,19 +3,19 @@
|
|
3
3
|
{
|
4
4
|
"warning_type": "Cross-Site Scripting",
|
5
5
|
"warning_code": 2,
|
6
|
-
"fingerprint": "
|
6
|
+
"fingerprint": "068b12d24047e2ece633115ba065ce46fc8c8a26827be7de2565ab721e1c2e82",
|
7
7
|
"check_name": "CrossSiteScripting",
|
8
8
|
"message": "Unescaped parameter value",
|
9
9
|
"file": "app/views/alchemy/admin/elements/update.js.erb",
|
10
|
-
"line":
|
10
|
+
"line": 21,
|
11
11
|
"link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting",
|
12
|
-
"code": "
|
12
|
+
"code": "Element.find(params[:id]).ingredients_with_errors.map do\n \"[data-ingredient-id=\\\"#{ingredient.id}\\\"]\"\n end.join(\", \")",
|
13
13
|
"render_path": [
|
14
14
|
{
|
15
15
|
"type": "controller",
|
16
16
|
"class": "Alchemy::Admin::ElementsController",
|
17
17
|
"method": "update",
|
18
|
-
"line":
|
18
|
+
"line": 61,
|
19
19
|
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
20
20
|
"rendered": {
|
21
21
|
"name": "alchemy/admin/elements/update",
|
@@ -38,7 +38,7 @@
|
|
38
38
|
"check_name": "SendFile",
|
39
39
|
"message": "Parameter value used in file name",
|
40
40
|
"file": "app/controllers/alchemy/admin/attachments_controller.rb",
|
41
|
-
"line":
|
41
|
+
"line": 69,
|
42
42
|
"link": "https://brakemanscanner.org/docs/warning_types/file_access/",
|
43
43
|
"code": "send_file(Attachment.find(params[:id]).file.path, :filename => Attachment.find(params[:id]).file_name, :type => Attachment.find(params[:id]).file_mime_type)",
|
44
44
|
"render_path": null,
|
@@ -71,130 +71,6 @@
|
|
71
71
|
"confidence": "Medium",
|
72
72
|
"note": "Because we actually can't know all attributes each inheriting controller supports, we permit all resource model params. It is adviced that all inheriting controllers implement this method and provide its own set of permitted attributes. As this all happens inside the password protected /admin namespace this can be considered a false positive."
|
73
73
|
},
|
74
|
-
{
|
75
|
-
"warning_type": "Cross-Site Scripting",
|
76
|
-
"warning_code": 2,
|
77
|
-
"fingerprint": "293a6f5581ba3f0e7aa4f81b38d68baf21f1219c8f3bae3eca6b3e1776b734df",
|
78
|
-
"check_name": "CrossSiteScripting",
|
79
|
-
"message": "Unescaped parameter value",
|
80
|
-
"file": "app/views/alchemy/admin/elements/order.js.erb",
|
81
|
-
"line": 17,
|
82
|
-
"link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting",
|
83
|
-
"code": "Element.trashed.where(:id => params[:element_ids]).pluck(:id).collect do\n \"#element_area [data-element-id=\\\"#{id}\\\"]\"\n end.join(\", \")",
|
84
|
-
"render_path": [
|
85
|
-
{
|
86
|
-
"type": "controller",
|
87
|
-
"class": "Alchemy::Admin::ElementsController",
|
88
|
-
"method": "order",
|
89
|
-
"line": 78,
|
90
|
-
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
91
|
-
"rendered": {
|
92
|
-
"name": "alchemy/admin/elements/order",
|
93
|
-
"file": "app/views/alchemy/admin/elements/order.js.erb"
|
94
|
-
}
|
95
|
-
}
|
96
|
-
],
|
97
|
-
"location": {
|
98
|
-
"type": "template",
|
99
|
-
"template": "alchemy/admin/elements/order"
|
100
|
-
},
|
101
|
-
"user_input": "params[:element_ids]",
|
102
|
-
"confidence": "Weak",
|
103
|
-
"note": ""
|
104
|
-
},
|
105
|
-
{
|
106
|
-
"warning_type": "Dynamic Render Path",
|
107
|
-
"warning_code": 15,
|
108
|
-
"fingerprint": "2eb67abb2b025c3446afa2f9b8d48c6b6a05379234a9228c9af4c25b7e672b00",
|
109
|
-
"check_name": "Render",
|
110
|
-
"message": "Render path contains parameter value",
|
111
|
-
"file": "app/views/alchemy/admin/elements/index.html.erb",
|
112
|
-
"line": 18,
|
113
|
-
"link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
|
114
|
-
"code": "render(action => Page.find(params[:page_id]).all_elements.not_nested.unfixed.not_trashed.includes(*element_includes).map do\n Alchemy::ElementEditor.new(element)\n end, {})",
|
115
|
-
"render_path": [
|
116
|
-
{
|
117
|
-
"type": "controller",
|
118
|
-
"class": "Alchemy::Admin::ElementsController",
|
119
|
-
"method": "index",
|
120
|
-
"line": 13,
|
121
|
-
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
122
|
-
"rendered": {
|
123
|
-
"name": "alchemy/admin/elements/index",
|
124
|
-
"file": "app/views/alchemy/admin/elements/index.html.erb"
|
125
|
-
}
|
126
|
-
}
|
127
|
-
],
|
128
|
-
"location": {
|
129
|
-
"type": "template",
|
130
|
-
"template": "alchemy/admin/elements/index"
|
131
|
-
},
|
132
|
-
"user_input": "params[:page_id]",
|
133
|
-
"confidence": "Weak",
|
134
|
-
"note": ""
|
135
|
-
},
|
136
|
-
{
|
137
|
-
"warning_type": "Dynamic Render Path",
|
138
|
-
"warning_code": 15,
|
139
|
-
"fingerprint": "2eb67abb2b025c3446afa2f9b8d48c6b6a05379234a9228c9af4c25b7e672b00",
|
140
|
-
"check_name": "Render",
|
141
|
-
"message": "Render path contains parameter value",
|
142
|
-
"file": "app/views/alchemy/admin/elements/index.html.erb",
|
143
|
-
"line": 31,
|
144
|
-
"link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
|
145
|
-
"code": "render(action => Page.find(params[:page_id]).all_elements.not_nested.unfixed.not_trashed.includes(*element_includes).map do\n Alchemy::ElementEditor.new(element)\n end, {})",
|
146
|
-
"render_path": [
|
147
|
-
{
|
148
|
-
"type": "controller",
|
149
|
-
"class": "Alchemy::Admin::ElementsController",
|
150
|
-
"method": "index",
|
151
|
-
"line": 13,
|
152
|
-
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
153
|
-
"rendered": {
|
154
|
-
"name": "alchemy/admin/elements/index",
|
155
|
-
"file": "app/views/alchemy/admin/elements/index.html.erb"
|
156
|
-
}
|
157
|
-
}
|
158
|
-
],
|
159
|
-
"location": {
|
160
|
-
"type": "template",
|
161
|
-
"template": "alchemy/admin/elements/index"
|
162
|
-
},
|
163
|
-
"user_input": "params[:page_id]",
|
164
|
-
"confidence": "Weak",
|
165
|
-
"note": ""
|
166
|
-
},
|
167
|
-
{
|
168
|
-
"warning_type": "Dynamic Render Path",
|
169
|
-
"warning_code": 15,
|
170
|
-
"fingerprint": "2fa9bf5c73b4e6e3c272f0b14635f96efbd763e9a2c5b785caefffe3589ac461",
|
171
|
-
"check_name": "Render",
|
172
|
-
"message": "Render path contains parameter value",
|
173
|
-
"file": "app/views/alchemy/admin/essence_pictures/assign.js.erb",
|
174
|
-
"line": 2,
|
175
|
-
"link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
|
176
|
-
"code": "render(action => Alchemy::ContentEditor.new(Content.find(params[:content_id])), {})",
|
177
|
-
"render_path": [
|
178
|
-
{
|
179
|
-
"type": "controller",
|
180
|
-
"class": "Alchemy::Admin::EssencePicturesController",
|
181
|
-
"method": "assign",
|
182
|
-
"line": 49,
|
183
|
-
"file": "app/controllers/alchemy/admin/essence_pictures_controller.rb",
|
184
|
-
"rendered": {
|
185
|
-
"name": "alchemy/admin/essence_pictures/assign",
|
186
|
-
"file": "app/views/alchemy/admin/essence_pictures/assign.js.erb"
|
187
|
-
}
|
188
|
-
}
|
189
|
-
],
|
190
|
-
"location": {
|
191
|
-
"type": "template",
|
192
|
-
"template": "alchemy/admin/essence_pictures/assign"
|
193
|
-
},
|
194
|
-
"user_input": "params[:content_id]",
|
195
|
-
"confidence": "Weak",
|
196
|
-
"note": ""
|
197
|
-
},
|
198
74
|
{
|
199
75
|
"warning_type": "Dynamic Render Path",
|
200
76
|
"warning_code": 15,
|
@@ -210,7 +86,7 @@
|
|
210
86
|
"type": "controller",
|
211
87
|
"class": "Alchemy::Admin::ElementsController",
|
212
88
|
"method": "fold",
|
213
|
-
"line":
|
89
|
+
"line": 97,
|
214
90
|
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
215
91
|
"rendered": {
|
216
92
|
"name": "alchemy/admin/elements/fold",
|
@@ -233,7 +109,7 @@
|
|
233
109
|
"check_name": "MassAssignment",
|
234
110
|
"message": "Specify exact keys allowed for mass assignment instead of using `permit!` which allows any keys",
|
235
111
|
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
236
|
-
"line":
|
112
|
+
"line": 150,
|
237
113
|
"link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
|
238
114
|
"code": "params.fetch(:contents, {}).permit!",
|
239
115
|
"render_path": null,
|
@@ -297,57 +173,88 @@
|
|
297
173
|
"note": ""
|
298
174
|
},
|
299
175
|
{
|
300
|
-
"warning_type": "
|
301
|
-
"warning_code":
|
302
|
-
"fingerprint": "
|
303
|
-
"check_name": "
|
304
|
-
"message": "
|
305
|
-
"file": "app/
|
306
|
-
"line":
|
307
|
-
"link": "https://brakemanscanner.org/docs/warning_types/
|
308
|
-
"code": "
|
309
|
-
"render_path":
|
176
|
+
"warning_type": "Dynamic Render Path",
|
177
|
+
"warning_code": 15,
|
178
|
+
"fingerprint": "80b9b11d658cd393c549d568b3655c62566862f55b2fa16ed688de7c2e9343ac",
|
179
|
+
"check_name": "Render",
|
180
|
+
"message": "Render path contains parameter value",
|
181
|
+
"file": "app/views/alchemy/admin/elements/index.html.erb",
|
182
|
+
"line": 18,
|
183
|
+
"link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
|
184
|
+
"code": "render(action => PageVersion.find(params[:page_version_id]).elements.order(:position).includes(*element_includes).not_nested.unfixed.map do\n Alchemy::ElementEditor.new(element)\n end, {})",
|
185
|
+
"render_path": [
|
186
|
+
{
|
187
|
+
"type": "controller",
|
188
|
+
"class": "Alchemy::Admin::ElementsController",
|
189
|
+
"method": "index",
|
190
|
+
"line": 15,
|
191
|
+
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
192
|
+
"rendered": {
|
193
|
+
"name": "alchemy/admin/elements/index",
|
194
|
+
"file": "app/views/alchemy/admin/elements/index.html.erb"
|
195
|
+
}
|
196
|
+
}
|
197
|
+
],
|
310
198
|
"location": {
|
311
|
-
"type": "
|
312
|
-
"
|
313
|
-
"method": "show"
|
199
|
+
"type": "template",
|
200
|
+
"template": "alchemy/admin/elements/index"
|
314
201
|
},
|
315
|
-
"user_input": "params[:
|
202
|
+
"user_input": "params[:page_version_id]",
|
316
203
|
"confidence": "Weak",
|
317
204
|
"note": ""
|
318
205
|
},
|
319
206
|
{
|
320
207
|
"warning_type": "Dynamic Render Path",
|
321
208
|
"warning_code": 15,
|
322
|
-
"fingerprint": "
|
209
|
+
"fingerprint": "80b9b11d658cd393c549d568b3655c62566862f55b2fa16ed688de7c2e9343ac",
|
323
210
|
"check_name": "Render",
|
324
211
|
"message": "Render path contains parameter value",
|
325
|
-
"file": "app/views/alchemy/admin/
|
326
|
-
"line":
|
212
|
+
"file": "app/views/alchemy/admin/elements/index.html.erb",
|
213
|
+
"line": 31,
|
327
214
|
"link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
|
328
|
-
"code": "render(action =>
|
215
|
+
"code": "render(action => PageVersion.find(params[:page_version_id]).elements.order(:position).includes(*element_includes).not_nested.unfixed.map do\n Alchemy::ElementEditor.new(element)\n end, {})",
|
329
216
|
"render_path": [
|
330
217
|
{
|
331
218
|
"type": "controller",
|
332
|
-
"class": "Alchemy::Admin::
|
333
|
-
"method": "
|
334
|
-
"line":
|
335
|
-
"file": "app/controllers/alchemy/admin/
|
219
|
+
"class": "Alchemy::Admin::ElementsController",
|
220
|
+
"method": "index",
|
221
|
+
"line": 15,
|
222
|
+
"file": "app/controllers/alchemy/admin/elements_controller.rb",
|
336
223
|
"rendered": {
|
337
|
-
"name": "alchemy/admin/
|
338
|
-
"file": "app/views/alchemy/admin/
|
224
|
+
"name": "alchemy/admin/elements/index",
|
225
|
+
"file": "app/views/alchemy/admin/elements/index.html.erb"
|
339
226
|
}
|
340
227
|
}
|
341
228
|
],
|
342
229
|
"location": {
|
343
230
|
"type": "template",
|
344
|
-
"template": "alchemy/admin/
|
231
|
+
"template": "alchemy/admin/elements/index"
|
345
232
|
},
|
346
|
-
"user_input": "params[:
|
233
|
+
"user_input": "params[:page_version_id]",
|
234
|
+
"confidence": "Weak",
|
235
|
+
"note": ""
|
236
|
+
},
|
237
|
+
{
|
238
|
+
"warning_type": "File Access",
|
239
|
+
"warning_code": 16,
|
240
|
+
"fingerprint": "a1197cfa89e3a66e6d10ee060cd87af97d5e978d6d93b5936eb987288f1c02e6",
|
241
|
+
"check_name": "SendFile",
|
242
|
+
"message": "Parameter value used in file name",
|
243
|
+
"file": "app/controllers/alchemy/attachments_controller.rb",
|
244
|
+
"line": 12,
|
245
|
+
"link": "https://brakemanscanner.org/docs/warning_types/file_access/",
|
246
|
+
"code": "send_file(Attachment.find(params[:id]).file.path, :filename => Attachment.find(params[:id]).file_name, :type => Attachment.find(params[:id]).file_mime_type, :disposition => \"inline\")",
|
247
|
+
"render_path": null,
|
248
|
+
"location": {
|
249
|
+
"type": "method",
|
250
|
+
"class": "Alchemy::AttachmentsController",
|
251
|
+
"method": "show"
|
252
|
+
},
|
253
|
+
"user_input": "params[:id]",
|
347
254
|
"confidence": "Weak",
|
348
255
|
"note": ""
|
349
256
|
}
|
350
257
|
],
|
351
|
-
"updated": "2021-
|
352
|
-
"brakeman_version": "
|
258
|
+
"updated": "2021-06-29 20:56:10 +0200",
|
259
|
+
"brakeman_version": "5.0.1"
|
353
260
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require "dragonfly_svg"
|
3
3
|
require "alchemy/dragonfly/processors/crop_resize"
|
4
|
+
require "alchemy/dragonfly/processors/auto_orient"
|
4
5
|
|
5
6
|
# Logger
|
6
7
|
Dragonfly.logger = Rails.logger
|
@@ -16,4 +17,5 @@ Dragonfly::ImageMagick::Processors::Encode::WHITELISTED_ARGS << "flatten"
|
|
16
17
|
|
17
18
|
Rails.application.config.after_initialize do
|
18
19
|
Dragonfly.app(:alchemy_pictures).add_processor(:crop_resize, Alchemy::Dragonfly::Processors::CropResize.new)
|
20
|
+
Dragonfly.app(:alchemy_pictures).add_processor(:auto_orient, Alchemy::Dragonfly::Processors::AutoOrient.new)
|
19
21
|
end
|
@@ -89,6 +89,11 @@ en:
|
|
89
89
|
right: 'Right from text'
|
90
90
|
no_float: 'Above the text'
|
91
91
|
|
92
|
+
ingredient_values:
|
93
|
+
boolean:
|
94
|
+
true: "True"
|
95
|
+
false: "False"
|
96
|
+
|
92
97
|
# == Contactform translations
|
93
98
|
contactform:
|
94
99
|
labels:
|
@@ -194,7 +199,6 @@ en:
|
|
194
199
|
'An error happened': 'An error happened'
|
195
200
|
"Change password": "Change password"
|
196
201
|
"Choose page": "Choose page"
|
197
|
-
"Cleared trash": "Cleared trash"
|
198
202
|
"Clear selection": "Clear selection"
|
199
203
|
"Forgot your password?": "Forgot your password?"
|
200
204
|
"Clipboard": "Clipboard"
|
@@ -204,15 +208,14 @@ en:
|
|
204
208
|
"Currently locked pages": "Currently locked pages"
|
205
209
|
"Default language has to be public": "Default language has to be public"
|
206
210
|
"Delete image": "Delete image"
|
211
|
+
"Delete element": "Delete element"
|
207
212
|
"Do you really want to clear the clipboard?": "Do you really want to clear the clipboard?"
|
208
|
-
"Do you really want to clear the trash?": "Do you really want to clear the trash?"
|
209
213
|
"Do you really want to delete this content?": "Do you really want to delete this content?"
|
210
214
|
"Drag an element over to the element window to restore it": "Drag an element over to the element window to restore it"
|
211
215
|
"Edit Picturemask": "Edit picturemask"
|
212
216
|
"Edit image": "Edit image"
|
213
217
|
"Edit multiple pictures": "Edit multiple pictures"
|
214
218
|
"Elements": "Elements"
|
215
|
-
"Element trashed": "Element trashed"
|
216
219
|
"Error with the Flash® Uploader!": "Error with the Flash® Uploader!"
|
217
220
|
"Excerpt": "Excerpt"
|
218
221
|
"File successfully updated": "File successfully updated"
|
@@ -268,7 +271,6 @@ en:
|
|
268
271
|
"Please log in": "Please log in."
|
269
272
|
"Please seperate the tags with commata": "* Please seperate the tags with commas."
|
270
273
|
"Properties": "Properties"
|
271
|
-
"Publish page": "Publish page"
|
272
274
|
"Read the License": "Read the License"
|
273
275
|
"Redirects to": "Redirects to"
|
274
276
|
"Reload Preview": "Reload Preview"
|
@@ -287,13 +289,14 @@ en:
|
|
287
289
|
"Show clipboard": "Show clipboard"
|
288
290
|
"Copied to clipboard": "Copied to clipboard"
|
289
291
|
"Show picture infos": "Show picture infos"
|
290
|
-
"Show trash": "Show trash"
|
291
292
|
"Site successfully created": "Website successfully created."
|
292
293
|
"Site successfully removed": "Website successfully removed."
|
293
294
|
"Site successfully updated": "Website successfully updated."
|
294
295
|
"Size": "Size"
|
296
|
+
"Sort pages": "Reorder pages"
|
295
297
|
"Successfully added content": "Successfully added %{content}"
|
296
298
|
"Successfully deleted content": "Successfully deleted %{content}"
|
299
|
+
"Successfully deleted element": "Successfully deleted %{element}"
|
297
300
|
"Tags": "Tags"
|
298
301
|
"These pictures could not be deleted, because they were in use": "These pictures could not be deleted, because they were in use: %{names}"
|
299
302
|
"This page is locked": "This page is currently locked by %{name}"
|
@@ -309,6 +312,7 @@ en:
|
|
309
312
|
"Warning!": "Warning!"
|
310
313
|
content_definition_missing: "Warning: Content is missing its definition. Please check the elements.yml"
|
311
314
|
content_deprecated: "WARNING! This content is deprecated and will be removed soon. Please do not use it anymore."
|
315
|
+
ingredient_deprecated: "WARNING! This content is deprecated and will be removed soon. Please do not use it anymore."
|
312
316
|
element_definition_missing: "WARNING! Missing element definition. Please check your elements.yml file."
|
313
317
|
element_deprecated: "WARNING! This element is deprecated and will be removed soon. Please do not use it anymore."
|
314
318
|
page_definition_missing: "WARNING! Missing page layout definition. Please check your page_layouts.yml file."
|
@@ -320,7 +324,6 @@ en:
|
|
320
324
|
element_dirty_close_window_notice: "You have unsaved elements. Do you really want to close the elements window?"
|
321
325
|
"Your last login was on": "Your last login was on %{time}."
|
322
326
|
"Your last updated pages": "Your last updated pages"
|
323
|
-
"Your trash is empty": "Your trash is empty"
|
324
327
|
above: "above"
|
325
328
|
add: "Add"
|
326
329
|
align_in_text: "Alignment in text"
|
@@ -328,7 +331,6 @@ en:
|
|
328
331
|
all_pictures: "All pictures"
|
329
332
|
apply: "apply"
|
330
333
|
assign_file: "Assign a file"
|
331
|
-
assign_file_from_archive: "assign a file from your archive"
|
332
334
|
assign_image: "Assign an image"
|
333
335
|
attached_to: "attached to"
|
334
336
|
attachment_filename_notice: "* Please do not use any special characters for the filename."
|
@@ -336,17 +338,18 @@ en:
|
|
336
338
|
big_thumbnails: "Big thumbnails"
|
337
339
|
cancel: "cancel"
|
338
340
|
cannot_delete_picture_notice: "Cannot delete Picture %{name}, because it's still in use."
|
341
|
+
cannot_visit_unpublic_page: "Publish page before visiting it."
|
339
342
|
choose_file_to_link: "Please choose a file to link"
|
340
343
|
"clear clipboard": "clear clipboard"
|
341
|
-
"clear trash": "clear trash"
|
342
344
|
click_to_show_all: "Click to show all again."
|
345
|
+
confirm_to_delete_element: "Do you really want to delete this element? It cannot be restored!"
|
343
346
|
confirm_to_delete_file: "Do you really want to delete this file from the server?"
|
344
347
|
confirm_to_delete_image: "Do you really want to delete this image from server?"
|
345
348
|
confirm_to_delete_image_from_server: "Do you really want to delete this image from the server?"
|
346
349
|
confirm_to_delete_images_from_server: "Do you really want to delete these images from the server?"
|
347
350
|
confirm_to_delete_menu: "Do you really want to delete this menu?"
|
348
351
|
confirm_to_delete_node: "Do you really want to delete this menu node?"
|
349
|
-
confirm_to_delete_page: "Do you really want to delete this page?
|
352
|
+
confirm_to_delete_page: "Do you really want to delete this page?"
|
350
353
|
content_essence_not_found: "Content essence not found"
|
351
354
|
content_not_found: "Field for content not present."
|
352
355
|
content_validations_headline: "Please check marked fields below"
|
@@ -392,7 +395,8 @@ en:
|
|
392
395
|
element_saved: "Saved element."
|
393
396
|
enter_external_link: "Please enter the URL you want to link with"
|
394
397
|
explain_cropping: "<p>Move the frame and change its size with the mouse or arrow keys to adjust the image mask. Click on \"apply\" when you are satisfied with your selection.</p><p>If you want to return to the original centered image mask like it was defined in the layout, click \"reset\" and \"apply\" afterwards.</p>"
|
395
|
-
explain_publishing: "Publish
|
398
|
+
explain_publishing: "Publish current page content"
|
399
|
+
explain_sitemap_dragndrop_sorting: "Tip: Drag the pages at the icon in order to sort them."
|
396
400
|
explain_unlocking: "Leave page and unlock it for other users."
|
397
401
|
external_link_notice_1: "Please enter the complete url with http:// or a similar protocol."
|
398
402
|
external_link_notice_2: "To refer a path from your website url, start with a /."
|
@@ -420,7 +424,7 @@ en:
|
|
420
424
|
dashboard: "Dashboard"
|
421
425
|
image_alt_tag: "Alt-tag"
|
422
426
|
image_caption: "Caption"
|
423
|
-
image_name: "Name"
|
427
|
+
image_name: "Name: %{name}"
|
424
428
|
image_title: "Title-tag"
|
425
429
|
internal_link_headline: "Search for a page to link to by entering its name into the Page select."
|
426
430
|
internal_link_page_elements_explanation: "Additionally you can choose an anchor to an element from selected page."
|
@@ -489,7 +493,7 @@ en:
|
|
489
493
|
or_replace_it_with_an_existing_tag: 'Or replace it with an existing tag'
|
490
494
|
"Page created": "Page: '%{name}' created."
|
491
495
|
page_infos: 'Page info'
|
492
|
-
page_layout_changed_notice: "Page type was changed. Elements not usable anymore have been
|
496
|
+
page_layout_changed_notice: "Page type was changed. Elements not usable anymore have been hided."
|
493
497
|
page_properties: "Page properties"
|
494
498
|
page_public: "published"
|
495
499
|
page_published: "Published page"
|
@@ -536,6 +540,8 @@ en:
|
|
536
540
|
'1024': '1024px (iPad - Landscape)'
|
537
541
|
'1280': '1280px (Desktop)'
|
538
542
|
preview_url: Preview
|
543
|
+
publish_page_language_not_public: Cannot publish page if language is not public
|
544
|
+
publish_page_not_allowed: You have not the permission to publish this page
|
539
545
|
recently_uploaded_only: 'Recently uploaded only'
|
540
546
|
"regular method": "Regular method"
|
541
547
|
remove: "Remove"
|
@@ -551,6 +557,7 @@ en:
|
|
551
557
|
robot_follow: "robot may follow links."
|
552
558
|
robot_index: "allow robot to index."
|
553
559
|
save: "Save"
|
560
|
+
"save order": "Save order"
|
554
561
|
saved_link: "Link saved."
|
555
562
|
search: "search"
|
556
563
|
search_engines: "Search engines"
|
@@ -565,7 +572,6 @@ en:
|
|
565
572
|
subject: "Subject"
|
566
573
|
successfully_added_element: "Successfully added new element."
|
567
574
|
successfully_deleted_tag: "Successfully deleted tag"
|
568
|
-
successfully_restored_element: "Element restored successfully."
|
569
575
|
successfully_saved_element_position: "Element position updated successfully."
|
570
576
|
successfully_updated_tag: "Successfully updated tag"
|
571
577
|
swap_image: "Change image"
|
@@ -575,7 +581,6 @@ en:
|
|
575
581
|
this_picture_is_used_on_these_pages: "This picture is used on following pages"
|
576
582
|
title: "Title"
|
577
583
|
to_alchemy: "To Alchemy"
|
578
|
-
"trash element": "Put element into trash"
|
579
584
|
unknown: "unknown"
|
580
585
|
unlink: "Remove link from this image."
|
581
586
|
unlock_page: "Leave page"
|
@@ -701,11 +706,18 @@ en:
|
|
701
706
|
# Translations for Alchemy models
|
702
707
|
activemodel:
|
703
708
|
models:
|
709
|
+
alchemy/essence_headline:
|
710
|
+
one: Headline
|
711
|
+
other: Headline
|
704
712
|
alchemy/message:
|
705
713
|
one: Message
|
706
714
|
other: Messages
|
707
715
|
alchemy/admin/preview_url: Internal
|
708
716
|
attributes:
|
717
|
+
alchemy/essence_headline:
|
718
|
+
body: Headline
|
719
|
+
level: Level
|
720
|
+
size: Size
|
709
721
|
alchemy/message:
|
710
722
|
salutation: 'Salutation'
|
711
723
|
firstname: 'Firstname'
|
@@ -782,7 +794,6 @@ en:
|
|
782
794
|
name: "Name"
|
783
795
|
public: "visible"
|
784
796
|
tag_list: Tags
|
785
|
-
trashed: Trashed
|
786
797
|
alchemy/essence_file:
|
787
798
|
css_class: Style
|
788
799
|
alchemy/essence_picture:
|
data/config/routes.rb
CHANGED
@@ -6,7 +6,7 @@ Alchemy::Engine.routes.draw do
|
|
6
6
|
|
7
7
|
get "/sitemap.xml" => "pages#sitemap", format: "xml"
|
8
8
|
|
9
|
-
scope Alchemy.admin_path, {constraints: Alchemy.admin_constraints} do
|
9
|
+
scope Alchemy.admin_path, { constraints: Alchemy.admin_constraints } do
|
10
10
|
get "/" => redirect("#{Alchemy.admin_path}/dashboard"), as: :admin
|
11
11
|
get "/dashboard" => "admin/dashboard#index", as: :admin_dashboard
|
12
12
|
get "/dashboard/info" => "admin/dashboard#info", as: :dashboard_info
|
@@ -15,7 +15,7 @@ Alchemy::Engine.routes.draw do
|
|
15
15
|
get "/leave" => "admin/base#leave", as: :leave_admin
|
16
16
|
end
|
17
17
|
|
18
|
-
namespace :admin, {path: Alchemy.admin_path, constraints: Alchemy.admin_constraints} do
|
18
|
+
namespace :admin, { path: Alchemy.admin_path, constraints: Alchemy.admin_constraints } do
|
19
19
|
resources :contents, only: [:create]
|
20
20
|
|
21
21
|
resources :nodes
|
@@ -28,13 +28,13 @@ Alchemy::Engine.routes.draw do
|
|
28
28
|
post :copy_language_tree
|
29
29
|
get :create_language
|
30
30
|
get :link
|
31
|
+
get :sort
|
31
32
|
get :tree
|
32
33
|
end
|
33
34
|
member do
|
34
35
|
post :unlock
|
35
36
|
post :publish
|
36
|
-
|
37
|
-
post :visit
|
37
|
+
post :fold
|
38
38
|
get :configure
|
39
39
|
get :preview
|
40
40
|
get :info
|
@@ -49,7 +49,6 @@ Alchemy::Engine.routes.draw do
|
|
49
49
|
member do
|
50
50
|
patch :publish
|
51
51
|
post :fold
|
52
|
-
delete :trash
|
53
52
|
end
|
54
53
|
end
|
55
54
|
|
@@ -62,6 +61,8 @@ Alchemy::Engine.routes.draw do
|
|
62
61
|
get :edit_multiple
|
63
62
|
end
|
64
63
|
member do
|
64
|
+
get :url
|
65
|
+
put :assign
|
65
66
|
delete :remove
|
66
67
|
end
|
67
68
|
end
|
@@ -69,23 +70,25 @@ Alchemy::Engine.routes.draw do
|
|
69
70
|
resources :attachments, except: [:new] do
|
70
71
|
member do
|
71
72
|
get :download
|
73
|
+
put :assign
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
75
|
-
resources :
|
76
|
-
|
77
|
-
|
78
|
-
end
|
77
|
+
resources :essence_audios, only: [:edit, :update]
|
78
|
+
|
79
|
+
concern :croppable do
|
79
80
|
member do
|
80
81
|
get :crop
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
84
|
-
resources :
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
resources :essence_pictures, only: [:edit, :update], concerns: [:croppable]
|
86
|
+
|
87
|
+
resources :essence_files, only: [:edit, :update]
|
88
|
+
|
89
|
+
resources :essence_videos, only: [:edit, :update]
|
90
|
+
|
91
|
+
resources :ingredients, only: [:edit, :update], concerns: [:croppable]
|
89
92
|
|
90
93
|
resources :legacy_page_urls
|
91
94
|
resources :languages do
|
@@ -103,13 +106,6 @@ Alchemy::Engine.routes.draw do
|
|
103
106
|
end
|
104
107
|
end
|
105
108
|
|
106
|
-
resource :trash, only: :index, controller: "trash" do
|
107
|
-
collection do
|
108
|
-
get :index
|
109
|
-
delete :clear
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
109
|
resources :tags do
|
114
110
|
collection do
|
115
111
|
get :autocomplete
|
@@ -130,7 +126,7 @@ Alchemy::Engine.routes.draw do
|
|
130
126
|
resources :elements, only: :show
|
131
127
|
resources :contents, only: :show
|
132
128
|
|
133
|
-
namespace :api, defaults: {format: "json"} do
|
129
|
+
namespace :api, defaults: { format: "json" } do
|
134
130
|
resources :contents, only: [:index, :show]
|
135
131
|
|
136
132
|
resources :elements, only: [:index, :show] do
|
@@ -144,9 +140,6 @@ Alchemy::Engine.routes.draw do
|
|
144
140
|
collection do
|
145
141
|
get :nested
|
146
142
|
end
|
147
|
-
member do
|
148
|
-
patch :move
|
149
|
-
end
|
150
143
|
end
|
151
144
|
|
152
145
|
get "/pages/*urlname(.:format)" => "pages#show", as: "page"
|
@@ -161,7 +154,7 @@ Alchemy::Engine.routes.draw do
|
|
161
154
|
end
|
162
155
|
|
163
156
|
get "/:locale" => "pages#index",
|
164
|
-
constraints: {locale: Alchemy::RoutingConstraints::LOCALE_REGEXP},
|
157
|
+
constraints: { locale: Alchemy::RoutingConstraints::LOCALE_REGEXP },
|
165
158
|
as: :show_language_root
|
166
159
|
|
167
160
|
# The page show action has to be last route
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreatePageVersions < ActiveRecord::Migration[5.2]
|
4
|
+
def change
|
5
|
+
create_table :alchemy_page_versions do |t|
|
6
|
+
t.references :page,
|
7
|
+
null: false,
|
8
|
+
index: true,
|
9
|
+
foreign_key: {
|
10
|
+
to_table: :alchemy_pages,
|
11
|
+
on_delete: :cascade,
|
12
|
+
}
|
13
|
+
t.datetime :public_on
|
14
|
+
t.datetime :public_until
|
15
|
+
t.index [:public_on, :public_until]
|
16
|
+
t.timestamps
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|