alchemy_cms 6.1.2 → 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 +22 -8
- data/Gemfile +1 -0
- data/Rakefile +13 -8
- data/alchemy_cms.gemspec +1 -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 +6 -4
- data/app/controllers/alchemy/messages_controller.rb +9 -9
- data/app/controllers/alchemy/pages_controller.rb +19 -28
- 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 -16
- 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 -8
- data/app/models/alchemy/picture/transformations.rb +0 -30
- data/app/models/alchemy/picture/url.rb +1 -1
- data/app/models/alchemy/picture.rb +12 -10
- 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 -2
- 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/_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/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 +98 -112
- 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/install/tasks.rb +7 -1
- data/lib/alchemy/permissions.rb +0 -13
- data/lib/alchemy/routing_constraints.rb +3 -3
- data/lib/alchemy/searchable_resource.rb +38 -0
- 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/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 +2 -3
- 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 -22
- data/lib/generators/alchemy/install/templates/elements.yml.tt +12 -12
- data/lib/non_stupid_digest_assets.rb +55 -0
- 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 +15 -154
- 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/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 -74
- 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
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,13 +1,27 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
4
|
-
|
5
|
-
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
-
|
10
|
-
-
|
3
|
+
## 7.0.0 (unreleased)
|
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))
|
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))
|
16
|
+
- Integrate non_stupid_digest_assets gem [#2430](https://github.com/AlchemyCMS/alchemy_cms/pull/2430) ([afdev82](https://github.com/afdev82))
|
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))
|
11
25
|
|
12
26
|
## 6.1.0 (2023-01-19)
|
13
27
|
|
data/Gemfile
CHANGED
@@ -19,6 +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 "jsbundling-rails", "~> 1.1"
|
22
23
|
|
23
24
|
if ENV["GITHUB_ACTIONS"]
|
24
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 && \
|
52
|
+
bin/rails javascript:install:esbuild && \
|
51
53
|
bin/rails g alchemy:install --skip --skip-demo-files --auto-accept --skip-db-create && \
|
52
|
-
|
53
|
-
RAILS_ENV=test bin/webpack && \
|
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,15 +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 "
|
49
|
-
gem.add_runtime_dependency "ransack", [">= 1.8", "< 4.0"]
|
48
|
+
gem.add_runtime_dependency "ransack", [">= 1.8", "< 5.0"]
|
50
49
|
gem.add_runtime_dependency "request_store", ["~> 1.2"]
|
51
50
|
gem.add_runtime_dependency "responders", [">= 2.0", "< 4.0"]
|
52
51
|
gem.add_runtime_dependency "sassc-rails", ["~> 2.1"]
|
53
52
|
gem.add_runtime_dependency "simple_form", [">= 4.0", "< 6"]
|
54
53
|
gem.add_runtime_dependency "sprockets", [">= 3.0", "< 5"]
|
55
54
|
gem.add_runtime_dependency "turbolinks", [">= 2.5"]
|
56
|
-
gem.add_runtime_dependency "webpacker", [">= 4.0", "< 6"]
|
57
55
|
|
58
56
|
gem.add_development_dependency "capybara", ["~> 3.0"]
|
59
57
|
gem.add_development_dependency "capybara-screenshot", ["~> 1.0"]
|
@@ -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]")
|
@@ -275,11 +275,10 @@
|
|
275
275
|
}
|
276
276
|
}
|
277
277
|
|
278
|
-
.element-
|
278
|
+
.element-body {
|
279
279
|
margin: 4px 8px;
|
280
280
|
}
|
281
281
|
|
282
|
-
.content_editor,
|
283
282
|
.ingredient-editor,
|
284
283
|
.picture_thumbnail {
|
285
284
|
width: 100%;
|
@@ -303,7 +302,7 @@
|
|
303
302
|
}
|
304
303
|
}
|
305
304
|
|
306
|
-
.element-
|
305
|
+
.element-body {
|
307
306
|
margin: 2 * $default-padding;
|
308
307
|
}
|
309
308
|
|
@@ -414,7 +413,7 @@
|
|
414
413
|
}
|
415
414
|
}
|
416
415
|
|
417
|
-
.
|
416
|
+
.ingredient-group {
|
418
417
|
width: 100%;
|
419
418
|
padding: $default-padding 0;
|
420
419
|
position: relative;
|
@@ -425,7 +424,7 @@
|
|
425
424
|
padding-bottom: 0;
|
426
425
|
}
|
427
426
|
|
428
|
-
.
|
427
|
+
.ingredient-group-header {
|
429
428
|
display: flex;
|
430
429
|
align-items: center;
|
431
430
|
justify-content: space-between;
|
@@ -434,22 +433,21 @@
|
|
434
433
|
padding: $default-padding 1px;
|
435
434
|
}
|
436
435
|
|
437
|
-
.
|
436
|
+
.ingredient-group-ingredients {
|
438
437
|
display: none;
|
439
438
|
}
|
440
439
|
|
441
440
|
&.expanded {
|
442
|
-
.
|
441
|
+
.ingredient-group-ingredients {
|
443
442
|
display: block;
|
444
443
|
}
|
445
444
|
|
446
|
-
.
|
445
|
+
.ingredient-group-expand {
|
447
446
|
@extend .fa-angle-up;
|
448
447
|
}
|
449
448
|
}
|
450
449
|
}
|
451
450
|
|
452
|
-
.element-content-editors,
|
453
451
|
.element-ingredient-editors {
|
454
452
|
display: flex;
|
455
453
|
flex-wrap: wrap;
|
@@ -467,7 +465,7 @@
|
|
467
465
|
min-height: 100px;
|
468
466
|
}
|
469
467
|
|
470
|
-
.
|
468
|
+
.ingredient_link_buttons {
|
471
469
|
display: flex;
|
472
470
|
position: absolute;
|
473
471
|
bottom: 2 * $default-margin;
|
@@ -495,7 +493,7 @@
|
|
495
493
|
background-color: $form-field-disabled-bg-color;
|
496
494
|
}
|
497
495
|
|
498
|
-
&.linked.link-
|
496
|
+
&.linked.link-ingredient {
|
499
497
|
@include linked-button(
|
500
498
|
$border-radius: 0,
|
501
499
|
$line-height: 30px,
|
@@ -507,7 +505,7 @@
|
|
507
505
|
}
|
508
506
|
}
|
509
507
|
|
510
|
-
&.linked.unlink-
|
508
|
+
&.linked.unlink-ingredient {
|
511
509
|
@include linked-button(
|
512
510
|
$border-radius: 0 $default-border-radius $default-border-radius 0,
|
513
511
|
$line-height: 30px,
|
@@ -519,7 +517,7 @@
|
|
519
517
|
}
|
520
518
|
}
|
521
519
|
|
522
|
-
&.unlink-
|
520
|
+
&.unlink-ingredient {
|
523
521
|
border-left-width: 0;
|
524
522
|
@extend .right-rounded-border;
|
525
523
|
}
|
@@ -561,7 +559,6 @@
|
|
561
559
|
}
|
562
560
|
}
|
563
561
|
|
564
|
-
.essence_picture,
|
565
562
|
.ingredient-editor.picture {
|
566
563
|
position: relative;
|
567
564
|
|
@@ -586,7 +583,7 @@
|
|
586
583
|
}
|
587
584
|
}
|
588
585
|
|
589
|
-
.
|
586
|
+
.picture_ingredient_css_class {
|
590
587
|
position: absolute;
|
591
588
|
z-index: 1;
|
592
589
|
bottom: 24px;
|
@@ -639,9 +636,6 @@
|
|
639
636
|
}
|
640
637
|
}
|
641
638
|
|
642
|
-
.content_editor.essence_audio,
|
643
|
-
.content_editor.essence_file,
|
644
|
-
.content_editor.essence_video,
|
645
639
|
.ingredient-editor.audio,
|
646
640
|
.ingredient-editor.file,
|
647
641
|
.ingredient-editor.video {
|
@@ -681,8 +675,7 @@
|
|
681
675
|
}
|
682
676
|
}
|
683
677
|
|
684
|
-
.file_tools
|
685
|
-
.essence_file_tools {
|
678
|
+
.file_tools {
|
686
679
|
display: flex;
|
687
680
|
align-items: center;
|
688
681
|
margin-left: auto;
|
@@ -717,7 +710,6 @@ select.long {
|
|
717
710
|
padding: 0;
|
718
711
|
}
|
719
712
|
|
720
|
-
.content_editor,
|
721
713
|
.ingredient-editor {
|
722
714
|
width: 100%;
|
723
715
|
padding: $default-padding 0;
|
@@ -828,7 +820,6 @@ select.long {
|
|
828
820
|
}
|
829
821
|
}
|
830
822
|
|
831
|
-
&.essence_select,
|
832
823
|
&.select {
|
833
824
|
label {
|
834
825
|
margin-bottom: 2 * $default-margin;
|
@@ -843,8 +834,7 @@ select.long {
|
|
843
834
|
}
|
844
835
|
}
|
845
836
|
|
846
|
-
select.ingredient-editor-select
|
847
|
-
select.essence_editor_select {
|
837
|
+
select.ingredient-editor-select {
|
848
838
|
border-radius: $default-border-radius;
|
849
839
|
background: white;
|
850
840
|
border: 1px solid $button-border-color;
|
@@ -871,13 +861,11 @@ select.long {
|
|
871
861
|
}
|
872
862
|
}
|
873
863
|
|
874
|
-
&.essence_picture,
|
875
864
|
&.picture {
|
876
865
|
width: 50%;
|
877
866
|
padding-left: 1px; // Compensate the box shadow
|
878
867
|
padding-right: $default-padding;
|
879
868
|
|
880
|
-
+ .essence_picture,
|
881
869
|
+ .picture {
|
882
870
|
padding-left: $default-padding;
|
883
871
|
padding-right: 1px; // Compensate the box shadow
|
@@ -885,10 +873,6 @@ select.long {
|
|
885
873
|
}
|
886
874
|
}
|
887
875
|
|
888
|
-
.content_rtf_text_area {
|
889
|
-
display: none;
|
890
|
-
}
|
891
|
-
|
892
876
|
div.pictures_for_element {
|
893
877
|
overflow: auto;
|
894
878
|
margin-top: 4px;
|
@@ -898,7 +882,7 @@ textarea.has_tinymce {
|
|
898
882
|
visibility: hidden;
|
899
883
|
}
|
900
884
|
|
901
|
-
.
|
885
|
+
.ingredient-editor.html textarea {
|
902
886
|
font-family: $mono-font-family;
|
903
887
|
resize: vertical;
|
904
888
|
font-size: $form-field-font-size;
|
@@ -928,8 +912,6 @@ textarea.has_tinymce {
|
|
928
912
|
}
|
929
913
|
}
|
930
914
|
|
931
|
-
.content_editor .hint-with-icon,
|
932
|
-
.content_editor .with-hint,
|
933
915
|
.ingredient-editor .hint-with-icon,
|
934
916
|
.ingredient-editor .with-hint,
|
935
917
|
.element-handle .hint-with-icon {
|
@@ -946,7 +928,7 @@ textarea.has_tinymce {
|
|
946
928
|
}
|
947
929
|
|
948
930
|
.is-fixed {
|
949
|
-
&.with-
|
931
|
+
&.with-ingredients {
|
950
932
|
> .element-footer {
|
951
933
|
border-top: 0;
|
952
934
|
border-bottom: 1px solid $medium-gray;
|
@@ -992,7 +974,6 @@ textarea.has_tinymce {
|
|
992
974
|
}
|
993
975
|
|
994
976
|
.ingredient-date--label,
|
995
|
-
.essence_date--label,
|
996
977
|
.edit-ingredient-anchor-link {
|
997
978
|
position: absolute;
|
998
979
|
right: 2 * $default-padding;
|
@@ -35,9 +35,9 @@
|
|
35
35
|
}
|
36
36
|
|
37
37
|
// The container of the rendered node is slightly larger than other a line of
|
38
|
-
// text, as it would be for the Alchemy::
|
38
|
+
// text, as it would be for the Alchemy::Ingredients::Page. Reducing the padding here from 0.6em
|
39
39
|
// to 0.4em centers the content nicely.
|
40
|
-
.
|
40
|
+
.ingredient-editor.node {
|
41
41
|
.select2-container.alchemy_selectbox .select2-choice {
|
42
42
|
padding: 0.4em 0.75em;
|
43
43
|
}
|