alchemy_cms 7.4.5 → 8.0.0.a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of alchemy_cms might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +92 -0
- data/Gemfile +13 -6
- data/README.md +13 -5
- data/alchemy_cms.gemspec +14 -5
- data/app/assets/builds/alchemy/admin/page-select.css +1 -1
- data/app/assets/builds/alchemy/admin/print.css +1 -1
- data/app/assets/builds/alchemy/admin.css +2 -2
- data/app/assets/builds/alchemy/custom-properties.css +1 -1
- data/app/assets/builds/alchemy/welcome.css +1 -1
- data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -1
- data/app/assets/builds/tinymce/skins/ui/alchemy/content.min.css +1 -0
- data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -1
- data/app/assets/config/alchemy_manifest.js +0 -2
- data/app/assets/images/alchemy/icons-sprite.svg +1 -0
- data/app/components/alchemy/admin/resource/applied_filter.rb +29 -0
- data/app/components/alchemy/admin/resource/checkbox_filter.rb +36 -0
- data/app/components/alchemy/admin/resource/datepicker_filter.rb +42 -0
- data/app/components/alchemy/admin/resource/select_filter.rb +43 -0
- data/app/components/alchemy/admin/toolbar_button.rb +5 -2
- data/app/components/alchemy/ingredients/number_view.rb +18 -0
- data/app/controllers/alchemy/admin/attachments_controller.rb +8 -15
- data/app/controllers/alchemy/admin/clipboard_controller.rb +2 -6
- data/app/controllers/alchemy/admin/elements_controller.rb +1 -1
- data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +15 -15
- data/app/controllers/alchemy/admin/picture_descriptions_controller.rb +5 -1
- data/app/controllers/alchemy/admin/pictures_controller.rb +10 -5
- data/app/controllers/alchemy/admin/resources_controller.rb +16 -106
- data/app/controllers/alchemy/attachments_controller.rb +43 -14
- data/app/controllers/alchemy/messages_controller.rb +1 -1
- data/app/controllers/alchemy/pages_controller.rb +7 -2
- data/app/controllers/concerns/alchemy/admin/picture_descriptions_form_helper.rb +16 -0
- data/app/controllers/concerns/alchemy/admin/resource_filter.rb +92 -0
- data/app/decorators/alchemy/element_editor.rb +5 -48
- data/app/decorators/alchemy/ingredient_editor.rb +3 -53
- data/app/helpers/alchemy/admin/base_helper.rb +14 -84
- data/app/helpers/alchemy/admin/elements_helper.rb +4 -4
- data/app/helpers/alchemy/admin/pages_helper.rb +1 -1
- data/app/helpers/alchemy/base_helper.rb +0 -30
- data/app/helpers/alchemy/elements_block_helper.rb +0 -14
- data/app/helpers/alchemy/pages_helper.rb +1 -1
- data/{lib → app/helpers}/alchemy/resources_helper.rb +5 -45
- data/app/javascript/alchemy_admin/components/action.js +4 -0
- data/app/javascript/alchemy_admin/components/alchemy_html_element.js +3 -3
- data/app/javascript/alchemy_admin/components/datepicker.js +10 -2
- data/app/javascript/alchemy_admin/components/element_editor/delete_element_button.js +7 -7
- data/app/javascript/alchemy_admin/components/element_editor.js +1 -1
- data/app/javascript/alchemy_admin/components/growl.js +1 -0
- data/app/javascript/alchemy_admin/components/index.js +1 -0
- data/app/javascript/alchemy_admin/components/remote_select.js +4 -1
- data/app/javascript/alchemy_admin/components/tags_autocomplete.js +5 -1
- data/app/javascript/alchemy_admin/components/tinymce.js +4 -2
- data/app/javascript/alchemy_admin/components/update_check.js +42 -0
- data/app/javascript/alchemy_admin/components/uploader/file_upload.js +15 -8
- data/app/javascript/alchemy_admin/components/uploader/progress.js +12 -6
- data/app/javascript/alchemy_admin/components/uploader.js +4 -2
- data/app/javascript/alchemy_admin/confirm_dialog.js +27 -57
- data/app/javascript/alchemy_admin/dirty.js +3 -2
- data/app/javascript/alchemy_admin/i18n.js +15 -16
- data/app/javascript/alchemy_admin/initializer.js +1 -49
- data/app/javascript/alchemy_admin/utils/ajax.js +51 -44
- data/app/javascript/alchemy_admin.js +3 -8
- data/app/models/alchemy/admin/filters/base.rb +38 -0
- data/app/models/alchemy/admin/filters/checkbox.rb +24 -0
- data/app/models/alchemy/admin/filters/datepicker.rb +53 -0
- data/app/models/alchemy/admin/filters/select.rb +70 -0
- data/app/models/alchemy/admin/resource_name.rb +27 -0
- data/app/models/alchemy/attachment.rb +51 -34
- data/app/models/alchemy/base_record.rb +2 -0
- data/app/models/alchemy/element/definitions.rb +1 -1
- data/app/models/alchemy/element/element_ingredients.rb +6 -6
- data/app/models/alchemy/element/presenters.rb +3 -12
- data/app/models/alchemy/element.rb +9 -27
- data/app/models/alchemy/element_definition.rb +160 -0
- data/app/models/alchemy/ingredient.rb +10 -43
- data/app/models/alchemy/ingredient_definition.rb +134 -0
- data/app/models/alchemy/ingredient_validator.rb +7 -3
- data/app/models/alchemy/ingredients/number.rb +19 -0
- data/app/models/alchemy/language.rb +0 -14
- data/app/models/alchemy/message.rb +3 -7
- data/app/models/alchemy/node.rb +1 -1
- data/app/models/alchemy/page/{page_layouts.rb → definitions.rb} +12 -19
- data/app/models/alchemy/page/fixed_attributes.rb +1 -1
- data/app/models/alchemy/page/page_elements.rb +13 -14
- data/app/models/alchemy/page/page_natures.rb +7 -7
- data/app/models/alchemy/page/page_scopes.rb +1 -1
- data/app/models/alchemy/page.rb +11 -33
- data/app/models/alchemy/page_definition.rb +115 -0
- data/app/models/alchemy/picture.rb +69 -79
- data/app/models/alchemy/picture_variant.rb +115 -5
- data/{lib → app/models}/alchemy/resource.rb +4 -18
- data/{lib → app/models}/alchemy/searchable_resource.rb +15 -0
- data/app/models/alchemy/site/layout.rb +5 -5
- data/app/models/alchemy/site.rb +0 -15
- data/app/models/alchemy/storage_adapter/active_storage/attachment_url.rb +41 -0
- data/app/models/alchemy/storage_adapter/active_storage/picture_url.rb +55 -0
- data/app/models/alchemy/storage_adapter/active_storage/preprocessor.rb +40 -0
- data/app/models/alchemy/storage_adapter/active_storage.rb +173 -0
- data/app/models/alchemy/{attachment/url.rb → storage_adapter/dragonfly/attachment_url.rb} +12 -12
- data/app/models/alchemy/{picture/url.rb → storage_adapter/dragonfly/picture_url.rb} +28 -12
- data/app/models/alchemy/{picture → storage_adapter/dragonfly}/preprocessor.rb +4 -4
- data/app/models/alchemy/storage_adapter/dragonfly.rb +183 -0
- data/app/models/alchemy/storage_adapter.rb +74 -0
- data/app/models/concerns/alchemy/picture_thumbnails.rb +19 -6
- data/app/serializers/alchemy/element_serializer.rb +0 -1
- data/app/services/alchemy/dragonfly_to_image_processing.rb +100 -0
- data/app/stylesheets/alchemy/_defaults.scss +3 -0
- data/app/stylesheets/alchemy/_extends.scss +69 -0
- data/app/{assets/stylesheets → stylesheets}/alchemy/_mixins.scss +36 -49
- data/app/stylesheets/alchemy/_variables.scss +5 -0
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/archive.scss +20 -37
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/base.scss +16 -14
- data/app/stylesheets/alchemy/admin/buttons.scss +160 -0
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/clipboard.scss +2 -2
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/dashboard.scss +13 -16
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/dialogs.scss +23 -16
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/elements.scss +150 -105
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/errors.scss +5 -5
- data/app/stylesheets/alchemy/admin/filters.scss +58 -0
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/flatpickr.scss +53 -60
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/form_fields.scss +21 -7
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/forms.scss +31 -19
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/frame.scss +20 -16
- data/app/stylesheets/alchemy/admin/hints.scss +5 -0
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/icons.scss +10 -1
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/image_library.scss +10 -8
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/images.scss +1 -1
- data/app/stylesheets/alchemy/admin/labels.scss +5 -0
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/lists.scss +3 -3
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/navigation.scss +61 -55
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/nodes.scss +21 -18
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/notices.scss +18 -18
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/page-select.scss +2 -2
- data/app/stylesheets/alchemy/admin/pagination.scss +144 -0
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/preview_window.scss +8 -6
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/print.scss +1 -1
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/resource_info.scss +8 -5
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/search.scss +9 -6
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/selects.scss +49 -37
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/shoelace.scss +5 -6
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/sitemap.scss +38 -33
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/tables.scss +6 -4
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/tags.scss +6 -4
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/toolbar.scss +12 -6
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/typography.scss +2 -2
- data/app/{assets/stylesheets → stylesheets}/alchemy/admin/upload.scss +7 -5
- data/app/stylesheets/alchemy/admin.scss +44 -0
- data/app/stylesheets/alchemy/custom-properties.css +244 -0
- data/app/stylesheets/alchemy/welcome.scss +75 -0
- data/app/{assets/stylesheets → stylesheets}/tinymce/skins/content/alchemy/content.scss +8 -9
- data/app/stylesheets/tinymce/skins/ui/alchemy/content.scss +1 -0
- data/app/{assets/stylesheets → stylesheets}/tinymce/skins/ui/alchemy/skin.scss +133 -136
- data/app/views/alchemy/admin/attachments/_files_list.html.erb +2 -2
- data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +1 -1
- data/app/views/alchemy/admin/{elements/_clipboard_button.html.erb → clipboard/_button.html.erb} +3 -5
- data/app/views/alchemy/admin/clipboard/_update_nested_element_button.turbo_stream.erb +11 -0
- data/app/views/alchemy/admin/clipboard/clear.turbo_stream.erb +4 -0
- data/app/views/alchemy/admin/clipboard/index.html.erb +15 -13
- data/app/views/alchemy/admin/clipboard/insert.turbo_stream.erb +18 -0
- data/app/views/alchemy/admin/clipboard/remove.turbo_stream.erb +9 -0
- data/app/views/alchemy/admin/dashboard/info.html.erb +17 -31
- data/app/views/alchemy/admin/elements/_element.html.erb +4 -8
- data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_header.html.erb +1 -0
- data/app/views/alchemy/admin/elements/_toolbar.html.erb +4 -6
- data/app/views/alchemy/admin/elements/create.turbo_stream.erb +2 -1
- data/app/views/alchemy/admin/elements/index.html.erb +2 -2
- data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +3 -16
- data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +0 -9
- data/app/views/alchemy/admin/languages/_form.html.erb +1 -1
- data/app/views/alchemy/admin/languages/_table.html.erb +1 -1
- data/app/views/alchemy/admin/languages/index.html.erb +5 -2
- data/app/views/alchemy/admin/layoutpages/index.html.erb +1 -12
- data/app/views/alchemy/admin/pages/_form.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_page.html.erb +2 -3
- data/app/views/alchemy/admin/pages/_toolbar.html.erb +1 -15
- data/app/views/alchemy/admin/pages/index.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +9 -12
- data/app/views/alchemy/admin/partials/_search_form.html.erb +4 -9
- data/app/views/alchemy/admin/picture_descriptions/_form.html.erb +5 -7
- data/app/views/alchemy/admin/picture_descriptions/edit.html.erb +2 -2
- data/app/views/alchemy/admin/pictures/_archive.html.erb +4 -7
- data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +2 -1
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_form.html.erb +2 -2
- data/app/views/alchemy/admin/pictures/_picture_description_field.html.erb +21 -13
- data/app/views/alchemy/admin/pictures/index.html.erb +2 -7
- data/app/views/alchemy/admin/resources/_applied_filters.html.erb +8 -0
- data/app/views/alchemy/admin/resources/_filter_bar.html.erb +11 -21
- data/app/views/alchemy/admin/resources/_pagination.html.erb +6 -0
- data/app/views/alchemy/admin/resources/_per_page_select.html.erb +4 -2
- data/app/views/alchemy/admin/resources/_resource_table.html.erb +1 -1
- data/app/views/alchemy/admin/resources/_table_header.html.erb +1 -15
- data/app/views/alchemy/admin/sites/index.html.erb +5 -1
- data/app/views/alchemy/admin/styleguide/index.html.erb +8 -0
- data/app/views/alchemy/admin/tags/index.html.erb +1 -1
- data/app/views/alchemy/admin/tinymce/_setup.html.erb +7 -7
- data/app/{javascript/alchemy_admin/locales/en.js → views/alchemy/admin/translations/_en.js} +5 -2
- data/app/views/alchemy/admin/uploader/_button.html.erb +1 -1
- data/app/views/alchemy/admin/uploader/_setup.html.erb +4 -4
- data/app/views/alchemy/base/500.turbo_stream.erb +3 -0
- data/app/views/alchemy/base/redirect.js.erb +1 -1
- data/app/views/alchemy/ingredients/_number_editor.html.erb +24 -0
- data/app/views/alchemy/no_index.html.erb +31 -0
- data/app/views/alchemy/welcome.html.erb +12 -10
- data/app/views/kaminari/alchemy/_first_page.html.erb +5 -3
- data/app/views/kaminari/alchemy/_last_page.html.erb +5 -3
- data/app/views/kaminari/alchemy/_next_page.html.erb +5 -3
- data/app/views/kaminari/alchemy/_paginator.html.erb +18 -13
- data/app/views/kaminari/alchemy/_prev_page.html.erb +5 -3
- data/app/views/layouts/alchemy/admin.html.erb +5 -9
- data/bun.lockb +0 -0
- data/bundles/remixicon.mjs +153 -0
- data/config/alchemy/config.yml +3 -2
- data/config/initializers/dragonfly.rb +0 -1
- data/config/initializers/mime_types.rb +1 -0
- data/config/locales/alchemy.en.yml +32 -14
- data/config/routes.rb +0 -2
- data/db/migrate/20250626160259_add_unique_index_to_picture_descriptions.rb +7 -0
- data/eslint.config.js +2 -1
- data/lib/alchemy/admin/preview_url.rb +4 -5
- data/lib/alchemy/cache_digests/template_tracker.rb +6 -9
- data/lib/alchemy/config_missing.rb +14 -0
- data/lib/alchemy/configuration/base_option.rb +24 -0
- data/lib/alchemy/configuration/boolean_option.rb +16 -0
- data/lib/alchemy/configuration/class_option.rb +15 -0
- data/lib/alchemy/configuration/class_set_option.rb +46 -0
- data/lib/alchemy/configuration/integer_list_option.rb +13 -0
- data/lib/alchemy/configuration/integer_option.rb +12 -0
- data/lib/alchemy/configuration/list_option.rb +22 -0
- data/lib/alchemy/configuration/regexp_option.rb +11 -0
- data/lib/alchemy/configuration/string_list_option.rb +13 -0
- data/lib/alchemy/configuration/string_option.rb +11 -0
- data/lib/alchemy/configuration.rb +115 -0
- data/lib/alchemy/configuration_methods.rb +3 -1
- data/lib/alchemy/configurations/default_language.rb +12 -0
- data/lib/alchemy/configurations/default_site.rb +10 -0
- data/lib/alchemy/configurations/format_matchers.rb +11 -0
- data/lib/alchemy/configurations/mailer.rb +16 -0
- data/lib/alchemy/configurations/main.rb +216 -0
- data/lib/alchemy/configurations/preview.rb +32 -0
- data/lib/alchemy/configurations/sitemap.rb +10 -0
- data/lib/alchemy/configurations/uploader.rb +34 -0
- data/lib/alchemy/engine.rb +65 -17
- data/lib/alchemy/hints.rb +3 -7
- data/lib/alchemy/on_page_layout.rb +2 -2
- data/lib/alchemy/propshaft/tinymce_asset.rb +15 -0
- data/lib/alchemy/seeder.rb +2 -2
- data/lib/alchemy/tasks/usage.rb +4 -4
- data/lib/alchemy/test_support/config_stubbing.rb +1 -7
- data/lib/alchemy/test_support/factories/attachment_factory.rb +13 -2
- data/lib/alchemy/test_support/factories/language_factory.rb +1 -1
- data/lib/alchemy/test_support/factories/page_factory.rb +2 -3
- data/lib/alchemy/test_support/factories/picture_factory.rb +30 -2
- data/lib/alchemy/test_support/factories/site_factory.rb +2 -2
- data/lib/alchemy/test_support/having_crop_action_examples.rb +2 -2
- data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +80 -26
- data/lib/alchemy/test_support/shared_ingredient_examples.rb +5 -5
- data/lib/alchemy/upgrader/.keep +0 -0
- data/lib/alchemy/upgrader/eight_zero.rb +14 -0
- data/lib/alchemy/upgrader.rb +33 -20
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy.rb +192 -170
- data/lib/alchemy_cms.rb +1 -7
- data/lib/generators/alchemy/ingredient/ingredient_generator.rb +0 -3
- data/lib/generators/alchemy/install/files/_article.html.erb +6 -4
- data/lib/generators/alchemy/install/files/alchemy.en.yml +22 -3
- data/lib/generators/alchemy/install/files/application.html.erb +5 -0
- data/lib/generators/alchemy/install/install_generator.rb +5 -14
- data/lib/generators/alchemy/install/templates/alchemy.rb.tt +196 -0
- data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +0 -1
- data/lib/generators/alchemy/install/templates/elements.yml.tt +3 -1
- data/lib/generators/alchemy/install/templates/menus.yml.tt +1 -1
- data/lib/generators/alchemy/install/templates/page_layouts.yml.tt +2 -2
- data/lib/generators/alchemy/page_layouts/page_layouts_generator.rb +2 -2
- data/lib/tasks/alchemy/assets.rake +14 -0
- data/lib/tasks/alchemy/upgrade.rake +12 -47
- data/vendor/javascript/tinymce.min.js +1 -1
- data/vitest.config.js +21 -0
- metadata +184 -180
- data/app/assets/builds/alchemy/admin/page-select.css.map +0 -1
- data/app/assets/builds/alchemy/admin/print.css.map +0 -1
- data/app/assets/builds/alchemy/admin.css.map +0 -1
- data/app/assets/builds/alchemy/custom-properties.css.map +0 -1
- data/app/assets/builds/alchemy/welcome.css.map +0 -1
- data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map +0 -1
- data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css.map +0 -1
- data/app/assets/javascripts/alchemy/admin.js +0 -10
- data/app/assets/stylesheets/alchemy/_defaults.scss +0 -3
- data/app/assets/stylesheets/alchemy/_deprecated_variables.scss +0 -45
- data/app/assets/stylesheets/alchemy/_deprecation.scss +0 -17
- data/app/assets/stylesheets/alchemy/_extends.scss +0 -62
- data/app/assets/stylesheets/alchemy/_variables.scss +0 -201
- data/app/assets/stylesheets/alchemy/admin/buttons.scss +0 -124
- data/app/assets/stylesheets/alchemy/admin/hints.scss +0 -5
- data/app/assets/stylesheets/alchemy/admin/labels.scss +0 -3
- data/app/assets/stylesheets/alchemy/admin/pagination.scss +0 -92
- data/app/assets/stylesheets/alchemy/admin.scss +0 -42
- data/app/assets/stylesheets/alchemy/custom-properties.css +0 -98
- data/app/assets/stylesheets/alchemy/welcome.scss +0 -57
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.css +0 -711
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.css +0 -705
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.min.css +0 -7
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.min.css +0 -7
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.css +0 -29
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.min.css +0 -7
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.css +0 -677
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.min.css +0 -7
- data/app/controllers/alchemy/elements_controller.rb +0 -32
- data/app/models/alchemy/element/dom_id.rb +0 -31
- data/app/models/alchemy/picture/calculations.rb +0 -49
- data/app/models/alchemy/picture/transformations.rb +0 -115
- data/app/views/alchemy/admin/attachments/destroy.js.erb +0 -1
- data/app/views/alchemy/admin/clipboard/clear.js.erb +0 -3
- data/app/views/alchemy/admin/clipboard/insert.js.erb +0 -29
- data/app/views/alchemy/admin/clipboard/remove.js.erb +0 -10
- data/app/views/alchemy/admin/resources/_filter.html.erb +0 -12
- data/app/views/alchemy/admin/resources/_resource.html.erb +0 -34
- data/app/views/alchemy/admin/resources/_table.html.erb +0 -29
- data/app/views/alchemy/elements/show.html.erb +0 -1
- data/app/views/alchemy/elements/show.js.erb +0 -1
- data/app/views/alchemy/ingredients/_audio_view.html.erb +0 -1
- data/app/views/alchemy/ingredients/_boolean_view.html.erb +0 -1
- data/app/views/alchemy/ingredients/_datetime_view.html.erb +0 -3
- data/app/views/alchemy/ingredients/_file_view.html.erb +0 -4
- data/app/views/alchemy/ingredients/_headline_view.html.erb +0 -4
- data/app/views/alchemy/ingredients/_html_view.html.erb +0 -1
- data/app/views/alchemy/ingredients/_link_view.html.erb +0 -4
- data/app/views/alchemy/ingredients/_node_view.html.erb +0 -1
- data/app/views/alchemy/ingredients/_page_view.html.erb +0 -1
- data/app/views/alchemy/ingredients/_picture_view.html.erb +0 -4
- data/app/views/alchemy/ingredients/_richtext_view.html.erb +0 -3
- data/app/views/alchemy/ingredients/_select_view.html.erb +0 -1
- data/app/views/alchemy/ingredients/_text_view.html.erb +0 -4
- data/app/views/alchemy/ingredients/_video_view.html.erb +0 -3
- data/babel.config.js +0 -12
- data/config/initializers/assets.rb +0 -4
- data/lib/alchemy/config.rb +0 -114
- data/lib/alchemy/element_definition.rb +0 -73
- data/lib/alchemy/page_layout.rb +0 -73
- data/lib/alchemy/resource_filter.rb +0 -40
- data/lib/alchemy/upgrader/seven_point_four.rb +0 -26
- data/lib/alchemy/upgrader/seven_point_three.rb +0 -52
- data/lib/generators/alchemy/ingredient/templates/view.html.erb +0 -1
- data/lib/generators/alchemy/install/files/alchemy_admin.js +0 -1
- data/lib/generators/alchemy/install/files/all.js +0 -11
- data/lib/generators/alchemy/install/files/article.css +0 -25
- data/vendor/assets/images/remixicon.symbol.svg +0 -11
- /data/app/{assets/stylesheets → stylesheets}/alchemy/_fonts.scss +0 -0
- /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/attachment-select.scss +0 -0
- /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/attachments.scss +0 -0
- /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/flash.scss +0 -0
- /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/list_filter.scss +0 -0
- /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/node-select.scss +0 -0
- /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/spinner.scss +0 -0
- /data/app/{assets/stylesheets → stylesheets}/tinymce/skins/skintool.json +0 -0
- /data/app/{assets/stylesheets → stylesheets}/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff +0 -0
@@ -0,0 +1,196 @@
|
|
1
|
+
Alchemy.configure do |config|
|
2
|
+
# == This is the global Alchemy configuration file
|
3
|
+
#
|
4
|
+
|
5
|
+
# === Auto Log Out Time
|
6
|
+
#
|
7
|
+
# The amount of time of inactivity in minutes after which the user is kicked out of his current session.
|
8
|
+
#
|
9
|
+
# NOTE: This is only active in production environments
|
10
|
+
#
|
11
|
+
# config.auto_logout_time = <%= @default_config.auto_logout_time.inspect %>
|
12
|
+
|
13
|
+
# === Page caching
|
14
|
+
#
|
15
|
+
# Enable/Disable page caching globally.
|
16
|
+
#
|
17
|
+
# NOTE: You can enable/disable page caching for single Alchemy::Definitions in the page_layout.yml file.
|
18
|
+
#
|
19
|
+
# config.cache_pages = <%= @default_config.cache_pages.inspect %>
|
20
|
+
|
21
|
+
# === Sitemap
|
22
|
+
#
|
23
|
+
# Alchemy creates a XML, Google compatible, sitemap for you.
|
24
|
+
#
|
25
|
+
# The url is: http://your-domain.tld/sitemap.xml
|
26
|
+
#
|
27
|
+
# ==== Config Options:
|
28
|
+
#
|
29
|
+
# show_root [Boolean] # Show language root page in sitemap?
|
30
|
+
# show_flag [Boolean] # Enables the Checkbox in Page#update overlay. So your customer can set the visibility of pages in the sitemap.
|
31
|
+
#
|
32
|
+
# config.sitemap.tap do |sitemap|
|
33
|
+
# sitemap.show_root = <%= @default_config.sitemap.show_root.inspect %>
|
34
|
+
# sitemap.show_flag = <%= @default_config.sitemap.show_flag.inspect %>
|
35
|
+
# end
|
36
|
+
|
37
|
+
# === Default items per page in admin views
|
38
|
+
#
|
39
|
+
# In Alchemy's Admin, change how many items you would get shown per page by Kaminari
|
40
|
+
# config.items_per_page = <%= @default_config.items_per_page %>
|
41
|
+
|
42
|
+
# === Preview window URL configuration
|
43
|
+
#
|
44
|
+
# By default Alchemy uses its internal page preview renderer,
|
45
|
+
# but you can configure it to be any URL instead.
|
46
|
+
#
|
47
|
+
# Basic Auth is supported.
|
48
|
+
#
|
49
|
+
# config.preview = {
|
50
|
+
# host: https://www.my-static-site.com
|
51
|
+
# auth:
|
52
|
+
# username: <%%= ENV["BASIC_AUTH_USERNAME"] %%>
|
53
|
+
# password: <%%= ENV["BASIC_AUTH_PASSWORD"] %%>
|
54
|
+
# }
|
55
|
+
# Preview config per site is supported as well.
|
56
|
+
#
|
57
|
+
# config.preview = {
|
58
|
+
# My site name:
|
59
|
+
# host: https://www.my-static-site.com
|
60
|
+
# auth:
|
61
|
+
# username: <%%= ENV["BASIC_AUTH_USERNAME"] %%>
|
62
|
+
# password: <%%= ENV["BASIC_AUTH_PASSWORD"] %%>
|
63
|
+
# }
|
64
|
+
|
65
|
+
# === Picture rendering settings
|
66
|
+
#
|
67
|
+
# Alchemy uses Dragonfly to render images. Settings for image rendering are specific to elements and are defined in elements.yml
|
68
|
+
#
|
69
|
+
# Example:
|
70
|
+
# - name: some_element
|
71
|
+
# ingredients:
|
72
|
+
# - role: some_picture
|
73
|
+
# type: Picture
|
74
|
+
# settings:
|
75
|
+
# hint: true
|
76
|
+
# crop: true # turns on image cropping
|
77
|
+
# size: '500x500' # image will be cropped to this size
|
78
|
+
#
|
79
|
+
# See http://markevans.github.com/dragonfly for further info.
|
80
|
+
#
|
81
|
+
# ==== Global Options:
|
82
|
+
#
|
83
|
+
# output_image_quality [Integer] # If image gets rendered as JPG or WebP this is the quality setting for it. (Default 85)
|
84
|
+
# preprocess_image_resize [String] # Use this option to resize images to the given size when they are uploaded to the image library. Downsizing example: '1000x1000>' (Default nil)
|
85
|
+
# image_output_format [String] # The global image output format setting. (Default +original+)
|
86
|
+
#
|
87
|
+
# NOTE: You can always override the output format in the settings of your ingredients in elements.yml, I.E. {format: 'gif'}
|
88
|
+
#
|
89
|
+
# config.output_image_quality = <%= @default_config.output_image_quality %>
|
90
|
+
# config.preprocess_image_resize = <%= @default_config.preprocess_image_resize.inspect %>
|
91
|
+
# config.image_output_format = <%= @default_config.image_output_format.inspect %>
|
92
|
+
|
93
|
+
# This is used by the seeder to create the default site.
|
94
|
+
# config.default_site.tap do |default_site|
|
95
|
+
# default_site.name = <%= @default_config.default_site.name.inspect %>
|
96
|
+
# default_site.host = <%= @default_config.default_site.host.inspect %>
|
97
|
+
# end
|
98
|
+
|
99
|
+
# This is the default language when seeding.
|
100
|
+
# config.default_language.tap do |default_language|
|
101
|
+
# default_language.code = <%= @default_config.default_language.code.inspect %>
|
102
|
+
# default_language.name = <%= @default_config.default_language.name.inspect %>
|
103
|
+
# default_language.page_layout = <%= @default_config.default_language.page_layout.inspect %>
|
104
|
+
# default_language.frontpage_name = <%= @default_config.default_language.frontpage_name.inspect %>
|
105
|
+
# end
|
106
|
+
|
107
|
+
# === Mailer Settings:
|
108
|
+
#
|
109
|
+
# To send emails via contact forms, you can create your form fields here and set which fields are to be validated.
|
110
|
+
#
|
111
|
+
# === Validating fields:
|
112
|
+
#
|
113
|
+
# Pass the field name as a symbol and a message_id (will be translated) to :validate_fields:
|
114
|
+
#
|
115
|
+
# ==== Options:
|
116
|
+
#
|
117
|
+
# page_layout_name: [String] # A +Alchemy::PageDefinition+ name. Used to render the contactform on a page with this layout.
|
118
|
+
# fields: [Array] # An Array of fieldnames.
|
119
|
+
# validate_fields: [Array] # An Array of fieldnames to be validated on presence.
|
120
|
+
#
|
121
|
+
# ==== Translating validation messages:
|
122
|
+
#
|
123
|
+
# The validation messages are passed through ::I18n.t so you can translate it in your language yml file.
|
124
|
+
#
|
125
|
+
# ==== Example:
|
126
|
+
#
|
127
|
+
# de:
|
128
|
+
# activemodel:
|
129
|
+
# attributes:
|
130
|
+
# alchemy/message:
|
131
|
+
# firstname: Vorname
|
132
|
+
#
|
133
|
+
# config.mailer.tap do |mailer|
|
134
|
+
# mailer.page_layout_name = <%= @default_config.mailer.page_layout_name.inspect %>
|
135
|
+
# mailer.forward_to_page = <%= @default_config.mailer.forward_to_page.inspect %>
|
136
|
+
# mailer.mail_success_page = <%= @default_config.mailer.mail_success_page.inspect %>
|
137
|
+
# mailer.mail_from = <%= @default_config.mailer.mail_from.inspect %>
|
138
|
+
# mailer.mail_to = <%= @default_config.mailer.mail_to.inspect %>
|
139
|
+
# mailer.subject = <%= @default_config.mailer.subject.inspect %>
|
140
|
+
# mailer.fields = <%= @default_config.mailer.fields.inspect %>
|
141
|
+
# mailer.validate_fields = <%= @default_config.mailer.validate_fields.inspect %>
|
142
|
+
# end
|
143
|
+
|
144
|
+
# === User roles
|
145
|
+
#
|
146
|
+
# You can add own user roles.
|
147
|
+
#
|
148
|
+
# Further documentation for the auth system used please visit:
|
149
|
+
#
|
150
|
+
# https://github.com/ryanb/cancan/wiki
|
151
|
+
#
|
152
|
+
# ==== Translating User roles
|
153
|
+
#
|
154
|
+
# Userroles can be translated inside your the language yml file under:
|
155
|
+
#
|
156
|
+
# alchemy:
|
157
|
+
# user_roles:
|
158
|
+
# rolename: Name of the role
|
159
|
+
#
|
160
|
+
# config.user_roles = <%= @default_config.user_roles.inspect %>
|
161
|
+
|
162
|
+
# === Uploader Settings
|
163
|
+
#
|
164
|
+
# upload_limit [Integer] # Set an amount of files upload limit of files which can be uploaded at once. Set 0 for unlimited.
|
165
|
+
# file_size_limit* [Integer] # Set a file size limit in mega bytes for a per file limit.
|
166
|
+
#
|
167
|
+
# *) Allow filetypes to upload. Pass * to allow all kind of files.
|
168
|
+
#
|
169
|
+
# config.uploader.tap do |uploader|
|
170
|
+
# uploader.upload_limit = <%= @default_config.uploader.upload_limit.inspect %>
|
171
|
+
# uploader.file_size_limit = <%= @default_config.uploader.file_size_limit.inspect %>
|
172
|
+
# uploader.allowed_filetypes.tap do |file_types|
|
173
|
+
# file_types.alchemy_attachments = <%= @default_config.uploader.allowed_filetypes.alchemy_attachments.inspect %>
|
174
|
+
# file_types.alchemy_pictures = <%= @default_config.uploader.allowed_filetypes.alchemy_pictures.inspect %>
|
175
|
+
# end
|
176
|
+
# end
|
177
|
+
|
178
|
+
# === Link Target Options
|
179
|
+
#
|
180
|
+
# Values for the link target selectbox inside the page link overlay.
|
181
|
+
# The value gets attached as a data-link-target attribute to the link.
|
182
|
+
#
|
183
|
+
# == Example:
|
184
|
+
#
|
185
|
+
# Open all links set to overlay inside an jQuery UI Dialog Window.
|
186
|
+
#
|
187
|
+
# jQuery(a[data-link-target="overlay"]).dialog();
|
188
|
+
#
|
189
|
+
# config.link_target_options = <%= @default_config.link_target_options.inspect %>
|
190
|
+
|
191
|
+
# The layout used for rendering the +alchemy/admin/pages#show+ action.
|
192
|
+
# config.admin_page_preview_layout = <%= @default_config.admin_page_preview_layout.inspect %>
|
193
|
+
|
194
|
+
# The sizes for the preview size select in the page editor.
|
195
|
+
# config.page_preview_sizes = <%= @default_config.page_preview_sizes.inspect %>
|
196
|
+
end
|
@@ -8,12 +8,14 @@
|
|
8
8
|
unique: true
|
9
9
|
ingredients:
|
10
10
|
- role: headline
|
11
|
-
type:
|
11
|
+
type: Headline
|
12
12
|
default: :article_headline
|
13
13
|
hint: true
|
14
14
|
- role: picture
|
15
15
|
type: Picture
|
16
16
|
hint: true
|
17
|
+
settings:
|
18
|
+
size: 1200x600
|
17
19
|
- role: text
|
18
20
|
type: Richtext
|
19
21
|
default: :article_text
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# == In this configuration, you set up Alchemy's menu names.
|
2
2
|
#
|
3
|
-
# For further information please see
|
3
|
+
# For further information please see https://guides.alchemy-cms.com/
|
4
4
|
|
5
5
|
<%- unless @options[:skip_demo_files] -%>
|
6
6
|
- main_menu
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# == This file defines the page layouts for new pages.
|
2
2
|
#
|
3
|
-
# For further information please see
|
3
|
+
# For further information please see https://guides.alchemy-cms.com/pages.html
|
4
4
|
|
5
5
|
<%- unless @options[:skip_demo_files] -%>
|
6
|
-
- name: <%= Alchemy
|
6
|
+
- name: <%= Alchemy.config.default_language.page_layout %>
|
7
7
|
unique: true
|
8
8
|
elements: [article]
|
9
9
|
autogenerate: [article]
|
@@ -13,8 +13,8 @@ module Alchemy
|
|
13
13
|
return unless @page_layouts
|
14
14
|
|
15
15
|
@page_layouts.each do |page_layout|
|
16
|
-
|
17
|
-
conditional_template "layout.html.#{template_engine}", "#{page_layouts_dir}/_#{
|
16
|
+
layout_name = page_layout.name.underscore
|
17
|
+
conditional_template "layout.html.#{template_engine}", "#{page_layouts_dir}/_#{layout_name}.html.#{template_engine}"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
if Rake::Task.task_defined?("assets:precompile") && defined?(Propshaft)
|
2
|
+
Rake::Task["assets:precompile"].enhance do
|
3
|
+
manifest_path = Rails.application.config.assets.manifest_path
|
4
|
+
assets_path = Rails.root.join("public#{Rails.application.config.assets.prefix}")
|
5
|
+
manifest = JSON.parse(manifest_path.read)
|
6
|
+
manifest.select { |k| k.include?("tinymce/") }.each do |k, v|
|
7
|
+
Propshaft.logger.info "Copying #{v} to #{k}"
|
8
|
+
FileUtils.cp(
|
9
|
+
assets_path.join(v),
|
10
|
+
assets_path.join(k)
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -3,14 +3,16 @@
|
|
3
3
|
require "alchemy/upgrader"
|
4
4
|
require "alchemy/version"
|
5
5
|
|
6
|
+
Upgrader = Alchemy::Upgrader.new("8.0")
|
7
|
+
|
6
8
|
namespace :alchemy do
|
7
9
|
desc "Upgrades your app to AlchemyCMS v#{Alchemy::VERSION}."
|
8
10
|
task upgrade: [
|
9
11
|
"alchemy:upgrade:prepare",
|
10
|
-
"alchemy:upgrade:
|
11
|
-
"alchemy:upgrade:7.4:run"
|
12
|
+
"alchemy:upgrade:8.0:run"
|
12
13
|
] do
|
13
|
-
|
14
|
+
Upgrader.run_migrations
|
15
|
+
Upgrader.display_todos
|
14
16
|
end
|
15
17
|
|
16
18
|
namespace :upgrade do
|
@@ -22,58 +24,21 @@ namespace :alchemy do
|
|
22
24
|
|
23
25
|
desc "Alchemy Upgrader: Prepares the database."
|
24
26
|
task database: [
|
25
|
-
"alchemy:install:migrations"
|
26
|
-
"db:migrate"
|
27
|
+
"alchemy:install:migrations"
|
27
28
|
]
|
28
29
|
|
29
|
-
desc "Alchemy Upgrader:
|
30
|
+
desc "Alchemy Upgrader: Update configuration file."
|
30
31
|
task config: [:environment] do
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
desc "Upgrade Alchemy to v7.3"
|
35
|
-
task "7.3" => [
|
36
|
-
"alchemy:upgrade:prepare",
|
37
|
-
"alchemy:upgrade:7.3:run"
|
38
|
-
] do
|
39
|
-
Alchemy::Upgrader.display_todos
|
40
|
-
end
|
41
|
-
|
42
|
-
desc "Upgrade Alchemy to v7.4"
|
43
|
-
task "7.4" => [
|
44
|
-
"alchemy:upgrade:prepare",
|
45
|
-
"alchemy:upgrade:7.4:run"
|
46
|
-
] do
|
47
|
-
Alchemy::Upgrader.display_todos
|
48
|
-
end
|
49
|
-
|
50
|
-
namespace "7.3" do
|
51
|
-
task "run" => [
|
52
|
-
"alchemy:upgrade:7.3:remove_admin_stylesheets",
|
53
|
-
"alchemy:upgrade:7.3:generate_custom_css_entrypoint"
|
54
|
-
] do
|
55
|
-
Alchemy::Upgrader::SevenPointThree.show_resource_table_notice
|
56
|
-
end
|
57
|
-
|
58
|
-
desc "Remove alchemy admin stylesheets"
|
59
|
-
task remove_admin_stylesheets: [:environment] do
|
60
|
-
Alchemy::Upgrader::SevenPointThree.remove_admin_stylesheets
|
61
|
-
end
|
62
|
-
|
63
|
-
desc "Generate custom css entrypoint"
|
64
|
-
task generate_custom_css_entrypoint: [:environment] do
|
65
|
-
Alchemy::Upgrader::SevenPointThree.generate_custom_css_entrypoint
|
66
|
-
end
|
32
|
+
Upgrader.update_config
|
67
33
|
end
|
68
34
|
|
69
|
-
namespace "
|
35
|
+
namespace "8.0" do
|
70
36
|
task "run" => [
|
71
|
-
"alchemy:upgrade:
|
37
|
+
"alchemy:upgrade:8.0:mention_alchemy_config_initializer"
|
72
38
|
]
|
73
39
|
|
74
|
-
|
75
|
-
|
76
|
-
Alchemy::Upgrader::SevenPointFour.update_custom_css_config
|
40
|
+
task :mention_alchemy_config_initializer do
|
41
|
+
Upgrader.mention_alchemy_config_initializer
|
77
42
|
end
|
78
43
|
end
|
79
44
|
end
|