alchemy_cms 5.2.1 → 6.0.0.pre.b4
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 +0 -1
- data/.hound.yml +1 -1
- data/.rubocop.yml +46 -4
- data/CHANGELOG.md +121 -8
- data/Gemfile +4 -2
- data/README.md +19 -4
- data/Rakefile +37 -23
- 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/fonts.scss +0 -0
- 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/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/anchor.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/loader.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/object.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/trans.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +0 -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 +29 -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/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 +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/element.rb +39 -86
- 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/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 +131 -143
- 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.rb +79 -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 +24 -96
- data/app/models/alchemy/picture.rb +17 -39
- 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 +37 -25
- 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/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/test_support.rb +2 -11
- data/lib/alchemy/tinymce.rb +21 -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 +2 -0
- data/lib/tasks/alchemy/tidy.rake +12 -0
- data/lib/tasks/alchemy/upgrade.rake +26 -0
- 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/package.json +3 -2
- data/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +3 -18
- data/vendor/assets/stylesheets/jquery.Jcrop.min.scss +2 -28
- metadata +289 -53
- 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 -20
@@ -0,0 +1,17 @@
|
|
1
|
+
<%- if video_view.attachment -%>
|
2
|
+
<%= content_tag :video,
|
3
|
+
controls: video_view.controls,
|
4
|
+
autoplay: video_view.autoplay,
|
5
|
+
loop: video_view.loop,
|
6
|
+
muted: video_view.muted,
|
7
|
+
preload: video_view.preload.presence,
|
8
|
+
width: video_view.width.presence,
|
9
|
+
height: video_view.height.presence do %>
|
10
|
+
<%= tag :source,
|
11
|
+
src: alchemy.show_attachment_path(
|
12
|
+
video_view.attachment,
|
13
|
+
format: video_view.attachment.suffix
|
14
|
+
),
|
15
|
+
type: video_view.attachment.file_mime_type %>
|
16
|
+
<% end %>
|
17
|
+
<%- end -%>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<span class="linkable_essence_tools">
|
2
|
+
<%= link_to(
|
3
|
+
render_icon(:link),
|
4
|
+
'#',
|
5
|
+
onclick: 'new Alchemy.LinkDialog(this).open(); return false;',
|
6
|
+
class: "icon_button#{ingredient_editor.linked? ? ' linked' : ''} link-essence",
|
7
|
+
"data-parent-selector": "[data-ingredient-id='#{ingredient_editor.id}']",
|
8
|
+
title: Alchemy.t(:place_link),
|
9
|
+
id: "edit_link_#{ingredient_editor.id}"
|
10
|
+
) %>
|
11
|
+
<%= link_to(
|
12
|
+
render_icon(:unlink),
|
13
|
+
'#',
|
14
|
+
onclick: "return Alchemy.LinkDialog.removeLink(this, '[data-ingredient-id=\"#{ingredient_editor.id}\"]')",
|
15
|
+
class: "icon_button unlink-essence #{ingredient_editor.linked? ? 'linked' : 'disabled'}",
|
16
|
+
tabindex: ingredient_editor.linked? ? nil : '-1',
|
17
|
+
'data-ingredient-id' => ingredient_editor.id,
|
18
|
+
title: Alchemy.t(:unlink)
|
19
|
+
) %>
|
20
|
+
</span>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<% linkable = picture_editor.settings[:linkable] != false %>
|
2
|
+
<% croppable = picture_editor.allow_image_cropping? %>
|
3
|
+
|
4
|
+
<%= link_to_dialog render_icon(:crop),
|
5
|
+
alchemy.crop_admin_ingredient_path(picture_editor.ingredient, {
|
6
|
+
crop_from_form_field_id: picture_editor.form_field_id(:crop_from),
|
7
|
+
crop_size_form_field_id: picture_editor.form_field_id(:crop_size),
|
8
|
+
picture_id: picture_editor.picture&.id
|
9
|
+
}), {
|
10
|
+
size: "1080x615",
|
11
|
+
title: Alchemy.t("Edit Picturemask"),
|
12
|
+
image_loader: false,
|
13
|
+
padding: false
|
14
|
+
}, {
|
15
|
+
title: Alchemy.t("Edit Picturemask"),
|
16
|
+
class: croppable ? "crop_link" : "disabled crop_link",
|
17
|
+
tabindex: croppable ? nil : "-1",
|
18
|
+
onclick: "return false"
|
19
|
+
} %>
|
20
|
+
|
21
|
+
<%= link_to_dialog render_icon("file-image", style: "regular"),
|
22
|
+
alchemy.admin_pictures_path(
|
23
|
+
form_field_id: picture_editor.form_field_id(:picture_id)
|
24
|
+
),
|
25
|
+
{
|
26
|
+
title: (picture_editor.picture ? Alchemy.t(:swap_image) : Alchemy.t(:insert_image)),
|
27
|
+
size: "790x590",
|
28
|
+
padding: false
|
29
|
+
},
|
30
|
+
title: (picture_editor.picture ? Alchemy.t(:swap_image) : Alchemy.t(:insert_image)) %>
|
31
|
+
|
32
|
+
<%= link_to_if linkable, render_icon(:link), "", {
|
33
|
+
onclick: "new Alchemy.LinkDialog(this).open(); return false;",
|
34
|
+
class: picture_editor.linked? ? "linked" : nil,
|
35
|
+
title: Alchemy.t(:link_image),
|
36
|
+
"data-parent-selector": "[data-ingredient-id='#{picture_editor.id}']",
|
37
|
+
id: "edit_link_#{picture_editor.id}"
|
38
|
+
} do %>
|
39
|
+
<span class="disabled" tabindex="-1"><%= render_icon(:link) %></span>
|
40
|
+
<% end %>
|
41
|
+
|
42
|
+
<%= link_to_if linkable, render_icon(:unlink), "", {
|
43
|
+
onclick: "return Alchemy.LinkDialog.removeLink(this, '[data-ingredient-id=\"#{picture_editor.id}\"]')",
|
44
|
+
class: picture_editor.linked? ? "linked" : "disabled",
|
45
|
+
tabindex: picture_editor.linked? ? nil : "-1",
|
46
|
+
title: Alchemy.t(:unlink)
|
47
|
+
} do %>
|
48
|
+
<span class="disabled" tabindex="-1"><%= render_icon(:unlink) %></span>
|
49
|
+
<% end %>
|
50
|
+
|
51
|
+
<%= link_to_dialog render_icon(:edit),
|
52
|
+
alchemy.edit_admin_ingredient_path(id: picture_editor.id),
|
53
|
+
{
|
54
|
+
title: Alchemy.t(:edit_image_properties),
|
55
|
+
size: "380x255"
|
56
|
+
},
|
57
|
+
title: Alchemy.t(:edit_image_properties) %>
|
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,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:
|