@plone/volto 17.0.0-alpha.2 → 17.0.0-alpha.21
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.
- package/.yarn/install-state.gz +0 -0
- package/CHANGELOG.md +549 -15
- package/CONTRIBUTING.md +1 -1
- package/README.md +11 -14
- package/addon-registry.js +34 -0
- package/create-theme-addons-loader.js +79 -0
- package/cypress/support/commands.js +58 -5
- package/cypress/support/e2e.js +1 -2
- package/cypress/support/volto-slate.js +4 -5
- package/docker-compose.yml +1 -1
- package/locales/ca/LC_MESSAGES/volto.po +282 -7
- package/locales/ca.json +1 -1
- package/locales/de/LC_MESSAGES/volto.po +301 -26
- package/locales/de.json +1 -1
- package/locales/en/LC_MESSAGES/volto.po +281 -6
- package/locales/en.json +1 -1
- package/locales/es/LC_MESSAGES/volto.po +291 -16
- package/locales/es.json +1 -1
- package/locales/eu/LC_MESSAGES/volto.po +282 -7
- package/locales/eu.json +1 -1
- package/locales/fi/LC_MESSAGES/volto.po +4891 -0
- package/locales/fi.json +1 -1
- package/locales/fr/LC_MESSAGES/volto.po +282 -7
- package/locales/fr.json +1 -1
- package/locales/it/LC_MESSAGES/volto.po +284 -9
- package/locales/it.json +1 -1
- package/locales/ja/LC_MESSAGES/volto.po +282 -7
- package/locales/ja.json +1 -1
- package/locales/nl/LC_MESSAGES/volto.po +937 -650
- package/locales/nl.json +1 -1
- package/locales/pt/LC_MESSAGES/volto.po +282 -7
- package/locales/pt.json +1 -1
- package/locales/pt_BR/LC_MESSAGES/volto.po +291 -16
- package/locales/pt_BR.json +1 -1
- package/locales/ro/LC_MESSAGES/volto.po +282 -7
- package/locales/ro.json +1 -1
- package/locales/volto.pot +282 -7
- package/locales/zh_CN/LC_MESSAGES/volto.po +282 -7
- package/locales/zh_CN.json +1 -1
- package/package.json +8 -6
- package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +1 -1
- package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +1 -1
- package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +1 -1
- package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +1 -1
- package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +1 -1
- package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +1 -1
- package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +1 -1
- package/packages/volto-slate/build/messages/src/elementEditor/messages.json +1 -1
- package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +1 -1
- package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +1 -1
- package/packages/volto-slate/package.json +1 -1
- package/packages/volto-slate/src/actions/index.js +1 -1
- package/packages/volto-slate/src/blocks/Table/TableBlockEdit.jsx +21 -212
- package/packages/volto-slate/src/blocks/Table/schema.js +122 -0
- package/packages/volto-slate/src/blocks/Text/DefaultTextBlockEditor.jsx +8 -3
- package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +4 -3
- package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +20 -16
- package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +3 -1
- package/packages/volto-slate/src/blocks/Text/index.js +10 -2
- package/packages/volto-slate/src/editor/config.jsx +5 -4
- package/packages/volto-slate/src/editor/deserialize.js +0 -1
- package/packages/volto-slate/src/editor/index.js +4 -4
- package/packages/volto-slate/src/editor/less/slate.less +28 -0
- package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +14 -4
- package/packages/volto-slate/src/editor/plugins/StyleMenu/utils.js +14 -5
- package/packages/volto-slate/src/editor/render.jsx +68 -8
- package/packages/volto-slate/src/editor/ui/SlateContextToolbar.jsx +2 -2
- package/packages/volto-slate/src/editor/ui/index.js +15 -15
- package/packages/volto-slate/src/index.js +2 -2
- package/packages/volto-slate/src/utils/blocks.js +7 -0
- package/packages/volto-slate/src/widgets/RichTextWidget.jsx +15 -8
- package/razzle.config.js +28 -0
- package/src/actions/index.js +6 -0
- package/src/actions/language/language.js +9 -8
- package/src/actions/querystringsearch/querystringsearch.js +20 -14
- package/src/actions/relations/rebuild.js +25 -0
- package/src/actions/relations/relations.js +86 -0
- package/src/actions/relations/relations.test.js +15 -0
- package/src/components/index.js +3 -0
- package/src/components/manage/Add/Add.jsx +2 -2
- package/src/components/manage/AnchorPlugin/index.jsx +2 -2
- package/src/components/manage/AnchorPlugin/utils/EditorUtils.js +3 -1
- package/src/components/manage/BlockChooser/BlockChooser.jsx +14 -5
- package/src/components/manage/BlockChooser/BlockChooser.test.jsx +5 -0
- package/src/components/manage/Blocks/Block/BlocksForm.jsx +19 -2
- package/src/components/manage/Blocks/Block/Edit.jsx +1 -1
- package/src/components/manage/Blocks/Block/Style.jsx +2 -2
- package/src/components/manage/Blocks/Container/Data.jsx +32 -0
- package/src/components/manage/Blocks/Container/Edit.jsx +174 -0
- package/src/components/manage/Blocks/Container/EditBlockWrapper.jsx +120 -0
- package/src/components/manage/Blocks/Container/NewBlockAddButton.jsx +84 -0
- package/src/components/manage/Blocks/Container/SimpleContainerToolbar.jsx +54 -0
- package/src/components/manage/Blocks/Grid/Edit.jsx +33 -0
- package/src/components/manage/Blocks/Grid/View.jsx +43 -0
- package/src/components/manage/Blocks/Grid/adapter.js +14 -0
- package/src/components/manage/Blocks/Grid/grid-1.svg +6 -0
- package/src/components/manage/Blocks/Grid/grid-2.svg +9 -0
- package/src/components/manage/Blocks/Grid/grid-3.svg +10 -0
- package/src/components/manage/Blocks/Grid/grid-4.svg +11 -0
- package/src/components/manage/Blocks/Grid/schema.js +35 -0
- package/src/components/manage/Blocks/Grid/templates.js +47 -0
- package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +6 -1
- package/src/components/manage/Blocks/Image/Edit.jsx +51 -12
- package/src/components/manage/Blocks/Image/Edit.test.jsx +2 -0
- package/src/components/manage/Blocks/Image/ImageSidebar.jsx +66 -16
- package/src/components/manage/Blocks/Image/View.jsx +25 -5
- package/src/components/manage/Blocks/Image/View.test.jsx +20 -0
- package/src/components/manage/Blocks/Image/schema.js +12 -9
- package/src/components/manage/Blocks/Image/utils.js +14 -0
- package/src/components/manage/Blocks/LeadImage/Edit.jsx +32 -10
- package/src/components/manage/Blocks/LeadImage/Edit.test.jsx +11 -1
- package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +28 -9
- package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.test.jsx +8 -2
- package/src/components/manage/Blocks/LeadImage/View.jsx +50 -38
- package/src/components/manage/Blocks/LeadImage/View.test.jsx +11 -1
- package/src/components/manage/Blocks/Listing/DefaultTemplate.jsx +18 -3
- package/src/components/manage/Blocks/Listing/Edit.jsx +0 -14
- package/src/components/manage/Blocks/Listing/ListingBody.jsx +30 -8
- package/src/components/manage/Blocks/Listing/ListingBody.test.jsx +20 -0
- package/src/components/manage/Blocks/Listing/SummaryTemplate.jsx +1 -1
- package/src/components/manage/Blocks/Listing/getAsyncData.js +9 -3
- package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +26 -18
- package/src/components/manage/Blocks/Search/SearchBlockEdit.jsx +5 -4
- package/src/components/manage/Blocks/Search/SearchBlockView.jsx +2 -1
- package/src/components/manage/Blocks/Search/components/DateRangeFacet.jsx +4 -1
- package/src/components/manage/Blocks/Search/components/Facets.jsx +64 -4
- package/src/components/manage/Blocks/Search/components/SearchInput.jsx +9 -2
- package/src/components/manage/Blocks/Search/components/index.js +13 -13
- package/src/components/manage/Blocks/Search/hocs/index.js +2 -2
- package/src/components/manage/Blocks/Search/hocs/withQueryString.jsx +2 -2
- package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +43 -15
- package/src/components/manage/Blocks/Search/layout/LeftColumnFacets.jsx +17 -5
- package/src/components/manage/Blocks/Search/layout/RightColumnFacets.jsx +17 -5
- package/src/components/manage/Blocks/Search/layout/TopSideFacets.jsx +21 -5
- package/src/components/manage/Blocks/Search/schema.js +16 -1
- package/src/components/manage/Blocks/Teaser/Body.jsx +0 -1
- package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +5 -10
- package/src/components/manage/Blocks/Teaser/schema.js +5 -0
- package/src/components/manage/Blocks/Title/View.jsx +15 -5
- package/src/components/manage/Blocks/Title/View.test.jsx +16 -1
- package/src/components/manage/Blocks/ToC/Schema.jsx +5 -1
- package/src/components/manage/Blocks/ToC/View.jsx +8 -1
- package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +17 -4
- package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +148 -10
- package/src/components/manage/Blocks/ToC/variations/index.js +3 -1
- package/src/components/manage/Contents/Contents.jsx +47 -32
- package/src/components/manage/Contents/ContentsItem.jsx +6 -0
- package/src/components/manage/Contents/ContentsUploadModal.jsx +10 -5
- package/src/components/manage/Controlpanels/AddonsControlpanel.jsx +3 -3
- package/src/components/manage/Controlpanels/Controlpanels.jsx +199 -224
- package/src/components/manage/Controlpanels/Controlpanels.test.jsx +46 -7
- package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +66 -0
- package/src/components/manage/Controlpanels/Relations/Relations.jsx +114 -0
- package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +479 -0
- package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +531 -0
- package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +3 -3
- package/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx +51 -82
- package/src/components/manage/Controlpanels/Users/UserGroupMembershipMatrix.jsx +79 -75
- package/src/components/manage/DragDropList/DragDropList.jsx +18 -13
- package/src/components/manage/Form/Form.jsx +5 -3
- package/src/components/manage/Form/InlineForm.jsx +39 -9
- package/src/components/manage/Form/InlineFormState.js +8 -0
- package/src/components/manage/History/History.jsx +11 -1
- package/src/components/manage/LinksToItem/LinksToItem.jsx +209 -0
- package/src/components/manage/LinksToItem/LinksToItem.test.jsx +97 -0
- package/src/components/manage/Multilingual/CreateTranslation.jsx +2 -2
- package/src/components/manage/Multilingual/TranslationObject.jsx +4 -3
- package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
- package/src/components/manage/Preferences/PersonalPreferences.jsx +2 -2
- package/src/components/manage/Sharing/Sharing.jsx +5 -1
- package/src/components/manage/Sidebar/AlignBlock.jsx +1 -1
- package/src/components/manage/TemplateChooser/TemplateChooser.jsx +38 -0
- package/src/components/manage/TemplateChooser/TemplateChooser.test.jsx +34 -0
- package/src/components/manage/TemplateChooser/template.svg +10 -0
- package/src/components/manage/Toast/Toast.jsx +2 -2
- package/src/components/manage/Toolbar/More.jsx +15 -0
- package/src/components/manage/Toolbar/Types.jsx +2 -2
- package/src/components/manage/UniversalLink/UniversalLink.jsx +2 -6
- package/src/components/manage/UniversalLink/UniversalLink.test.jsx +36 -0
- package/src/components/manage/Widgets/ColorPickerWidget.jsx +6 -1
- package/src/components/manage/Widgets/DatetimeWidget.jsx +9 -5
- package/src/components/manage/Widgets/FileWidget.jsx +2 -1
- package/src/components/manage/Widgets/ObjectListWidget.jsx +3 -8
- package/src/components/manage/Widgets/RecurrenceWidget/ByDayField.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/MonthOfTheYearField.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/Occurences.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +8 -3
- package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthField.jsx +2 -1
- package/src/components/manage/Widgets/SelectUtils.js +1 -1
- package/src/components/manage/Widgets/SelectWidget.jsx +1 -1
- package/src/components/theme/Anontools/Anontools.jsx +44 -72
- package/src/components/theme/Anontools/Anontools.stories.jsx +16 -6
- package/src/components/theme/Anontools/Anontools.test.jsx +16 -2
- package/src/components/theme/Breadcrumbs/Breadcrumbs.jsx +52 -99
- package/src/components/theme/Breadcrumbs/Breadcrumbs.stories.jsx +14 -13
- package/src/components/theme/Comments/CommentEditModal.jsx +63 -115
- package/src/components/theme/Component/Component.jsx +1 -1
- package/src/components/theme/ContactForm/ContactForm.jsx +108 -192
- package/src/components/theme/ContactForm/ContactForm.stories.jsx +1 -1
- package/src/components/theme/ContactForm/ContactForm.test.jsx +2 -3
- package/src/components/theme/Footer/Footer.jsx +2 -13
- package/src/components/theme/Header/Header.jsx +37 -63
- package/src/components/theme/Header/Header.test.jsx +18 -0
- package/src/components/theme/Icon/Icon.jsx +2 -2
- package/src/components/theme/Image/Image.jsx +96 -0
- package/src/components/theme/Image/Image.test.jsx +125 -0
- package/src/components/theme/LanguageSelector/LanguageSelector.js +8 -3
- package/src/components/theme/Login/Login.jsx +1 -0
- package/src/components/theme/Logo/Logo.jsx +4 -1
- package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +2 -2
- package/src/components/theme/Navigation/NavItem.jsx +4 -2
- package/src/components/theme/NotFound/NotFound.jsx +55 -41
- package/src/components/theme/PasswordReset/PasswordReset.jsx +7 -4
- package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +1 -1
- package/src/components/theme/PreviewImage/PreviewImage.jsx +25 -14
- package/src/components/theme/PreviewImage/PreviewImage.test.js +39 -16
- package/src/components/theme/SearchWidget/SearchWidget.jsx +38 -98
- package/src/components/theme/Sitemap/Sitemap.jsx +5 -3
- package/src/components/theme/View/AlbumView.jsx +20 -16
- package/src/components/theme/View/DefaultView.jsx +1 -1
- package/src/components/theme/View/EventDatesInfo.jsx +2 -1
- package/src/components/theme/View/EventView.jsx +36 -25
- package/src/components/theme/View/FileView.jsx +23 -18
- package/src/components/theme/View/ImageView.jsx +40 -32
- package/src/components/theme/View/ImageView.test.jsx +4 -0
- package/src/components/theme/View/LinkView.jsx +53 -78
- package/src/components/theme/View/ListingView.jsx +36 -28
- package/src/components/theme/View/NewsItemView.jsx +16 -17
- package/src/components/theme/View/RenderBlocks.jsx +56 -21
- package/src/components/theme/View/RenderEmptyBlock.jsx +5 -0
- package/src/components/theme/View/SummaryView.jsx +49 -39
- package/src/components/theme/View/TabularView.jsx +59 -53
- package/src/components/theme/Widgets/DateWidget.jsx +2 -1
- package/src/components/theme/Widgets/DatetimeWidget.jsx +2 -1
- package/src/components/theme/Widgets/RelationsWidget.jsx +13 -11
- package/src/config/Blocks.jsx +46 -0
- package/src/config/Components.jsx +2 -1
- package/src/config/ControlPanels.js +2 -0
- package/src/config/NonContentRoutes.jsx +1 -0
- package/src/config/RichTextEditor/Blocks.jsx +2 -2
- package/src/config/RichTextEditor/FromHTML.jsx +2 -2
- package/src/config/RichTextEditor/Styles.jsx +1 -1
- package/src/config/Widgets.jsx +2 -0
- package/src/config/index.js +24 -0
- package/src/config/server.js +2 -0
- package/src/constants/ActionTypes.js +4 -0
- package/src/constants/Indexes.js +3 -1
- package/src/constants/Languages.js +8 -4
- package/src/express-middleware/devproxy.js +1 -1
- package/src/express-middleware/files.js +3 -3
- package/src/express-middleware/images.js +4 -4
- package/src/express-middleware/ok.js +16 -0
- package/src/express-middleware/robotstxt.js +1 -1
- package/src/express-middleware/sitemap.js +37 -5
- package/src/express-middleware/static.js +3 -3
- package/src/helpers/Api/Api.js +1 -1
- package/src/helpers/Blocks/Blocks.js +48 -0
- package/src/helpers/Blocks/Blocks.test.js +79 -0
- package/src/helpers/Extensions/index.js +2 -1
- package/src/helpers/Extensions/withBlockSchemaEnhancer.js +15 -11
- package/src/helpers/Extensions/withBlockSchemaEnhancer.test.js +145 -0
- package/src/helpers/FormValidation/FormValidation.js +40 -2
- package/src/helpers/FormValidation/FormValidation.test.js +73 -0
- package/src/helpers/Html/Html.jsx +3 -1
- package/src/helpers/Html/Html.test.jsx +5 -0
- package/src/helpers/MessageLabels/MessageLabels.js +80 -0
- package/src/helpers/Robots/Robots.js +24 -6
- package/src/helpers/ScrollToTop/ScrollToTop.jsx +5 -3
- package/src/helpers/Sitemap/Sitemap.js +44 -2
- package/src/helpers/Url/Url.js +49 -7
- package/src/helpers/Url/Url.test.js +67 -0
- package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +191 -0
- package/src/helpers/Utils/Utils.js +63 -13
- package/src/helpers/Utils/Utils.test.js +4 -4
- package/src/helpers/Utils/usePagination.js +67 -14
- package/src/helpers/Utils/usePagination.test.js +115 -0
- package/src/helpers/index.js +20 -10
- package/src/hooks/client/useClient.js +11 -0
- package/src/hooks/clipboard/useClipboard.js +26 -0
- package/src/hooks/index.js +2 -0
- package/src/icons/grid-block.svg +11 -0
- package/src/middleware/Api.test.js +54 -0
- package/src/middleware/api.js +24 -6
- package/src/middleware/index.js +2 -2
- package/src/reducers/actions/actions.js +8 -6
- package/src/reducers/actions/actions.test.js +70 -0
- package/src/reducers/breadcrumbs/breadcrumbs.js +1 -1
- package/src/reducers/index.js +2 -0
- package/src/reducers/navigation/navigation.js +1 -1
- package/src/reducers/relations/relations.js +173 -0
- package/src/reducers/types/types.js +1 -1
- package/src/routes.js +14 -0
- package/src/server.jsx +28 -23
- package/src/start-server.js +2 -2
- package/test-setup-config.js +11 -1
- package/theme/themes/pastanaga/extras/blocks.less +5 -1
- package/theme/themes/pastanaga/extras/contents.less +1 -0
- package/theme/themes/pastanaga/extras/grid.less +426 -0
- package/theme/themes/pastanaga/extras/main.less +8 -1
- package/theme/themes/pastanaga/extras/search.less +6 -0
- package/theme/themes/pastanaga/extras/sidebar.less +4 -0
- package/theme/themes/pastanaga/extras/toc.less +29 -0
- package/theme/themes/pastanaga/extras/userscontrolpanel.less +99 -76
- package/.changelog.draft +0 -31
- package/.editorconfig +0 -36
- package/.storybook/main.js +0 -127
- package/.storybook/manager.js +0 -15
- package/.storybook/preview.js +0 -21
- package/.storybook/static/previewImage.svg +0 -48
- package/.yarnrc.yml +0 -5
- package/jsdoc.json +0 -16
- package/netlify.toml +0 -5
- package/pyvenv.cfg +0 -3
- package/share/man/man1/ttx.1 +0 -225
- package/src/components/manage/Blocks/Teaser/utils.js +0 -44
- package/src/components/manage/Blocks/Teaser/utils.test.jsx +0 -229
- package/src/components/theme/Header/Header.md +0 -27
- package/towncrier.toml +0 -33
package/CONTRIBUTING.md
CHANGED
package/README.md
CHANGED
|
@@ -86,7 +86,7 @@ cd myvoltoproject
|
|
|
86
86
|
You can bootstrap a ready Docker Plone container with all the dependencies and ready for Volto use. We recommend to use the Plone docker builds based in `pip` [plone/plone-backend](https://github.com/plone/plone-backend) image:
|
|
87
87
|
|
|
88
88
|
```shell
|
|
89
|
-
docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.
|
|
89
|
+
docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.5
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
or as an alternative if you have experience with Plone and you have all the
|
|
@@ -182,23 +182,20 @@ Please create a new [issue](https://github.com/plone/volto/issues/new) or [pull
|
|
|
182
182
|
|
|
183
183
|
## Documentation
|
|
184
184
|
|
|
185
|
-
You can find the latest (in-progress) documentation in [https://6.
|
|
185
|
+
You can find the latest (in-progress) documentation in [https://6.docs.plone.org/](https://6.docs.plone.org/volto/index.html)
|
|
186
186
|
|
|
187
187
|
## Training
|
|
188
188
|
|
|
189
|
-
On the [Plone
|
|
190
|
-
Volto-dedicated open training materials, plus React and other
|
|
191
|
-
JavaScript-centered trainings.
|
|
189
|
+
On the [Plone Training website](https://training.plone.org), you'll find Volto-dedicated training materials, plus other JavaScript-centered trainings.
|
|
192
190
|
|
|
193
191
|
- [Mastering Plone 6 Development](https://training.plone.org/mastering-plone/)
|
|
194
192
|
The comprehensive training on Plone 6 with best practice tips for developers and integrators.
|
|
195
|
-
- [Volto](https://training.plone.org/5/volto/index.html)
|
|
196
|
-
A detailed training on how to create your own website using Volto frontend.
|
|
197
193
|
- [Volto Hands-On](https://training.plone.org/voltohandson/index.html)
|
|
198
194
|
- [Volto Add-ons Development](https://training.plone.org/voltoaddons/index.html)
|
|
199
|
-
- [
|
|
200
|
-
- [
|
|
201
|
-
- [
|
|
195
|
+
- [Effective Volto](https://training.plone.org/effective-volto/index.html)
|
|
196
|
+
- [Plone Deployment](https://training.plone.org/plone-deployment/index.html)
|
|
197
|
+
- [Volto](https://2022.training.plone.org/volto/index.html) (archived)
|
|
198
|
+
- [JavaScript For Plone Developers](https://2022.training.plone.org/javascript/index.html) (archived)
|
|
202
199
|
|
|
203
200
|
## Talks
|
|
204
201
|
|
|
@@ -245,7 +242,7 @@ We do not guarantee that deprecated browsers (e.g., Internet Explorer 11) are su
|
|
|
245
242
|
|
|
246
243
|
## Upgrades
|
|
247
244
|
|
|
248
|
-
You can find the upgrade guide here: https://6.
|
|
245
|
+
You can find the upgrade guide here: https://6.docs.plone.org/volto/upgrade-guide/index.html
|
|
249
246
|
|
|
250
247
|
## Volto Development
|
|
251
248
|
|
|
@@ -269,7 +266,7 @@ yarn
|
|
|
269
266
|
Either using a Docker command:
|
|
270
267
|
|
|
271
268
|
```shell
|
|
272
|
-
docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.
|
|
269
|
+
docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.5
|
|
273
270
|
```
|
|
274
271
|
|
|
275
272
|
or using the convenience makefile command:
|
|
@@ -320,11 +317,11 @@ yarn test
|
|
|
320
317
|
|
|
321
318
|
Here you can find a guide on how acceptance testing is done in Volto:
|
|
322
319
|
|
|
323
|
-
https://6.
|
|
320
|
+
https://6.docs.plone.org/volto/developer-guidelines/acceptance-tests.html
|
|
324
321
|
|
|
325
322
|
## Translations
|
|
326
323
|
|
|
327
|
-
If you would like contribute to translate Volto into several languages, please, read the [Internationalization (i18n) guide](https://6.
|
|
324
|
+
If you would like contribute to translate Volto into several languages, please, read the [Internationalization (i18n) guide](https://6.docs.plone.org/volto/recipes/i18n.html).
|
|
328
325
|
|
|
329
326
|
## Contributors
|
|
330
327
|
|
package/addon-registry.js
CHANGED
|
@@ -130,6 +130,11 @@ class AddonConfigurationRegistry {
|
|
|
130
130
|
this.packages = {};
|
|
131
131
|
this.customizations = new Map();
|
|
132
132
|
|
|
133
|
+
// Theme from a package.json key, from volto.config.js or from an ENV VAR
|
|
134
|
+
// Programatically via volto.config.js wins or the ENV VAR if present
|
|
135
|
+
this.theme =
|
|
136
|
+
packageJson.theme || this.voltoConfigJS.theme || process.env.THEME;
|
|
137
|
+
|
|
133
138
|
this.initDevelopmentPackages();
|
|
134
139
|
this.initPublishedPackages();
|
|
135
140
|
this.initAddonsFromEnvVar();
|
|
@@ -354,6 +359,35 @@ class AddonConfigurationRegistry {
|
|
|
354
359
|
.filter((e) => e);
|
|
355
360
|
}
|
|
356
361
|
|
|
362
|
+
getCustomThemeAddons() {
|
|
363
|
+
const customThemeAddonsInfo = {
|
|
364
|
+
variables: [],
|
|
365
|
+
main: [],
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
this.getAddonDependencies().forEach((addon) => {
|
|
369
|
+
const normalizedAddonName = addon.split(':')[0];
|
|
370
|
+
// We have two possible insertion points, variables and main
|
|
371
|
+
|
|
372
|
+
const customThemeVariables = `${this.packages[normalizedAddonName].modulePath}/theme/_variables.scss`;
|
|
373
|
+
const customThemeMain = `${this.packages[normalizedAddonName].modulePath}/theme/_main.scss`;
|
|
374
|
+
if (
|
|
375
|
+
fs.existsSync(customThemeVariables) &&
|
|
376
|
+
normalizedAddonName !== this.theme
|
|
377
|
+
) {
|
|
378
|
+
customThemeAddonsInfo.variables.push(normalizedAddonName);
|
|
379
|
+
}
|
|
380
|
+
if (
|
|
381
|
+
fs.existsSync(customThemeMain) &&
|
|
382
|
+
normalizedAddonName !== this.theme
|
|
383
|
+
) {
|
|
384
|
+
customThemeAddonsInfo.main.push(normalizedAddonName);
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
return customThemeAddonsInfo;
|
|
389
|
+
}
|
|
390
|
+
|
|
357
391
|
/**
|
|
358
392
|
* Returns a mapping name:diskpath to be uses in webpack's resolve aliases
|
|
359
393
|
*/
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const tmp = require('tmp');
|
|
4
|
+
const cryptoRandomString = require('crypto-random-string');
|
|
5
|
+
|
|
6
|
+
const titleCase = (w) => w.slice(0, 1).toUpperCase() + w.slice(1, w.length);
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* Transforms a package name to javascript variable name
|
|
10
|
+
*/
|
|
11
|
+
function nameFromPackage(name) {
|
|
12
|
+
name =
|
|
13
|
+
name.replace(/[@~./\\:\s]/gi, '') ||
|
|
14
|
+
cryptoRandomString({ length: 10, characters: 'abcdefghijk' });
|
|
15
|
+
return name
|
|
16
|
+
.split('-')
|
|
17
|
+
.map((w, i) => (i > 0 ? titleCase(w) : w))
|
|
18
|
+
.join('');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* Creates a static file with code necessary to load the addons configuration
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
function getAddonsLoaderCode(name, customThemeAddons = []) {
|
|
26
|
+
let buf = `/*
|
|
27
|
+
This file is autogenerated. Don't change it directly.
|
|
28
|
+
Add a ./theme/_${name}.scss in your add-on to load your theme customizations in the current theme.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
`;
|
|
32
|
+
customThemeAddons.forEach((addon) => {
|
|
33
|
+
const customization = `${addon}/theme/${name}`;
|
|
34
|
+
const line = `@import '${customization}';\n`;
|
|
35
|
+
buf += line;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
return buf;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = ({ main, variables }) => {
|
|
42
|
+
// const addonsThemeLoaderVariablesPath = path.join(
|
|
43
|
+
// process.cwd(),
|
|
44
|
+
// 'src',
|
|
45
|
+
// '_variables.scss',
|
|
46
|
+
// );
|
|
47
|
+
// const addonsThemeLoaderMainPath = path.join(
|
|
48
|
+
// process.cwd(),
|
|
49
|
+
// 'src',
|
|
50
|
+
// '_main.scss',
|
|
51
|
+
// );
|
|
52
|
+
|
|
53
|
+
// const addonsThemeLoaderVariablesPath = path.join(
|
|
54
|
+
// process.cwd(),
|
|
55
|
+
// 'src',
|
|
56
|
+
// '_variables.scss',
|
|
57
|
+
// );
|
|
58
|
+
// const addonsThemeLoaderMainPath = path.join(
|
|
59
|
+
// process.cwd(),
|
|
60
|
+
// 'src',
|
|
61
|
+
// '_main.scss',
|
|
62
|
+
// );
|
|
63
|
+
|
|
64
|
+
const addonsThemeLoaderVariablesPath = tmp.tmpNameSync({ postfix: '.scss' });
|
|
65
|
+
const addonsThemeLoaderMainPath = tmp.tmpNameSync({ postfix: '.scss' });
|
|
66
|
+
fs.writeFileSync(
|
|
67
|
+
addonsThemeLoaderVariablesPath,
|
|
68
|
+
new Buffer.from(getAddonsLoaderCode('variables', variables)),
|
|
69
|
+
);
|
|
70
|
+
fs.writeFileSync(
|
|
71
|
+
addonsThemeLoaderMainPath,
|
|
72
|
+
new Buffer.from(getAddonsLoaderCode('main', main)),
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
return [addonsThemeLoaderVariablesPath, addonsThemeLoaderMainPath];
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
module.exports.getAddonsLoaderCode = getAddonsLoaderCode;
|
|
79
|
+
module.exports.nameFromPackage = nameFromPackage;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import '@testing-library/cypress/add-commands';
|
|
2
1
|
import { getIfExists } from '../helpers';
|
|
3
2
|
import { ploneAuth } from './constants';
|
|
4
3
|
|
|
@@ -21,6 +20,25 @@ const ploneAuthObj = {
|
|
|
21
20
|
pass: ploneAuth[1],
|
|
22
21
|
};
|
|
23
22
|
|
|
23
|
+
export * from './volto-slate';
|
|
24
|
+
|
|
25
|
+
// --- isInViewport ----------------------------------------------------------
|
|
26
|
+
Cypress.Commands.add('isInViewport', (element) => {
|
|
27
|
+
cy.get(element).then(($el) => {
|
|
28
|
+
const windowInnerWidth = Cypress.config(`viewportWidth`);
|
|
29
|
+
const windowInnerHeight = Cypress.config(`viewportHeight`);
|
|
30
|
+
const rect = $el[0].getBoundingClientRect();
|
|
31
|
+
|
|
32
|
+
const rightBoundOfWindow = windowInnerWidth;
|
|
33
|
+
const bottomBoundOfWindow = windowInnerHeight;
|
|
34
|
+
|
|
35
|
+
expect(rect.top).to.be.at.least(0);
|
|
36
|
+
expect(rect.left).to.be.at.least(0);
|
|
37
|
+
expect(rect.right).to.be.lessThan(rightBoundOfWindow);
|
|
38
|
+
expect(rect.bottom).to.be.lessThan(bottomBoundOfWindow);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
24
42
|
// --- AUTOLOGIN -------------------------------------------------------------
|
|
25
43
|
Cypress.Commands.add('autologin', (usr, pass) => {
|
|
26
44
|
let api_url, user, password;
|
|
@@ -671,10 +689,7 @@ Cypress.Commands.add(
|
|
|
671
689
|
Cypress.Commands.add('toolbarSave', () => {
|
|
672
690
|
// Save
|
|
673
691
|
cy.get('#toolbar-save', { timeout: 10000 }).click();
|
|
674
|
-
cy.waitForResourceToLoad('
|
|
675
|
-
cy.waitForResourceToLoad('@breadcrumbs');
|
|
676
|
-
cy.waitForResourceToLoad('@actions');
|
|
677
|
-
cy.waitForResourceToLoad('@types');
|
|
692
|
+
cy.waitForResourceToLoad('');
|
|
678
693
|
});
|
|
679
694
|
|
|
680
695
|
Cypress.Commands.add('clearSlate', (selector) => {
|
|
@@ -705,6 +720,20 @@ Cypress.Commands.add('getSlate', (createNewSlate = false) => {
|
|
|
705
720
|
return slate;
|
|
706
721
|
});
|
|
707
722
|
|
|
723
|
+
Cypress.Commands.add('getSlateSelector', (selector = SLATE_SELECTOR) => {
|
|
724
|
+
let slate;
|
|
725
|
+
cy.getIfExists(
|
|
726
|
+
selector,
|
|
727
|
+
() => {
|
|
728
|
+
slate = cy.get(selector).last();
|
|
729
|
+
},
|
|
730
|
+
() => {
|
|
731
|
+
slate = cy.get(selector, { timeout: 10000 }).last();
|
|
732
|
+
},
|
|
733
|
+
);
|
|
734
|
+
return slate;
|
|
735
|
+
});
|
|
736
|
+
|
|
708
737
|
Cypress.Commands.add('getSlateTitle', () => {
|
|
709
738
|
return cy.get(SLATE_TITLE_SELECTOR, {
|
|
710
739
|
timeout: 10000,
|
|
@@ -763,6 +792,10 @@ Cypress.Commands.add('getSlateEditorAndType', (type) => {
|
|
|
763
792
|
cy.getSlate().focus().click().type(type);
|
|
764
793
|
});
|
|
765
794
|
|
|
795
|
+
Cypress.Commands.add('getSlateEditorSelectorAndType', (selector, type) => {
|
|
796
|
+
cy.getSlateSelector(selector).focus().click().type(type);
|
|
797
|
+
});
|
|
798
|
+
|
|
766
799
|
Cypress.Commands.add('setSlateCursor', (subject, query, endQuery) => {
|
|
767
800
|
cy.get('.slate-editor.selected [contenteditable=true]')
|
|
768
801
|
.focus()
|
|
@@ -849,3 +882,23 @@ Cypress.Commands.add('getTableSlate', (header = false) => {
|
|
|
849
882
|
);
|
|
850
883
|
return slate;
|
|
851
884
|
});
|
|
885
|
+
|
|
886
|
+
Cypress.Commands.add('configureListingWith', (contentType) => {
|
|
887
|
+
cy.get('.sidebar-container .tabs-wrapper .menu .item')
|
|
888
|
+
.contains('Block')
|
|
889
|
+
.click();
|
|
890
|
+
cy.get('.querystring-widget .fields').contains('Add criteria').click();
|
|
891
|
+
cy.get(
|
|
892
|
+
'.querystring-widget .fields:first-of-type .field:first-of-type .react-select__menu .react-select__option',
|
|
893
|
+
)
|
|
894
|
+
.contains('Type')
|
|
895
|
+
.click();
|
|
896
|
+
|
|
897
|
+
//insert Page
|
|
898
|
+
cy.get('.querystring-widget .fields:first-of-type > .field').click();
|
|
899
|
+
cy.get(
|
|
900
|
+
'.querystring-widget .fields:first-of-type > .field .react-select__menu .react-select__option',
|
|
901
|
+
)
|
|
902
|
+
.contains(contentType)
|
|
903
|
+
.click();
|
|
904
|
+
});
|
package/cypress/support/e2e.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export const slateBeforeEach = (contentType = 'Document') => {
|
|
2
|
+
cy.intercept('GET', `/**/*?expand*`).as('content');
|
|
2
3
|
cy.autologin();
|
|
3
4
|
cy.createContent({
|
|
4
5
|
contentType: contentType,
|
|
@@ -6,12 +7,10 @@ export const slateBeforeEach = (contentType = 'Document') => {
|
|
|
6
7
|
contentTitle: 'My Page',
|
|
7
8
|
});
|
|
8
9
|
cy.visit('/my-page');
|
|
9
|
-
cy.
|
|
10
|
-
|
|
11
|
-
cy.waitForResourceToLoad('@actions');
|
|
12
|
-
cy.waitForResourceToLoad('@types');
|
|
13
|
-
cy.waitForResourceToLoad('my-page');
|
|
10
|
+
cy.wait('@content');
|
|
11
|
+
|
|
14
12
|
cy.navigate('/my-page/edit');
|
|
13
|
+
cy.wait('@content');
|
|
15
14
|
};
|
|
16
15
|
|
|
17
16
|
export const getSelectedSlateEditor = () => {
|