alchemy_cms 5.2.1 → 6.0.0.b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +6 -14
- data/.gitignore +0 -1
- data/.hound.yml +1 -1
- data/.rubocop.yml +46 -4
- data/CHANGELOG.md +81 -9
- data/Gemfile +4 -2
- 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/admin.scss +1 -1
- data/app/assets/stylesheets/alchemy/archive.scss +4 -4
- data/app/assets/stylesheets/alchemy/buttons.scss +0 -4
- data/app/assets/stylesheets/alchemy/elements.scss +73 -61
- data/app/assets/stylesheets/alchemy/images.scss +8 -0
- data/app/assets/stylesheets/alchemy/node-select.scss +4 -3
- data/app/assets/stylesheets/alchemy/page-select.scss +1 -0
- data/app/controllers/alchemy/admin/attachments_controller.rb +6 -2
- data/app/controllers/alchemy/admin/base_controller.rb +5 -7
- data/app/controllers/alchemy/admin/elements_controller.rb +58 -34
- data/app/controllers/alchemy/admin/essence_audios_controller.rb +30 -0
- data/app/controllers/alchemy/admin/essence_files_controller.rb +0 -14
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +8 -79
- data/app/controllers/alchemy/admin/essence_videos_controller.rb +33 -0
- data/app/controllers/alchemy/admin/ingredients_controller.rb +30 -0
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +0 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +6 -13
- data/app/controllers/alchemy/admin/pictures_controller.rb +35 -9
- data/app/controllers/alchemy/api/elements_controller.rb +10 -5
- data/app/controllers/alchemy/api/pages_controller.rb +3 -4
- data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +13 -3
- data/app/controllers/concerns/alchemy/admin/crop_action.rb +26 -0
- data/app/decorators/alchemy/element_editor.rb +23 -1
- data/app/decorators/alchemy/ingredient_editor.rb +154 -0
- data/app/helpers/alchemy/admin/elements_helper.rb +1 -0
- data/app/helpers/alchemy/admin/essences_helper.rb +1 -1
- data/app/helpers/alchemy/admin/ingredients_helper.rb +42 -0
- data/app/helpers/alchemy/elements_block_helper.rb +22 -7
- data/app/helpers/alchemy/elements_helper.rb +12 -5
- data/app/helpers/alchemy/pages_helper.rb +3 -11
- data/app/jobs/alchemy/base_job.rb +11 -0
- data/app/jobs/alchemy/publish_page_job.rb +11 -0
- data/app/models/alchemy/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 +100 -98
- data/app/models/alchemy/element/element_ingredients.rb +176 -0
- data/app/models/alchemy/element/presenters.rb +89 -87
- data/app/models/alchemy/elements_repository.rb +126 -0
- data/app/models/alchemy/essence_audio.rb +12 -0
- data/app/models/alchemy/essence_headline.rb +40 -0
- data/app/models/alchemy/essence_picture.rb +4 -116
- data/app/models/alchemy/essence_richtext.rb +12 -0
- data/app/models/alchemy/essence_video.rb +12 -0
- data/app/models/alchemy/image_cropper_settings.rb +87 -0
- data/app/models/alchemy/ingredient.rb +219 -0
- data/app/models/alchemy/ingredient_validator.rb +97 -0
- data/app/models/alchemy/ingredients/audio.rb +29 -0
- data/app/models/alchemy/ingredients/boolean.rb +21 -0
- data/app/models/alchemy/ingredients/datetime.rb +20 -0
- data/app/models/alchemy/ingredients/file.rb +30 -0
- data/app/models/alchemy/ingredients/headline.rb +42 -0
- data/app/models/alchemy/ingredients/html.rb +19 -0
- data/app/models/alchemy/ingredients/link.rb +16 -0
- data/app/models/alchemy/ingredients/node.rb +23 -0
- data/app/models/alchemy/ingredients/page.rb +23 -0
- data/app/models/alchemy/ingredients/picture.rb +41 -0
- data/app/models/alchemy/ingredients/richtext.rb +57 -0
- data/app/models/alchemy/ingredients/select.rb +10 -0
- data/app/models/alchemy/ingredients/text.rb +17 -0
- data/app/models/alchemy/ingredients/video.rb +33 -0
- data/app/models/alchemy/language.rb +0 -11
- data/app/models/alchemy/page.rb +66 -32
- data/app/models/alchemy/page/fixed_attributes.rb +53 -51
- data/app/models/alchemy/page/page_elements.rb +186 -205
- data/app/models/alchemy/page/page_naming.rb +66 -64
- data/app/models/alchemy/page/page_natures.rb +139 -142
- data/app/models/alchemy/page/page_scopes.rb +113 -102
- data/app/models/alchemy/page/publisher.rb +50 -0
- data/app/models/alchemy/page/url_path.rb +1 -1
- data/app/models/alchemy/page_version.rb +58 -0
- data/app/models/alchemy/picture.rb +3 -1
- 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 +1 -2
- data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +3 -3
- data/app/views/alchemy/admin/attachments/assign.js.erb +11 -0
- data/app/views/alchemy/admin/crop.html.erb +36 -0
- data/app/views/alchemy/admin/elements/_element.html.erb +14 -10
- data/app/views/alchemy/admin/elements/{_element_footer.html.erb → _footer.html.erb} +0 -0
- data/app/views/alchemy/admin/elements/{_new_element_form.html.erb → _form.html.erb} +1 -1
- data/app/views/alchemy/admin/elements/{_element_header.html.erb → _header.html.erb} +1 -1
- data/app/views/alchemy/admin/elements/{_element_toolbar.html.erb → _toolbar.html.erb} +5 -6
- data/app/views/alchemy/admin/elements/{trash.js.erb → destroy.js.erb} +1 -3
- data/app/views/alchemy/admin/elements/new.html.erb +3 -3
- data/app/views/alchemy/admin/elements/order.js.erb +0 -17
- data/app/views/alchemy/admin/elements/update.js.erb +3 -2
- data/app/views/alchemy/admin/essence_audios/edit.html.erb +7 -0
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +0 -1
- data/app/views/alchemy/admin/essence_videos/edit.html.erb +11 -0
- data/app/views/alchemy/admin/ingredients/_audio_fields.html.erb +4 -0
- data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +18 -0
- data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +25 -0
- data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +8 -0
- data/app/views/alchemy/admin/ingredients/edit.html.erb +4 -0
- data/app/views/alchemy/admin/layoutpages/edit.html.erb +0 -5
- data/app/views/alchemy/admin/nodes/_node.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_anchor_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_external_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_file_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_form.html.erb +0 -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/edit.html.erb +36 -24
- 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/pictures/_filter_and_size_bar.html.erb +4 -8
- data/app/views/alchemy/admin/pictures/_infos.html.erb +0 -1
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +4 -4
- data/app/views/alchemy/admin/pictures/assign.js.erb +10 -0
- data/app/views/alchemy/admin/resources/_form.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_audio_editor.html.erb +4 -0
- data/app/views/alchemy/essences/_essence_audio_view.html.erb +15 -0
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +15 -6
- data/app/views/alchemy/essences/_essence_headline_editor.html.erb +36 -0
- data/app/views/alchemy/essences/_essence_headline_view.html.erb +10 -0
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +8 -4
- data/app/views/alchemy/essences/_essence_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 +50 -0
- data/app/views/alchemy/ingredients/_file_view.html.erb +17 -0
- data/app/views/alchemy/ingredients/_headline_editor.html.erb +30 -0
- data/app/views/alchemy/ingredients/_headline_view.html.erb +9 -0
- data/app/views/alchemy/ingredients/_html_editor.html.erb +8 -0
- data/app/views/alchemy/ingredients/_html_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_link_editor.html.erb +24 -0
- data/app/views/alchemy/ingredients/_link_view.html.erb +9 -0
- data/app/views/alchemy/ingredients/_node_editor.html.erb +25 -0
- data/app/views/alchemy/ingredients/_node_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_page_editor.html.erb +24 -0
- data/app/views/alchemy/ingredients/_page_view.html.erb +4 -0
- data/app/views/alchemy/ingredients/_picture_editor.html.erb +59 -0
- data/app/views/alchemy/ingredients/_picture_view.html.erb +5 -0
- data/app/views/alchemy/ingredients/_richtext_editor.html.erb +12 -0
- data/app/views/alchemy/ingredients/_richtext_view.html.erb +3 -0
- data/app/views/alchemy/ingredients/_select_editor.html.erb +29 -0
- data/app/views/alchemy/ingredients/_select_view.html.erb +1 -0
- data/app/views/alchemy/ingredients/_text_editor.html.erb +19 -0
- data/app/views/alchemy/ingredients/_text_view.html.erb +16 -0
- data/app/views/alchemy/ingredients/_video_editor.html.erb +5 -0
- data/app/views/alchemy/ingredients/_video_view.html.erb +17 -0
- data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +20 -0
- data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +57 -0
- data/config/brakeman.ignore +66 -159
- data/config/initializers/dragonfly.rb +10 -0
- data/config/locales/alchemy.en.yml +23 -15
- 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/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/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 +57 -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 +51 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/generators/alchemy/elements/elements_generator.rb +1 -0
- data/lib/generators/alchemy/elements/templates/view.html.erb +9 -0
- data/lib/generators/alchemy/elements/templates/view.html.haml +9 -0
- data/lib/generators/alchemy/elements/templates/view.html.slim +9 -0
- data/lib/generators/alchemy/ingredient/ingredient_generator.rb +38 -0
- data/lib/generators/alchemy/ingredient/templates/editor.html.erb +14 -0
- data/lib/generators/alchemy/ingredient/templates/model.rb.tt +13 -0
- data/lib/generators/alchemy/ingredient/templates/view.html.erb +1 -0
- data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +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.json +2 -1
- 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 +284 -48
- 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/essence_files/assign.js.erb +0 -3
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -4
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +0 -48
- data/app/views/alchemy/admin/trash/clear.js.erb +0 -4
- data/app/views/alchemy/admin/trash/index.html.erb +0 -31
- data/lib/alchemy/test_support/factories.rb +0 -20
@@ -0,0 +1,16 @@
|
|
1
|
+
<%- options = local_assigns.fetch(:options, {}) -%>
|
2
|
+
<%- html_options = local_assigns.fetch(:html_options, {}) -%>
|
3
|
+
<%- if text_view.link.blank? ||
|
4
|
+
text_view.settings_value(:disable_link, options) -%>
|
5
|
+
<%= text_view.value -%>
|
6
|
+
<%- else -%>
|
7
|
+
<%= link_to(
|
8
|
+
text_view.value,
|
9
|
+
url_for(text_view.link),
|
10
|
+
{
|
11
|
+
title: text_view.link_title,
|
12
|
+
target: (text_view.link_target == "blank" ? "_blank" : nil),
|
13
|
+
'data-link-target' => text_view.link_target
|
14
|
+
}.merge(html_options)
|
15
|
+
) -%>
|
16
|
+
<%- end -%>
|
@@ -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
|
@@ -89,6 +89,11 @@ en:
|
|
89
89
|
right: 'Right from text'
|
90
90
|
no_float: 'Above the text'
|
91
91
|
|
92
|
+
ingredient_values:
|
93
|
+
boolean:
|
94
|
+
true: "True"
|
95
|
+
false: "False"
|
96
|
+
|
92
97
|
# == Contactform translations
|
93
98
|
contactform:
|
94
99
|
labels:
|
@@ -194,7 +199,6 @@ en:
|
|
194
199
|
'An error happened': 'An error happened'
|
195
200
|
"Change password": "Change password"
|
196
201
|
"Choose page": "Choose page"
|
197
|
-
"Cleared trash": "Cleared trash"
|
198
202
|
"Clear selection": "Clear selection"
|
199
203
|
"Forgot your password?": "Forgot your password?"
|
200
204
|
"Clipboard": "Clipboard"
|
@@ -204,15 +208,14 @@ en:
|
|
204
208
|
"Currently locked pages": "Currently locked pages"
|
205
209
|
"Default language has to be public": "Default language has to be public"
|
206
210
|
"Delete image": "Delete image"
|
211
|
+
"Delete element": "Delete element"
|
207
212
|
"Do you really want to clear the clipboard?": "Do you really want to clear the clipboard?"
|
208
|
-
"Do you really want to clear the trash?": "Do you really want to clear the trash?"
|
209
213
|
"Do you really want to delete this content?": "Do you really want to delete this content?"
|
210
214
|
"Drag an element over to the element window to restore it": "Drag an element over to the element window to restore it"
|
211
215
|
"Edit Picturemask": "Edit picturemask"
|
212
216
|
"Edit image": "Edit image"
|
213
217
|
"Edit multiple pictures": "Edit multiple pictures"
|
214
218
|
"Elements": "Elements"
|
215
|
-
"Element trashed": "Element trashed"
|
216
219
|
"Error with the Flash® Uploader!": "Error with the Flash® Uploader!"
|
217
220
|
"Excerpt": "Excerpt"
|
218
221
|
"File successfully updated": "File successfully updated"
|
@@ -268,7 +271,6 @@ en:
|
|
268
271
|
"Please log in": "Please log in."
|
269
272
|
"Please seperate the tags with commata": "* Please seperate the tags with commas."
|
270
273
|
"Properties": "Properties"
|
271
|
-
"Publish page": "Publish page"
|
272
274
|
"Read the License": "Read the License"
|
273
275
|
"Redirects to": "Redirects to"
|
274
276
|
"Reload Preview": "Reload Preview"
|
@@ -287,7 +289,6 @@ en:
|
|
287
289
|
"Show clipboard": "Show clipboard"
|
288
290
|
"Copied to clipboard": "Copied to clipboard"
|
289
291
|
"Show picture infos": "Show picture infos"
|
290
|
-
"Show trash": "Show trash"
|
291
292
|
"Site successfully created": "Website successfully created."
|
292
293
|
"Site successfully removed": "Website successfully removed."
|
293
294
|
"Site successfully updated": "Website successfully updated."
|
@@ -295,6 +296,7 @@ en:
|
|
295
296
|
"Sort pages": "Reorder pages"
|
296
297
|
"Successfully added content": "Successfully added %{content}"
|
297
298
|
"Successfully deleted content": "Successfully deleted %{content}"
|
299
|
+
"Successfully deleted element": "Successfully deleted %{element}"
|
298
300
|
"Tags": "Tags"
|
299
301
|
"These pictures could not be deleted, because they were in use": "These pictures could not be deleted, because they were in use: %{names}"
|
300
302
|
"This page is locked": "This page is currently locked by %{name}"
|
@@ -310,6 +312,7 @@ en:
|
|
310
312
|
"Warning!": "Warning!"
|
311
313
|
content_definition_missing: "Warning: Content is missing its definition. Please check the elements.yml"
|
312
314
|
content_deprecated: "WARNING! This content is deprecated and will be removed soon. Please do not use it anymore."
|
315
|
+
ingredient_deprecated: "WARNING! This content is deprecated and will be removed soon. Please do not use it anymore."
|
313
316
|
element_definition_missing: "WARNING! Missing element definition. Please check your elements.yml file."
|
314
317
|
element_deprecated: "WARNING! This element is deprecated and will be removed soon. Please do not use it anymore."
|
315
318
|
page_definition_missing: "WARNING! Missing page layout definition. Please check your page_layouts.yml file."
|
@@ -321,7 +324,6 @@ en:
|
|
321
324
|
element_dirty_close_window_notice: "You have unsaved elements. Do you really want to close the elements window?"
|
322
325
|
"Your last login was on": "Your last login was on %{time}."
|
323
326
|
"Your last updated pages": "Your last updated pages"
|
324
|
-
"Your trash is empty": "Your trash is empty"
|
325
327
|
above: "above"
|
326
328
|
add: "Add"
|
327
329
|
align_in_text: "Alignment in text"
|
@@ -329,7 +331,6 @@ en:
|
|
329
331
|
all_pictures: "All pictures"
|
330
332
|
apply: "apply"
|
331
333
|
assign_file: "Assign a file"
|
332
|
-
assign_file_from_archive: "assign a file from your archive"
|
333
334
|
assign_image: "Assign an image"
|
334
335
|
attached_to: "attached to"
|
335
336
|
attachment_filename_notice: "* Please do not use any special characters for the filename."
|
@@ -337,17 +338,18 @@ en:
|
|
337
338
|
big_thumbnails: "Big thumbnails"
|
338
339
|
cancel: "cancel"
|
339
340
|
cannot_delete_picture_notice: "Cannot delete Picture %{name}, because it's still in use."
|
341
|
+
cannot_visit_unpublic_page: "Publish page before visiting it."
|
340
342
|
choose_file_to_link: "Please choose a file to link"
|
341
343
|
"clear clipboard": "clear clipboard"
|
342
|
-
"clear trash": "clear trash"
|
343
344
|
click_to_show_all: "Click to show all again."
|
345
|
+
confirm_to_delete_element: "Do you really want to delete this element? It cannot be restored!"
|
344
346
|
confirm_to_delete_file: "Do you really want to delete this file from the server?"
|
345
347
|
confirm_to_delete_image: "Do you really want to delete this image from server?"
|
346
348
|
confirm_to_delete_image_from_server: "Do you really want to delete this image from the server?"
|
347
349
|
confirm_to_delete_images_from_server: "Do you really want to delete these images from the server?"
|
348
350
|
confirm_to_delete_menu: "Do you really want to delete this menu?"
|
349
351
|
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?
|
352
|
+
confirm_to_delete_page: "Do you really want to delete this page?"
|
351
353
|
content_essence_not_found: "Content essence not found"
|
352
354
|
content_not_found: "Field for content not present."
|
353
355
|
content_validations_headline: "Please check marked fields below"
|
@@ -393,7 +395,7 @@ en:
|
|
393
395
|
element_saved: "Saved element."
|
394
396
|
enter_external_link: "Please enter the URL you want to link with"
|
395
397
|
explain_cropping: "<p>Move the frame and change its size with the mouse or arrow keys to adjust the image mask. Click on \"apply\" when you are satisfied with your selection.</p><p>If you want to return to the original centered image mask like it was defined in the layout, click \"reset\" and \"apply\" afterwards.</p>"
|
396
|
-
explain_publishing: "Publish
|
398
|
+
explain_publishing: "Publish current page content"
|
397
399
|
explain_sitemap_dragndrop_sorting: "Tip: Drag the pages at the icon in order to sort them."
|
398
400
|
explain_unlocking: "Leave page and unlock it for other users."
|
399
401
|
external_link_notice_1: "Please enter the complete url with http:// or a similar protocol."
|
@@ -422,7 +424,7 @@ en:
|
|
422
424
|
dashboard: "Dashboard"
|
423
425
|
image_alt_tag: "Alt-tag"
|
424
426
|
image_caption: "Caption"
|
425
|
-
image_name: "Name"
|
427
|
+
image_name: "Name: %{name}"
|
426
428
|
image_title: "Title-tag"
|
427
429
|
internal_link_headline: "Search for a page to link to by entering its name into the Page select."
|
428
430
|
internal_link_page_elements_explanation: "Additionally you can choose an anchor to an element from selected page."
|
@@ -491,7 +493,7 @@ en:
|
|
491
493
|
or_replace_it_with_an_existing_tag: 'Or replace it with an existing tag'
|
492
494
|
"Page created": "Page: '%{name}' created."
|
493
495
|
page_infos: 'Page info'
|
494
|
-
page_layout_changed_notice: "Page type was changed. Elements not usable anymore have been
|
496
|
+
page_layout_changed_notice: "Page type was changed. Elements not usable anymore have been hided."
|
495
497
|
page_properties: "Page properties"
|
496
498
|
page_public: "published"
|
497
499
|
page_published: "Published page"
|
@@ -538,6 +540,8 @@ en:
|
|
538
540
|
'1024': '1024px (iPad - Landscape)'
|
539
541
|
'1280': '1280px (Desktop)'
|
540
542
|
preview_url: Preview
|
543
|
+
publish_page_language_not_public: Cannot publish page if language is not public
|
544
|
+
publish_page_not_allowed: You have not the permission to publish this page
|
541
545
|
recently_uploaded_only: 'Recently uploaded only'
|
542
546
|
"regular method": "Regular method"
|
543
547
|
remove: "Remove"
|
@@ -568,7 +572,6 @@ en:
|
|
568
572
|
subject: "Subject"
|
569
573
|
successfully_added_element: "Successfully added new element."
|
570
574
|
successfully_deleted_tag: "Successfully deleted tag"
|
571
|
-
successfully_restored_element: "Element restored successfully."
|
572
575
|
successfully_saved_element_position: "Element position updated successfully."
|
573
576
|
successfully_updated_tag: "Successfully updated tag"
|
574
577
|
swap_image: "Change image"
|
@@ -578,7 +581,6 @@ en:
|
|
578
581
|
this_picture_is_used_on_these_pages: "This picture is used on following pages"
|
579
582
|
title: "Title"
|
580
583
|
to_alchemy: "To Alchemy"
|
581
|
-
"trash element": "Put element into trash"
|
582
584
|
unknown: "unknown"
|
583
585
|
unlink: "Remove link from this image."
|
584
586
|
unlock_page: "Leave page"
|
@@ -704,11 +706,18 @@ en:
|
|
704
706
|
# Translations for Alchemy models
|
705
707
|
activemodel:
|
706
708
|
models:
|
709
|
+
alchemy/essence_headline:
|
710
|
+
one: Headline
|
711
|
+
other: Headline
|
707
712
|
alchemy/message:
|
708
713
|
one: Message
|
709
714
|
other: Messages
|
710
715
|
alchemy/admin/preview_url: Internal
|
711
716
|
attributes:
|
717
|
+
alchemy/essence_headline:
|
718
|
+
body: Headline
|
719
|
+
level: Level
|
720
|
+
size: Size
|
712
721
|
alchemy/message:
|
713
722
|
salutation: 'Salutation'
|
714
723
|
firstname: 'Firstname'
|
@@ -785,7 +794,6 @@ en:
|
|
785
794
|
name: "Name"
|
786
795
|
public: "visible"
|
787
796
|
tag_list: Tags
|
788
|
-
trashed: Trashed
|
789
797
|
alchemy/essence_file:
|
790
798
|
css_class: Style
|
791
799
|
alchemy/essence_picture:
|