alchemy_cms 7.0.7 → 7.1.0.pre.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/backport.yml +36 -0
- data/.github/workflows/test.yml +3 -2
- data/.gitignore +1 -0
- data/.standard.yml +1 -1
- data/CHANGELOG.md +150 -0
- data/Gemfile +8 -10
- data/README.md +10 -8
- data/alchemy_cms.gemspec +3 -2
- data/app/assets/config/alchemy_manifest.js +0 -1
- data/app/assets/javascripts/alchemy/admin.js +1 -19
- data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +2 -3
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +19 -34
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +38 -13
- data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +32 -25
- data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +3 -5
- data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +0 -57
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +22 -63
- data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +5 -4
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +5 -5
- data/app/assets/javascripts/alchemy/templates/index.js +0 -2
- data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
- data/app/assets/javascripts/alchemy/templates/page.hbs +1 -1
- data/app/assets/javascripts/alchemy/templates/page_folder.hbs +2 -2
- data/app/assets/stylesheets/alchemy/_custom-properties.scss +82 -0
- data/app/assets/stylesheets/alchemy/_mixins.scss +38 -30
- data/app/assets/stylesheets/alchemy/_variables.scss +12 -5
- data/app/assets/stylesheets/alchemy/admin.scss +3 -4
- data/app/assets/stylesheets/alchemy/archive.scss +107 -50
- data/app/assets/stylesheets/alchemy/attachments.scss +5 -4
- data/app/assets/stylesheets/alchemy/buttons.scss +38 -164
- data/app/assets/stylesheets/alchemy/dashboard.scss +31 -6
- data/app/assets/stylesheets/alchemy/dialogs.scss +12 -28
- data/app/assets/stylesheets/alchemy/elements.scss +273 -282
- data/app/assets/stylesheets/alchemy/flash.scss +20 -12
- data/app/assets/stylesheets/alchemy/forms.scss +21 -34
- data/app/assets/stylesheets/alchemy/frame.scss +11 -32
- data/app/assets/stylesheets/alchemy/hints.scss +4 -62
- data/app/assets/stylesheets/alchemy/image_library.scss +36 -33
- data/app/assets/stylesheets/alchemy/menubar.scss +7 -6
- data/app/assets/stylesheets/alchemy/navigation.scss +27 -15
- data/app/assets/stylesheets/alchemy/nodes.scss +11 -7
- data/app/assets/stylesheets/alchemy/notices.scss +16 -4
- data/app/assets/stylesheets/alchemy/page-select.scss +10 -2
- data/app/assets/stylesheets/alchemy/pagination.scss +22 -13
- data/app/assets/stylesheets/alchemy/resource_info.scss +7 -5
- data/app/assets/stylesheets/alchemy/selects.scss +49 -42
- data/app/assets/stylesheets/alchemy/shoelace.scss +345 -0
- data/app/assets/stylesheets/alchemy/sitemap.scss +24 -14
- data/app/assets/stylesheets/alchemy/spinner.scss +9 -19
- data/app/assets/stylesheets/alchemy/tables.scss +16 -24
- data/app/assets/stylesheets/alchemy/tags.scss +4 -0
- data/app/assets/stylesheets/alchemy/toolbar.scss +29 -25
- data/app/assets/stylesheets/alchemy/upload.scss +140 -89
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +80 -108
- data/app/components/alchemy/admin/node_select.rb +39 -0
- data/app/components/alchemy/admin/page_select.rb +42 -0
- data/app/controllers/alchemy/admin/base_controller.rb +5 -6
- data/app/controllers/alchemy/admin/elements_controller.rb +63 -35
- data/app/controllers/alchemy/admin/resources_controller.rb +5 -5
- data/app/controllers/alchemy/base_controller.rb +4 -2
- data/app/controllers/alchemy/messages_controller.rb +4 -4
- data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
- data/app/controllers/concerns/alchemy/site_redirects.rb +1 -1
- data/app/decorators/alchemy/element_editor.rb +0 -2
- data/app/helpers/alchemy/admin/attachments_helper.rb +6 -5
- data/app/helpers/alchemy/admin/base_helper.rb +17 -12
- data/app/helpers/alchemy/admin/ingredients_helper.rb +4 -1
- data/app/helpers/alchemy/admin/pages_helper.rb +5 -11
- data/app/helpers/alchemy/base_helper.rb +47 -13
- data/app/javascript/alchemy_admin/components/alchemy_html_element.js +129 -0
- data/app/javascript/alchemy_admin/components/button.js +59 -0
- data/app/javascript/alchemy_admin/components/char_counter.js +40 -0
- data/app/javascript/alchemy_admin/components/datepicker.js +39 -0
- data/app/javascript/alchemy_admin/components/dialog_link.js +45 -0
- data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +36 -0
- data/app/javascript/alchemy_admin/components/element_editor.js +553 -0
- data/app/javascript/alchemy_admin/components/ingredient_group.js +54 -0
- data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +48 -0
- data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +38 -0
- data/app/javascript/alchemy_admin/components/link_buttons.js +79 -0
- data/app/javascript/alchemy_admin/components/node_select.js +45 -0
- data/app/javascript/alchemy_admin/components/overlay.js +18 -0
- data/app/javascript/alchemy_admin/components/page_select.js +63 -0
- data/app/javascript/alchemy_admin/components/remote_select.js +134 -0
- data/app/javascript/alchemy_admin/components/select.js +12 -0
- data/app/javascript/alchemy_admin/components/spinner.js +31 -0
- data/app/javascript/alchemy_admin/components/tinymce.js +146 -0
- data/app/javascript/alchemy_admin/components/uploader/file_upload.js +266 -0
- data/app/javascript/alchemy_admin/components/uploader/progress.js +258 -0
- data/app/javascript/alchemy_admin/components/uploader.js +132 -0
- data/app/javascript/alchemy_admin/dirty.js +49 -0
- data/app/javascript/alchemy_admin/file_editors.js +1 -1
- data/app/javascript/alchemy_admin/gui.js +14 -0
- data/app/javascript/alchemy_admin/i18n.js +12 -8
- data/app/javascript/alchemy_admin/image_cropper.js +6 -3
- data/app/javascript/alchemy_admin/image_loader.js +7 -15
- data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -5
- data/app/javascript/alchemy_admin/initializer.js +65 -0
- data/app/javascript/alchemy_admin/locales/en.js +31 -0
- data/app/javascript/alchemy_admin/picture_editors.js +2 -2
- data/app/javascript/alchemy_admin/picture_selector.js +38 -0
- data/app/javascript/alchemy_admin/please_wait_overlay.js +8 -0
- data/app/javascript/alchemy_admin/sortable_elements.js +78 -0
- data/app/javascript/alchemy_admin/spinner.js +36 -0
- data/app/javascript/alchemy_admin/tags_autocomplete.js +46 -0
- data/app/javascript/alchemy_admin/utils/ajax.js +6 -5
- data/app/javascript/alchemy_admin/utils/dom_helpers.js +20 -0
- data/app/javascript/alchemy_admin/utils/format.js +11 -0
- data/app/javascript/alchemy_admin/utils/string_conversions.js +10 -0
- data/app/javascript/alchemy_admin.js +70 -13
- data/app/javascript/menubar.js +10 -0
- data/app/models/alchemy/attachment.rb +9 -11
- data/app/models/alchemy/element/element_ingredients.rb +2 -2
- data/app/models/alchemy/element.rb +11 -0
- data/app/models/alchemy/ingredient.rb +3 -3
- data/app/models/alchemy/ingredient_validator.rb +2 -2
- data/app/models/alchemy/ingredients/richtext.rb +1 -10
- data/app/models/alchemy/node.rb +4 -0
- data/app/models/alchemy/page/page_natures.rb +10 -2
- data/app/models/alchemy/page.rb +10 -50
- data/app/models/alchemy/picture/url.rb +1 -9
- data/app/models/concerns/alchemy/picture_thumbnails.rb +1 -1
- data/app/serializers/alchemy/page_tree_serializer.rb +2 -1
- data/app/services/alchemy/copy_page.rb +98 -0
- data/app/views/alchemy/_menubar.html.erb +17 -13
- data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -10
- data/app/views/alchemy/admin/attachments/_attachment.html.erb +44 -36
- data/app/views/alchemy/admin/attachments/_replace_button.html.erb +15 -21
- data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
- data/app/views/alchemy/admin/attachments/assign.js.erb +1 -1
- data/app/views/alchemy/admin/attachments/index.html.erb +6 -4
- data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
- data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
- data/app/views/alchemy/admin/clipboard/index.html.erb +3 -7
- data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
- data/app/views/alchemy/admin/crop.html.erb +1 -1
- data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
- data/app/views/alchemy/admin/dashboard/index.html.erb +13 -11
- data/app/views/alchemy/admin/dashboard/info.html.erb +7 -7
- data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +22 -24
- data/app/views/alchemy/admin/elements/_element.html.erb +52 -44
- data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_header.html.erb +11 -12
- data/app/views/alchemy/admin/elements/_toolbar.html.erb +33 -45
- data/app/views/alchemy/admin/elements/create.js.erb +7 -15
- data/app/views/alchemy/admin/elements/destroy.js.erb +0 -2
- data/app/views/alchemy/admin/elements/index.html.erb +27 -24
- data/app/views/alchemy/admin/elements/new.html.erb +9 -11
- data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +2 -2
- data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -3
- data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +1 -2
- data/app/views/alchemy/admin/languages/_form.html.erb +2 -3
- data/app/views/alchemy/admin/languages/_language.html.erb +15 -8
- data/app/views/alchemy/admin/languages/_table.html.erb +1 -0
- data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +28 -16
- data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
- data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +12 -8
- data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
- data/app/views/alchemy/admin/nodes/_form.html.erb +20 -21
- data/app/views/alchemy/admin/nodes/_node.html.erb +39 -34
- data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_anchor_link.html.erb +4 -4
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_external_link.html.erb +4 -4
- data/app/views/alchemy/admin/pages/_file_link.html.erb +5 -5
- data/app/views/alchemy/admin/pages/_form.html.erb +10 -21
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +4 -4
- data/app/views/alchemy/admin/pages/_locked_page.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +4 -17
- data/app/views/alchemy/admin/pages/_page.html.erb +76 -72
- data/app/views/alchemy/admin/pages/_page_infos.html.erb +23 -7
- data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +2 -1
- data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -21
- data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -5
- data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_table_row.html.erb +43 -39
- data/app/views/alchemy/admin/pages/_toolbar.html.erb +43 -38
- data/app/views/alchemy/admin/pages/configure.html.erb +12 -14
- data/app/views/alchemy/admin/pages/edit.html.erb +80 -103
- data/app/views/alchemy/admin/pages/info.html.erb +20 -11
- data/app/views/alchemy/admin/pages/link.html.erb +22 -16
- data/app/views/alchemy/admin/pages/new.html.erb +9 -11
- data/app/views/alchemy/admin/pages/unlock.js.erb +10 -3
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -13
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -5
- data/app/views/alchemy/admin/partials/_routes.html.erb +10 -2
- data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -5
- data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +28 -23
- data/app/views/alchemy/admin/pictures/_archive.html.erb +5 -5
- data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +21 -23
- data/app/views/alchemy/admin/pictures/_infos.html.erb +2 -6
- data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -17
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +17 -16
- data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +1 -1
- data/app/views/alchemy/admin/pictures/assign.js.erb +1 -1
- data/app/views/alchemy/admin/pictures/index.html.erb +34 -30
- data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
- data/app/views/alchemy/admin/resources/_filter.html.erb +1 -1
- data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
- data/app/views/alchemy/admin/resources/_resource.html.erb +16 -9
- data/app/views/alchemy/admin/resources/_table.html.erb +4 -1
- data/app/views/alchemy/admin/resources/index.html.erb +22 -19
- data/app/views/alchemy/admin/sites/index.html.erb +2 -1
- data/app/views/alchemy/admin/styleguide/index.html.erb +54 -28
- data/app/views/alchemy/admin/tags/_tag.html.erb +16 -14
- data/app/views/alchemy/admin/tags/index.html.erb +15 -12
- data/app/views/alchemy/admin/tinymce/_setup.html.erb +29 -0
- data/app/views/alchemy/admin/uploader/_button.html.erb +23 -29
- data/app/views/alchemy/admin/uploader/_setup.html.erb +3 -8
- data/app/views/alchemy/base/500.html.erb +1 -1
- data/app/views/alchemy/base/error_notice.js.erb +0 -1
- data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_datetime_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_file_editor.html.erb +5 -5
- data/app/views/alchemy/ingredients/_link_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_node_editor.html.erb +6 -19
- data/app/views/alchemy/ingredients/_page_editor.html.erb +7 -19
- data/app/views/alchemy/ingredients/_picture_editor.html.erb +2 -2
- data/app/views/alchemy/ingredients/_richtext_editor.html.erb +6 -15
- data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
- data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/shared/_anchor.html.erb +1 -1
- data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +10 -20
- data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +42 -49
- data/app/views/kaminari/alchemy/_first_page.html.erb +4 -2
- data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
- data/app/views/kaminari/alchemy/_last_page.html.erb +4 -2
- data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
- data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
- data/app/views/layouts/alchemy/admin.html.erb +10 -29
- data/config/alchemy/modules.yml +30 -30
- data/config/importmap.rb +10 -1
- data/config/initializers/rails_live_reload.rb +13 -0
- data/config/locales/alchemy.en.yml +23 -9
- data/config/routes.rb +2 -1
- data/lib/alchemy/auth_accessors.rb +6 -1
- data/lib/alchemy/dev_support/live_reload_watcher.rb +5 -0
- data/lib/alchemy/engine.rb +8 -2
- data/lib/alchemy/forms/builder.rb +18 -12
- data/lib/alchemy/resource.rb +2 -2
- data/lib/alchemy/resources_helper.rb +6 -6
- data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
- data/lib/alchemy/test_support/rspec_matchers.rb +14 -0
- data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
- data/lib/alchemy/tinymce.rb +8 -3
- data/lib/alchemy/version.rb +1 -1
- data/package.json +14 -5
- data/vendor/assets/fonts/remixicon.eot +0 -0
- data/vendor/assets/fonts/remixicon.svg +7816 -0
- data/vendor/assets/fonts/remixicon.ttf +0 -0
- data/vendor/assets/fonts/remixicon.woff +0 -0
- data/vendor/assets/fonts/remixicon.woff2 +0 -0
- data/vendor/assets/stylesheets/remixicon.scss +10480 -0
- metadata +85 -90
- data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +0 -30
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -53
- data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +0 -45
- data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +0 -19
- data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +0 -59
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -79
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -267
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -27
- data/app/assets/javascripts/alchemy/alchemy.spinner.js +0 -32
- data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +0 -10
- data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +0 -131
- data/app/assets/javascripts/alchemy/menubar.js.coffee +0 -8
- data/app/assets/javascripts/alchemy/node_select.js +0 -39
- data/app/assets/javascripts/alchemy/page_select.js +0 -46
- data/app/assets/javascripts/alchemy/templates/node.hbs +0 -16
- data/app/assets/javascripts/alchemy/templates/spinner.hbs +0 -7
- data/app/assets/stylesheets/alchemy/jquery-ui.scss +0 -435
- data/app/javascript/alchemy_admin/datepicker.js +0 -33
- data/app/javascript/alchemy_admin/tinymce.js +0 -146
- data/app/javascript/alchemy_admin/translations.js +0 -32
- data/app/views/alchemy/admin/elements/fold.js.erb +0 -33
- data/app/views/alchemy/admin/elements/order.js.erb +0 -11
- data/app/views/alchemy/admin/elements/publish.js.erb +0 -21
- data/app/views/alchemy/admin/elements/update.js.erb +0 -27
- data/vendor/assets/fonts/fa-regular-400.eot +0 -0
- data/vendor/assets/fonts/fa-regular-400.svg +0 -803
- data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
- data/vendor/assets/fonts/fa-regular-400.woff +0 -0
- data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
- data/vendor/assets/fonts/fa-solid-900.eot +0 -0
- data/vendor/assets/fonts/fa-solid-900.svg +0 -4938
- data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
- data/vendor/assets/fonts/fa-solid-900.woff +0 -0
- data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +0 -178
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +0 -125
- data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +0 -1502
- data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +0 -224
- data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
- data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
- data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
- data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
- data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
- data/vendor/assets/javascripts/jquery-ui/widget.js +0 -754
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1623
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
- data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +0 -7
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +0 -296
- data/vendor/assets/stylesheets/fontawesome/_animated.scss +0 -20
- data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +0 -20
- data/vendor/assets/stylesheets/fontawesome/_core.scss +0 -21
- data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +0 -6
- data/vendor/assets/stylesheets/fontawesome/_icons.scss +0 -1441
- data/vendor/assets/stylesheets/fontawesome/_larger.scss +0 -23
- data/vendor/assets/stylesheets/fontawesome/_list.scss +0 -18
- data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -56
- data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +0 -24
- data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +0 -5
- data/vendor/assets/stylesheets/fontawesome/_stacked.scss +0 -31
- data/vendor/assets/stylesheets/fontawesome/_variables.scss +0 -1458
- data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +0 -16
- data/vendor/assets/stylesheets/fontawesome/regular.scss +0 -23
- data/vendor/assets/stylesheets/fontawesome/solid.scss +0 -24
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="resource_info">
|
2
2
|
<div class="value">
|
3
3
|
<label>
|
4
|
-
<%= render_icon @attachment.icon_css_class
|
4
|
+
<%= render_icon @attachment.icon_css_class %>
|
5
5
|
</label>
|
6
6
|
<p><%= @attachment.file_name %></p>
|
7
7
|
</div>
|
@@ -9,32 +9,32 @@
|
|
9
9
|
<label><%= Alchemy::Attachment.human_attribute_name(:url) %></label>
|
10
10
|
<p><%= @attachment.url %></p>
|
11
11
|
<a data-clipboard-text="<%= @attachment.url %>" class="icon_button--right">
|
12
|
-
<%= render_icon(:clipboard
|
12
|
+
<%= render_icon(:clipboard) %>
|
13
13
|
</a>
|
14
14
|
</div>
|
15
15
|
<div class="value with-icon">
|
16
16
|
<label><%= Alchemy::Attachment.human_attribute_name(:download_url) %></label>
|
17
17
|
<p><%= @attachment.url(download: true) %></p>
|
18
18
|
<a data-clipboard-text="<%= @attachment.url(download: true) %>" class="icon_button--right">
|
19
|
-
<%= render_icon(:clipboard
|
19
|
+
<%= render_icon(:clipboard) %>
|
20
20
|
</a>
|
21
21
|
</div>
|
22
22
|
</div>
|
23
23
|
|
24
|
-
<% case @attachment.
|
25
|
-
<% when
|
24
|
+
<% case @attachment.file_mime_type %>
|
25
|
+
<% when *Alchemy::Filetypes::IMAGE_FILE_TYPES %>
|
26
26
|
<div class="attachment_preview_container image-preview">
|
27
27
|
<%= image_tag(@attachment.url, class: "full_width") %>
|
28
28
|
</div>
|
29
|
-
<% when
|
29
|
+
<% when *Alchemy::Filetypes::AUDIO_FILE_TYPES %>
|
30
30
|
<div class="attachment_preview_container player-preview">
|
31
31
|
<%= audio_tag(@attachment.url, preload: "none", controls: true, class: "full_width") %>
|
32
32
|
</div>
|
33
|
-
<% when
|
33
|
+
<% when *Alchemy::Filetypes::VIDEO_FILE_TYPES %>
|
34
34
|
<div class="attachment_preview_container player-preview">
|
35
35
|
<%= video_tag(@attachment.url, preload: "metadata", controls: true, class: "full_width") %>
|
36
36
|
</div>
|
37
|
-
<% when "
|
37
|
+
<% when "application/pdf" %>
|
38
38
|
<iframe src="<%= @attachment.url %>" frameborder=0 class="full-iframe">
|
39
39
|
Your browser does not support frames.
|
40
40
|
</iframe>
|
@@ -1,3 +1,3 @@
|
|
1
1
|
$("#clipboard_items").replaceWith("<%= j render_message { Alchemy.t('No items in your clipboard') } -%>");
|
2
|
-
$('#clipboard_button .icon').removeClass('
|
2
|
+
$('#clipboard_button .icon').removeClass('ri-clipboard-fill').addClass('ri-clipboard-line');
|
3
3
|
Alchemy.pleaseWaitOverlay(false);
|
@@ -9,18 +9,14 @@
|
|
9
9
|
<% item_class = item.class.name.demodulize.underscore.pluralize %>
|
10
10
|
<li id="clipboard_item_<%= item.id -%>" class="<%= item_class -%>">
|
11
11
|
<% if item_class == 'pages' %>
|
12
|
-
<%= render_icon(:file
|
12
|
+
<%= render_icon(:file) %>
|
13
13
|
<%= truncate(item.name, length: 50) %>
|
14
14
|
<% else %>
|
15
|
-
|
16
|
-
<%= render_icon('window-maximize', style: 'regular', class: 'element') %>
|
17
|
-
<% else %>
|
18
|
-
<%= render_icon('window-close', class: 'element') %>
|
19
|
-
<% end %>
|
15
|
+
<%= render_icon(:draggable, style: nil) %>
|
20
16
|
<%= truncate(item.display_name_with_preview_text(50), length: 50) %>
|
21
17
|
<% end %>
|
22
18
|
<span class="float_right">
|
23
|
-
<%= link_to render_icon(:
|
19
|
+
<%= link_to render_icon(:close, size: '1x'),
|
24
20
|
alchemy.remove_admin_clipboard_path(remarkable_type: item_class, remarkable_id: item.id),
|
25
21
|
remote: true, method: 'delete',
|
26
22
|
title: Alchemy.t('Remove item from clipboard') %>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<% else -%>
|
14
14
|
Alchemy.growl('<%= j Alchemy.t("item copied to clipboard", name: @item.class.name == "Alchemy::Element" ? @item.display_name_with_preview_text : @item.name) %>')
|
15
15
|
<% end -%>
|
16
|
-
$('#clipboard_button .icon').removeClass('
|
16
|
+
$('#clipboard_button .icon').removeClass('ri-clipboard-line').addClass('ri-clipboard-fill');
|
17
17
|
|
18
18
|
<%# Update add nested element forms for any elements that accept ONLY this as a nested element %>
|
19
19
|
<% if @item.class == Alchemy::Element %>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<% if @settings %>
|
20
20
|
<script type="text/javascript">
|
21
21
|
Alchemy.ImageLoader('#jscropper .thumbnail_background');
|
22
|
-
$('#imageToCrop').load
|
22
|
+
$('#imageToCrop').on("load", function() {
|
23
23
|
new Alchemy.ImageCropper(
|
24
24
|
<%= @settings[:min_size].to_json %>,
|
25
25
|
<%= @settings[:default_box].to_json %>,
|
@@ -39,7 +39,7 @@
|
|
39
39
|
<% if (current_alchemy_user.id == page.locked_by) || can?(:manage, Alchemy::Site.current) %>
|
40
40
|
<%= form_tag(alchemy.unlock_admin_page_path(page, :redirect_to => alchemy.admin_dashboard_url)) do %>
|
41
41
|
<button class="icon_button small" title="<%= Alchemy.t(:explain_unlocking) %>">
|
42
|
-
<%= render_icon(:
|
42
|
+
<%= render_icon(:close, size: '1x') %>
|
43
43
|
</button>
|
44
44
|
<% end %>
|
45
45
|
<% end %>
|
@@ -1,16 +1,18 @@
|
|
1
1
|
<%= content_for :toolbar do %>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
dialog_options: {
|
2
|
+
<div class="toolbar_buttons">
|
3
|
+
<%= toolbar_button(
|
4
|
+
icon: 'information',
|
5
|
+
label: Alchemy.t(:info),
|
6
|
+
url: alchemy.dashboard_info_path,
|
8
7
|
title: Alchemy.t(:info),
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
dialog_options: {
|
9
|
+
title: Alchemy.t(:info),
|
10
|
+
size: "420x435"
|
11
|
+
},
|
12
|
+
if_permitted_to: [:info, :alchemy_admin_dashboard],
|
13
|
+
hotkey: 'alt+i'
|
14
|
+
) %>
|
15
|
+
</div>
|
14
16
|
<% end %>
|
15
17
|
|
16
18
|
<div id="dashboard">
|
@@ -9,15 +9,15 @@
|
|
9
9
|
</h2>
|
10
10
|
<% if can? :update_check, :alchemy_admin_dashboard %>
|
11
11
|
<p class="center" id="update_check">
|
12
|
-
<span id="update_available">
|
12
|
+
<span id="update_available" class="hidden">
|
13
13
|
<%= render_icon(:exclamation) %>
|
14
14
|
<%= Alchemy.t 'Update available' %>
|
15
15
|
</span>
|
16
|
-
<span id="up_to_date">
|
16
|
+
<span id="up_to_date" class="hidden">
|
17
17
|
<%= render_icon(:check) %>
|
18
18
|
<%= Alchemy.t 'Alchemy is up to date' %>
|
19
19
|
</span>
|
20
|
-
<span id="error">
|
20
|
+
<span id="error" class="hidden">
|
21
21
|
<%= render_icon(:exclamation) %>
|
22
22
|
<%= Alchemy.t 'Update status unavailable' %>
|
23
23
|
</span>
|
@@ -28,12 +28,12 @@
|
|
28
28
|
spinner.spin(el[0])
|
29
29
|
$.get('<%= alchemy.update_check_path %>', function(data, textStatus, jqXHR) {
|
30
30
|
if (data == 'true') {
|
31
|
-
$('#update_available').
|
31
|
+
$('#update_available').removeClass("hidden")
|
32
32
|
} else {
|
33
|
-
$('#up_to_date').
|
33
|
+
$('#up_to_date').removeClass("hidden")
|
34
34
|
}
|
35
35
|
}).fail(function(jqXHR, textStatus, errorThrown) {
|
36
|
-
$('#error').
|
36
|
+
$('#error').removeClass("hidden")
|
37
37
|
}).always(function() {
|
38
38
|
spinner.stop()
|
39
39
|
})
|
@@ -58,7 +58,7 @@
|
|
58
58
|
<a href="http://blueimp.github.io/jQuery-File-Upload/" target="_blank">jQuery File Upload</a>
|
59
59
|
</li>
|
60
60
|
<li>
|
61
|
-
<a href="https://
|
61
|
+
<a href="https://remixicon.com" target="_blank">Remix Icon</a>
|
62
62
|
</li>
|
63
63
|
</ul>
|
64
64
|
<% end %>
|
@@ -1,27 +1,25 @@
|
|
1
1
|
<%= content_tag :div, class: 'add-nested-element', data: { element_id: element.id } do %>
|
2
|
-
<% if element.
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
</button>
|
15
|
-
<% end %>
|
16
|
-
<% else %>
|
17
|
-
<%= link_to_dialog (nestable_element ? Alchemy.t(:add_nested_element, name: Alchemy.t(nestable_element, scope: 'element_names')) : Alchemy.t("New Element")),
|
18
|
-
alchemy.new_admin_element_path(
|
19
|
-
parent_element_id: element.id,
|
20
|
-
page_version_id: element.page_version_id
|
21
|
-
), {
|
22
|
-
size: "320x125",
|
23
|
-
title: Alchemy.t("New Element")
|
24
|
-
}, class: "button add-nestable-element-button" %>
|
2
|
+
<% if element.nestable_elements.length == 1 &&
|
3
|
+
(nestable_element = element.nestable_elements.first) &&
|
4
|
+
Alchemy::Element.all_from_clipboard_for_parent_element(get_clipboard("elements"), element).none?
|
5
|
+
%>
|
6
|
+
<%= form_for [:admin, Alchemy::Element.new(name: nestable_element)],
|
7
|
+
remote: true, html: { class: 'add-nested-element-form', id: nil } do |f| %>
|
8
|
+
<%= f.hidden_field :name %>
|
9
|
+
<%= f.hidden_field :page_version_id, value: element.page_version_id %>
|
10
|
+
<%= f.hidden_field :parent_element_id, value: element.id %>
|
11
|
+
<button class="add-nestable-element-button" is="alchemy-button">
|
12
|
+
<%= Alchemy.t(:add_nested_element, name: Alchemy.t(nestable_element.to_sym, scope: 'element_names')) %>
|
13
|
+
</button>
|
25
14
|
<% end %>
|
15
|
+
<% else %>
|
16
|
+
<%= link_to_dialog (nestable_element ? Alchemy.t(:add_nested_element, name: Alchemy.t(nestable_element.to_sym, scope: 'element_names')) : Alchemy.t("New Element")),
|
17
|
+
alchemy.new_admin_element_path(
|
18
|
+
parent_element_id: element.id,
|
19
|
+
page_version_id: element.page_version_id
|
20
|
+
), {
|
21
|
+
size: "320x125",
|
22
|
+
title: Alchemy.t("New Element")
|
23
|
+
}, class: "button add-nestable-element-button" %>
|
26
24
|
<% end %>
|
27
|
-
<% end %>
|
25
|
+
<% end %>
|
@@ -1,59 +1,66 @@
|
|
1
|
-
|
2
|
-
id
|
3
|
-
data
|
4
|
-
|
5
|
-
|
1
|
+
<alchemy-element-editor
|
2
|
+
id="element_<%= element.id %>"
|
3
|
+
data-element-id="<%= element.id %>"
|
4
|
+
data-element-name="<%= element.name %>"
|
5
|
+
class="<%= element.css_classes %>"
|
6
|
+
<%= element.compact? ? "compact" : nil %>
|
7
|
+
<%= element.fixed? ? "fixed" : nil %>
|
8
|
+
>
|
6
9
|
<% unless element.fixed? %>
|
7
10
|
<%= render 'alchemy/admin/elements/header', element: element %>
|
8
11
|
<% end %>
|
9
12
|
|
10
|
-
|
11
|
-
<%= render 'alchemy/admin/elements/toolbar', element: element %>
|
13
|
+
<%= render 'alchemy/admin/elements/toolbar', element: element %>
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
<% if element.has_hint? %>
|
16
|
+
<%= render_message(:hint, sanitize(element.hint)) %>
|
17
|
+
<% end %>
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
<% element.definition[:message].tap do |message| %>
|
20
|
+
<%= render_message(:info, sanitize(message)) if message %>
|
21
|
+
<% end %>
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
<% element.definition[:warning].tap do |warning| %>
|
24
|
+
<%= render_message(:warning, sanitize(warning)) if warning %>
|
25
|
+
<% end %>
|
24
26
|
|
25
|
-
|
27
|
+
<% if element.editable? %>
|
28
|
+
<%= form_for [alchemy, :admin, element], remote: true,
|
29
|
+
html: {id: "element_#{element.id}_form".html_safe, class: 'element-body'} do |f| %>
|
26
30
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
+
<div id="element_<%= element.id %>_errors" class="element_errors hidden">
|
32
|
+
<h2><%= Alchemy.t("Validation failed") %></h2>
|
33
|
+
<p><%= Alchemy.t(:ingredient_validations_headline) %></p>
|
34
|
+
<ul class="error-messages"></ul>
|
35
|
+
</div>
|
31
36
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
<%= element.translated_group group %>
|
37
|
-
<i class="ingredient-group-expand icon fa-fw fa-angle-down fas"></i>
|
38
|
-
<% end %>
|
39
|
-
<%= content_tag :div, id: "element_#{element.id}_ingredient_group_#{group.parameterize.underscore}", class: 'ingredient-group-ingredients' do %>
|
40
|
-
<%= render ingredients, element_form: f %>
|
41
|
-
<% end %>
|
42
|
-
</div>
|
43
|
-
<% end %>
|
44
|
-
</div>
|
45
|
-
<% end %>
|
37
|
+
<!-- Ingredients -->
|
38
|
+
<% if element.has_ingredients_defined? %>
|
39
|
+
<div class="element-ingredient-editors">
|
40
|
+
<%= render element.ingredients.select { |i| !i.definition[:group] }, element_form: f %>
|
46
41
|
|
47
|
-
|
48
|
-
|
49
|
-
<%=
|
50
|
-
|
51
|
-
|
52
|
-
|
42
|
+
<!-- Each ingredient group -->
|
43
|
+
<% element.ingredients.select { |i| i.definition[:group] }.group_by { |i| i.definition[:group] }.each do |group, ingredients| %>
|
44
|
+
<%= content_tag :details, class: "ingredient-group", id: "element_#{element.id}_ingredient_group_#{group.parameterize.underscore}", is: "alchemy-ingredient-group" do %>
|
45
|
+
<summary>
|
46
|
+
<%= element.translated_group group %>
|
47
|
+
<i class="ingredient-group-expand icon ri-fw ri-arrow-left-s-line"></i>
|
48
|
+
</summary>
|
49
|
+
<%= render ingredients, element_form: f %>
|
50
|
+
<% end %>
|
51
|
+
<% end %>
|
52
|
+
</div>
|
53
53
|
<% end %>
|
54
54
|
|
55
|
-
|
55
|
+
<% if element.taggable? %>
|
56
|
+
<div class="autocomplete_tag_list">
|
57
|
+
<%= f.label :tag_list %>
|
58
|
+
<%= render 'alchemy/admin/partials/autocomplete_tag_list', f: f %>
|
59
|
+
</div>
|
60
|
+
<% end %>
|
56
61
|
<% end %>
|
62
|
+
|
63
|
+
<%= render 'alchemy/admin/elements/footer', element: element %>
|
57
64
|
<% end %>
|
58
65
|
|
59
66
|
<%# We need to render nested elements even if the element is folded,
|
@@ -63,7 +70,8 @@
|
|
63
70
|
<div class="nestable-elements">
|
64
71
|
<%= content_tag :div,
|
65
72
|
class: "nested-elements", data: {
|
66
|
-
'droppable-elements' => element.nestable_elements.join(' ')
|
73
|
+
'droppable-elements' => element.nestable_elements.join(' '),
|
74
|
+
'element-name' => element.name
|
67
75
|
} do %>
|
68
76
|
<%= render element.all_nested_elements.map { |element|
|
69
77
|
Alchemy::ElementEditor.new(element)
|
@@ -73,4 +81,4 @@
|
|
73
81
|
<%= render "alchemy/admin/elements/add_nested_element_form", element: element %>
|
74
82
|
</div>
|
75
83
|
<% end %>
|
76
|
-
|
84
|
+
</alchemy-element-editor>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
collection: elements_for_select(@elements),
|
11
11
|
prompt: Alchemy.t(:select_element),
|
12
12
|
selected: (@elements.first if @elements.count == 1),
|
13
|
-
input_html: {
|
13
|
+
input_html: {is: 'alchemy-select', autofocus: true, disabled: @elements.count == 1} %>
|
14
14
|
<% if @elements.count == 1 %>
|
15
15
|
<%= form.hidden_field :name, value: @elements.first[:name] %>
|
16
16
|
<% end %>
|
@@ -5,11 +5,7 @@
|
|
5
5
|
<% elsif element.deprecated? %>
|
6
6
|
<%= hint_with_tooltip element.deprecation_notice %>
|
7
7
|
<% else %>
|
8
|
-
|
9
|
-
<%= render_icon('window-maximize', style: 'regular', class: 'element') %>
|
10
|
-
<% else %>
|
11
|
-
<%= render_icon('window-close', class: 'element') %>
|
12
|
-
<% end %>
|
8
|
+
<%= render_icon('draggable', style: nil, class: 'element', fixed_width: false) %>
|
13
9
|
<% end %>
|
14
10
|
</span>
|
15
11
|
<span class="element-title">
|
@@ -18,13 +14,16 @@
|
|
18
14
|
<%= sanitize(element.preview_text.presence || ' ') %>
|
19
15
|
</span>
|
20
16
|
</span>
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
<span class="element-hidden-icon">
|
18
|
+
<%= render_icon("cloud-off", size: "1x") %>
|
19
|
+
<span class="element-hidden-label">
|
20
|
+
<%= Alchemy.t(:element_hidden) %>
|
21
|
+
</span>
|
22
|
+
</span>
|
23
|
+
<%= button_tag({
|
24
24
|
title: Alchemy.t(element.folded? ? :show_element_content : :hide_element_content),
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
<%= render_icon element.folded? ? 'plus-square' : 'minus-square' %>
|
25
|
+
class: "element-toggle"
|
26
|
+
}) do %>
|
27
|
+
<%= render_icon element.folded? ? 'arrow-left-s' : 'arrow-down-s' %>
|
29
28
|
<% end %>
|
30
29
|
</div>
|
@@ -1,48 +1,36 @@
|
|
1
1
|
<% remarkable_type = "elements" %>
|
2
2
|
<div class="element-toolbar">
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
<
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
alchemy.publish_admin_element_path(id: element.id),
|
37
|
-
remote: true,
|
38
|
-
method: :patch,
|
39
|
-
class: "icon_button"
|
40
|
-
) %>
|
41
|
-
<% if element.public? %>
|
42
|
-
<label><%= Alchemy.t(:hide_element) %></label>
|
43
|
-
<% else %>
|
44
|
-
<label><%= Alchemy.t(:show_element) %></label>
|
45
|
-
<% end %>
|
46
|
-
</div>
|
47
|
-
</span>
|
3
|
+
<sl-tooltip placement="top-start" content="<%= Alchemy.t(:copy_element) %>">
|
4
|
+
<%= link_to(
|
5
|
+
render_icon("file-copy"),
|
6
|
+
alchemy.insert_admin_clipboard_path(remarkable_type: remarkable_type, remarkable_id: element.id),
|
7
|
+
remote: true,
|
8
|
+
method: :post,
|
9
|
+
class: "icon_button"
|
10
|
+
) %>
|
11
|
+
</sl-tooltip>
|
12
|
+
<sl-tooltip content="<%= Alchemy.t(:cut_element) %>">
|
13
|
+
<%= link_to(
|
14
|
+
render_icon("scissors-cut"),
|
15
|
+
alchemy.insert_admin_clipboard_path(remarkable_type: remarkable_type, remarkable_id: element.id, remove: true),
|
16
|
+
remote: true,
|
17
|
+
method: :post,
|
18
|
+
class: "icon_button"
|
19
|
+
) %>
|
20
|
+
</sl-tooltip>
|
21
|
+
<sl-tooltip content="<%= Alchemy.t("Delete element") %>">
|
22
|
+
<%= link_to_confirm_dialog(
|
23
|
+
render_icon('delete-bin-2'),
|
24
|
+
Alchemy.t(:confirm_to_delete_element),
|
25
|
+
alchemy.admin_element_path(element),
|
26
|
+
class: "icon_button"
|
27
|
+
) -%>
|
28
|
+
</sl-tooltip>
|
29
|
+
<sl-tooltip content="<%= element.public? ? Alchemy.t(:hide_element) : Alchemy.t(:show_element) %>" placement="top-end">
|
30
|
+
<alchemy-publish-element-button>
|
31
|
+
<sl-switch <%= element.public? ? nil : "checked" %> size="small">
|
32
|
+
<%= t(".hide") %>
|
33
|
+
</sl-switch>
|
34
|
+
</alchemy-publish-element-button>
|
35
|
+
</sl-tooltip>
|
48
36
|
</div>
|
@@ -1,5 +1,4 @@
|
|
1
1
|
(function() {
|
2
|
-
var $el;
|
3
2
|
var $element_area;
|
4
3
|
var element_html = '<%= j render(Alchemy::ElementEditor.new(@element)) %>';
|
5
4
|
|
@@ -12,10 +11,9 @@
|
|
12
11
|
Alchemy.FixedElements.buildTabs('<%= Alchemy.t(:main_content) %>');
|
13
12
|
}
|
14
13
|
Alchemy.FixedElements.createTab('<%= @element.id %>', '<%= @element.display_name %>');
|
15
|
-
$element_area = $('
|
14
|
+
$element_area = $('[name="fixed-element-<%= @element.id %>"]');
|
16
15
|
<% elsif @element.parent_element %>
|
17
16
|
$element_area = $('#element_<%= @element.parent_element_id %> > .nestable-elements > .nested-elements');
|
18
|
-
Alchemy.Buttons.enable('.nestable-elements');
|
19
17
|
<% else %>
|
20
18
|
$element_area = $('#main-content-elements');
|
21
19
|
<% end %>
|
@@ -26,22 +24,16 @@
|
|
26
24
|
$element_area.append(element_html);
|
27
25
|
<%- end -%>
|
28
26
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
$element_area.sortable('refresh');
|
33
|
-
}
|
27
|
+
<% if @element.fixed? %>
|
28
|
+
Alchemy.SortableElements('[name="fixed-element-<%= @element.id %>"] .nested-elements');
|
29
|
+
<% end %>
|
34
30
|
|
35
31
|
Alchemy.growl('<%= Alchemy.t(:successfully_added_element) %>');
|
36
32
|
Alchemy.closeCurrentDialog();
|
37
|
-
Alchemy.Tinymce.init(<%= @element.richtext_ingredients_ids.to_json %>);
|
38
|
-
Alchemy.PreviewWindow.refresh(function() {
|
39
|
-
Alchemy.ElementEditors.focusElementPreview(<%= @element.id %>);
|
40
|
-
});
|
41
33
|
|
42
|
-
|
43
|
-
|
44
|
-
|
34
|
+
el = document.querySelector('#element_<%= @element.id %>');
|
35
|
+
el.focusElement();
|
36
|
+
el.focusElementPreview();
|
45
37
|
|
46
38
|
<%- if @clipboard.blank? -%>
|
47
39
|
$('#clipboard_button .icon.clipboard').removeClass('full');
|
@@ -1,9 +1,7 @@
|
|
1
1
|
$('#element_<%= @element.id %>').hide(200, function() {
|
2
2
|
$(this).remove();
|
3
3
|
Alchemy.growl('<%= j @notice %>');
|
4
|
-
$('#element_area .sortable-elements').sortable('refresh');
|
5
4
|
Alchemy.PreviewWindow.refresh();
|
6
|
-
Alchemy.Tinymce.remove(<%= @richtext_ids.to_json %>);
|
7
5
|
<% if @element.fixed? %>
|
8
6
|
Alchemy.FixedElements.removeTab(<%= @element.id %>);
|
9
7
|
<% end %>
|
@@ -1,33 +1,36 @@
|
|
1
1
|
<% if @fixed_elements.any? %>
|
2
|
-
<
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
2
|
+
<sl-tab-group id="fixed-elements">
|
3
|
+
<sl-tab slot="nav" panel="main-content-elements">
|
4
|
+
<%= Alchemy.t(:main_content) %>
|
5
|
+
</sl-tab>
|
6
|
+
<% @fixed_elements.each do |element| %>
|
7
|
+
<sl-tab slot="nav" panel="fixed-element-<%= element.id %>">
|
8
|
+
<%= element.display_name %>
|
9
|
+
</sl-tab>
|
10
|
+
<% end %>
|
11
|
+
<sl-tab-panel
|
12
|
+
name="main-content-elements"
|
13
|
+
class="sortable-elements scrollable-elements"
|
14
|
+
data-droppable-elements="<%= @page.element_definition_names.join(' ') %>"
|
15
|
+
data-element-name="main-content-elements"
|
16
|
+
id="main-content-elements"
|
17
|
+
style="--padding: 0"
|
18
|
+
>
|
18
19
|
<%= render @elements.map { |element| Alchemy::ElementEditor.new(element) } %>
|
19
|
-
</
|
20
|
+
</sl-tab-panel>
|
20
21
|
<% @fixed_elements.each do |element| %>
|
21
|
-
<
|
22
|
-
id="fixed-element-<%= element.id %>"
|
23
|
-
class="sortable-elements"
|
24
|
-
data-droppable-elements="<%= element.nestable_elements.join(' ') %>">
|
22
|
+
<sl-tab-panel name="fixed-element-<%= element.id %>" style="--padding: 0" class="scrollable-elements">
|
25
23
|
<%= render Alchemy::ElementEditor.new(element) %>
|
26
|
-
</
|
24
|
+
</sl-tab-panel>
|
27
25
|
<% end %>
|
28
|
-
</
|
26
|
+
</sl-tab-group>
|
29
27
|
<% else %>
|
30
|
-
<div
|
28
|
+
<div
|
29
|
+
id="main-content-elements"
|
30
|
+
class="sortable-elements scrollable-elements"
|
31
|
+
data-droppable-elements="<%= @page.element_definition_names.join(' ') %>"
|
32
|
+
data-element-name="main-content-elements"
|
33
|
+
>
|
31
34
|
<%= render @elements.map { |element| Alchemy::ElementEditor.new(element) } %>
|
32
35
|
</div>
|
33
36
|
<% end %>
|