alchemy_cms 5.2.0 → 6.0.0.b3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +6 -14
- data/.gitignore +0 -1
- data/.hound.yml +1 -1
- data/.rubocop.yml +46 -4
- data/CHANGELOG.md +114 -5
- data/Gemfile +8 -1
- data/README.md +5 -2
- data/alchemy_cms.gemspec +78 -65
- data/app/assets/javascripts/alchemy/admin.js +0 -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 +1 -1
- 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/templates/node_folder.hbs +1 -1
- data/app/assets/stylesheets/alchemy/_extends.scss +15 -2
- data/app/assets/stylesheets/alchemy/admin.scss +1 -1
- data/app/assets/stylesheets/alchemy/archive.scss +20 -5
- 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 +1 -0
- data/app/controllers/alchemy/admin/attachments_controller.rb +8 -4
- data/app/controllers/alchemy/admin/base_controller.rb +5 -7
- data/app/controllers/alchemy/admin/elements_controller.rb +59 -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 +7 -22
- data/app/controllers/alchemy/admin/pictures_controller.rb +56 -17
- data/app/controllers/alchemy/admin/resources_controller.rb +84 -10
- data/app/controllers/alchemy/api/elements_controller.rb +13 -4
- data/app/controllers/alchemy/api/pages_controller.rb +4 -3
- 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 +26 -1
- data/app/decorators/alchemy/ingredient_editor.rb +158 -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 +23 -6
- 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 +24 -7
- data/app/models/alchemy/content.rb +1 -6
- data/app/models/alchemy/content/factory.rb +23 -27
- data/app/models/alchemy/element.rb +39 -72
- 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 +111 -98
- data/app/models/alchemy/element/element_ingredients.rb +184 -0
- data/app/models/alchemy/element/presenters.rb +104 -85
- 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 +183 -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/page.rb +76 -33
- 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 +117 -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_version.rb +58 -0
- data/app/models/alchemy/picture.rb +18 -40
- 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 +24 -96
- 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_tree_serializer.rb +3 -2
- 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 +2 -3
- 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/attachments/index.html.erb +2 -3
- 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/create.js.erb +1 -1
- data/app/views/alchemy/admin/elements/{trash.js.erb → destroy.js.erb} +2 -6
- data/app/views/alchemy/admin/elements/fold.js.erb +2 -2
- 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 -6
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +5 -2
- data/app/views/alchemy/admin/pages/_toolbar.html.erb +1 -1
- data/app/views/alchemy/admin/pages/edit.html.erb +36 -24
- data/app/views/alchemy/admin/pages/index.html.erb +2 -9
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +2 -4
- data/app/views/alchemy/admin/partials/_routes.html.erb +7 -11
- data/app/views/alchemy/admin/partials/_search_form.html.erb +9 -0
- data/app/views/alchemy/admin/pictures/_archive.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +5 -7
- 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/pictures/index.html.erb +8 -3
- data/app/views/alchemy/admin/resources/_filter.html.erb +12 -0
- data/app/views/alchemy/admin/resources/_filter_bar.html.erb +14 -17
- data/app/views/alchemy/admin/resources/_form.html.erb +3 -0
- data/app/views/alchemy/admin/resources/_table_header.html.erb +15 -0
- data/app/views/alchemy/admin/resources/index.html.erb +3 -11
- 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_picture_editor.html.erb +27 -12
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +3 -3
- 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 +52 -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 +26 -0
- data/app/views/alchemy/ingredients/_node_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_page_editor.html.erb +25 -0
- data/app/views/alchemy/ingredients/_page_view.html.erb +4 -0
- data/app/views/alchemy/ingredients/_picture_editor.html.erb +60 -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 +30 -0
- data/app/views/alchemy/ingredients/_select_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_text_editor.html.erb +20 -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 +10 -0
- data/config/locales/alchemy.en.yml +108 -64
- data/config/routes.rb +17 -22
- 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/dragonfly/processors/crop_resize.rb +35 -0
- data/lib/alchemy/elements_finder.rb +14 -60
- data/lib/alchemy/essence.rb +1 -2
- data/lib/alchemy/forms/builder.rb +21 -1
- data/lib/alchemy/hints.rb +8 -4
- data/lib/alchemy/page_layout.rb +0 -13
- data/lib/alchemy/permissions.rb +30 -29
- data/lib/alchemy/resource.rb +13 -3
- data/lib/alchemy/resource_filter.rb +40 -0
- data/lib/alchemy/resources_helper.rb +1 -16
- data/lib/alchemy/tasks/tidy.rb +29 -0
- data/lib/alchemy/test_support.rb +2 -11
- 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 +75 -0
- data/lib/alchemy/tinymce.rb +17 -0
- 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 +62 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -0
- 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/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/thumbnails.rake +4 -2
- data/lib/tasks/alchemy/tidy.rake +12 -0
- data/lib/tasks/alchemy/upgrade.rake +26 -0
- data/package.json +3 -2
- data/package/admin.js +11 -1
- data/package/src/__tests__/i18n.spec.js +23 -0
- data/package/src/file_editors.js +28 -0
- data/package/src/i18n.js +1 -3
- 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/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +3 -18
- data/vendor/assets/stylesheets/jquery.Jcrop.min.scss +2 -28
- metadata +292 -55
- 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/stylesheets/alchemy/trash.scss +0 -8
- data/app/controllers/alchemy/admin/trash_controller.rb +0 -44
- data/app/views/alchemy/admin/attachments/_filter_bar.html.erb +0 -29
- 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/pictures/_filter_bar.html.erb +0 -30
- 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/test_support/factories.rb +0 -16
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require "dragonfly_svg"
|
|
3
|
+
require "alchemy/dragonfly/processors/crop_resize"
|
|
4
|
+
require "alchemy/dragonfly/processors/auto_orient"
|
|
3
5
|
|
|
4
6
|
# Logger
|
|
5
7
|
Dragonfly.logger = Rails.logger
|
|
@@ -9,3 +11,11 @@ if defined?(ActiveRecord::Base)
|
|
|
9
11
|
ActiveRecord::Base.extend Dragonfly::Model
|
|
10
12
|
ActiveRecord::Base.extend Dragonfly::Model::Validations
|
|
11
13
|
end
|
|
14
|
+
|
|
15
|
+
# Dragonfly 1.4.0 only allows `quality` as argument to `encode`
|
|
16
|
+
Dragonfly::ImageMagick::Processors::Encode::WHITELISTED_ARGS << "flatten"
|
|
17
|
+
|
|
18
|
+
Rails.application.config.after_initialize do
|
|
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)
|
|
21
|
+
end
|
|
@@ -57,6 +57,90 @@ en:
|
|
|
57
57
|
main_menu: Main Menu
|
|
58
58
|
footer_menu: Footer Menu
|
|
59
59
|
|
|
60
|
+
# == Mime Types translations
|
|
61
|
+
# These are human readable mime types used for the document-type row in archive files.
|
|
62
|
+
#
|
|
63
|
+
mime_types: &mime_types
|
|
64
|
+
application/msexcel: Excel Spreadsheet
|
|
65
|
+
application/mspowerpoint: PowerPoint Presentation
|
|
66
|
+
application/msword: Word Document
|
|
67
|
+
application/pdf: PDF Document
|
|
68
|
+
application/rtf: RTF Document
|
|
69
|
+
application/vcard: vCard
|
|
70
|
+
application/vnd:
|
|
71
|
+
ms-excel: Excel Spreadsheet
|
|
72
|
+
ms-powerpoint: PowerPoint Presentation
|
|
73
|
+
ms-word: Word Document
|
|
74
|
+
openxmlformats-officedocument:
|
|
75
|
+
presentationml:
|
|
76
|
+
presentation: PowerPoint 2007 Presentation
|
|
77
|
+
spreadsheetml:
|
|
78
|
+
sheet: Excel 2007 Spreadsheet
|
|
79
|
+
wordprocessingml:
|
|
80
|
+
document: Word 2007 Document
|
|
81
|
+
application/x-flash-video: Flash Video
|
|
82
|
+
application/x-rar: RAR Archive
|
|
83
|
+
application/x-shockwave-flash: Flash Movie
|
|
84
|
+
application/zip: ZIP Archive
|
|
85
|
+
audio/mp4: MPEG-4 Audio
|
|
86
|
+
audio/mpeg: MP3 Audio
|
|
87
|
+
audio/wav: WAV Audio
|
|
88
|
+
audio/x-wav: WAV Audio
|
|
89
|
+
image/gif: GIF Image
|
|
90
|
+
image/jpeg: JPG Image
|
|
91
|
+
image/png: PNG Image
|
|
92
|
+
image/tiff: TIFF Image
|
|
93
|
+
image/x-psd: Photoshop File
|
|
94
|
+
image/svg+xml: SVG Image
|
|
95
|
+
text/plain: Plain Text Document
|
|
96
|
+
text/x-vcard: vCard
|
|
97
|
+
video/mp4: MPEG-4 Video
|
|
98
|
+
video/mpeg: MPEG Video
|
|
99
|
+
video/quicktime: Quicktime Video
|
|
100
|
+
video/x-flv: Flash Video
|
|
101
|
+
video/x-ms-wmv: Windows Media Video
|
|
102
|
+
video/x-msvideo: AVI Video
|
|
103
|
+
|
|
104
|
+
# === Translations for filter names and values
|
|
105
|
+
# Used in the right filter column in case the model has `alchemy_resource_filters` defined.
|
|
106
|
+
#
|
|
107
|
+
filters:
|
|
108
|
+
page:
|
|
109
|
+
by_page_layout:
|
|
110
|
+
name: Page Type
|
|
111
|
+
status:
|
|
112
|
+
name: Status
|
|
113
|
+
values:
|
|
114
|
+
not_public: Unpublished
|
|
115
|
+
published: Published
|
|
116
|
+
restricted: Restricted
|
|
117
|
+
picture:
|
|
118
|
+
by_file_format:
|
|
119
|
+
name: File Type
|
|
120
|
+
values:
|
|
121
|
+
gif: GIF Image
|
|
122
|
+
jpeg: JPG Image
|
|
123
|
+
png: PNG Image
|
|
124
|
+
tiff: TIFF Image
|
|
125
|
+
misc:
|
|
126
|
+
name: Miscellaneous
|
|
127
|
+
values:
|
|
128
|
+
last_upload: Last upload only
|
|
129
|
+
recent: Recently uploaded only
|
|
130
|
+
without_tag: Without tag
|
|
131
|
+
attachment:
|
|
132
|
+
by_file_type:
|
|
133
|
+
name: File Type
|
|
134
|
+
values:
|
|
135
|
+
<<: *mime_types
|
|
136
|
+
misc:
|
|
137
|
+
name: Miscellaneous
|
|
138
|
+
values:
|
|
139
|
+
last_upload: Last upload only
|
|
140
|
+
recent: Recently uploaded only
|
|
141
|
+
without_tag: Without tag
|
|
142
|
+
deletable: Not linked by file content
|
|
143
|
+
|
|
60
144
|
# === Translations for content validations
|
|
61
145
|
# Used when a user did not enter (correct) values to the content field.
|
|
62
146
|
#
|
|
@@ -89,6 +173,11 @@ en:
|
|
|
89
173
|
right: 'Right from text'
|
|
90
174
|
no_float: 'Above the text'
|
|
91
175
|
|
|
176
|
+
ingredient_values:
|
|
177
|
+
boolean:
|
|
178
|
+
true: "True"
|
|
179
|
+
false: "False"
|
|
180
|
+
|
|
92
181
|
# == Contactform translations
|
|
93
182
|
contactform:
|
|
94
183
|
labels:
|
|
@@ -127,49 +216,6 @@ en:
|
|
|
127
216
|
editor: "Editor"
|
|
128
217
|
admin: "Administrator"
|
|
129
218
|
|
|
130
|
-
# == Mime Types translations
|
|
131
|
-
# These are human readable mime types used for the document-type row in archive files.
|
|
132
|
-
mime_types:
|
|
133
|
-
application/msexcel: Excel Spreadsheet
|
|
134
|
-
application/mspowerpoint: PowerPoint Presentation
|
|
135
|
-
application/msword: Word Document
|
|
136
|
-
application/pdf: PDF Document
|
|
137
|
-
application/rtf: RTF Document
|
|
138
|
-
application/vcard: vCard
|
|
139
|
-
application/vnd:
|
|
140
|
-
ms-excel: Excel Spreadsheet
|
|
141
|
-
ms-powerpoint: PowerPoint Presentation
|
|
142
|
-
ms-word: Word Document
|
|
143
|
-
openxmlformats-officedocument:
|
|
144
|
-
presentationml:
|
|
145
|
-
presentation: PowerPoint 2007 Presentation
|
|
146
|
-
spreadsheetml:
|
|
147
|
-
sheet: Excel 2007 Spreadsheet
|
|
148
|
-
wordprocessingml:
|
|
149
|
-
document: Word 2007 Document
|
|
150
|
-
application/x-flash-video: Flash Video
|
|
151
|
-
application/x-rar: RAR Archive
|
|
152
|
-
application/x-shockwave-flash: Flash Movie
|
|
153
|
-
application/zip: ZIP Archive
|
|
154
|
-
audio/mp4: MPEG-4 Audio
|
|
155
|
-
audio/mpeg: MP3 Audio
|
|
156
|
-
audio/wav: WAV Audio
|
|
157
|
-
audio/x-wav: WAV Audio
|
|
158
|
-
image/gif: GIF Image
|
|
159
|
-
image/jpeg: JPG Image
|
|
160
|
-
image/png: PNG Image
|
|
161
|
-
image/tiff: TIFF Image
|
|
162
|
-
image/x-psd: Photoshop File
|
|
163
|
-
image/svg+xml: SVG Image
|
|
164
|
-
text/plain: Plain Text Document
|
|
165
|
-
text/x-vcard: vCard
|
|
166
|
-
video/mp4: MPEG-4 Video
|
|
167
|
-
video/mpeg: MPEG Video
|
|
168
|
-
video/quicktime: Quicktime Video
|
|
169
|
-
video/x-flv: Flash Video
|
|
170
|
-
video/x-ms-wmv: Windows Media Video
|
|
171
|
-
video/x-msvideo: AVI Video
|
|
172
|
-
|
|
173
219
|
link_target_options:
|
|
174
220
|
default: Same Window
|
|
175
221
|
blank: New Window/Tab
|
|
@@ -194,7 +240,6 @@ en:
|
|
|
194
240
|
'An error happened': 'An error happened'
|
|
195
241
|
"Change password": "Change password"
|
|
196
242
|
"Choose page": "Choose page"
|
|
197
|
-
"Cleared trash": "Cleared trash"
|
|
198
243
|
"Clear selection": "Clear selection"
|
|
199
244
|
"Forgot your password?": "Forgot your password?"
|
|
200
245
|
"Clipboard": "Clipboard"
|
|
@@ -204,15 +249,14 @@ en:
|
|
|
204
249
|
"Currently locked pages": "Currently locked pages"
|
|
205
250
|
"Default language has to be public": "Default language has to be public"
|
|
206
251
|
"Delete image": "Delete image"
|
|
252
|
+
"Delete element": "Delete element"
|
|
207
253
|
"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
254
|
"Do you really want to delete this content?": "Do you really want to delete this content?"
|
|
210
255
|
"Drag an element over to the element window to restore it": "Drag an element over to the element window to restore it"
|
|
211
256
|
"Edit Picturemask": "Edit picturemask"
|
|
212
257
|
"Edit image": "Edit image"
|
|
213
258
|
"Edit multiple pictures": "Edit multiple pictures"
|
|
214
259
|
"Elements": "Elements"
|
|
215
|
-
"Element trashed": "Element trashed"
|
|
216
260
|
"Error with the Flash® Uploader!": "Error with the Flash® Uploader!"
|
|
217
261
|
"Excerpt": "Excerpt"
|
|
218
262
|
"File successfully updated": "File successfully updated"
|
|
@@ -268,7 +312,6 @@ en:
|
|
|
268
312
|
"Please log in": "Please log in."
|
|
269
313
|
"Please seperate the tags with commata": "* Please seperate the tags with commas."
|
|
270
314
|
"Properties": "Properties"
|
|
271
|
-
"Publish page": "Publish page"
|
|
272
315
|
"Read the License": "Read the License"
|
|
273
316
|
"Redirects to": "Redirects to"
|
|
274
317
|
"Reload Preview": "Reload Preview"
|
|
@@ -287,7 +330,6 @@ en:
|
|
|
287
330
|
"Show clipboard": "Show clipboard"
|
|
288
331
|
"Copied to clipboard": "Copied to clipboard"
|
|
289
332
|
"Show picture infos": "Show picture infos"
|
|
290
|
-
"Show trash": "Show trash"
|
|
291
333
|
"Site successfully created": "Website successfully created."
|
|
292
334
|
"Site successfully removed": "Website successfully removed."
|
|
293
335
|
"Site successfully updated": "Website successfully updated."
|
|
@@ -295,6 +337,7 @@ en:
|
|
|
295
337
|
"Sort pages": "Reorder pages"
|
|
296
338
|
"Successfully added content": "Successfully added %{content}"
|
|
297
339
|
"Successfully deleted content": "Successfully deleted %{content}"
|
|
340
|
+
"Successfully deleted element": "Successfully deleted %{element}"
|
|
298
341
|
"Tags": "Tags"
|
|
299
342
|
"These pictures could not be deleted, because they were in use": "These pictures could not be deleted, because they were in use: %{names}"
|
|
300
343
|
"This page is locked": "This page is currently locked by %{name}"
|
|
@@ -310,6 +353,7 @@ en:
|
|
|
310
353
|
"Warning!": "Warning!"
|
|
311
354
|
content_definition_missing: "Warning: Content is missing its definition. Please check the elements.yml"
|
|
312
355
|
content_deprecated: "WARNING! This content is deprecated and will be removed soon. Please do not use it anymore."
|
|
356
|
+
ingredient_deprecated: "WARNING! This content is deprecated and will be removed soon. Please do not use it anymore."
|
|
313
357
|
element_definition_missing: "WARNING! Missing element definition. Please check your elements.yml file."
|
|
314
358
|
element_deprecated: "WARNING! This element is deprecated and will be removed soon. Please do not use it anymore."
|
|
315
359
|
page_definition_missing: "WARNING! Missing page layout definition. Please check your page_layouts.yml file."
|
|
@@ -321,7 +365,6 @@ en:
|
|
|
321
365
|
element_dirty_close_window_notice: "You have unsaved elements. Do you really want to close the elements window?"
|
|
322
366
|
"Your last login was on": "Your last login was on %{time}."
|
|
323
367
|
"Your last updated pages": "Your last updated pages"
|
|
324
|
-
"Your trash is empty": "Your trash is empty"
|
|
325
368
|
above: "above"
|
|
326
369
|
add: "Add"
|
|
327
370
|
align_in_text: "Alignment in text"
|
|
@@ -329,7 +372,6 @@ en:
|
|
|
329
372
|
all_pictures: "All pictures"
|
|
330
373
|
apply: "apply"
|
|
331
374
|
assign_file: "Assign a file"
|
|
332
|
-
assign_file_from_archive: "assign a file from your archive"
|
|
333
375
|
assign_image: "Assign an image"
|
|
334
376
|
attached_to: "attached to"
|
|
335
377
|
attachment_filename_notice: "* Please do not use any special characters for the filename."
|
|
@@ -337,17 +379,18 @@ en:
|
|
|
337
379
|
big_thumbnails: "Big thumbnails"
|
|
338
380
|
cancel: "cancel"
|
|
339
381
|
cannot_delete_picture_notice: "Cannot delete Picture %{name}, because it's still in use."
|
|
382
|
+
cannot_visit_unpublic_page: "Publish page before visiting it."
|
|
340
383
|
choose_file_to_link: "Please choose a file to link"
|
|
341
384
|
"clear clipboard": "clear clipboard"
|
|
342
|
-
"clear trash": "clear trash"
|
|
343
385
|
click_to_show_all: "Click to show all again."
|
|
386
|
+
confirm_to_delete_element: "Do you really want to delete this element? It cannot be restored!"
|
|
344
387
|
confirm_to_delete_file: "Do you really want to delete this file from the server?"
|
|
345
388
|
confirm_to_delete_image: "Do you really want to delete this image from server?"
|
|
346
389
|
confirm_to_delete_image_from_server: "Do you really want to delete this image from the server?"
|
|
347
390
|
confirm_to_delete_images_from_server: "Do you really want to delete these images from the server?"
|
|
348
391
|
confirm_to_delete_menu: "Do you really want to delete this menu?"
|
|
349
392
|
confirm_to_delete_node: "Do you really want to delete this menu node?"
|
|
350
|
-
confirm_to_delete_page: "Do you really want to delete this page?
|
|
393
|
+
confirm_to_delete_page: "Do you really want to delete this page?"
|
|
351
394
|
content_essence_not_found: "Content essence not found"
|
|
352
395
|
content_not_found: "Field for content not present."
|
|
353
396
|
content_validations_headline: "Please check marked fields below"
|
|
@@ -393,7 +436,7 @@ en:
|
|
|
393
436
|
element_saved: "Saved element."
|
|
394
437
|
enter_external_link: "Please enter the URL you want to link with"
|
|
395
438
|
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>"
|
|
396
|
-
explain_publishing: "Publish
|
|
439
|
+
explain_publishing: "Publish current page content"
|
|
397
440
|
explain_sitemap_dragndrop_sorting: "Tip: Drag the pages at the icon in order to sort them."
|
|
398
441
|
explain_unlocking: "Leave page and unlock it for other users."
|
|
399
442
|
external_link_notice_1: "Please enter the complete url with http:// or a similar protocol."
|
|
@@ -401,6 +444,7 @@ en:
|
|
|
401
444
|
female: "Female"
|
|
402
445
|
file: "File"
|
|
403
446
|
file_rename_error: "Error renaming file."
|
|
447
|
+
filtered_by: "Filtered by"
|
|
404
448
|
from_at: "from %{by} at %{at}"
|
|
405
449
|
height: "Height"
|
|
406
450
|
help:
|
|
@@ -422,7 +466,7 @@ en:
|
|
|
422
466
|
dashboard: "Dashboard"
|
|
423
467
|
image_alt_tag: "Alt-tag"
|
|
424
468
|
image_caption: "Caption"
|
|
425
|
-
image_name: "Name"
|
|
469
|
+
image_name: "Name: %{name}"
|
|
426
470
|
image_title: "Title-tag"
|
|
427
471
|
internal_link_headline: "Search for a page to link to by entering its name into the Page select."
|
|
428
472
|
internal_link_page_elements_explanation: "Additionally you can choose an anchor to an element from selected page."
|
|
@@ -433,7 +477,6 @@ en:
|
|
|
433
477
|
javascript_disabled_text: "Alchemy needs Javascript to run smoothly. Please enable it in your browser settings."
|
|
434
478
|
language_code_placeholder: 'i.e. en'
|
|
435
479
|
language_pages_copied: "Language tree successfully copied."
|
|
436
|
-
last_upload_only: "Last upload only"
|
|
437
480
|
left: "left"
|
|
438
481
|
legacy_url_info_text: "A link is a redirect from an old URL to the current URL of this page. This redirect happens with a <a href='https://support.google.com/webmasters/answer/93633' target='_blank'>301 status code</a>."
|
|
439
482
|
link_image: "Link this image."
|
|
@@ -491,7 +534,7 @@ en:
|
|
|
491
534
|
or_replace_it_with_an_existing_tag: 'Or replace it with an existing tag'
|
|
492
535
|
"Page created": "Page: '%{name}' created."
|
|
493
536
|
page_infos: 'Page info'
|
|
494
|
-
page_layout_changed_notice: "Page type was changed. Elements not usable anymore have been
|
|
537
|
+
page_layout_changed_notice: "Page type was changed. Elements not usable anymore have been hided."
|
|
495
538
|
page_properties: "Page properties"
|
|
496
539
|
page_public: "published"
|
|
497
540
|
page_published: "Published page"
|
|
@@ -517,11 +560,6 @@ en:
|
|
|
517
560
|
comma_seperated: "Separate by comma"
|
|
518
561
|
password: "Password"
|
|
519
562
|
paste: "paste"
|
|
520
|
-
picture_library:
|
|
521
|
-
filter:
|
|
522
|
-
last_upload: "from last upload"
|
|
523
|
-
recent: "that where recently uploaded"
|
|
524
|
-
without_tag: "without tag"
|
|
525
563
|
pictures_in_page: "%{page} in %{pictures}"
|
|
526
564
|
place_link: "Link text"
|
|
527
565
|
player_version: "Flash Player version"
|
|
@@ -538,6 +576,8 @@ en:
|
|
|
538
576
|
'1024': '1024px (iPad - Landscape)'
|
|
539
577
|
'1280': '1280px (Desktop)'
|
|
540
578
|
preview_url: Preview
|
|
579
|
+
publish_page_language_not_public: Cannot publish page if language is not public
|
|
580
|
+
publish_page_not_allowed: You have not the permission to publish this page
|
|
541
581
|
recently_uploaded_only: 'Recently uploaded only'
|
|
542
582
|
"regular method": "Regular method"
|
|
543
583
|
remove: "Remove"
|
|
@@ -568,7 +608,6 @@ en:
|
|
|
568
608
|
subject: "Subject"
|
|
569
609
|
successfully_added_element: "Successfully added new element."
|
|
570
610
|
successfully_deleted_tag: "Successfully deleted tag"
|
|
571
|
-
successfully_restored_element: "Element restored successfully."
|
|
572
611
|
successfully_saved_element_position: "Element position updated successfully."
|
|
573
612
|
successfully_updated_tag: "Successfully updated tag"
|
|
574
613
|
swap_image: "Change image"
|
|
@@ -578,7 +617,6 @@ en:
|
|
|
578
617
|
this_picture_is_used_on_these_pages: "This picture is used on following pages"
|
|
579
618
|
title: "Title"
|
|
580
619
|
to_alchemy: "To Alchemy"
|
|
581
|
-
"trash element": "Put element into trash"
|
|
582
620
|
unknown: "unknown"
|
|
583
621
|
unlink: "Remove link from this image."
|
|
584
622
|
unlock_page: "Leave page"
|
|
@@ -704,11 +742,18 @@ en:
|
|
|
704
742
|
# Translations for Alchemy models
|
|
705
743
|
activemodel:
|
|
706
744
|
models:
|
|
745
|
+
alchemy/essence_headline:
|
|
746
|
+
one: Headline
|
|
747
|
+
other: Headline
|
|
707
748
|
alchemy/message:
|
|
708
749
|
one: Message
|
|
709
750
|
other: Messages
|
|
710
751
|
alchemy/admin/preview_url: Internal
|
|
711
752
|
attributes:
|
|
753
|
+
alchemy/essence_headline:
|
|
754
|
+
body: Headline
|
|
755
|
+
level: Level
|
|
756
|
+
size: Size
|
|
712
757
|
alchemy/message:
|
|
713
758
|
salutation: 'Salutation'
|
|
714
759
|
firstname: 'Firstname'
|
|
@@ -785,7 +830,6 @@ en:
|
|
|
785
830
|
name: "Name"
|
|
786
831
|
public: "visible"
|
|
787
832
|
tag_list: Tags
|
|
788
|
-
trashed: Trashed
|
|
789
833
|
alchemy/essence_file:
|
|
790
834
|
css_class: Style
|
|
791
835
|
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
|
|
@@ -35,7 +35,6 @@ Alchemy::Engine.routes.draw do
|
|
|
35
35
|
post :unlock
|
|
36
36
|
post :publish
|
|
37
37
|
post :fold
|
|
38
|
-
post :visit
|
|
39
38
|
get :configure
|
|
40
39
|
get :preview
|
|
41
40
|
get :info
|
|
@@ -50,7 +49,6 @@ Alchemy::Engine.routes.draw do
|
|
|
50
49
|
member do
|
|
51
50
|
patch :publish
|
|
52
51
|
post :fold
|
|
53
|
-
delete :trash
|
|
54
52
|
end
|
|
55
53
|
end
|
|
56
54
|
|
|
@@ -63,6 +61,8 @@ Alchemy::Engine.routes.draw do
|
|
|
63
61
|
get :edit_multiple
|
|
64
62
|
end
|
|
65
63
|
member do
|
|
64
|
+
get :url
|
|
65
|
+
put :assign
|
|
66
66
|
delete :remove
|
|
67
67
|
end
|
|
68
68
|
end
|
|
@@ -70,23 +70,25 @@ Alchemy::Engine.routes.draw do
|
|
|
70
70
|
resources :attachments, except: [:new] do
|
|
71
71
|
member do
|
|
72
72
|
get :download
|
|
73
|
+
put :assign
|
|
73
74
|
end
|
|
74
75
|
end
|
|
75
76
|
|
|
76
|
-
resources :
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
end
|
|
77
|
+
resources :essence_audios, only: [:edit, :update]
|
|
78
|
+
|
|
79
|
+
concern :croppable do
|
|
80
80
|
member do
|
|
81
81
|
get :crop
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
resources :
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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]
|
|
90
92
|
|
|
91
93
|
resources :legacy_page_urls
|
|
92
94
|
resources :languages do
|
|
@@ -104,13 +106,6 @@ Alchemy::Engine.routes.draw do
|
|
|
104
106
|
end
|
|
105
107
|
end
|
|
106
108
|
|
|
107
|
-
resource :trash, only: :index, controller: "trash" do
|
|
108
|
-
collection do
|
|
109
|
-
get :index
|
|
110
|
-
delete :clear
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
|
|
114
109
|
resources :tags do
|
|
115
110
|
collection do
|
|
116
111
|
get :autocomplete
|
|
@@ -131,7 +126,7 @@ Alchemy::Engine.routes.draw do
|
|
|
131
126
|
resources :elements, only: :show
|
|
132
127
|
resources :contents, only: :show
|
|
133
128
|
|
|
134
|
-
namespace :api, defaults: {format: "json"} do
|
|
129
|
+
namespace :api, defaults: { format: "json" } do
|
|
135
130
|
resources :contents, only: [:index, :show]
|
|
136
131
|
|
|
137
132
|
resources :elements, only: [:index, :show] do
|
|
@@ -159,7 +154,7 @@ Alchemy::Engine.routes.draw do
|
|
|
159
154
|
end
|
|
160
155
|
|
|
161
156
|
get "/:locale" => "pages#index",
|
|
162
|
-
constraints: {locale: Alchemy::RoutingConstraints::LOCALE_REGEXP},
|
|
157
|
+
constraints: { locale: Alchemy::RoutingConstraints::LOCALE_REGEXP },
|
|
163
158
|
as: :show_language_root
|
|
164
159
|
|
|
165
160
|
# The page show action has to be last route
|