alchemy_cms 7.0.14 → 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 +0 -1
- data/.standard.yml +1 -1
- data/CHANGELOG.md +144 -33
- data/Gemfile +7 -11
- data/README.md +10 -8
- data/alchemy_cms.gemspec +4 -3
- 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/labels.scss +4 -1
- 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/preview_window.scss +4 -8
- 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/components/alchemy/ingredients/audio_view.rb +1 -1
- data/app/components/alchemy/ingredients/base_view.rb +1 -1
- data/app/components/alchemy/ingredients/boolean_view.rb +1 -1
- data/app/components/alchemy/ingredients/datetime_view.rb +1 -1
- data/app/components/alchemy/ingredients/file_view.rb +1 -1
- data/app/components/alchemy/ingredients/headline_view.rb +7 -16
- data/app/components/alchemy/ingredients/link_view.rb +1 -1
- data/app/components/alchemy/ingredients/page_view.rb +1 -1
- data/app/components/alchemy/ingredients/picture_view.rb +1 -1
- data/app/components/alchemy/ingredients/richtext_view.rb +1 -1
- data/app/components/alchemy/ingredients/text_view.rb +1 -1
- data/app/components/alchemy/ingredients/video_view.rb +1 -1
- 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/languages_controller.rb +1 -2
- data/app/controllers/alchemy/base_controller.rb +4 -2
- data/app/controllers/concerns/alchemy/admin/current_language.rb +1 -5
- 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.rb +11 -0
- data/app/models/alchemy/ingredients/audio.rb +0 -11
- data/app/models/alchemy/ingredients/richtext.rb +1 -10
- data/app/models/alchemy/ingredients/video.rb +0 -12
- data/app/models/alchemy/node.rb +4 -0
- data/app/models/alchemy/page/page_elements.rb +2 -11
- data/app/models/alchemy/page/page_natures.rb +10 -2
- data/app/models/alchemy/page.rb +9 -51
- data/app/models/alchemy/picture/url.rb +1 -9
- 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 +21 -23
- 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 +2 -2
- data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
- data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
- 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 -18
- 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/controller_actions.rb +17 -4
- 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/modules.rb +2 -2
- data/lib/alchemy/resources_helper.rb +3 -3
- data/lib/alchemy/routing_constraints.rb +1 -1
- 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 -97
- data/.gem_release.yml +0 -8
- 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 -40
- 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,21 +1,23 @@
|
|
1
|
-
<div
|
1
|
+
<div class="toolbar_buttons">
|
2
2
|
<% if can? :create, Alchemy::Picture %>
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
<div class="toolbar_button">
|
4
|
+
<%= render 'alchemy/admin/uploader/button',
|
5
|
+
object: Alchemy::Picture.new,
|
6
|
+
dropzone: '#assign_image_list',
|
7
|
+
file_attribute: 'image_file',
|
8
|
+
in_dialog: true,
|
9
|
+
redirect_url: alchemy.admin_pictures_path(
|
10
|
+
size: search_filter_params[:size],
|
11
|
+
filter: { misc: 'last_upload' },
|
12
|
+
form_field_id: @form_field_id
|
13
|
+
) %>
|
14
|
+
</div>
|
13
15
|
<div class="toolbar_spacer"></div>
|
14
16
|
<% end %>
|
15
17
|
<div class="button_group">
|
16
|
-
<
|
18
|
+
<sl-tooltip content="<%= Alchemy.t(:small_thumbnails) %>">
|
17
19
|
<%= link_to(
|
18
|
-
render_icon('
|
20
|
+
render_icon('zoom-out'),
|
19
21
|
alchemy.admin_pictures_path({
|
20
22
|
size: "small",
|
21
23
|
form_field_id: @form_field_id,
|
@@ -24,11 +26,10 @@
|
|
24
26
|
tagged_with: search_filter_params[:tagged_with]
|
25
27
|
}),
|
26
28
|
remote: true,
|
27
|
-
title: Alchemy.t(:small_thumbnails),
|
28
29
|
class: "icon_button"
|
29
30
|
) %>
|
30
|
-
</
|
31
|
-
<
|
31
|
+
</sl-tooltip>
|
32
|
+
<sl-tooltip content="<%= Alchemy.t(:medium_thumbnails) %>">
|
32
33
|
<%= link_to(
|
33
34
|
render_icon('search'),
|
34
35
|
alchemy.admin_pictures_path({
|
@@ -39,13 +40,12 @@
|
|
39
40
|
tagged_with: search_filter_params[:tagged_with]
|
40
41
|
}),
|
41
42
|
remote: true,
|
42
|
-
title: Alchemy.t(:medium_thumbnails),
|
43
43
|
class: "icon_button"
|
44
44
|
) %>
|
45
|
-
</
|
46
|
-
<
|
45
|
+
</sl-tooltip>
|
46
|
+
<sl-tooltip content="<%= Alchemy.t(:big_thumbnails) %>">
|
47
47
|
<%= link_to(
|
48
|
-
render_icon('
|
48
|
+
render_icon('zoom-in'),
|
49
49
|
alchemy.admin_pictures_path({
|
50
50
|
size: "large",
|
51
51
|
form_field_id: @form_field_id,
|
@@ -54,11 +54,9 @@
|
|
54
54
|
tagged_with: search_filter_params[:tagged_with]
|
55
55
|
}),
|
56
56
|
remote: true,
|
57
|
-
title: Alchemy.t(:big_thumbnails),
|
58
57
|
class: "icon_button"
|
59
58
|
) %>
|
60
|
-
</
|
61
|
-
<label><%= Alchemy.t('Image size') %></label>
|
59
|
+
</sl-tooltip>
|
62
60
|
<%= hidden_field_tag('size', @size, id: 'overlay_thumbnails_size') %>
|
63
61
|
</div>
|
64
62
|
<%= render partial: 'alchemy/admin/partials/remote_search_form' %>
|
@@ -26,7 +26,7 @@
|
|
26
26
|
<% if page %>
|
27
27
|
<li>
|
28
28
|
<h3>
|
29
|
-
<%= render_icon 'file
|
29
|
+
<%= render_icon 'file' %>
|
30
30
|
<p><%= link_to page.name, edit_admin_page_path(page) %></p>
|
31
31
|
</h3>
|
32
32
|
<ul class="list">
|
@@ -35,11 +35,7 @@
|
|
35
35
|
<% page_link = link_to element.display_name_with_preview_text,
|
36
36
|
edit_admin_page_path(page, anchor: "element_#{element.id}") %>
|
37
37
|
<% ingredients = picture_ingredients.map { |p| Alchemy::IngredientEditor.new(p).translated_role }.to_sentence %>
|
38
|
-
|
39
|
-
<%= render_icon('window-maximize', style: 'regular') %>
|
40
|
-
<% else %>
|
41
|
-
<%= render_icon('window-close') %>
|
42
|
-
<% end %>
|
38
|
+
<%= render_icon('draggable', style: nil) %>
|
43
39
|
<p>
|
44
40
|
<%== Alchemy.t(:pictures_in_page, page: page_link, pictures: ingredients) %>
|
45
41
|
</p>
|
@@ -4,27 +4,25 @@
|
|
4
4
|
</span>
|
5
5
|
<% if picture.deletable? && can?(:destroy, picture) %>
|
6
6
|
<span class="picture_tool delete">
|
7
|
-
<%=
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
) -%>
|
7
|
+
<sl-tooltip content="<%= Alchemy.t('Delete image') %>">
|
8
|
+
<%= link_to_confirm_dialog(
|
9
|
+
render_icon("delete-bin-2"),
|
10
|
+
Alchemy.t(:confirm_to_delete_image_from_server),
|
11
|
+
alchemy.admin_picture_path(
|
12
|
+
id: picture,
|
13
|
+
q: search_filter_params[:q],
|
14
|
+
page: params[:page],
|
15
|
+
tagged_with: search_filter_params[:tagged_with],
|
16
|
+
size: @size,
|
17
|
+
filter: search_filter_params[:filter]
|
18
|
+
)
|
19
|
+
) -%>
|
20
|
+
</sl-tooltip>
|
22
21
|
</span>
|
23
22
|
<% end %>
|
24
23
|
<% image = image_tag(
|
25
24
|
picture.url(size: preview_size(@size), flatten: true) || "alchemy/missing-image.svg",
|
26
|
-
alt: picture.name
|
27
|
-
title: Alchemy.t(:zoom_image)
|
25
|
+
alt: picture.name
|
28
26
|
) %>
|
29
27
|
<% if can?(:edit, picture) %>
|
30
28
|
<%= link_to(
|
@@ -1,19 +1,20 @@
|
|
1
|
-
<div class="picture_thumbnail
|
2
|
-
<%=
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
1
|
+
<div class="picture_thumbnail" name="<%= picture_to_assign.name %>" id="assignable_<%= picture_to_assign.id %>">
|
2
|
+
<sl-tooltip content="<%= Alchemy.t(:assign_image) %>">
|
3
|
+
<%= link_to(
|
4
|
+
image_tag(
|
5
|
+
picture_to_assign.url(size: preview_size(size), flatten: true) || "alchemy/missing-image.svg",
|
6
|
+
alt: picture_to_assign.name
|
7
|
+
),
|
8
|
+
alchemy.assign_admin_picture_path(
|
9
|
+
id: picture_to_assign.id,
|
10
|
+
form_field_id: @form_field_id
|
11
|
+
),
|
12
|
+
remote: true,
|
13
|
+
onclick: '$(self).attr("href", "#").off("click"); return false',
|
14
|
+
method: 'put',
|
15
|
+
class: 'thumbnail_background'
|
16
|
+
) %>
|
17
|
+
</sl-tooltip>
|
17
18
|
<div class="picture_name" title="<%= picture_to_assign.name %>">
|
18
19
|
<%= picture_to_assign.name %>
|
19
20
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
</ul>
|
7
7
|
<% if search_filter_params[:tagged_with].present? %>
|
8
8
|
<%= link_to(
|
9
|
-
render_icon(:
|
9
|
+
render_icon(:close) + Alchemy.t('Remove tag filter'),
|
10
10
|
url_for(search_filter_params.except(:tagged_with)),
|
11
11
|
remote: request.xhr?,
|
12
12
|
class: 'secondary button small with_icon'
|
@@ -5,6 +5,6 @@
|
|
5
5
|
$form_field.attr("data-image-file-width", <%= @picture.image_file_width %>)
|
6
6
|
$form_field.attr("data-image-file-height", <%= @picture.image_file_height %>)
|
7
7
|
Alchemy.closeCurrentDialog(function() {
|
8
|
-
|
8
|
+
$form_field[0].closest("alchemy-element-editor").setDirty()
|
9
9
|
})
|
10
10
|
})()
|
@@ -1,30 +1,31 @@
|
|
1
1
|
<% content_for(:toolbar) do %>
|
2
2
|
<div class="toolbar_buttons">
|
3
3
|
<% if can? :create, Alchemy::Picture %>
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
<div class="toolbar_button">
|
5
|
+
<%= render 'alchemy/admin/uploader/button',
|
6
|
+
object: Alchemy::Picture.new,
|
7
|
+
file_attribute: 'image_file',
|
8
|
+
redirect_url: alchemy.admin_pictures_path(
|
9
|
+
size: @size,
|
10
|
+
filter: { misc: 'last_upload' }
|
11
|
+
) %>
|
12
|
+
</div>
|
11
13
|
<div class="toolbar_spacer"></div>
|
12
14
|
<% end %>
|
13
15
|
<div class="button_group">
|
14
|
-
<
|
16
|
+
<sl-tooltip content="<%= Alchemy.t(:small_thumbnails) %>">
|
15
17
|
<%= link_to(
|
16
|
-
render_icon('
|
18
|
+
render_icon('zoom-out'),
|
17
19
|
alchemy.admin_pictures_path(
|
18
20
|
size: "small",
|
19
21
|
q: search_filter_params[:q],
|
20
22
|
filter: search_filter_params[:filter],
|
21
23
|
tagged_with: search_filter_params[:tagged_with]
|
22
24
|
),
|
23
|
-
title: Alchemy.t(:small_thumbnails),
|
24
25
|
class: "icon_button"
|
25
26
|
) %>
|
26
|
-
</
|
27
|
-
<
|
27
|
+
</sl-tooltip>
|
28
|
+
<sl-tooltip content="<%= Alchemy.t(:medium_thumbnails) %>">
|
28
29
|
<%= link_to(
|
29
30
|
render_icon('search'),
|
30
31
|
alchemy.admin_pictures_path(
|
@@ -33,36 +34,34 @@
|
|
33
34
|
filter: search_filter_params[:filter],
|
34
35
|
tagged_with: search_filter_params[:tagged_with]
|
35
36
|
),
|
36
|
-
title: Alchemy.t(:medium_thumbnails),
|
37
37
|
class: "icon_button"
|
38
38
|
) %>
|
39
|
-
</
|
40
|
-
<
|
39
|
+
</sl-tooltip>
|
40
|
+
<sl-tooltip content="<%= Alchemy.t(:big_thumbnails) %>">
|
41
41
|
<%= link_to(
|
42
|
-
render_icon('
|
42
|
+
render_icon('zoom-in'),
|
43
43
|
alchemy.admin_pictures_path(
|
44
44
|
size: "large",
|
45
45
|
q: search_filter_params[:q],
|
46
46
|
filter: search_filter_params[:filter],
|
47
47
|
tagged_with: search_filter_params[:tagged_with]
|
48
48
|
),
|
49
|
-
title: Alchemy.t(:big_thumbnails),
|
50
49
|
class: "icon_button"
|
51
50
|
) %>
|
52
|
-
</
|
53
|
-
<label><%= Alchemy.t('Image size') %></label>
|
51
|
+
</sl-tooltip>
|
54
52
|
<%= hidden_field_tag('size', @size, id: 'overlay_thumbnails_size') %>
|
55
53
|
</div>
|
56
54
|
<div class="toolbar_spacer"></div>
|
57
|
-
<div class="
|
58
|
-
<%=
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
55
|
+
<div class="toolbar_button">
|
56
|
+
<sl-tooltip content="<%= Alchemy.t("Select all") %>">
|
57
|
+
<%= link_to(
|
58
|
+
render_icon('checkbox-multiple'),
|
59
|
+
nil,
|
60
|
+
id: 'select_all_pictures',
|
61
|
+
class: 'icon_button',
|
62
|
+
'data-alchemy-hotkey' => 'alt+a'
|
63
|
+
) %>
|
64
|
+
</sl-tooltip>
|
66
65
|
</div>
|
67
66
|
</div>
|
68
67
|
|
@@ -91,11 +90,16 @@
|
|
91
90
|
$(function() {
|
92
91
|
Alchemy.pictureSelector();
|
93
92
|
$('#select_all_pictures').on('click', function(e) {
|
94
|
-
$(
|
93
|
+
$(this).toggleClass("active")
|
94
|
+
$('.picture_tool.select :checkbox')
|
95
|
+
.prop('checked', function(_i, val) { return !val })
|
96
|
+
.closest(".picture_thumbnail")
|
97
|
+
.toggleClass("active");
|
95
98
|
e.preventDefault;
|
99
|
+
$(".selected_item_tools").toggleClass("hidden")
|
96
100
|
return false;
|
97
101
|
});
|
98
|
-
$('.thumbnail_background').click
|
102
|
+
$('.thumbnail_background').on("click", function(event) {
|
99
103
|
var url = $(this).attr('href');
|
100
104
|
var overlay = new Alchemy.ImageOverlay(url);
|
101
105
|
overlay.open();
|
@@ -14,7 +14,7 @@
|
|
14
14
|
),
|
15
15
|
class: "previous-picture",
|
16
16
|
remote: true do %>
|
17
|
-
<i class="icon
|
17
|
+
<i class="icon ri-arrow-left-s-line ri-fw"></i>
|
18
18
|
<% end %>
|
19
19
|
<% end %>
|
20
20
|
<% if @next %>
|
@@ -28,7 +28,7 @@
|
|
28
28
|
),
|
29
29
|
class: "next-picture",
|
30
30
|
remote: true do %>
|
31
|
-
<i class="icon
|
31
|
+
<i class="icon ri-arrow-right-s-line ri-fw"></i>
|
32
32
|
<% end %>
|
33
33
|
<% end %>
|
34
34
|
</div>
|
@@ -39,5 +39,5 @@
|
|
39
39
|
</div>
|
40
40
|
|
41
41
|
<div class="picture-overlay-handle">
|
42
|
-
<i class="icon
|
42
|
+
<i class="icon ri-contract-right-line ri-fw"></i>
|
43
43
|
</div>
|
@@ -3,10 +3,10 @@
|
|
3
3
|
<%= select_tag(
|
4
4
|
filter.name,
|
5
5
|
options_for_select(
|
6
|
-
filter.options_for_select,
|
6
|
+
filter.options_for_select, params[:filter].try(:[], filter.name)
|
7
7
|
),
|
8
8
|
include_blank: Alchemy.t(:all, scope: ['resources', resource_name, 'filters']),
|
9
9
|
data: { remote: !!request.xhr? },
|
10
|
-
|
10
|
+
is: 'alchemy-select'
|
11
11
|
) %>
|
12
12
|
</label>
|
@@ -5,14 +5,14 @@
|
|
5
5
|
collection: relation[:collection],
|
6
6
|
label_method: relation[:attr_method],
|
7
7
|
include_blank: Alchemy.t(:blank, scope: 'resources.relation_select'),
|
8
|
-
input_html: {
|
8
|
+
input_html: {is: 'alchemy-select'} %>
|
9
9
|
<% elsif attribute[:type].in? %i[date time datetime] %>
|
10
10
|
<%= f.datepicker attribute[:name], resource_attribute_field_options(attribute) %>
|
11
11
|
<% elsif attribute[:enum].present? %>
|
12
12
|
<%= f.input attribute[:name],
|
13
13
|
collection: attribute[:enum],
|
14
14
|
include_blank: Alchemy.t(:blank, scope: 'resources.relation_select'),
|
15
|
-
input_html: {
|
15
|
+
input_html: {is: 'alchemy-select'} %>
|
16
16
|
<% else %>
|
17
17
|
<%= f.input attribute[:name], resource_attribute_field_options(attribute) %>
|
18
18
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= form_tag url_for, method: :get, class: 'per-page-select-form' do |f| %>
|
2
2
|
<% search_filter_params.reject { |k, _| k == 'page' || k == 'per_page' }.each do |key, value| %>
|
3
|
-
<% if value.is_a?
|
3
|
+
<% if value.is_a? Hash %>
|
4
4
|
<% value.each do |k, v| %>
|
5
5
|
<%= hidden_field_tag "#{key}[#{k}]", v, id: nil %>
|
6
6
|
<% end %>
|
@@ -1,4 +1,7 @@
|
|
1
1
|
<tr class="<%= cycle('even', 'odd') %>">
|
2
|
+
<% if local_assigns[:icon] %>
|
3
|
+
<td class="icon"><%= render_icon(local_assigns[:icon], size: "xl") %></td>
|
4
|
+
<% end %>
|
2
5
|
<% resource_handler.sorted_attributes.each do |attribute| %>
|
3
6
|
<td class="<%= attribute[:type] %> <%= attribute[:name] %>">
|
4
7
|
<% if attribute[:type] == :boolean %>
|
@@ -10,16 +13,20 @@
|
|
10
13
|
<% end %>
|
11
14
|
<td class="tools">
|
12
15
|
<% if can?(:destroy, resource) %>
|
13
|
-
<%=
|
16
|
+
<sl-tooltip content="<%= Alchemy.t("Delete") %>">
|
17
|
+
<%= delete_button resource_path(resource, search_filter_params) %>
|
18
|
+
</sl-tooltip>
|
14
19
|
<% end %>
|
15
20
|
<% if can?(:edit, resource) %>
|
16
|
-
<%=
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
<sl-tooltip content="<%= Alchemy.t("Edit") %>">
|
22
|
+
<%= link_to_dialog render_icon(:edit),
|
23
|
+
edit_resource_path(resource, search_filter_params),
|
24
|
+
{
|
25
|
+
title: Alchemy.t('Edit'),
|
26
|
+
size: resource_window_size
|
27
|
+
},
|
28
|
+
class: "icon_button" %>
|
29
|
+
<% end %>
|
30
|
+
</sl-tooltip>
|
24
31
|
</td>
|
25
32
|
</tr>
|
@@ -2,6 +2,9 @@
|
|
2
2
|
<table class="list" id="<%= resource_handler.resources_name %>_list">
|
3
3
|
<thead>
|
4
4
|
<tr>
|
5
|
+
<% if local_assigns[:icon] %>
|
6
|
+
<th class="icon"></th>
|
7
|
+
<% end %>
|
5
8
|
<% resource_handler.sorted_attributes.each do |attribute| %>
|
6
9
|
<th class="<%= attribute[:type] %> <%= attribute[:name] %>">
|
7
10
|
<%= sort_link [:resource_url_proxy, @query],
|
@@ -14,7 +17,7 @@
|
|
14
17
|
</tr>
|
15
18
|
</thead>
|
16
19
|
<tbody>
|
17
|
-
<%= render_resources %>
|
20
|
+
<%= render_resources(icon: local_assigns[:icon]) %>
|
18
21
|
</tbody>
|
19
22
|
</table>
|
20
23
|
<% elsif search_filter_params[:q].present? %>
|
@@ -1,26 +1,29 @@
|
|
1
1
|
<% label_title = Alchemy.t("Create #{resource_name}", default: Alchemy.t('Create')) %>
|
2
2
|
|
3
3
|
<% content_for(:toolbar) do %>
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
hotkey: 'alt+n',
|
10
|
-
dialog_options: {
|
4
|
+
<div class="toolbar_buttons">
|
5
|
+
<%= toolbar_button(
|
6
|
+
icon: "add",
|
7
|
+
label: label_title,
|
8
|
+
url: new_resource_path,
|
11
9
|
title: label_title,
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
10
|
+
hotkey: 'alt+n',
|
11
|
+
tooltip_placement: "top-start",
|
12
|
+
dialog_options: {
|
13
|
+
title: label_title,
|
14
|
+
size: resource_window_size
|
15
|
+
},
|
16
|
+
if_permitted_to: [:create, resource_model]
|
17
|
+
) %>
|
18
|
+
<%= toolbar_button(
|
19
|
+
icon: :download,
|
20
|
+
url: resource_url_proxy.url_for(action: 'index', format: 'csv', q: search_filter_params[:q], sort: params[:sort]),
|
21
|
+
label: Alchemy.t(:download_csv),
|
22
|
+
title: Alchemy.t(:download_csv),
|
23
|
+
dialog: false,
|
24
|
+
if_permitted_to: [:index, resource_model]
|
25
|
+
) %>
|
26
|
+
</div>
|
24
27
|
<%= render 'alchemy/admin/partials/search_form' %>
|
25
28
|
<% end %>
|
26
29
|
|
@@ -8,6 +8,7 @@
|
|
8
8
|
url: new_resource_path,
|
9
9
|
title: label_title,
|
10
10
|
hotkey: 'alt+n',
|
11
|
+
tooltip_placement: "top-start",
|
11
12
|
dialog_options: {
|
12
13
|
title: label_title,
|
13
14
|
size: "430x415"
|
@@ -21,7 +22,7 @@
|
|
21
22
|
<div id="archive_all" class="resources-table-wrapper">
|
22
23
|
<% if @sites.any? %>
|
23
24
|
<%= render 'alchemy/admin/resources/table_header' %>
|
24
|
-
<%= render 'table' %>
|
25
|
+
<%= render 'table', icon: "global" %>
|
25
26
|
<% elsif search_filter_params[:q].present? %>
|
26
27
|
<%= render_message { Alchemy.t('Nothing found') } %>
|
27
28
|
<% else %>
|