alchemy_cms 6.1.10 → 7.0.0.pre.a
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +0 -3
- data/.gitignore +1 -6
- data/CHANGELOG.md +19 -44
- data/Gemfile +1 -1
- data/Rakefile +14 -9
- data/alchemy_cms.gemspec +2 -3
- data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +18 -32
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +27 -29
- data/app/assets/stylesheets/alchemy/elements.scss +16 -35
- data/app/assets/stylesheets/alchemy/forms.scss +0 -4
- data/app/assets/stylesheets/alchemy/node-select.scss +2 -2
- data/app/controllers/alchemy/admin/attachments_controller.rb +0 -1
- data/app/controllers/alchemy/admin/elements_controller.rb +7 -32
- data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/pictures_controller.rb +1 -1
- data/app/controllers/alchemy/admin/resources_controller.rb +1 -18
- data/app/controllers/alchemy/api/elements_controller.rb +0 -2
- data/app/controllers/alchemy/api/pages_controller.rb +8 -4
- data/app/controllers/alchemy/messages_controller.rb +9 -9
- data/app/controllers/alchemy/pages_controller.rb +23 -18
- data/app/decorators/alchemy/element_editor.rb +10 -30
- data/app/helpers/alchemy/admin/elements_helper.rb +0 -2
- data/app/helpers/alchemy/elements_block_helper.rb +5 -42
- data/app/helpers/alchemy/elements_helper.rb +3 -11
- data/app/helpers/alchemy/pages_helper.rb +0 -4
- data/app/models/alchemy/attachment.rb +6 -3
- data/app/models/alchemy/base_record.rb +2 -0
- data/app/models/alchemy/eager_loading.rb +0 -1
- data/app/models/alchemy/element/element_ingredients.rb +1 -8
- data/app/models/alchemy/element/presenters.rb +9 -25
- data/app/models/alchemy/element.rb +2 -18
- data/app/models/alchemy/ingredient.rb +17 -6
- data/app/models/alchemy/ingredients/audio.rb +2 -0
- data/app/models/alchemy/ingredients/datetime.rb +3 -1
- data/app/models/alchemy/ingredients/file.rb +7 -0
- data/app/models/alchemy/ingredients/headline.rb +6 -0
- data/app/models/alchemy/ingredients/link.rb +2 -0
- data/app/models/alchemy/ingredients/node.rb +2 -0
- data/app/models/alchemy/ingredients/page.rb +2 -0
- data/app/models/alchemy/ingredients/picture.rb +11 -0
- data/app/models/alchemy/ingredients/richtext.rb +6 -0
- data/app/models/alchemy/ingredients/select.rb +1 -0
- data/app/models/alchemy/ingredients/text.rb +8 -0
- data/app/models/alchemy/ingredients/video.rb +2 -0
- data/app/models/alchemy/node.rb +9 -6
- data/app/models/alchemy/page/page_elements.rb +5 -26
- data/app/models/alchemy/page/page_layouts.rb +0 -14
- data/app/models/alchemy/page/page_natures.rb +0 -10
- data/app/models/alchemy/page.rb +0 -10
- data/app/models/alchemy/picture/transformations.rb +0 -30
- data/app/models/alchemy/picture/url.rb +1 -1
- data/app/models/alchemy/picture.rb +14 -13
- data/app/models/alchemy/picture_thumb/create.rb +7 -18
- data/app/models/alchemy/picture_thumb/file_store.rb +33 -0
- data/app/models/alchemy/picture_thumb.rb +10 -10
- data/app/models/concerns/alchemy/picture_thumbnails.rb +2 -6
- data/app/serializers/alchemy/element_serializer.rb +1 -6
- data/app/services/alchemy/delete_elements.rb +1 -7
- data/app/services/alchemy/duplicate_element.rb +1 -6
- data/app/views/alchemy/admin/elements/_element.html.erb +5 -22
- data/app/views/alchemy/admin/elements/create.js.erb +1 -1
- data/app/views/alchemy/admin/elements/fold.js.erb +2 -2
- data/app/views/alchemy/admin/elements/order.js.erb +1 -1
- data/app/views/alchemy/admin/elements/update.js.erb +1 -2
- data/app/views/alchemy/admin/pages/_external_link.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_file_link.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_table.html.erb +0 -6
- data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +3 -6
- data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -3
- data/app/views/alchemy/admin/pictures/_infos.html.erb +4 -6
- data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
- data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_headline_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_html_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_node_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/_picture_editor.html.erb +4 -4
- data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -2
- data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
- data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +3 -3
- data/app/views/alchemy/pages/_meta_data.html.erb +0 -1
- data/app/views/layouts/alchemy/admin.html.erb +5 -1
- data/config/alchemy/config.yml +6 -6
- data/config/brakeman.ignore +56 -57
- data/config/locales/alchemy.en.yml +99 -113
- data/config/routes.rb +1 -16
- data/db/migrate/20230121212637_alchemy_six_point_one.rb +248 -0
- data/lib/alchemy/cache_digests/template_tracker.rb +6 -7
- data/lib/alchemy/config.rb +2 -2
- data/lib/alchemy/deprecation.rb +1 -1
- data/lib/alchemy/errors.rb +0 -11
- data/lib/alchemy/hints.rb +10 -10
- data/lib/alchemy/permissions.rb +4 -17
- data/lib/alchemy/routing_constraints.rb +3 -3
- data/lib/alchemy/searchable_resource.rb +38 -0
- data/lib/alchemy/seeder.rb +2 -8
- data/lib/alchemy/tasks/tidy.rb +0 -38
- data/lib/alchemy/test_support/capybara_helpers.rb +69 -0
- data/lib/alchemy/test_support/factories/element_factory.rb +0 -6
- data/lib/alchemy/test_support/factories/ingredient_factory.rb +1 -1
- data/lib/alchemy/test_support/factories/page_factory.rb +4 -2
- data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +0 -20
- data/lib/alchemy/test_support/shared_dom_ids_examples.rb +1 -1
- data/lib/alchemy/test_support/shared_ingredient_examples.rb +1 -1
- data/lib/alchemy/tinymce.rb +1 -18
- data/lib/alchemy/upgrader/seven_point_zero.rb +45 -0
- data/lib/alchemy/upgrader/tasks/.keep +0 -0
- data/lib/alchemy/upgrader.rb +8 -3
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy.rb +0 -19
- data/lib/alchemy_cms.rb +1 -2
- data/lib/generators/alchemy/elements/elements_generator.rb +0 -1
- data/lib/generators/alchemy/elements/templates/view.html.erb +1 -10
- data/lib/generators/alchemy/elements/templates/view.html.haml +1 -9
- data/lib/generators/alchemy/elements/templates/view.html.slim +1 -9
- data/lib/generators/alchemy/install/files/alchemy.en.yml +7 -8
- data/lib/generators/alchemy/install/files/application.html.erb +1 -1
- data/lib/generators/alchemy/install/install_generator.rb +18 -34
- data/lib/generators/alchemy/install/templates/elements.yml.tt +12 -12
- data/lib/non_stupid_digest_assets.rb +1 -1
- data/lib/tasks/alchemy/thumbnails.rake +2 -21
- data/lib/tasks/alchemy/tidy.rake +1 -12
- data/lib/tasks/alchemy/upgrade.rake +10 -47
- data/package/dist/admin.js +16 -0
- data/package/dist/admin.js.map +7 -0
- data/package.json +5 -3
- metadata +18 -147
- data/app/controllers/alchemy/admin/contents_controller.rb +0 -21
- data/app/controllers/alchemy/admin/essence_audios_controller.rb +0 -30
- data/app/controllers/alchemy/admin/essence_files_controller.rb +0 -31
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +0 -43
- data/app/controllers/alchemy/admin/essence_videos_controller.rb +0 -34
- data/app/controllers/alchemy/api/contents_controller.rb +0 -52
- data/app/decorators/alchemy/content_editor.rb +0 -119
- data/app/helpers/alchemy/admin/contents_helper.rb +0 -42
- data/app/helpers/alchemy/admin/essences_helper.rb +0 -31
- data/app/models/alchemy/content/factory.rb +0 -143
- data/app/models/alchemy/content.rb +0 -247
- data/app/models/alchemy/element/element_contents.rb +0 -200
- data/app/models/alchemy/element/element_essences.rb +0 -133
- data/app/models/alchemy/essence_audio.rb +0 -13
- data/app/models/alchemy/essence_boolean.rb +0 -20
- data/app/models/alchemy/essence_date.rb +0 -25
- data/app/models/alchemy/essence_file.rb +0 -49
- data/app/models/alchemy/essence_headline.rb +0 -41
- data/app/models/alchemy/essence_html.rb +0 -23
- data/app/models/alchemy/essence_link.rb +0 -21
- data/app/models/alchemy/essence_node.rb +0 -19
- data/app/models/alchemy/essence_page.rb +0 -17
- data/app/models/alchemy/essence_picture.rb +0 -67
- data/app/models/alchemy/essence_picture_view.rb +0 -90
- data/app/models/alchemy/essence_richtext.rb +0 -44
- data/app/models/alchemy/essence_select.rb +0 -19
- data/app/models/alchemy/essence_text.rb +0 -23
- data/app/models/alchemy/essence_video.rb +0 -13
- data/app/serializers/alchemy/content_serializer.rb +0 -17
- data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_date_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_file_serializer.rb +0 -13
- data/app/serializers/alchemy/essence_html_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_link_serializer.rb +0 -13
- data/app/serializers/alchemy/essence_picture_serializer.rb +0 -28
- data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -11
- data/app/serializers/alchemy/essence_select_serializer.rb +0 -10
- data/app/serializers/alchemy/essence_text_serializer.rb +0 -22
- data/app/views/alchemy/admin/contents/create.js.erb +0 -21
- data/app/views/alchemy/admin/essence_audios/edit.html.erb +0 -7
- data/app/views/alchemy/admin/essence_files/edit.html.erb +0 -21
- data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -5
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +0 -30
- data/app/views/alchemy/admin/essence_pictures/save_link.js.erb +0 -3
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +0 -8
- data/app/views/alchemy/admin/essence_videos/edit.html.erb +0 -12
- data/app/views/alchemy/essences/_essence_audio_editor.html.erb +0 -4
- data/app/views/alchemy/essences/_essence_audio_view.html.erb +0 -15
- data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +0 -11
- data/app/views/alchemy/essences/_essence_boolean_view.html.erb +0 -2
- data/app/views/alchemy/essences/_essence_date_editor.html.erb +0 -16
- data/app/views/alchemy/essences/_essence_date_view.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +0 -54
- data/app/views/alchemy/essences/_essence_file_view.html.erb +0 -18
- data/app/views/alchemy/essences/_essence_headline_editor.html.erb +0 -36
- data/app/views/alchemy/essences/_essence_headline_view.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_html_editor.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_html_view.html.erb +0 -2
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +0 -30
- data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -10
- data/app/views/alchemy/essences/_essence_node_editor.html.erb +0 -27
- data/app/views/alchemy/essences/_essence_node_view.html.erb +0 -1
- data/app/views/alchemy/essences/_essence_page_editor.html.erb +0 -26
- data/app/views/alchemy/essences/_essence_page_view.html.erb +0 -5
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +0 -59
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +0 -6
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -14
- data/app/views/alchemy/essences/_essence_richtext_view.html.erb +0 -4
- data/app/views/alchemy/essences/_essence_select_editor.html.erb +0 -28
- data/app/views/alchemy/essences/_essence_select_view.html.erb +0 -2
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +0 -29
- data/app/views/alchemy/essences/_essence_text_view.html.erb +0 -17
- data/app/views/alchemy/essences/_essence_video_editor.html.erb +0 -4
- data/app/views/alchemy/essences/_essence_video_view.html.erb +0 -19
- data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +0 -59
- data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +0 -20
- data/app/views/alchemy/pages/show.rss.builder +0 -21
- data/db/migrate/20200226213334_alchemy_four_point_four.rb +0 -313
- data/db/migrate/20200423073425_create_alchemy_essence_nodes.rb +0 -11
- data/db/migrate/20200504210159_remove_site_id_from_nodes.rb +0 -28
- data/db/migrate/20200505215518_add_language_id_foreign_key_to_alchemy_pages.rb +0 -8
- data/db/migrate/20200511113603_add_menu_type_to_alchemy_nodes.rb +0 -27
- data/db/migrate/20200514091507_make_page_layoutpage_null_false.rb +0 -6
- data/db/migrate/20200519073500_remove_visible_from_alchemy_pages.rb +0 -24
- data/db/migrate/20200617110713_create_alchemy_picture_thumbs.rb +0 -22
- data/db/migrate/20200907111332_remove_tri_state_booleans.rb +0 -33
- data/db/migrate/20201207131309_create_page_versions.rb +0 -19
- data/db/migrate/20201207135820_add_page_version_id_to_alchemy_elements.rb +0 -76
- data/db/migrate/20210205143548_rename_public_on_and_public_until_on_alchemy_pages.rb +0 -10
- data/db/migrate/20210326105046_add_sanitized_body_to_alchemy_essence_richtexts.rb +0 -7
- data/db/migrate/20210406093436_add_alchemy_essence_headlines.rb +0 -12
- data/db/migrate/20210506135919_create_essence_audios.rb +0 -19
- data/db/migrate/20210506140258_create_essence_videos.rb +0 -23
- data/db/migrate/20210508091432_create_alchemy_ingredients.rb +0 -22
- data/db/migrate/20220514072456_restrict_on_delete_page_id_foreign_key_from_alchemy_nodes.rb +0 -13
- data/db/migrate/20220622130905_add_playsinline_to_alchemy_essence_videos.rb +0 -9
- data/lib/alchemy/essence.rb +0 -250
- data/lib/alchemy/tasks/usage.rb +0 -34
- data/lib/alchemy/test_support/essence_shared_examples.rb +0 -271
- data/lib/alchemy/test_support/factories/content_factory.rb +0 -20
- data/lib/alchemy/test_support/factories/essence_audio_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_file_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_page_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_picture_factory.rb +0 -11
- data/lib/alchemy/test_support/factories/essence_text_factory.rb +0 -7
- data/lib/alchemy/test_support/factories/essence_video_factory.rb +0 -7
- data/lib/alchemy/upgrader/five_point_zero.rb +0 -41
- data/lib/alchemy/upgrader/six_point_zero.rb +0 -21
- data/lib/alchemy/upgrader/tasks/add_page_versions.rb +0 -33
- data/lib/alchemy/upgrader/tasks/element_views_updater.rb +0 -34
- data/lib/alchemy/upgrader/tasks/harden_gutentag_migrations.rb +0 -29
- data/lib/alchemy/upgrader/tasks/ingredients_migrator.rb +0 -73
- data/lib/generators/alchemy/essence/essence_generator.rb +0 -49
- data/lib/generators/alchemy/essence/templates/editor.html.erb +0 -17
- data/lib/generators/alchemy/essence/templates/view.html.erb +0 -2
- data/lib/generators/alchemy/install/files/babel.config.js +0 -64
- data/lib/tasks/alchemy/usage.rake +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b458227c38affbfe51743916b5d726410371bc82d1aecdaec6f587df2fef882
|
4
|
+
data.tar.gz: 14626367bd1b8cb8f891518514915273ebb95f320e9a91e5815108a2109854f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '068c0aac56cf25bc3bb88a2c1114db7028f5a1177e71e8763d2f7cd0124cfecbf984aa3b62c75267077af051f5032c18ec779d354a61a6c082b6b96d4d0bc706'
|
7
|
+
data.tar.gz: 6cd013283061060f7d97c0222c474d67e1748b8865c03872cdd00f2c6583d6f3c3c6918d69dff069bd60392e2c0814c0cf1a00cb79ad75f7be49ec6f1032be41
|
data/.github/workflows/ci.yml
CHANGED
@@ -82,9 +82,6 @@ jobs:
|
|
82
82
|
sudo apt update -qq
|
83
83
|
sudo apt install -qq --fix-missing libmysqlclient-dev -o dir::cache::archives="/home/runner/apt/cache"
|
84
84
|
sudo chown -R runner /home/runner/apt/cache
|
85
|
-
- uses: actions/setup-node@v3
|
86
|
-
with:
|
87
|
-
node-version: 16
|
88
85
|
- name: Restore node modules cache
|
89
86
|
id: yarn-cache
|
90
87
|
uses: actions/cache@v2.1.3
|
data/.gitignore
CHANGED
@@ -9,14 +9,9 @@ pkg
|
|
9
9
|
tmp
|
10
10
|
log
|
11
11
|
.sass-cache
|
12
|
-
spec/dummy
|
12
|
+
spec/dummy/app/assets/builds/*.js*
|
13
13
|
spec/dummy/app/javascript/
|
14
|
-
spec/dummy/babel.config.js
|
15
|
-
spec/dummy/bin/webpack
|
16
|
-
spec/dummy/bin/webpack-dev-server
|
17
14
|
spec/dummy/config/alchemy/config.yml
|
18
|
-
spec/dummy/config/webpack/
|
19
|
-
spec/dummy/config/webpacker.yml
|
20
15
|
spec/dummy/db/*.sqlite3*
|
21
16
|
spec/dummy/package.json
|
22
17
|
spec/dummy/postcss.config.js
|
data/CHANGELOG.md
CHANGED
@@ -1,52 +1,27 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
4
|
-
|
5
|
-
- [6.1-stable] Fix combining search filters and pagination [#2983](https://github.com/AlchemyCMS/alchemy_cms/pull/2983) ([tvdeyen](https://github.com/tvdeyen))
|
6
|
-
- [6.1-stable] Merge pull request #2556 from mamhoff/fix-nan-ratio-error [#2581](https://github.com/AlchemyCMS/alchemy_cms/pull/2581) ([alchemycms-bot](https://github.com/alchemycms-bot))
|
7
|
-
|
8
|
-
## 6.1.9 (2023-08-29)
|
9
|
-
|
10
|
-
- [6.1-stable] Merge pull request #2571 from tvdeyen/fix-non-stupid-digest-assets [#2573](https://github.com/AlchemyCMS/alchemy_cms/pull/2573) ([github-actions](https://github.com/apps/github-actions))
|
11
|
-
- [6.1] Show if element is using contents or ingredients [#2568](https://github.com/AlchemyCMS/alchemy_cms/pull/2568) ([tvdeyen](https://github.com/tvdeyen))
|
12
|
-
|
13
|
-
## 6.1.8 (2023-07-31)
|
14
|
-
|
15
|
-
- [v6.1] Use selenium-webdriver instead of webdrivers gem [#2531](https://github.com/AlchemyCMS/alchemy_cms/pull/2531) ([mamhoff](https://github.com/mamhoff))
|
16
|
-
- [v6.1] Bugfix: Init PagePublicationFields on Pages Table [#2530](https://github.com/AlchemyCMS/alchemy_cms/pull/2530) ([mamhoff](https://github.com/mamhoff))
|
17
|
-
|
18
|
-
## 6.1.7 (2023-07-07)
|
19
|
-
|
20
|
-
- [6.1] Add task(s) to visualize element and page usage [#2514](https://github.com/AlchemyCMS/alchemy_cms/pull/2514) ([tvdeyen](https://github.com/tvdeyen))
|
21
|
-
|
22
|
-
## 6.1.6 (2023-06-30)
|
23
|
-
|
24
|
-
- [6.1] Allow to create element with warning in definition [#2508](https://github.com/AlchemyCMS/alchemy_cms/pull/2508) ([tvdeyen](https://github.com/tvdeyen))
|
25
|
-
- [6.1] Allow authors to link to all pages again [#2505](https://github.com/AlchemyCMS/alchemy_cms/pull/2505) ([tvdeyen](https://github.com/tvdeyen))
|
26
|
-
- install generator: Add option to force patched babel config [#2495](https://github.com/AlchemyCMS/alchemy_cms/pull/2495) ([tvdeyen](https://github.com/tvdeyen))
|
27
|
-
- Remove memory leak in ingredients migrator [#2493](https://github.com/AlchemyCMS/alchemy_cms/pull/2493) ([tvdeyen](https://github.com/tvdeyen))
|
28
|
-
|
29
|
-
## 6.1.5 (2023-05-26)
|
30
|
-
|
31
|
-
- [6.1] Fix page seeder [#2482](https://github.com/AlchemyCMS/alchemy_cms/pull/2482) ([tvdeyen](https://github.com/tvdeyen))
|
32
|
-
|
33
|
-
## 6.1.4 (2023-05-18)
|
34
|
-
|
35
|
-
- [6.1] Revert "Preload related objects in Alchemy::PagesController" [#2473](https://github.com/AlchemyCMS/alchemy_cms/pull/2473) ([tvdeyen](https://github.com/tvdeyen))
|
36
|
-
|
37
|
-
## 6.1.3 (2023-03-29)
|
3
|
+
## 7.0.0 (unreleased)
|
38
4
|
|
5
|
+
- Remove deprecations [#2450](https://github.com/AlchemyCMS/alchemy_cms/pull/2450) ([tvdeyen](https://github.com/tvdeyen))
|
6
|
+
- Fix respond_to? overwrite in ElementEditor [#2449](https://github.com/AlchemyCMS/alchemy_cms/pull/2449) ([tvdeyen](https://github.com/tvdeyen))
|
39
7
|
- Fix installer: Add seeds file if not exists [#2446](https://github.com/AlchemyCMS/alchemy_cms/pull/2446) ([tvdeyen](https://github.com/tvdeyen))
|
8
|
+
- Make CapybaraHelpers requireable [#2445](https://github.com/AlchemyCMS/alchemy_cms/pull/2445) ([tvdeyen](https://github.com/tvdeyen))
|
9
|
+
- Do not install webpacker tag for fresh apps [#2444](https://github.com/AlchemyCMS/alchemy_cms/pull/2444) ([tvdeyen](https://github.com/tvdeyen))
|
10
|
+
- Re-add Webpacker support. [#2443](https://github.com/AlchemyCMS/alchemy_cms/pull/2443) ([tvdeyen](https://github.com/tvdeyen))
|
11
|
+
- Add support for more link tabs [#2442](https://github.com/AlchemyCMS/alchemy_cms/pull/2442) ([tvdeyen](https://github.com/tvdeyen))
|
12
|
+
- Add support for Ransack 4 [#2438](https://github.com/AlchemyCMS/alchemy_cms/pull/2438) ([tvdeyen](https://github.com/tvdeyen))
|
13
|
+
- Fix non_stupid_digest_assets [#2436](https://github.com/AlchemyCMS/alchemy_cms/pull/2436) ([tvdeyen](https://github.com/tvdeyen))
|
14
|
+
- Add PictureThumb.storage_class [#2435](https://github.com/AlchemyCMS/alchemy_cms/pull/2435) ([tvdeyen](https://github.com/tvdeyen))
|
15
|
+
- Fix thumbnail writing for multi-concurrent and multi-db setups [#2433](https://github.com/AlchemyCMS/alchemy_cms/pull/2433) ([tvdeyen](https://github.com/tvdeyen))
|
40
16
|
- Integrate non_stupid_digest_assets gem [#2430](https://github.com/AlchemyCMS/alchemy_cms/pull/2430) ([afdev82](https://github.com/afdev82))
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
-
|
49
|
-
- Add searchable field to page (Alchemy 6.1) [#2420](https://github.com/AlchemyCMS/alchemy_cms/pull/2420) ([kulturbande](https://github.com/kulturbande))
|
17
|
+
- Define allowed settings in ingredients [#2425](https://github.com/AlchemyCMS/alchemy_cms/pull/2425) ([tvdeyen](https://github.com/tvdeyen))
|
18
|
+
- Remove webpacker [#2424](https://github.com/AlchemyCMS/alchemy_cms/pull/2424) ([tvdeyen](https://github.com/tvdeyen))
|
19
|
+
- Remove deprecated methods [#2421](https://github.com/AlchemyCMS/alchemy_cms/pull/2421) ([tvdeyen](https://github.com/tvdeyen))
|
20
|
+
- Remove 6.0 upgrade tasks [#2418](https://github.com/AlchemyCMS/alchemy_cms/pull/2418) ([tvdeyen](https://github.com/tvdeyen))
|
21
|
+
- Compress 6.1 migrations [#2417](https://github.com/AlchemyCMS/alchemy_cms/pull/2417) ([tvdeyen](https://github.com/tvdeyen))
|
22
|
+
- Remove all content/essence related code [#2416](https://github.com/AlchemyCMS/alchemy_cms/pull/2416) ([tvdeyen](https://github.com/tvdeyen))
|
23
|
+
- Remove RSS Feed feature [#2415](https://github.com/AlchemyCMS/alchemy_cms/pull/2415) ([tvdeyen](https://github.com/tvdeyen))
|
24
|
+
- Add searchable field to page [#2414](https://github.com/AlchemyCMS/alchemy_cms/pull/2414) ([kulturbande](https://github.com/kulturbande))
|
50
25
|
|
51
26
|
## 6.1.0 (2023-01-19)
|
52
27
|
|
data/Gemfile
CHANGED
@@ -19,7 +19,7 @@ group :development, :test do
|
|
19
19
|
# in our case the culprit is `handlebars-assets`. The changes between 2.7.0 and 2.8.0 are
|
20
20
|
# minimal, but breaking.
|
21
21
|
gem "execjs", "= 2.8.1"
|
22
|
-
gem "
|
22
|
+
gem "jsbundling-rails", "~> 1.1"
|
23
23
|
|
24
24
|
if ENV["GITHUB_ACTIONS"]
|
25
25
|
# Necessary because GH Actions gem cache does not have this "Bundled with Ruby" gem installed
|
data/Rakefile
CHANGED
@@ -44,13 +44,14 @@ namespace :alchemy do
|
|
44
44
|
yarn install && \
|
45
45
|
yarn link && \
|
46
46
|
cd spec/dummy && \
|
47
|
+
yarn link @alchemy_cms/admin && \
|
47
48
|
export RAILS_ENV=test && \
|
48
49
|
bin/rake db:create && \
|
49
50
|
bin/rake db:environment:set && \
|
50
51
|
bin/rake db:migrate:reset && \
|
51
|
-
bin/rails
|
52
|
-
|
53
|
-
|
52
|
+
bin/rails javascript:install:esbuild && \
|
53
|
+
bin/rails g alchemy:install --skip --skip-demo-files --auto-accept --skip-db-create && \
|
54
|
+
bin/rails javascript:build && \
|
54
55
|
cd -
|
55
56
|
BASH
|
56
57
|
) || fail
|
@@ -63,13 +64,17 @@ namespace :alchemy do
|
|
63
64
|
original_file = "./CHANGELOG.md"
|
64
65
|
new_file = original_file + ".new"
|
65
66
|
backup = original_file + ".old"
|
66
|
-
changes = `git rev-list v#{ENV["PREVIOUS_VERSION"]}..HEAD | bundle exec github_fast_changelog AlchemyCMS/alchemy_cms
|
67
|
-
File.
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
changes = `git rev-list v#{ENV["PREVIOUS_VERSION"]}..HEAD | bundle exec github_fast_changelog AlchemyCMS/alchemy_cms`.split("\n")
|
68
|
+
changelog = File.read(original_file)
|
69
|
+
File.open(new_file, "w") do |file|
|
70
|
+
changes.each do |change|
|
71
|
+
next if changelog.include?(change)
|
72
|
+
file.puts change
|
73
|
+
end
|
74
|
+
File.foreach(original_file) do |line|
|
75
|
+
file.puts line
|
71
76
|
end
|
72
|
-
|
77
|
+
file.puts ""
|
73
78
|
end
|
74
79
|
File.rename(original_file, backup)
|
75
80
|
File.rename(new_file, original_file)
|
data/alchemy_cms.gemspec
CHANGED
@@ -45,14 +45,13 @@ Gem::Specification.new do |gem|
|
|
45
45
|
gem.add_runtime_dependency "jquery-ui-rails", ["~> 6.0"]
|
46
46
|
gem.add_runtime_dependency "kaminari", ["~> 1.1"]
|
47
47
|
gem.add_runtime_dependency "originator", ["~> 3.1"]
|
48
|
-
gem.add_runtime_dependency "ransack", [">= 1.8", "<
|
48
|
+
gem.add_runtime_dependency "ransack", [">= 1.8", "< 5.0"]
|
49
49
|
gem.add_runtime_dependency "request_store", ["~> 1.2"]
|
50
50
|
gem.add_runtime_dependency "responders", [">= 2.0", "< 4.0"]
|
51
51
|
gem.add_runtime_dependency "sassc-rails", ["~> 2.1"]
|
52
52
|
gem.add_runtime_dependency "simple_form", [">= 4.0", "< 6"]
|
53
53
|
gem.add_runtime_dependency "sprockets", [">= 3.0", "< 5"]
|
54
54
|
gem.add_runtime_dependency "turbolinks", [">= 2.5"]
|
55
|
-
gem.add_runtime_dependency "webpacker", [">= 4.0", "< 6"]
|
56
55
|
|
57
56
|
gem.add_development_dependency "capybara", ["~> 3.0"]
|
58
57
|
gem.add_development_dependency "capybara-screenshot", ["~> 1.0"]
|
@@ -62,7 +61,7 @@ Gem::Specification.new do |gem|
|
|
62
61
|
gem.add_development_dependency "rspec-activemodel-mocks", ["~> 1.0"]
|
63
62
|
gem.add_development_dependency "rspec-rails", [">= 4.0.0.beta2"]
|
64
63
|
gem.add_development_dependency "simplecov", ["~> 0.20"]
|
65
|
-
gem.add_development_dependency "
|
64
|
+
gem.add_development_dependency "webdrivers", ["~> 5.0"]
|
66
65
|
gem.add_development_dependency "webmock", ["~> 3.3"]
|
67
66
|
gem.add_development_dependency "shoulda-matchers", ["~> 5.0"]
|
68
67
|
gem.add_development_dependency "timecop", ["~> 0.9"]
|
@@ -20,7 +20,7 @@ $.extend Alchemy,
|
|
20
20
|
setElementClean: (element) ->
|
21
21
|
$element = $(element)
|
22
22
|
$element.removeClass('dirty')
|
23
|
-
$element.find('> .element-
|
23
|
+
$element.find('> .element-body .dirty').removeClass('dirty')
|
24
24
|
window.onbeforeunload = undefined
|
25
25
|
|
26
26
|
isPageDirty: ->
|
@@ -15,7 +15,7 @@ Alchemy.ElementEditors =
|
|
15
15
|
init: ->
|
16
16
|
@element_area = $("#element_area")
|
17
17
|
@bindEvents()
|
18
|
-
@
|
18
|
+
@expandIngredientGroups()
|
19
19
|
return
|
20
20
|
|
21
21
|
# Binds click events on several DOM elements from element editors
|
@@ -29,27 +29,25 @@ Alchemy.ElementEditors =
|
|
29
29
|
@onDoubleClickElement(e)
|
30
30
|
@element_area.on "click", "[data-element-toggle]", (e) =>
|
31
31
|
@onClickToggle(e)
|
32
|
-
@element_area.on "click", '[data-create-missing-content]', (e) =>
|
33
|
-
@onClickMissingContent(e)
|
34
32
|
# Binds the custom FocusElementEditor event
|
35
33
|
@element_area.on "FocusElementEditor.Alchemy", '.element-editor', (e) =>
|
36
34
|
@onFocusElement(e)
|
37
35
|
# Binds the custom SaveElement event
|
38
36
|
@element_area.on "SaveElement.Alchemy", '.element-editor', (e, data) =>
|
39
37
|
@onSaveElement(e, data)
|
40
|
-
@element_area.on "click", '[data-toggle-
|
41
|
-
@
|
38
|
+
@element_area.on "click", '[data-toggle-ingredient-group]', (e) =>
|
39
|
+
@onToggleIngredientGroup(e)
|
42
40
|
# Listen to postMessage messages from the preview frame
|
43
41
|
window.addEventListener 'message', (e) =>
|
44
42
|
@onMessage(e.data)
|
45
43
|
true
|
46
44
|
return
|
47
45
|
|
48
|
-
# Expands
|
49
|
-
|
50
|
-
if $
|
51
|
-
for header_id in JSON.parse($
|
52
|
-
$('#' + header_id).closest('.
|
46
|
+
# Expands ingredient groups that are stored in sessionStorage as expanded
|
47
|
+
expandIngredientGroups: ->
|
48
|
+
if $expanded_ingredient_groups = sessionStorage.getItem('Alchemy.expanded_ingredient_groups')
|
49
|
+
for header_id in JSON.parse($expanded_ingredient_groups) then do (header_id) =>
|
50
|
+
$('#' + header_id).closest('.ingredient-group').addClass('expanded');
|
53
51
|
|
54
52
|
# Selects and scrolls to element with given id in the preview window.
|
55
53
|
#
|
@@ -179,21 +177,21 @@ Alchemy.ElementEditors =
|
|
179
177
|
Alchemy.Buttons.enable($element)
|
180
178
|
true
|
181
179
|
|
182
|
-
# Toggle visibility of the
|
183
|
-
|
184
|
-
$group_div = $(event.currentTarget).closest('.
|
180
|
+
# Toggle visibility of the ingredient fields in the group
|
181
|
+
onToggleIngredientGroup: (event) ->
|
182
|
+
$group_div = $(event.currentTarget).closest('.ingredient-group');
|
185
183
|
$group_div.toggleClass('expanded');
|
186
184
|
|
187
|
-
$
|
188
|
-
# Add or remove depending on whether this
|
185
|
+
$expanded_ingredient_groups = JSON.parse(sessionStorage.getItem('Alchemy.expanded_ingredient_groups') || '[]');
|
186
|
+
# Add or remove depending on whether this ingredient group is expanded
|
189
187
|
if $group_div.hasClass('expanded')
|
190
|
-
if $
|
191
|
-
$
|
188
|
+
if $expanded_ingredient_groups.indexOf(event.currentTarget.id) == -1
|
189
|
+
$expanded_ingredient_groups.push(event.currentTarget.id);
|
192
190
|
else
|
193
|
-
$
|
191
|
+
$expanded_ingredient_groups = $expanded_ingredient_groups.filter (value) ->
|
194
192
|
value != event.currentTarget.id
|
195
193
|
|
196
|
-
sessionStorage.setItem('Alchemy.
|
194
|
+
sessionStorage.setItem('Alchemy.expanded_ingredient_groups', JSON.stringify($expanded_ingredient_groups))
|
197
195
|
false
|
198
196
|
|
199
197
|
# Event handlers
|
@@ -248,22 +246,10 @@ Alchemy.ElementEditors =
|
|
248
246
|
e.stopPropagation()
|
249
247
|
false
|
250
248
|
|
251
|
-
# Handles the missing content button click events.
|
252
|
-
#
|
253
|
-
# Ensures that the links query string is converted into post body and send
|
254
|
-
# the request via a real ajax post to server, to allow long query strings.
|
255
|
-
#
|
256
|
-
onClickMissingContent: (e) ->
|
257
|
-
link = e.target
|
258
|
-
url = link.pathname
|
259
|
-
querystring = link.search.replace(/\?/, '')
|
260
|
-
$.post(url, querystring)
|
261
|
-
false
|
262
|
-
|
263
249
|
# private
|
264
250
|
|
265
251
|
_shouldUpdateTitle: (element, event) ->
|
266
|
-
editors = element.find('> .element-
|
252
|
+
editors = element.find('> .element-body .element-ingredient-editors').children()
|
267
253
|
if @_hasParents(element)
|
268
254
|
editors.length != 0
|
269
255
|
else if @_isParent(element) && @_isFirstChild $(event.target)
|
@@ -50,8 +50,8 @@ Alchemy.ElementsWindow =
|
|
50
50
|
$.get @url, (data) =>
|
51
51
|
@element_area.html data
|
52
52
|
Alchemy.GUI.init(@element_area)
|
53
|
-
Alchemy.fileEditors(@element_area.find(".
|
54
|
-
Alchemy.pictureEditors(@element_area.find(".
|
53
|
+
Alchemy.fileEditors(@element_area.find(".ingredient-editor.file, .ingredient-editor.audio, .ingredient-editor.video").selector)
|
54
|
+
Alchemy.pictureEditors(@element_area.find(".ingredient-editor.picture").selector)
|
55
55
|
if @callback
|
56
56
|
@callback.call()
|
57
57
|
.fail (xhr, status, error) =>
|
@@ -23,5 +23,5 @@ Alchemy.GUI =
|
|
23
23
|
Alchemy.ElementDirtyObserver($el)
|
24
24
|
Alchemy.GUI.init($el && $el.selector)
|
25
25
|
Alchemy.ImageLoader($el[0])
|
26
|
-
Alchemy.fileEditors($el.find(".
|
27
|
-
Alchemy.pictureEditors($el.find(".
|
26
|
+
Alchemy.fileEditors($el.find(".ingredient-editor.file, .ingredient-editor.audio, .ingredient-editor.video").selector)
|
27
|
+
Alchemy.pictureEditors($el.find(".ingredient-editor.picture").selector)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Represents the link Dialog that appears, if a user clicks the link buttons
|
2
|
-
# in TinyMCE or on an
|
2
|
+
# in TinyMCE or on an Ingredient that has links enabled (e.g. Picture)
|
3
3
|
#
|
4
4
|
class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
5
5
|
|
@@ -25,37 +25,29 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
|
25
25
|
# attach events we handle
|
26
26
|
@attachEvents()
|
27
27
|
# Store some jQuery objects for further reference
|
28
|
-
@$
|
28
|
+
@$internal_link = $('#internal_link', @dialog_body)
|
29
29
|
@$element_anchor = $('#element_anchor', @dialog_body)
|
30
30
|
@$anchor_link = $('#anchor_link', @dialog_body)
|
31
|
-
@$
|
32
|
-
@$
|
31
|
+
@$external_link = $('#external_link', @dialog_body)
|
32
|
+
@$file_link = $('#file_link', @dialog_body)
|
33
33
|
@$overlay_tabs = $('#overlay_tabs', @dialog_body)
|
34
34
|
@$page_container = $('#page_selector_container')
|
35
|
+
@initAnchorLinks()
|
35
36
|
# if we edit an existing link
|
36
37
|
if @link_object
|
37
38
|
# we select the correct tab
|
38
39
|
@selectTab()
|
39
40
|
@initPageSelect()
|
40
|
-
|
41
|
+
return
|
41
42
|
|
42
43
|
# Attaches click events to several buttons in the link dialog.
|
43
44
|
attachEvents: ->
|
44
45
|
# The ok buttons
|
45
46
|
$('.create-link.button', @dialog_body).click (e) =>
|
46
47
|
@link_type = $(e.target).data('link-type')
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
url = @$external_url.val()
|
51
|
-
when 'file'
|
52
|
-
url = @$public_filename.val()
|
53
|
-
when 'anchor'
|
54
|
-
url = @$anchor_link.val()
|
55
|
-
else
|
56
|
-
url = @$page_urlname.val()
|
57
|
-
if @$element_anchor.val() != ''
|
58
|
-
url += "##{@$element_anchor.val()}"
|
48
|
+
url = $("##{@link_type}_link").val()
|
49
|
+
if @link_type == 'internal' && @$element_anchor.val() != ''
|
50
|
+
url += "##{@$element_anchor.val()}"
|
59
51
|
# Create the link
|
60
52
|
@createLink
|
61
53
|
url: url
|
@@ -67,7 +59,7 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
|
67
59
|
initPageSelect: ->
|
68
60
|
pageTemplate = HandlebarsTemplates.page
|
69
61
|
element_anchor_placeholder = @$element_anchor.attr('placeholder')
|
70
|
-
@$
|
62
|
+
@$internal_link.select2
|
71
63
|
placeholder: Alchemy.t('Search page')
|
72
64
|
allowClear: true
|
73
65
|
minimumInputLength: 3
|
@@ -142,7 +134,7 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
|
142
134
|
@setLink(options.url, options.title, options.target)
|
143
135
|
@close()
|
144
136
|
|
145
|
-
# Sets the link either in TinyMCE or on an
|
137
|
+
# Sets the link either in TinyMCE or on an Ingredient.
|
146
138
|
setLink: (url, title, target) ->
|
147
139
|
Alchemy.setElementDirty(@$link_object.closest('.element-editor'))
|
148
140
|
if @link_object.editor
|
@@ -162,7 +154,7 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
|
162
154
|
editor.selection.collapse()
|
163
155
|
true
|
164
156
|
|
165
|
-
# Sets a link on an
|
157
|
+
# Sets a link on an Ingredient (e.g. Picture).
|
166
158
|
setLinkFields: (url, title, target) ->
|
167
159
|
@link_value_field.value = url
|
168
160
|
@link_value_field.dispatchEvent(new Event("change"))
|
@@ -176,10 +168,10 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
|
176
168
|
|
177
169
|
# Selects the correct tab for link type and fills all fields.
|
178
170
|
selectTab: ->
|
179
|
-
# Creating an temporary anchor node if we are linking an
|
171
|
+
# Creating an temporary anchor node if we are linking an Picture Ingredient.
|
180
172
|
if (@link_object.nodeType)
|
181
173
|
@$link = @createTempLink()
|
182
|
-
# Restoring the bookmarked selection inside the TinyMCE of an
|
174
|
+
# Restoring the bookmarked selection inside the TinyMCE of an Richtext.
|
183
175
|
else if (@link_object.node.nodeName == 'A')
|
184
176
|
@$link = $(@link_object.node)
|
185
177
|
@link_object.selection.moveToBookmark(@link_object.bookmark)
|
@@ -192,27 +184,33 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
|
192
184
|
if @$link.hasClass('external')
|
193
185
|
# Handles an external link.
|
194
186
|
tab = $('#overlay_tab_external_link')
|
195
|
-
@$
|
187
|
+
@$external_link.val(@$link.attr('href'))
|
196
188
|
else if @$link.hasClass('file')
|
197
189
|
# Handles a file link.
|
198
190
|
tab = $('#overlay_tab_file_link')
|
199
|
-
@$
|
191
|
+
@$file_link.select2('val', @$link[0].pathname + @$link[0].search)
|
200
192
|
else if @$link.attr('href').match(/^#/)
|
201
193
|
# Handles an anchor link.
|
202
194
|
tab = $('#overlay_tab_anchor_link')
|
203
195
|
@$anchor_link.select2('val', @$link.attr('href'))
|
204
|
-
else
|
196
|
+
else if @$link.hasClass('internal')
|
205
197
|
# Handles an internal link.
|
206
198
|
tab = $('#overlay_tab_internal_link')
|
207
199
|
@initInternalLinkTab()
|
208
|
-
|
209
|
-
|
200
|
+
else
|
201
|
+
# Emit an event to allow extensions hook into the link overlay.
|
202
|
+
@$overlay_tabs.trigger 'SelectLinkTab.Alchemy',
|
203
|
+
link: @$link
|
204
|
+
if tab
|
205
|
+
# activate the tab jquery ui 1.10 style o.O
|
206
|
+
@$overlay_tabs.tabs('option', 'active', $('#overlay_tabs > div').index(tab))
|
207
|
+
return
|
210
208
|
|
211
209
|
# Handles actions for internal link tab.
|
212
210
|
initInternalLinkTab: ->
|
213
211
|
url = @$link.attr('href').split('#')
|
214
212
|
# update the url field
|
215
|
-
@$
|
213
|
+
@$internal_link.val(url[0])
|
216
214
|
# store the anchor
|
217
215
|
@$element_anchor.val(url[1])
|
218
216
|
|
@@ -251,7 +249,7 @@ class window.Alchemy.LinkDialog extends Alchemy.Dialog
|
|
251
249
|
|
252
250
|
# Public class methods
|
253
251
|
|
254
|
-
# Removes link from
|
252
|
+
# Removes link from Ingredient.
|
255
253
|
@removeLink = (link, parent_selector) ->
|
256
254
|
parent = document.querySelector(parent_selector)
|
257
255
|
link_value_field = parent.querySelector("[data-link-value]")
|