@plone/volto 17.0.0-alpha.9 → 17.0.1
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/.eslintrc +26 -3
- package/CHANGELOG.md +774 -5
- package/CONTRIBUTING.md +5 -1
- package/README.md +12 -9
- package/RELEASING.md +5 -5
- package/addon-registry.js +10 -1
- package/create-addons-loader.js +1 -1
- package/cypress/support/commands.js +70 -14
- package/cypress/support/e2e.js +1 -2
- package/cypress/support/volto-slate.js +4 -5
- package/cypress.config.js +1 -0
- package/docker-compose.yml +1 -1
- package/locales/ca/LC_MESSAGES/volto.po +281 -53
- package/locales/ca.json +1 -1
- package/locales/de/LC_MESSAGES/volto.po +289 -61
- package/locales/de.json +1 -1
- package/locales/en/LC_MESSAGES/volto.po +279 -51
- package/locales/en.json +1 -1
- package/locales/es/LC_MESSAGES/volto.po +318 -90
- package/locales/es.json +1 -1
- package/locales/eu/LC_MESSAGES/volto.po +280 -52
- package/locales/eu.json +1 -1
- package/locales/fi/LC_MESSAGES/volto.po +280 -52
- package/locales/fi.json +1 -1
- package/locales/fr/LC_MESSAGES/volto.po +281 -53
- package/locales/fr.json +1 -1
- package/locales/it/LC_MESSAGES/volto.po +474 -246
- package/locales/it.json +1 -1
- package/locales/ja/LC_MESSAGES/volto.po +280 -52
- package/locales/ja.json +1 -1
- package/locales/nl/LC_MESSAGES/volto.po +281 -53
- package/locales/nl.json +1 -1
- package/locales/pt/LC_MESSAGES/volto.po +281 -53
- package/locales/pt.json +1 -1
- package/locales/pt_BR/LC_MESSAGES/volto.po +314 -86
- package/locales/pt_BR.json +1 -1
- package/locales/ro/LC_MESSAGES/volto.po +281 -53
- package/locales/ro.json +1 -1
- package/locales/volto.pot +284 -52
- package/locales/zh_CN/LC_MESSAGES/volto.po +281 -53
- package/locales/zh_CN.json +1 -1
- package/package.json +44 -34
- 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/TextBlockView.jsx +21 -16
- package/packages/volto-slate/src/blocks/Text/extensions/withDeserializers.js +3 -1
- package/packages/volto-slate/src/blocks/Text/index.js +10 -7
- package/packages/volto-slate/src/editor/config.jsx +5 -4
- 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/Link/render.jsx +5 -6
- 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 +77 -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 +4 -6
- package/src/actions/index.js +4 -0
- package/src/actions/navroot/navroot.js +16 -0
- package/src/actions/navroot/navroot.test.js +15 -0
- package/src/actions/relations/rebuild.js +7 -7
- package/src/actions/relations/relations.js +17 -0
- package/src/actions/site/site.js +16 -0
- package/src/actions/site/site.test.js +15 -0
- package/src/actions/userSession/userSession.js +17 -1
- package/src/components/index.js +194 -192
- package/src/components/manage/Actions/Actions.jsx +133 -243
- package/src/components/manage/Add/Add.jsx +7 -8
- package/src/components/manage/AnchorPlugin/index.jsx +2 -2
- package/src/components/manage/AnchorPlugin/utils/EditorUtils.js +3 -1
- 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/Settings.jsx +2 -0
- package/src/components/manage/Blocks/Block/Settings.test.jsx +92 -0
- 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 +177 -0
- package/src/components/manage/Blocks/Container/EditBlockWrapper.jsx +121 -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 +47 -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/HTML/Edit.jsx +8 -8
- package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +36 -26
- 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 +26 -5
- package/src/components/manage/Blocks/Image/View.test.jsx +20 -0
- package/src/components/manage/Blocks/Image/schema.js +17 -10
- 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/ListingBody.jsx +32 -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 +3 -5
- package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +27 -17
- package/src/components/manage/Blocks/Maps/Edit.jsx +135 -209
- package/src/components/manage/Blocks/Maps/Edit.test.jsx +1 -2
- package/src/components/manage/Blocks/Maps/View.test.jsx +1 -2
- package/src/components/manage/Blocks/Search/SearchBlockView.jsx +3 -2
- package/src/components/manage/Blocks/Search/components/Facets.jsx +66 -7
- package/src/components/manage/Blocks/Search/components/FilterList.jsx +4 -6
- package/src/components/manage/Blocks/Search/components/SearchInput.jsx +9 -2
- package/src/components/manage/Blocks/Search/components/SelectFacet.jsx +2 -9
- 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 +5 -2
- package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +70 -36
- 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 +29 -14
- package/src/components/manage/Blocks/Table/Cell.jsx +2 -3
- 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/Text/Edit.jsx +2 -3
- package/src/components/manage/Blocks/Title/View.jsx +0 -23
- package/src/components/manage/Blocks/Title/View.test.jsx +16 -1
- package/src/components/manage/Blocks/ToC/Schema.jsx +40 -7
- package/src/components/manage/Blocks/ToC/View.jsx +84 -14
- package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +8 -3
- package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.test.jsx +44 -0
- package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +149 -10
- package/src/components/manage/Blocks/ToC/variations/index.js +3 -1
- package/src/components/manage/Blocks/Video/View.test.jsx +1 -1
- package/src/components/manage/Contents/Contents.jsx +285 -114
- package/src/components/manage/Contents/ContentsPropertiesModal.jsx +90 -166
- package/src/components/manage/Contents/ContentsRenameModal.jsx +88 -139
- package/src/components/manage/Contents/ContentsRenameModal.stories.jsx +61 -0
- package/src/components/manage/Contents/ContentsTagsModal.jsx +83 -130
- package/src/components/manage/Contents/ContentsTagsModal.stories.jsx +68 -0
- package/src/components/manage/Contents/ContentsUploadModal.jsx +11 -7
- package/src/components/manage/Contents/ContentsWorkflowModal.jsx +87 -154
- package/src/components/manage/Controlpanels/Aliases.jsx +4 -12
- package/src/components/manage/Controlpanels/Groups/GroupsControlpanel.jsx +65 -38
- package/src/components/manage/Controlpanels/Groups/RenderGroups.jsx +2 -2
- package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +38 -13
- package/src/components/manage/Controlpanels/Relations/Relations.jsx +5 -5
- package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +8 -7
- package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +68 -68
- package/src/components/manage/Controlpanels/Rules/AddRule.jsx +3 -10
- package/src/components/manage/Controlpanels/Rules/EditRule.jsx +1 -1
- package/src/components/manage/Controlpanels/UndoControlpanel.jsx +6 -9
- package/src/components/manage/Controlpanels/Users/RenderUsers.jsx +97 -7
- package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +127 -99
- package/src/components/manage/Delete/Delete.jsx +96 -171
- package/src/components/manage/Diff/DiffField.jsx +25 -1
- package/src/components/manage/DragDropList/DragDropList.jsx +18 -13
- package/src/components/manage/Form/BlockDataForm.jsx +3 -2
- package/src/components/manage/Form/BlockDataForm.test.jsx +51 -17
- package/src/components/manage/Form/Form.jsx +7 -6
- package/src/components/manage/Form/InlineForm.test.jsx +16 -14
- 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 +100 -0
- package/src/components/manage/LockingToastsFactory/LockingToastsFactory.jsx +1 -2
- package/src/components/manage/Messages/Messages.jsx +32 -99
- package/src/components/manage/Messages/Messages.test.jsx +0 -1
- package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
- package/src/components/manage/Sharing/Sharing.jsx +80 -22
- package/src/components/manage/Sidebar/AlignBlock.jsx +1 -1
- package/src/components/manage/Sidebar/Sidebar.jsx +139 -220
- 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 +1 -1
- package/src/components/manage/Toolbar/More.jsx +17 -2
- package/src/components/manage/Toolbar/PersonalTools.jsx +97 -155
- package/src/components/manage/Toolbar/Toolbar.jsx +2 -2
- package/src/components/manage/UniversalLink/UniversalLink.jsx +6 -12
- package/src/components/manage/UniversalLink/UniversalLink.test.jsx +37 -0
- package/src/components/manage/Widgets/AlignWidget.jsx +2 -4
- package/src/components/manage/Widgets/ArrayWidget.jsx +3 -1
- package/src/components/manage/Widgets/ArrayWidget.test.jsx +45 -1
- package/src/components/manage/Widgets/ColorPickerWidget.jsx +6 -1
- package/src/components/manage/Widgets/ColorPickerWidget.test.jsx +9 -7
- package/src/components/manage/Widgets/DatetimeWidget.jsx +2 -8
- package/src/components/manage/Widgets/FileWidget.jsx +2 -1
- package/src/components/manage/Widgets/FormFieldWrapper.jsx +1 -1
- package/src/components/manage/Widgets/IdWidget.jsx +1 -2
- package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +2 -9
- package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +3 -10
- package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +4 -4
- package/src/components/manage/Widgets/RegistryImageWidget.jsx +210 -0
- package/src/components/manage/Widgets/RegistryImageWidget.test.jsx +91 -0
- package/src/components/manage/Widgets/SchemaWidget.jsx +6 -9
- package/src/components/manage/Widgets/SelectUtils.js +1 -1
- package/src/components/manage/Widgets/SelectWidget.jsx +15 -1
- package/src/components/manage/Widgets/SelectWidget.test.jsx +45 -1
- package/src/components/manage/Widgets/WysiwygWidget.jsx +2 -9
- package/src/components/manage/Workflow/Workflow.jsx +75 -184
- 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/Comment.stories.jsx +84 -0
- package/src/components/theme/Comments/CommentEditModal.jsx +63 -115
- package/src/components/theme/Comments/Comments.jsx +268 -380
- 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/ContentMetadataTags/ContentMetadataTags.jsx +41 -3
- package/src/components/theme/Error/ServerError.jsx +29 -0
- package/src/components/theme/Header/Header.jsx +37 -63
- package/src/components/theme/Header/Header.test.jsx +18 -0
- package/src/components/theme/Image/Image.jsx +96 -0
- package/src/components/theme/Image/Image.test.jsx +125 -0
- package/src/components/theme/Login/Login.jsx +160 -243
- package/src/components/theme/Logo/Logo.Multilingual.test.jsx +131 -1
- package/src/components/theme/Logo/Logo.jsx +35 -27
- package/src/components/theme/Logo/Logo.test.jsx +135 -1
- package/src/components/theme/Logout/Logout.jsx +36 -83
- package/src/components/theme/Navigation/Navigation.jsx +86 -171
- package/src/components/theme/PasswordReset/PasswordReset.jsx +7 -5
- package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +95 -170
- package/src/components/theme/PreviewImage/PreviewImage.jsx +31 -15
- package/src/components/theme/PreviewImage/PreviewImage.test.js +53 -13
- package/src/components/theme/Register/Register.jsx +2 -4
- package/src/components/theme/Search/SearchTags.jsx +30 -60
- package/src/components/theme/SearchWidget/SearchWidget.jsx +49 -97
- package/src/components/theme/SearchWidget/SearchWidget.test.jsx +8 -0
- package/src/components/theme/Sitemap/Sitemap.jsx +24 -13
- package/src/components/theme/Sitemap/Sitemap.test.jsx +23 -2
- package/src/components/theme/TsTest/TsTest.test.tsx +11 -0
- package/src/components/theme/TsTest/TsTest.tsx +15 -0
- package/src/components/theme/View/AlbumView.jsx +21 -16
- 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 -27
- 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/View/View.jsx +2 -0
- package/src/components/theme/Widgets/ImageWidget.stories.jsx +1 -2
- package/src/config/Blocks.jsx +46 -0
- package/src/config/Components.jsx +3 -1
- package/src/config/ControlPanels.js +0 -1
- package/src/config/Loadables.jsx +1 -1
- package/src/config/NonContentRoutes.jsx +1 -0
- package/src/config/RichTextEditor/Blocks.jsx +4 -5
- package/src/config/RichTextEditor/FromHTML.jsx +2 -2
- package/src/config/RichTextEditor/Plugins.jsx +2 -3
- package/src/config/RichTextEditor/Styles.jsx +1 -1
- package/src/config/RichTextEditor/ToHTML.jsx +12 -10
- package/src/config/RichTextEditor/index.js +2 -3
- package/src/config/Views.jsx +6 -4
- package/src/config/Widgets.jsx +3 -0
- package/src/config/index.js +36 -2
- package/src/config/server.js +2 -0
- package/src/constants/ActionTypes.js +4 -0
- package/src/constants/Indexes.js +3 -1
- package/src/express-middleware/devproxy.js +1 -1
- package/src/express-middleware/files.js +11 -9
- package/src/express-middleware/images.js +12 -5
- package/src/express-middleware/ok.js +16 -0
- package/src/express-middleware/robotstxt.js +1 -1
- package/src/express-middleware/sitemap.js +1 -1
- package/src/express-middleware/static.js +3 -3
- package/src/helpers/Blocks/Blocks.js +52 -6
- package/src/helpers/Blocks/Blocks.test.js +92 -13
- package/src/helpers/Extensions/index.js +2 -1
- package/src/helpers/Extensions/withBlockSchemaEnhancer.js +63 -61
- package/src/helpers/Extensions/withBlockSchemaEnhancer.test.js +145 -0
- package/src/helpers/FormValidation/FormValidation.js +37 -7
- package/src/helpers/FormValidation/FormValidation.test.js +32 -0
- package/src/helpers/Html/Html.jsx +2 -8
- package/src/helpers/Loadable/__mocks__/Loadable.js +18 -18
- package/src/helpers/MessageLabels/MessageLabels.js +39 -4
- package/src/helpers/ScrollToTop/ScrollToTop.jsx +5 -3
- package/src/helpers/Site/index.js +21 -0
- package/src/helpers/Url/Url.js +22 -1
- package/src/helpers/Url/Url.test.js +41 -0
- package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +190 -0
- package/src/helpers/Utils/Utils.js +35 -0
- package/src/helpers/Utils/Utils.test.js +13 -0
- package/src/helpers/Utils/usePagination.js +67 -14
- package/src/helpers/Utils/usePagination.test.js +115 -0
- package/src/helpers/index.js +15 -8
- 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.js +203 -173
- package/src/middleware/blacklistRoutes.js +25 -22
- package/src/middleware/index.js +2 -2
- package/src/middleware/storeProtectLoadUtils.js +61 -62
- package/src/middleware/storeProtectLoadUtils.test.js +47 -43
- package/src/reducers/actions/actions.js +7 -5
- package/src/reducers/actions/actions.test.js +70 -0
- package/src/reducers/content/content.test.js +4 -4
- package/src/reducers/index.js +4 -0
- package/src/reducers/navigation/navigation.js +5 -5
- package/src/reducers/navigation/navigation.test.js +30 -0
- package/src/reducers/navroot/navroot.js +79 -0
- package/src/reducers/navroot/navroot.test.js +110 -0
- package/src/reducers/relations/relations.js +74 -46
- package/src/reducers/site/site.js +51 -0
- package/src/reducers/site/site.test.js +67 -0
- package/src/reducers/userSession/userSession.js +15 -1
- package/src/registry.js +2 -2
- package/src/routes.js +9 -0
- package/src/server.jsx +9 -0
- package/src/start-server.js +6 -2
- package/src/storybook.jsx +24 -38
- package/test-setup-config.js +11 -1
- package/theme/themes/pastanaga/collections/form.overrides +46 -0
- package/theme/themes/pastanaga/collections/menu.overrides +3 -2
- package/theme/themes/pastanaga/elements/container.overrides +5 -2
- package/theme/themes/pastanaga/elements/input.overrides +11 -1
- package/theme/themes/pastanaga/elements/label.overrides +10 -0
- package/theme/themes/pastanaga/elements/step.overrides +2 -1
- package/theme/themes/pastanaga/extras/blocks.less +25 -15
- package/theme/themes/pastanaga/extras/color-picker-widget.less +1 -1
- package/theme/themes/pastanaga/extras/contents.less +6 -1
- package/theme/themes/pastanaga/extras/draftjs.less +4 -4
- package/theme/themes/pastanaga/extras/grid.less +427 -0
- package/theme/themes/pastanaga/extras/login.less +3 -0
- package/theme/themes/pastanaga/extras/main.less +14 -7
- package/theme/themes/pastanaga/extras/react-dates-overrides.less +4 -2
- package/theme/themes/pastanaga/extras/search.less +7 -1
- package/theme/themes/pastanaga/extras/sidebar.less +5 -4
- package/theme/themes/pastanaga/extras/time-picker-overrides.less +5 -3
- package/theme/themes/pastanaga/extras/toc.less +29 -0
- package/theme/themes/pastanaga/extras/toolbar.less +6 -2
- package/theme/themes/pastanaga/extras/userscontrolpanel.less +17 -9
- package/theme/themes/pastanaga/extras/widgets.less +1 -1
- package/theme/themes/pastanaga/modules/rating.overrides +2 -1
- package/theme/themes/pastanaga-cms-ui/elements/container.overrides +2 -1
- package/theme/themes/pastanaga-cms-ui/extras/cms-ui.elements.container.less +6 -2
- package/theme/themes/pastanaga-cms-ui/extras/cms-ui.site.less +2 -2
- package/tsconfig.json +33 -0
- package/webpack-plugins/webpack-less-plugin.js +19 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarn/releases/yarn-3.2.3.cjs +0 -783
- 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
|
@@ -17,8 +17,7 @@ Image.args = {
|
|
|
17
17
|
value: {
|
|
18
18
|
download: 'download/filename.png',
|
|
19
19
|
file_name: 'filename.png',
|
|
20
|
-
data:
|
|
21
|
-
'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',
|
|
20
|
+
data: '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',
|
|
22
21
|
size: 100,
|
|
23
22
|
'content-type': 'image/png',
|
|
24
23
|
},
|
package/src/config/Blocks.jsx
CHANGED
|
@@ -42,6 +42,7 @@ import tableSVG from '@plone/volto/icons/table.svg';
|
|
|
42
42
|
import listingBlockSVG from '@plone/volto/icons/content-listing.svg';
|
|
43
43
|
import tocSVG from '@plone/volto/icons/list-bullet.svg';
|
|
44
44
|
import searchSVG from '@plone/volto/icons/zoom.svg';
|
|
45
|
+
import gridSVG from '@plone/volto/icons/grid-block.svg';
|
|
45
46
|
import imagesSVG from '@plone/volto/icons/images.svg';
|
|
46
47
|
|
|
47
48
|
import ImageGalleryListingBlockTemplate from '@plone/volto/components/manage/Blocks/Listing/ImageGallery';
|
|
@@ -50,6 +51,14 @@ import TextSettingsSchema from '@plone/volto/components/manage/Blocks/Text/Schem
|
|
|
50
51
|
import ImageSettingsSchema from '@plone/volto/components/manage/Blocks/Image/LayoutSchema';
|
|
51
52
|
import ToCSettingsSchema from '@plone/volto/components/manage/Blocks/ToC/Schema';
|
|
52
53
|
|
|
54
|
+
import GridBlockView from '@plone/volto/components/manage/Blocks/Grid/View';
|
|
55
|
+
import GridBlockEdit from '@plone/volto/components/manage/Blocks/Grid/Edit';
|
|
56
|
+
import { GridBlockDataAdapter } from '@plone/volto/components/manage/Blocks/Grid/adapter';
|
|
57
|
+
import { GridBlockSchema } from '@plone/volto/components/manage/Blocks/Grid/schema';
|
|
58
|
+
import GridTemplates from '@plone/volto/components/manage/Blocks/Grid/templates';
|
|
59
|
+
import { gridTeaserDisableStylingSchema } from '@plone/volto/components/manage/Blocks/Teaser/schema';
|
|
60
|
+
import { gridImageDisableSizeAndPositionHandlersSchema } from '@plone/volto/components/manage/Blocks/Image/schema';
|
|
61
|
+
|
|
53
62
|
import SearchBlockView from '@plone/volto/components/manage/Blocks/Search/SearchBlockView';
|
|
54
63
|
import SearchBlockEdit from '@plone/volto/components/manage/Blocks/Search/SearchBlockEdit';
|
|
55
64
|
|
|
@@ -66,6 +75,7 @@ import {
|
|
|
66
75
|
DateRangeFacetFilterListEntry,
|
|
67
76
|
} from '@plone/volto/components/manage/Blocks/Search/components';
|
|
68
77
|
import getListingBlockAsyncData from '@plone/volto/components/manage/Blocks/Listing/getAsyncData';
|
|
78
|
+
import { getImageBlockSizes } from '@plone/volto/components/manage/Blocks/Image/utils';
|
|
69
79
|
|
|
70
80
|
// block sidebar schemas (not the Dexterity Layout block settings schemas)
|
|
71
81
|
import HeroImageLeftBlockSchema from '@plone/volto/components/manage/Blocks/HeroImageLeft/schema';
|
|
@@ -249,6 +259,7 @@ const blocksConfig = {
|
|
|
249
259
|
restricted: false,
|
|
250
260
|
mostUsed: true,
|
|
251
261
|
sidebarTab: 1,
|
|
262
|
+
getSizes: getImageBlockSizes,
|
|
252
263
|
},
|
|
253
264
|
leadimage: {
|
|
254
265
|
id: 'leadimage',
|
|
@@ -458,6 +469,27 @@ const blocksConfig = {
|
|
|
458
469
|
},
|
|
459
470
|
},
|
|
460
471
|
},
|
|
472
|
+
// This next block is not named just grid for some reasons:
|
|
473
|
+
// 1.- Naming it grid will collide with the SemanticUI CSS of the Grid component
|
|
474
|
+
// 2.- It would prevent the transition from the old grid
|
|
475
|
+
// (based on @kitconcept/volto-blocks-grid) without having to perform any migration.
|
|
476
|
+
// This way, both can co-exist at the same time.
|
|
477
|
+
gridBlock: {
|
|
478
|
+
id: 'gridBlock',
|
|
479
|
+
title: 'Grid',
|
|
480
|
+
icon: gridSVG,
|
|
481
|
+
group: 'common',
|
|
482
|
+
view: GridBlockView,
|
|
483
|
+
edit: GridBlockEdit,
|
|
484
|
+
blockSchema: GridBlockSchema,
|
|
485
|
+
dataAdapter: GridBlockDataAdapter,
|
|
486
|
+
restricted: false,
|
|
487
|
+
mostUsed: true,
|
|
488
|
+
sidebarTab: 1,
|
|
489
|
+
templates: GridTemplates,
|
|
490
|
+
maxLength: 4,
|
|
491
|
+
allowedBlocks: ['image', 'listing', 'slate', 'teaser'],
|
|
492
|
+
},
|
|
461
493
|
teaser: {
|
|
462
494
|
id: 'teaser',
|
|
463
495
|
title: 'Teaser',
|
|
@@ -481,6 +513,20 @@ const blocksConfig = {
|
|
|
481
513
|
},
|
|
482
514
|
};
|
|
483
515
|
|
|
516
|
+
// This is required in order to initialize the inner blocksConfig
|
|
517
|
+
// for the grid block, since we need to modify how the inner teaser
|
|
518
|
+
// block behave in it (= no schemaEnhancer fields for teasers inside a grid)
|
|
519
|
+
// Afterwards, it can be further customized in add-ons using the same technique.
|
|
520
|
+
blocksConfig.gridBlock.blocksConfig = { ...blocksConfig };
|
|
521
|
+
blocksConfig.gridBlock.blocksConfig.teaser = {
|
|
522
|
+
...blocksConfig.teaser,
|
|
523
|
+
schemaEnhancer: gridTeaserDisableStylingSchema,
|
|
524
|
+
};
|
|
525
|
+
blocksConfig.gridBlock.blocksConfig.image = {
|
|
526
|
+
...blocksConfig.image,
|
|
527
|
+
schemaEnhancer: gridImageDisableSizeAndPositionHandlersSchema,
|
|
528
|
+
};
|
|
529
|
+
|
|
484
530
|
const requiredBlocks = ['title'];
|
|
485
531
|
|
|
486
532
|
const initialBlocks = {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { App, PreviewImage } from '@plone/volto/components';
|
|
1
|
+
import { App, PreviewImage, Image } from '@plone/volto/components';
|
|
2
2
|
|
|
3
|
+
// Register components.
|
|
3
4
|
export const components = {
|
|
4
5
|
PreviewImage: { component: PreviewImage },
|
|
5
6
|
App: { component: App },
|
|
7
|
+
Image: { component: Image },
|
|
6
8
|
};
|
package/src/config/Loadables.jsx
CHANGED
|
@@ -2,7 +2,7 @@ import loadable from '@loadable/component';
|
|
|
2
2
|
|
|
3
3
|
export const loadables = {
|
|
4
4
|
prettierStandalone: loadable.lib(() => import('prettier/standalone')),
|
|
5
|
-
prettierParserHtml: loadable.lib(() => import('prettier/
|
|
5
|
+
prettierParserHtml: loadable.lib(() => import('prettier/plugins/html')),
|
|
6
6
|
prismCore: loadable.lib(() => import('prismjs/components/prism-core')),
|
|
7
7
|
toastify: loadable.lib(() => import('react-toastify')),
|
|
8
8
|
reactSelect: loadable.lib(() => import('react-select'), { ssr: false }),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default (props)
|
|
1
|
+
export default function Blocks(props) {
|
|
2
2
|
const { draftJs, immutableLib } = props;
|
|
3
3
|
const { DefaultDraftBlockRenderMap } = draftJs;
|
|
4
4
|
const { Map } = immutableLib;
|
|
@@ -12,9 +12,8 @@ export default (props) => {
|
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
const extendedBlockRenderMap =
|
|
16
|
-
blockRenderMap
|
|
17
|
-
);
|
|
15
|
+
const extendedBlockRenderMap =
|
|
16
|
+
DefaultDraftBlockRenderMap.merge(blockRenderMap);
|
|
18
17
|
|
|
19
18
|
const blockStyleFn = (contentBlock) => {
|
|
20
19
|
const type = contentBlock.getType();
|
|
@@ -27,4 +26,4 @@ export default (props) => {
|
|
|
27
26
|
const listBlockTypes = ['unordered-list-item', 'ordered-list-item'];
|
|
28
27
|
|
|
29
28
|
return { extendedBlockRenderMap, blockStyleFn, listBlockTypes };
|
|
30
|
-
}
|
|
29
|
+
}
|
|
@@ -23,9 +23,8 @@ const breakOutOptions = {
|
|
|
23
23
|
const plugins = (props) => {
|
|
24
24
|
const { draftJsInlineToolbarPlugin, draftJsBlockBreakoutPlugin } = props;
|
|
25
25
|
const { Separator } = draftJsInlineToolbarPlugin;
|
|
26
|
-
const blockBreakoutPlugin =
|
|
27
|
-
breakOutOptions
|
|
28
|
-
);
|
|
26
|
+
const blockBreakoutPlugin =
|
|
27
|
+
draftJsBlockBreakoutPlugin.default(breakOutOptions);
|
|
29
28
|
|
|
30
29
|
const linkPlugin = createLinkPlugin({ libraries: props });
|
|
31
30
|
|
|
@@ -13,7 +13,7 @@ import orderedListSVG from '@plone/volto/icons/list-numbered.svg';
|
|
|
13
13
|
import blockquoteSVG from '@plone/volto/icons/quote.svg';
|
|
14
14
|
import calloutSVG from '@plone/volto/icons/megaphone.svg';
|
|
15
15
|
|
|
16
|
-
export default function (props) {
|
|
16
|
+
export default function Styles(props) {
|
|
17
17
|
const createInlineStyleButton = props.draftJsCreateInlineStyleButton.default;
|
|
18
18
|
const createBlockStyleButton = props.draftJsCreateBlockStyleButton.default;
|
|
19
19
|
|
|
@@ -101,16 +101,18 @@ const splitSoftLinesOfLists = (children) =>
|
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
// Returns how the default lists should be rendered
|
|
104
|
-
const getList =
|
|
105
|
-
ordered
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
104
|
+
const getList =
|
|
105
|
+
(ordered) =>
|
|
106
|
+
(children, { depth, keys }) =>
|
|
107
|
+
ordered ? (
|
|
108
|
+
<ol key={keys[0]} keys={keys} depth={depth}>
|
|
109
|
+
{splitSoftLinesOfLists(children)}
|
|
110
|
+
</ol>
|
|
111
|
+
) : (
|
|
112
|
+
<ul key={keys[0]} keys={keys} depth={depth}>
|
|
113
|
+
{splitSoftLinesOfLists(children)}
|
|
114
|
+
</ul>
|
|
115
|
+
);
|
|
114
116
|
|
|
115
117
|
// Special function to deal with list clones
|
|
116
118
|
/*const getSpecialList = type => (children, { depth, keys }) => (
|
|
@@ -5,9 +5,8 @@ import FromHTMLCustomBlockFn from './FromHTML';
|
|
|
5
5
|
|
|
6
6
|
export const richtextEditorSettings = (props) => {
|
|
7
7
|
const { plugins, inlineToolbarButtons } = Plugins(props);
|
|
8
|
-
const { extendedBlockRenderMap, blockStyleFn, listBlockTypes } =
|
|
9
|
-
props
|
|
10
|
-
);
|
|
8
|
+
const { extendedBlockRenderMap, blockStyleFn, listBlockTypes } =
|
|
9
|
+
Blocks(props);
|
|
11
10
|
|
|
12
11
|
return {
|
|
13
12
|
extendedBlockRenderMap,
|
package/src/config/Views.jsx
CHANGED
|
@@ -16,6 +16,7 @@ import RequestTimeout from '@plone/volto/components/theme/RequestTimeout/Request
|
|
|
16
16
|
import AlbumView from '@plone/volto/components/theme/View/AlbumView';
|
|
17
17
|
import Unauthorized from '@plone/volto/components/theme/Unauthorized/Unauthorized';
|
|
18
18
|
import Forbidden from '@plone/volto/components/theme/Forbidden/Forbidden';
|
|
19
|
+
import ServerError from '@plone/volto/components/theme/Error/ServerError';
|
|
19
20
|
|
|
20
21
|
const EventView = loadable(() =>
|
|
21
22
|
import('@plone/volto/components/theme/View/EventView'),
|
|
@@ -110,10 +111,11 @@ export const contentTypesViews = {
|
|
|
110
111
|
export const defaultView = DefaultView;
|
|
111
112
|
|
|
112
113
|
export const errorViews = {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
404: NotFoundView,
|
|
115
|
+
401: Unauthorized,
|
|
116
|
+
403: Forbidden,
|
|
117
|
+
408: RequestTimeout,
|
|
118
|
+
500: ServerError,
|
|
117
119
|
ECONNREFUSED: ConnectionRefused,
|
|
118
120
|
corsError: CorsError,
|
|
119
121
|
};
|
package/src/config/Widgets.jsx
CHANGED
|
@@ -24,6 +24,7 @@ import InternalUrlWidget from '@plone/volto/components/manage/Widgets/InternalUr
|
|
|
24
24
|
import EmailWidget from '@plone/volto/components/manage/Widgets/EmailWidget';
|
|
25
25
|
import NumberWidget from '@plone/volto/components/manage/Widgets/NumberWidget';
|
|
26
26
|
import ImageSizeWidget from '@plone/volto/components/manage/Widgets/ImageSizeWidget';
|
|
27
|
+
import RegistryImageWidget from '@plone/volto/components/manage/Widgets/RegistryImageWidget';
|
|
27
28
|
|
|
28
29
|
import ReferenceWidget from '@plone/volto/components/manage/Widgets/ReferenceWidget';
|
|
29
30
|
import ObjectBrowserWidget from '@plone/volto/components/manage/Widgets/ObjectBrowserWidget';
|
|
@@ -72,6 +73,7 @@ export const widgetMapping = {
|
|
|
72
73
|
recurrence: RecurrenceWidget,
|
|
73
74
|
remoteUrl: UrlWidget,
|
|
74
75
|
id: IdWidget,
|
|
76
|
+
site_logo: RegistryImageWidget,
|
|
75
77
|
},
|
|
76
78
|
widget: {
|
|
77
79
|
richtext: WysiwygWidget,
|
|
@@ -148,6 +150,7 @@ export const widgetMapping = {
|
|
|
148
150
|
title: TitleViewWidget,
|
|
149
151
|
url: UrlViewWidget,
|
|
150
152
|
internal_url: InternalUrlWidget,
|
|
153
|
+
object: () => '', // TODO: Not implemented yet: Object View widget
|
|
151
154
|
},
|
|
152
155
|
vocabulary: {},
|
|
153
156
|
choices: SelectViewWidget,
|
package/src/config/index.js
CHANGED
|
@@ -37,6 +37,8 @@ import applyAddonConfiguration, { addonsInfo } from 'load-volto-addons';
|
|
|
37
37
|
|
|
38
38
|
import ConfigRegistry from '@plone/volto/registry';
|
|
39
39
|
|
|
40
|
+
import { getSiteAsyncPropExtender } from '@plone/volto/helpers';
|
|
41
|
+
|
|
40
42
|
const host = process.env.HOST || 'localhost';
|
|
41
43
|
const port = process.env.PORT || '3000';
|
|
42
44
|
|
|
@@ -74,13 +76,22 @@ let config = {
|
|
|
74
76
|
port,
|
|
75
77
|
// The URL Volto is going to be served (see sensible defaults above)
|
|
76
78
|
publicURL,
|
|
79
|
+
okRoute: '/ok',
|
|
77
80
|
apiPath,
|
|
78
81
|
apiExpanders: [
|
|
82
|
+
// Added here for documentation purposes, addded at the end because it
|
|
83
|
+
// depends on a value of this object.
|
|
79
84
|
// Add the following expanders for only issuing a single request.
|
|
80
85
|
// https://6.docs.plone.org/volto/configuration/settings-reference.html#term-apiExpanders
|
|
81
86
|
// {
|
|
82
87
|
// match: '',
|
|
83
|
-
// GET_CONTENT: [
|
|
88
|
+
// GET_CONTENT: [
|
|
89
|
+
// 'breadcrumbs',
|
|
90
|
+
// 'navigation',
|
|
91
|
+
// 'actions',
|
|
92
|
+
// 'types',
|
|
93
|
+
// 'navroot',
|
|
94
|
+
// ],
|
|
84
95
|
// },
|
|
85
96
|
],
|
|
86
97
|
// Internal proxy to bypass CORS *while developing*. NOT intended for production use.
|
|
@@ -125,7 +136,7 @@ let config = {
|
|
|
125
136
|
useEmailAsLogin: false,
|
|
126
137
|
persistentReducers: ['blocksClipboard'],
|
|
127
138
|
initialReducersBlacklist: [], // reducers in this list won't be hydrated in windows.__data
|
|
128
|
-
asyncPropsExtenders: [], // per route asyncConnect customizers
|
|
139
|
+
asyncPropsExtenders: [getSiteAsyncPropExtender], // per route asyncConnect customizers
|
|
129
140
|
contentIcons: contentIcons,
|
|
130
141
|
loadables,
|
|
131
142
|
lazyBundles: {
|
|
@@ -150,6 +161,7 @@ let config = {
|
|
|
150
161
|
},
|
|
151
162
|
appExtras: [],
|
|
152
163
|
maxResponseSize: 2000000000, // This is superagent default (200 mb)
|
|
164
|
+
maxFileUploadSize: null,
|
|
153
165
|
serverConfig,
|
|
154
166
|
storeExtenders: [],
|
|
155
167
|
showTags: true,
|
|
@@ -182,6 +194,12 @@ let config = {
|
|
|
182
194
|
styleClassNameExtenders,
|
|
183
195
|
querystringSearchGet: false,
|
|
184
196
|
blockSettingsTabFieldsetsInitialStateOpen: true,
|
|
197
|
+
excludeLinksAndReferencesMenuItem: false,
|
|
198
|
+
containerBlockTypes: ['gridBlock'],
|
|
199
|
+
siteTitleFormat: {
|
|
200
|
+
includeSiteTitle: false,
|
|
201
|
+
titleAndSiteTitleSeparator: '-',
|
|
202
|
+
},
|
|
185
203
|
},
|
|
186
204
|
experimental: {
|
|
187
205
|
addBlockButton: {
|
|
@@ -212,6 +230,22 @@ let config = {
|
|
|
212
230
|
components,
|
|
213
231
|
};
|
|
214
232
|
|
|
233
|
+
// The apiExpanders depends on a config of the object, so it's done here
|
|
234
|
+
config.settings.apiExpanders = [
|
|
235
|
+
...config.settings.apiExpanders,
|
|
236
|
+
{
|
|
237
|
+
match: '',
|
|
238
|
+
GET_CONTENT: ['breadcrumbs', 'actions', 'types', 'navroot'],
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
match: '',
|
|
242
|
+
GET_CONTENT: ['navigation'],
|
|
243
|
+
querystring: (config) => ({
|
|
244
|
+
'expand.navigation.depth': config.settings.navDepth,
|
|
245
|
+
}),
|
|
246
|
+
},
|
|
247
|
+
];
|
|
248
|
+
|
|
215
249
|
ConfigRegistry.settings = config.settings;
|
|
216
250
|
ConfigRegistry.experimental = config.experimental;
|
|
217
251
|
ConfigRegistry.blocks = config.blocks;
|
package/src/config/server.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import imagesMiddleware from '@plone/volto/express-middleware/images';
|
|
2
2
|
import filesMiddleware from '@plone/volto/express-middleware/files';
|
|
3
3
|
import robotstxtMiddleware from '@plone/volto/express-middleware/robotstxt';
|
|
4
|
+
import okMiddleware from '@plone/volto/express-middleware/ok';
|
|
4
5
|
import sitemapMiddleware from '@plone/volto/express-middleware/sitemap';
|
|
5
6
|
import staticsMiddleware from '@plone/volto/express-middleware/static';
|
|
6
7
|
import devProxyMiddleware from '@plone/volto/express-middleware/devproxy';
|
|
@@ -11,6 +12,7 @@ const settings = {
|
|
|
11
12
|
filesMiddleware(),
|
|
12
13
|
imagesMiddleware(),
|
|
13
14
|
robotstxtMiddleware(),
|
|
15
|
+
okMiddleware(),
|
|
14
16
|
sitemapMiddleware(),
|
|
15
17
|
staticsMiddleware(),
|
|
16
18
|
],
|
|
@@ -39,6 +39,7 @@ export const GET_QUERYSTRING_RESULTS = 'GET_QUERYSTRING_RESULTS';
|
|
|
39
39
|
export const CREATE_RELATIONS = 'CREATE_RELATIONS';
|
|
40
40
|
export const DELETE_RELATIONS = 'DELETE_RELATIONS';
|
|
41
41
|
export const LIST_RELATIONS = 'LIST_RELATIONS';
|
|
42
|
+
export const STATS_RELATIONS = 'STATS_RELATIONS';
|
|
42
43
|
export const REBUILD_RELATIONS = 'REBUILD_RELATIONS';
|
|
43
44
|
export const GET_SCHEMA = 'GET_SCHEMA';
|
|
44
45
|
export const POST_SCHEMA = 'POST_SCHEMA';
|
|
@@ -137,3 +138,6 @@ export const REMOVE_ALIASES = 'REMOVE_ALIASES';
|
|
|
137
138
|
export const GET_USERSCHEMA = 'GET_USERSCHEMA';
|
|
138
139
|
export const GET_UPGRADE = 'GET_UPGRADE';
|
|
139
140
|
export const POST_UPGRADE = 'POST_UPGRADE';
|
|
141
|
+
export const RESET_LOGIN_REQUEST = 'RESET_LOGIN_REQUEST';
|
|
142
|
+
export const GET_SITE = 'GET_SITE';
|
|
143
|
+
export const GET_NAVROOT = 'GET_NAVROOT';
|
package/src/constants/Indexes.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module constants/indexes
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const Indexes = {
|
|
7
7
|
sortable_title: { label: 'Title', type: 'string', sort_on: 'sortable_title' },
|
|
8
8
|
review_state: { label: 'Review state', type: 'string' },
|
|
9
9
|
ModificationDate: {
|
|
@@ -35,6 +35,8 @@ export default {
|
|
|
35
35
|
Type: { label: 'Type', type: 'string' },
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
+
export default Indexes;
|
|
39
|
+
|
|
38
40
|
export const defaultIndexes = [
|
|
39
41
|
'review_state',
|
|
40
42
|
'ModificationDate',
|
|
@@ -2,19 +2,21 @@ import express from 'express';
|
|
|
2
2
|
import { getAPIResourceWithAuth } from '@plone/volto/helpers';
|
|
3
3
|
|
|
4
4
|
const HEADERS = [
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
'
|
|
5
|
+
'accept-ranges',
|
|
6
|
+
'cache-control',
|
|
7
|
+
'content-disposition',
|
|
8
|
+
'content-range',
|
|
9
|
+
'content-type',
|
|
10
|
+
'x-sendfile',
|
|
11
|
+
'x-accel-redirect',
|
|
10
12
|
];
|
|
11
13
|
|
|
12
|
-
function
|
|
14
|
+
function filesMiddlewareFn(req, res, next) {
|
|
13
15
|
getAPIResourceWithAuth(req)
|
|
14
16
|
.then((resource) => {
|
|
15
17
|
// Just forward the headers that we need
|
|
16
18
|
HEADERS.forEach((header) => {
|
|
17
|
-
if (resource.
|
|
19
|
+
if (resource.headers[header]) {
|
|
18
20
|
res.set(header, resource.get(header));
|
|
19
21
|
}
|
|
20
22
|
});
|
|
@@ -24,10 +26,10 @@ function fileMiddleware(req, res, next) {
|
|
|
24
26
|
.catch(next);
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
export default function () {
|
|
29
|
+
export default function filesMiddleware() {
|
|
28
30
|
const middleware = express.Router();
|
|
29
31
|
|
|
30
|
-
middleware.all(['**/@@download/*', '**/@@display-file/*'],
|
|
32
|
+
middleware.all(['**/@@download/*', '**/@@display-file/*'], filesMiddlewareFn);
|
|
31
33
|
middleware.id = 'filesResourcesProcessor';
|
|
32
34
|
return middleware;
|
|
33
35
|
}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { getAPIResourceWithAuth } from '@plone/volto/helpers';
|
|
3
3
|
|
|
4
|
-
const HEADERS = [
|
|
4
|
+
const HEADERS = [
|
|
5
|
+
'content-type',
|
|
6
|
+
'content-disposition',
|
|
7
|
+
'cache-control',
|
|
8
|
+
'x-sendfile',
|
|
9
|
+
'x-accel-redirect',
|
|
10
|
+
];
|
|
5
11
|
|
|
6
|
-
function
|
|
12
|
+
function imageMiddlewareFn(req, res, next) {
|
|
7
13
|
getAPIResourceWithAuth(req)
|
|
8
14
|
.then((resource) => {
|
|
9
15
|
// Just forward the headers that we need
|
|
@@ -17,11 +23,12 @@ function imageMiddleware(req, res, next) {
|
|
|
17
23
|
.catch(next);
|
|
18
24
|
}
|
|
19
25
|
|
|
20
|
-
export default function () {
|
|
26
|
+
export default function imagesMiddleware() {
|
|
21
27
|
const middleware = express.Router();
|
|
22
28
|
|
|
23
|
-
middleware.all(['**/@@images/*'],
|
|
24
|
-
middleware.all(['/@portrait/*'],
|
|
29
|
+
middleware.all(['**/@@images/*'], imageMiddlewareFn);
|
|
30
|
+
middleware.all(['/@portrait/*'], imageMiddlewareFn);
|
|
31
|
+
middleware.all(['/@@site-logo/*'], imageMiddlewareFn);
|
|
25
32
|
middleware.id = 'imageResourcesProcessor';
|
|
26
33
|
return middleware;
|
|
27
34
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import config from '@plone/volto/registry';
|
|
3
|
+
|
|
4
|
+
const ok = function (req, res, next) {
|
|
5
|
+
res.type('text/plain');
|
|
6
|
+
res.set('Expires', 'Sat, 1 Jan 2000 00:00:00 GMT');
|
|
7
|
+
res.set('Cache-Control', 'max-age=0, must-revalidate, private');
|
|
8
|
+
res.send('ok');
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export default function okRouteMiddleware() {
|
|
12
|
+
const middleware = express.Router();
|
|
13
|
+
middleware.all(config?.settings?.okRoute || '/ok', ok);
|
|
14
|
+
middleware.id = 'ok';
|
|
15
|
+
return middleware;
|
|
16
|
+
}
|
|
@@ -22,7 +22,7 @@ const envRobots = function (req, res, next) {
|
|
|
22
22
|
res.send(process.env.VOLTO_ROBOTSTXT);
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
export default function () {
|
|
25
|
+
export default function robotstxtMiddleware() {
|
|
26
26
|
const middleware = express.Router();
|
|
27
27
|
if (process.env.VOLTO_ROBOTSTXT) {
|
|
28
28
|
middleware.all('**/robots.txt', envRobots);
|
|
@@ -2,7 +2,7 @@ import express from 'express';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import config from '@plone/volto/registry';
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const staticMiddlewareFn = express.static(
|
|
6
6
|
process.env.BUILD_DIR
|
|
7
7
|
? path.join(process.env.BUILD_DIR, 'public')
|
|
8
8
|
: process.env.RAZZLE_PUBLIC_DIR,
|
|
@@ -24,9 +24,9 @@ const staticMiddleware = express.static(
|
|
|
24
24
|
},
|
|
25
25
|
);
|
|
26
26
|
|
|
27
|
-
export default function () {
|
|
27
|
+
export default function staticsMiddleware() {
|
|
28
28
|
const middleware = express.Router();
|
|
29
|
-
middleware.all('*',
|
|
29
|
+
middleware.all('*', staticMiddlewareFn);
|
|
30
30
|
middleware.id = 'staticResourcesProcessor';
|
|
31
31
|
return middleware;
|
|
32
32
|
}
|