@plone/volto 16.13.0 → 17.0.0-alpha.0

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.
Files changed (66) hide show
  1. package/.changelog.draft +12 -11
  2. package/.storybook/main.js +53 -69
  3. package/.yarn/install-state.gz +0 -0
  4. package/CHANGELOG.md +33 -0
  5. package/README.md +21 -19
  6. package/cypress/support/commands.js +7 -7
  7. package/cypress/support/guillotina.js +2 -2
  8. package/cypress/support/reset-fixture.js +2 -2
  9. package/cypress/support/upgradetests.js +1 -1
  10. package/cypress.config.js +1 -1
  11. package/docker-compose.yml +2 -3
  12. package/locales/ca/LC_MESSAGES/volto.po +30 -0
  13. package/locales/ca.json +1 -1
  14. package/locales/de/LC_MESSAGES/volto.po +30 -0
  15. package/locales/de.json +1 -1
  16. package/locales/en/LC_MESSAGES/volto.po +30 -0
  17. package/locales/en.json +1 -1
  18. package/locales/es/LC_MESSAGES/volto.po +30 -0
  19. package/locales/es.json +1 -1
  20. package/locales/eu/LC_MESSAGES/volto.po +30 -0
  21. package/locales/eu.json +1 -1
  22. package/locales/fi.json +1 -1
  23. package/locales/fr/LC_MESSAGES/volto.po +30 -0
  24. package/locales/fr.json +1 -1
  25. package/locales/it/LC_MESSAGES/volto.po +30 -0
  26. package/locales/it.json +1 -1
  27. package/locales/ja/LC_MESSAGES/volto.po +30 -0
  28. package/locales/ja.json +1 -1
  29. package/locales/nl/LC_MESSAGES/volto.po +30 -0
  30. package/locales/nl.json +1 -1
  31. package/locales/pt/LC_MESSAGES/volto.po +30 -0
  32. package/locales/pt.json +1 -1
  33. package/locales/pt_BR/LC_MESSAGES/volto.po +31 -1
  34. package/locales/pt_BR.json +1 -1
  35. package/locales/ro/LC_MESSAGES/volto.po +30 -0
  36. package/locales/ro.json +1 -1
  37. package/locales/volto.pot +31 -1
  38. package/locales/zh_CN/LC_MESSAGES/volto.po +30 -0
  39. package/locales/zh_CN.json +1 -1
  40. package/package.json +22 -20
  41. package/packages/volto-slate/package.json +1 -1
  42. package/razzle.config.js +3 -3
  43. package/src/components/manage/Blocks/Teaser/Body.jsx +30 -0
  44. package/src/components/manage/Blocks/Teaser/Data.jsx +71 -0
  45. package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +89 -0
  46. package/src/components/manage/Blocks/Teaser/Edit.jsx +25 -0
  47. package/src/components/manage/Blocks/Teaser/View.jsx +9 -0
  48. package/src/components/manage/Blocks/Teaser/adapter.js +23 -0
  49. package/src/components/manage/Blocks/Teaser/schema.js +103 -0
  50. package/src/components/manage/Blocks/Teaser/utils.js +44 -0
  51. package/src/components/manage/Blocks/Teaser/utils.test.jsx +229 -0
  52. package/src/components/manage/Controlpanels/VersionOverview.jsx +6 -10
  53. package/src/components/manage/Diff/DiffField.jsx +6 -6
  54. package/src/components/theme/FormattedDate/FormattedDate.jsx +3 -3
  55. package/src/config/Blocks.jsx +28 -0
  56. package/src/express-middleware/sitemap.js +1 -1
  57. package/src/helpers/Blocks/Blocks.test.js +50 -0
  58. package/src/helpers/Utils/Date.js +4 -2
  59. package/src/helpers/Utils/Date.test.js +3 -1
  60. package/src/helpers/index.js +0 -1
  61. package/theme/themes/pastanaga/extras/blocks.less +2 -0
  62. package/theme/themes/pastanaga/extras/teaser.less +166 -0
  63. package/webpack-plugins/webpack-relative-resolver.js +33 -19
  64. package/webpack-plugins/webpack-root-resolver.js +25 -14
  65. package/webpack-plugins/webpack-svg-plugin.js +11 -4
  66. package/locales/fi/LC_MESSAGES/volto.po +0 -4581
package/.changelog.draft CHANGED
@@ -1,21 +1,22 @@
1
- ## 16.13.0 (2023-03-02)
1
+ ## 17.0.0-alpha.0 (2023-03-04)
2
2
 
3
- ### Feature
3
+ ### Breaking
4
4
 
5
- - Added a default Component to show when the Listing block has no results, and another only for the ImageGallery variation. Both of them registered in the block registration config. @ionlizarazu [#3602](https://github.com/plone/volto/issues/3602)
6
- - Add GHA Towncrier syntax checker @sneridagh [#4450](https://github.com/plone/volto/issues/4450)
5
+ - Volto 17 drops support for NodeJS 14, and adds support for NodeJS 18.
6
+ Please see the [upgrade guide](https://6.docs.plone.org/volto/upgrade-guide/index.html)
7
+ for more information.
7
8
 
8
- ### Bugfix
9
-
10
- - On SSR-generated error pages, don't change the user's language to the default site language @tiberiuichim [#4425](https://github.com/plone/volto/issues/4425)
9
+ Volto 17 now uses Webpack 5. [#4086](https://github.com/plone/volto/issues/4086)
11
10
 
12
11
  ### Internal
13
12
 
14
- - Expose a named export for the App component, separate its default wrappers as a separate `connectAppComponent` function. @tiberiuichim [#4413](https://github.com/plone/volto/issues/4413)
15
- - Use latest plone/server breed images @sneridagh [#4454](https://github.com/plone/volto/issues/4454)
13
+ - Add HI-ERN website to "Volto in Production" section in README @steffenri [#4172](https://github.com/plone/volto/issues/4172)
16
14
 
17
15
  ### Documentation
18
16
 
19
- - Fix links, convert features to definition list, add link to issue for TODO. @stevepiercy [#4431](https://github.com/plone/volto/issues/4431)
20
- - Update link to Yarn 3 Workspaces to avoid redirect to Yarn Classic 1.x. @stevepiercy [#4441](https://github.com/plone/volto/issues/4441)
17
+ - Add a new Volto site to the README @erral [#4158](https://github.com/plone/volto/issues/4158), [#4170](https://github.com/plone/volto/issues/4170)
18
+ - Add new websites Lanku and UEU
19
+ [erral] [#4310](https://github.com/plone/volto/issues/4310)
20
+ - Fix English and MyST grammar and syntax from PR #4285 @stevepiercy [#4331](https://github.com/plone/volto/issues/4331)
21
+ - Use a universal static path for both documentation and volto repos. @stevepiercy [#4376](https://github.com/plone/volto/issues/4376)
21
22
 
@@ -3,14 +3,10 @@ const fs = require('fs');
3
3
  const path = require('path');
4
4
  const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder');
5
5
  const fileLoaderFinder = makeLoaderFinder('file-loader');
6
-
7
6
  const projectRootPath = path.resolve('.');
8
- const createAddonsLoader = require('../create-addons-loader');
9
7
  const lessPlugin = require('../webpack-plugins/webpack-less-plugin');
10
-
11
8
  const createConfig = require('../node_modules/razzle/config/createConfigAsync.js');
12
9
  const razzleConfig = require(path.join(projectRootPath, 'razzle.config.js'));
13
-
14
10
  const SVGLOADER = {
15
11
  test: /icons\/.*\.svg$/,
16
12
  use: [
@@ -21,16 +17,22 @@ const SVGLOADER = {
21
17
  loader: 'svgo-loader',
22
18
  options: {
23
19
  plugins: [
24
- { removeTitle: true },
25
- { convertPathData: false },
26
- { removeUselessStrokeAndFill: true },
27
- { removeViewBox: false },
20
+ {
21
+ name: 'preset-default',
22
+ params: {
23
+ overrides: {
24
+ convertPathData: false,
25
+ removeViewBox: false,
26
+ },
27
+ },
28
+ },
29
+ 'removeTitle',
30
+ 'removeUselessStrokeAndFill',
28
31
  ],
29
32
  },
30
33
  },
31
34
  ],
32
35
  };
33
-
34
36
  const defaultRazzleOptions = {
35
37
  verbose: false,
36
38
  debug: {},
@@ -46,98 +48,80 @@ const defaultRazzleOptions = {
46
48
  staticCssInDev: false,
47
49
  emitOnErrors: false,
48
50
  disableWebpackbar: false,
49
- browserslist: [
50
- '>1%',
51
- 'last 4 versions',
52
- 'Firefox ESR',
53
- 'not ie 11',
54
- 'not dead',
55
- ],
51
+ browserslist: ['>1%', 'last 4 versions', 'Firefox ESR', 'not ie 11', 'not dead']
56
52
  };
57
-
58
53
  module.exports = {
59
54
  stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
60
55
  addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
61
56
  staticDirs: ['./static'],
62
- webpackFinal: async (config, { configType }) => {
57
+ webpackFinal: async (config, {
58
+ configType
59
+ }) => {
63
60
  // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
64
61
  // You can change the configuration based on that.
65
62
  // 'PRODUCTION' is used when building the static version of storybook.
66
63
 
67
64
  // Make whatever fine-grained changes you need
68
65
  let baseConfig;
69
- baseConfig = await createConfig(
70
- 'web',
71
- 'dev',
72
- {
73
- // clearConsole: false,
74
- modifyWebpackConfig: razzleConfig.modifyWebpackConfig,
75
- plugins: razzleConfig.plugins,
76
- },
77
- webpack,
78
- false,
79
- undefined,
80
- [],
81
- defaultRazzleOptions,
82
- );
66
+ baseConfig = await createConfig('web', 'dev', {
67
+ // clearConsole: false,
68
+ modifyWebpackConfig: razzleConfig.modifyWebpackConfig,
69
+ plugins: razzleConfig.plugins
70
+ }, webpack, false, undefined, [], defaultRazzleOptions);
83
71
  const AddonConfigurationRegistry = require('../addon-registry');
84
-
85
72
  const registry = new AddonConfigurationRegistry(projectRootPath);
86
-
87
- config = lessPlugin({ registry }).modifyWebpackConfig({
88
- env: { target: 'web', dev: 'dev' },
73
+ config = lessPlugin({
74
+ registry
75
+ }).modifyWebpackConfig({
76
+ env: {
77
+ target: 'web',
78
+ dev: 'dev'
79
+ },
89
80
  webpackConfig: config,
90
81
  webpackObject: webpack,
91
- options: {},
82
+ options: {}
92
83
  });
93
84
 
94
- // putting SVG loader on top, fix the fileloader manually (Volto plugin does not
95
- // work) since it needs to go first
85
+ // Put the SVG loader on top and prevent the asset/resource rule
86
+ // from processing the app's SVGs
96
87
  config.module.rules.unshift(SVGLOADER);
97
- const fileLoader = config.module.rules.find(fileLoaderFinder);
98
- fileLoader.exclude = [/\.(config|variables|overrides)$/, /icons\/.*\.svg$/];
99
-
100
- config.plugins.unshift(
101
- new webpack.DefinePlugin({
102
- __DEVELOPMENT__: true,
103
- __CLIENT__: true,
104
- __SERVER__: false,
105
- }),
106
- );
107
-
88
+ const fileLoaderRule = config.module.rules.find(rule => rule.test.test('.svg'));
89
+ fileLoaderRule.exclude = /icons\/.*\.svg$/;
90
+ config.plugins.unshift(new webpack.DefinePlugin({
91
+ __DEVELOPMENT__: true,
92
+ __CLIENT__: true,
93
+ __SERVER__: false
94
+ }));
108
95
  const resultConfig = {
109
96
  ...config,
110
97
  resolve: {
111
98
  ...config.resolve,
112
- alias: { ...config.resolve.alias, ...baseConfig.resolve.alias },
113
- },
99
+ alias: {
100
+ ...config.resolve.alias,
101
+ ...baseConfig.resolve.alias
102
+ }
103
+ }
114
104
  };
115
105
 
116
106
  // Addons have to be loaded with babel
117
- const addonPaths = registry.addonNames.map((addon) =>
118
- fs.realpathSync(registry.packages[addon].modulePath),
119
- );
120
- resultConfig.module.rules[1].exclude = (input) =>
107
+ const addonPaths = registry.addonNames.map(addon => fs.realpathSync(registry.packages[addon].modulePath));
108
+ resultConfig.module.rules[1].exclude = input =>
121
109
  // exclude every input from node_modules except from @plone/volto
122
110
  /node_modules\/(?!(@plone\/volto)\/)/.test(input) &&
123
111
  // If input is in an addon, DON'T exclude it
124
- !addonPaths.some((p) => input.includes(p));
125
-
112
+ !addonPaths.some(p => input.includes(p));
126
113
  return resultConfig;
127
114
  },
128
- babel: async (options) => {
115
+ babel: async options => {
129
116
  return {
130
117
  ...options,
131
- plugins: [
132
- ...options.plugins,
133
- [
134
- './node_modules/babel-plugin-root-import/build/index.js',
135
- {
136
- rootPathSuffix: './src',
137
- },
138
- ],
139
- ],
118
+ plugins: [...options.plugins, ['./node_modules/babel-plugin-root-import/build/index.js', {
119
+ rootPathSuffix: './src'
120
+ }]]
140
121
  // any extra options you want to set
141
122
  };
142
123
  },
143
- };
124
+ core: {
125
+ builder: 'webpack5'
126
+ }
127
+ };
Binary file
package/CHANGELOG.md CHANGED
@@ -8,6 +8,36 @@
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## 17.0.0-alpha.0 (2023-03-04)
12
+
13
+ ### Breaking
14
+
15
+ - Volto 17 drops support for NodeJS 14, and adds support for NodeJS 18.
16
+ Please see the [upgrade guide](https://6.docs.plone.org/volto/upgrade-guide/index.html)
17
+ for more information.
18
+
19
+ Volto 17 now uses Webpack 5. [#4086](https://github.com/plone/volto/issues/4086)
20
+
21
+ ### Internal
22
+
23
+ - Add HI-ERN website to "Volto in Production" section in README @steffenri [#4172](https://github.com/plone/volto/issues/4172)
24
+
25
+ ### Documentation
26
+
27
+ - Add a new Volto site to the README @erral [#4158](https://github.com/plone/volto/issues/4158), [#4170](https://github.com/plone/volto/issues/4170)
28
+ - Add new websites Lanku and UEU
29
+ [erral] [#4310](https://github.com/plone/volto/issues/4310)
30
+ - Fix English and MyST grammar and syntax from PR #4285 @stevepiercy [#4331](https://github.com/plone/volto/issues/4331)
31
+ - Use a universal static path for both documentation and volto repos. @stevepiercy [#4376](https://github.com/plone/volto/issues/4376)
32
+
33
+
34
+ ## 16.14.0 (2023-03-03)
35
+
36
+ ### Feature
37
+
38
+ - Add `Teaser` block @sneridagh [#3706](https://github.com/plone/volto/issues/3706)
39
+
40
+
11
41
  ## 16.13.0 (2023-03-02)
12
42
 
13
43
  ### Feature
@@ -416,6 +446,8 @@ See https://6.dev-docs.plone.org/volto/upgrade-guide/index.html for more informa
416
446
  - Allow passing ariaHidden, id and style to an Icon's SVG @JeffersonBledsoe #3908
417
447
  - All Fields now understand the `default` prop as a fallback value in case their data value is missing. As a convenience, the `defaultValue` is also used as a fallback, but this shouldn't proliferate. @tiberiuichim
418
448
  - There is an experimental setting to move the button for adding a new block to show below any selected block, instead of only on the left of empty text blocks. Set `config.experimental.addBlockButton.enabled = true` to enable it. @davisagli
449
+ - Allow custom style wrapper classnames via fieldname suffixes. Added `config.settings.styleClassNameConverters` to register new suffix converters @tiberiuichim
450
+ - Support for drilled down current state and updater function from schema in `ObjectListWidget`. This allows to sync the current object selected from the UI and the block settings and viceversa @sneridagh
419
451
 
420
452
  ### Bugfix
421
453
 
@@ -835,6 +867,7 @@ See https://6.dev-docs.plone.org/volto/upgrade-guide/index.html for more informa
835
867
  ### Bugfix
836
868
 
837
869
  - Prefer views assigned explicitly with `layout` over views based on the `@type` @iRohitSingh
870
+ - Improve collapsing of whitespace when pasting to slate text block @tiberiuichim
838
871
 
839
872
  ### Internal
840
873
 
package/README.md CHANGED
@@ -53,20 +53,16 @@ First get all the requirements installed on your system.
53
53
 
54
54
  ### Prerequisites
55
55
 
56
- - [Node.js LTS (16.x)](https://nodejs.org/)
56
+ - [Node.js LTS (18.x)](https://nodejs.org/)
57
57
  - [Python](https://python.org/) - See below for specific versions.
58
58
  - [Docker](https://www.docker.com/get-started) (if using the Plone docker images)
59
59
 
60
- *UPDATE 2022-10-25*: Since 2022-10-25, NodeJS 18 is in LTS state (https://github.com/nodejs/release#release-schedule). However, due to changes in internal SSL libraries, some Volto dependencies have been deprecated and need to be updated in order to continue working in NodeJS 18, mainly Webpack 4 (see: https://github.com/webpack/webpack/issues/14532#issuecomment-947525539 for further information). You can still use it, but NodeJS should be run under a special flag: `NODE_OPTIONS=--openssl-legacy-provider`. See also Volto's PR: https://github.com/plone/volto/pull/3699 for more information.
61
-
62
60
  The versions of Python that are supported in Volto depend on the version of Plone that you use.
63
61
 
64
62
  | Plone | Python | Volto |
65
63
  |---|---|---|
66
64
  | 5.2 | 2.7, 3.6-3.8 | 15.0 |
67
- | 6.0 (beta) | 3.8-3.10 | 16.0 (alpha) |
68
-
69
- At the time of this writing, Volto 16 is still in alpha status, and Plone 6 is in beta status.
65
+ | 6.0 | 3.8-3.11 | 16.0 |
70
66
 
71
67
  ### Create a Volto project using the generator
72
68
 
@@ -90,7 +86,7 @@ cd myvoltoproject
90
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:
91
87
 
92
88
  ```shell
93
- docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.0b3
89
+ docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.1
94
90
  ```
95
91
 
96
92
  or as an alternative if you have experience with Plone and you have all the
@@ -105,7 +101,7 @@ make build-backend
105
101
 
106
102
  Volto is the default UI for Plone 6, so it will work for all Plone 6 released versions.
107
103
 
108
- For the Plone 5 series, the latest released version of Plone 5 (with Python 3) is recommended (at the time of writing 5.2.9).
104
+ For the Plone 5 series, the latest released version of Plone 5 (with Python 3) is recommended (at the time of writing 5.2.10).
109
105
 
110
106
  #### KGS (known good set of versions) for backend packages
111
107
 
@@ -113,14 +109,14 @@ On Plone 6, we recommend using the known good set (KGS) of package versions that
113
109
 
114
110
  On Plone 5, Volto is currently tested with the following packages pinned to specific versions, and we recommend using the same versions, which are:
115
111
 
116
- - plone.restapi 8.30.0
117
- - plone.rest 2.0.0a5
118
- - plone.volto 4.0.0a13
112
+ - plone.restapi 8.32.6
113
+ - plone.rest 2.0.0
114
+ - plone.volto 4.0.3
119
115
 
120
116
  This would be the docker command to spawn a Plone 5 container with the right KGS versions:
121
117
 
122
118
  ```shell
123
- docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e ADDONS="plone.restapi==8.30.0 plone.volto==4.0.0a13 plone.rest==2.0.0a5 plone.app.iterate==4.0.2 plone.app.vocabularies==4.3.0" -e PROFILES="plone.volto:default-homepage" plone/plone-backend
119
+ docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e ADDONS="plone.restapi==8.32.6 plone.volto==4.0.3 plone.rest==2.0.0" -e PROFILES="plone.volto:default-homepage" plone/plone-backend
124
120
  ```
125
121
 
126
122
  ### Start Volto
@@ -138,7 +134,7 @@ Go to [http://localhost:3000](http://localhost:3000) in your browser.
138
134
  Volto is actively developed since 2017 and used in production since 2018 on the following websites:
139
135
 
140
136
  - [VHS Ehrenamtsportal](https://vhs-ehrenamtsportal.de) (Website to help volunteers that help refugees for the [German Adult Education Association](https://www.dvv-vhs.de/en/home/), developed by [kitconcept GmbH](https://kitconcept.com), 2018)
141
- - [Zeelandia](https://zeelandia.de) (Corporate website for one of the leading backery ingrediences manufactors in Germany, developed by [kitconcept GmbH](https://kitconcept.com), 2019)
137
+ - [Zeelandia](https://zeelandia.de) (Corporate website for one of the leading backery ingredients manufacturers in Germany, developed by [kitconcept GmbH](https://kitconcept.com), 2019)
142
138
  - [Excellence at Humboldt-Universität zu Berlin](https://www.alles-beginnt-mit-einer-frage.de) (Website for the excellence initiative of the [Humboldt University Berlin](https://hu-berlin.de), developed by [kitconcept GmbH](https://kitconcept.com), 2019)
143
139
  - [Forest Information System for Europe](https://forest.eea.europa.eu) (Thematic website focusing on European forests, developed by [Eau de Web](https://www.eaudeweb.ro), 2019)
144
140
  - [Industrial Emissions portal for Europe](https://industry.eea.europa.eu) (Thematic website focusing on European industrial emissions, developed by [Eau de Web](https://www.eaudeweb.ro), 2020)
@@ -153,7 +149,7 @@ Volto is actively developed since 2017 and used in production since 2018 on the
153
149
  - [Jobfamilie MEDICE](https://jobfamilie.medice.de/de) (Carrer website for MEDICE Arzneimittel Pütter GmbH & Co. KG), developed by [Werkbank GmbH](https://werkbank.de/), 2020)
154
150
  - [Baccanale Imola](https://www.baccanaleimola.it) (Baccanale is a food fair that happens every year in Imola, Italy. Developed by [RedTurtle](https://redturtle.it), 2020)
155
151
  - [ResOU](https://resou.osaka-u.ac.jp) (ResOU is introducing official researched releases by the University of Osaka, Japan. Developed by [CMScom](https://www.cmscom.jp), 2020)
156
- - [Humboldt Labor](https://www.humboldt-labor.de/) (The Humboldt Lab is a website where the Humboldt University Berlin presents its latest reaseach projects and findings. Developed by [WLDX](https://wldx.de/) and [kitconcept GmbH](https://kitconcept.com), 2020)
152
+ - [Humboldt Labor](https://www.humboldt-labor.de/) (The Humboldt Lab is a website where the Humboldt University Berlin presents its latest research projects and findings. Developed by [WLDX](https://wldx.de/) and [kitconcept GmbH](https://kitconcept.com), 2020)
157
153
  - [Osaka University](https://www.osaka-u.ac.jp/en) (Osaka University is considered one of the most prestigious universities in Japan. Developed by [CMScom](https://www.cmscom.jp), 2021)
158
154
  - [Comune di Modena](https://www.comune.modena.it/) (Website of the Municipality of Modena. Developed by [RedTurtle](https://redturtle.it), 2020)
159
155
  - [Comune di Camposanto](https://www.comune.camposanto.mo.it/) (Website of the Municipality of Camposanto. Developed by [RedTurtle](https://redturtle.it), 2021)
@@ -171,11 +167,16 @@ Volto is actively developed since 2017 and used in production since 2018 on the
171
167
  - [RawMaterial](https://rawmaterial.it/en) (Company's website. Developed by [RawMaterial](https://rawmaterial.it/en), 2021)
172
168
  - [WISE-Freshwater](https://water.europa.eu/freshwater) (WISE-Freshwater, the Freshwater Information System for Europe. Developed by [Eau de web](https://eaudeweb.ro) for the European Environmental Agency, 2021)
173
169
  - [EEA-IMSv4](https://www.eea.europa.eu/ims) (EEA Indicator Management System v4. Developed by [Eau de web](https://eaudeweb.ro) for the European Environmental Agency, 2021)
174
- - [Memori](https://memori.ai/en) (Corporate website for Memori, startup specialising in technologies applied to the experience of memory through the development of Artificial Intelligences. Developed by [RawMaterial](https://rawmaterial.it/en), 2021)
170
+ - [Memori](https://memori.ai/en) (Corporate website for Memori, startup specializing in technologies applied to the experience of memory through the development of Artificial Intelligences. Developed by [RawMaterial](https://rawmaterial.it/en), 2021)
175
171
  - [TwinCreator](https://twincreator.com/en) (TwinCreator allows you to design and train multiple AI’s through simple conversation through NLP. Developed by [RawMaterial](https://rawmaterial.it/en), 2021)
176
172
  - [MemoryTwin](https://memorytwin.com/en) (Product website, MemoryTwin allows you to create your personal artificial intelligence, able to remember and speak. Developed by [RawMaterial](https://rawmaterial.it/en), 2022)
177
173
  - [Forschungszentrum Jülich](https://fz-juelich.de) (Website for Forschungzentrum Jülich, which is one of the largest research institutions in Europe, developed by [kitconcept GmbH](https://kitconcept.com), 2022)
178
174
  - [ILPO](https://ilpo.jyu.fi/) (the registration portal of continuous learning at the University of Jyväskylä. Developed by University of Jyväskylä, 2022)
175
+ - [Debabarreneko mankomunitatea](https://debabarrena.eus) (Website of the Commonwealth of Debabarrena, community of municipalities to centralize waste handling services, developed by [CodeSyntax](https://www.codesyntax.com/en), 2022)
176
+ - [Debako Udala / Ayuntamiento de Deba](https://www.deba.eus) (Website of the municipality of Deba, developed by [CodeSyntax](https://www.codesyntax.com/en), 2022)
177
+ - [Helmholtz-Institut Erlangen-Nürnberg für Erneuerbare Energien (HI-ERN)](https://www.hi-ern.de) (Website for HI ERN, a research institution for renewable energies, developed by [kitconcept GmbH](https://kitconcept.com), 2022)
178
+ - [Lanku](https://www.lanku.eus) (Website for Lanku Kultur Zerbitzuak, a company offering cultural services and improvised Basque verse singing sessions across the Basque Country, developed by [CodeSyntax](https://www.codesyntax.com/en), 2023)
179
+ - [UEU](https://www.ueu.eus) (Website for Udako Euskal Unibertsitatea, a non-profit University offering all its service only in Basque: courses, publications, ... developed by [CodeSyntax](https://www.codesyntax.com/en), 2023)
179
180
 
180
181
  Please create a new [issue](https://github.com/plone/volto/issues/new) or [pull request](https://github.com/plone/volto/pulls) to add your Volto-site here!
181
182
 
@@ -229,10 +230,11 @@ JavaScript-centered trainings.
229
230
 
230
231
  ## Node Support
231
232
 
233
+ - Node 18: Supported since Volto 17
232
234
  - Node 16: Supported since Volto 14
233
- - Node 14: Supported since Volto 8.8.0
234
- - Node 12: Deprecated from Volto 16 onwards. It was supported since Volto 4
235
- - Node 10: Deprecated from Volto 13 onwards. It was supported since Volto 1 (and its predecessor "plone-react")
235
+ - Node 14: No longer supported. It was supported from Volto 8.8.0 - 16
236
+ - Node 12: No longer supported. It was supported from Volto 4 - 15
237
+ - Node 10: No longer supported. It was supported from Volto 1 - 12
236
238
 
237
239
  ## Browser support
238
240
 
@@ -267,7 +269,7 @@ yarn
267
269
  Either using a Docker command:
268
270
 
269
271
  ```shell
270
- docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.0b3
272
+ docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.1
271
273
  ```
272
274
 
273
275
  or using the convenience makefile command:
@@ -2,7 +2,7 @@ import '@testing-library/cypress/add-commands';
2
2
  import { getIfExists } from '../helpers';
3
3
  import { ploneAuth } from './constants';
4
4
 
5
- const HOSTNAME = Cypress.env('BACKEND_HOST') || 'localhost';
5
+ const HOSTNAME = Cypress.env('BACKEND_HOST') || '127.0.0.1';
6
6
  const GUILLOTINA_API_URL = `http://${HOSTNAME}:8081/db/web`;
7
7
  const PLONE_SITE_ID = Cypress.env('SITE_ID') || 'plone';
8
8
  const PLONE_API_URL =
@@ -267,7 +267,7 @@ Cypress.Commands.add('getContent', ({ path = '' }) => {
267
267
  // --- Add DX Content-Type ----------------------------------------------------------
268
268
  Cypress.Commands.add('addContentType', (name) => {
269
269
  let api_url, auth;
270
- api_url = Cypress.env('API_PATH') || 'http://localhost:8080/Plone';
270
+ api_url = Cypress.env('API_PATH') || 'http://127.0.0.1:8080/Plone';
271
271
  auth = ploneAuthObj;
272
272
 
273
273
  return cy
@@ -288,7 +288,7 @@ Cypress.Commands.add('addContentType', (name) => {
288
288
  // --- Remove DX behavior ----------------------------------------------------------
289
289
  Cypress.Commands.add('removeContentType', (name) => {
290
290
  let api_url, auth;
291
- api_url = Cypress.env('API_PATH') || 'http://localhost:8080/Plone';
291
+ api_url = Cypress.env('API_PATH') || 'http://127.0.0.1:8080/Plone';
292
292
  auth = ploneAuthObj;
293
293
 
294
294
  return cy
@@ -307,7 +307,7 @@ Cypress.Commands.add('removeContentType', (name) => {
307
307
  // --- Add DX field ----------------------------------------------------------
308
308
  Cypress.Commands.add('addSlateJSONField', (type, name) => {
309
309
  let api_url, auth;
310
- api_url = Cypress.env('API_PATH') || 'http://localhost:8080/Plone';
310
+ api_url = Cypress.env('API_PATH') || 'http://127.0.0.1:8080/Plone';
311
311
  auth = ploneAuthObj;
312
312
 
313
313
  return cy
@@ -332,7 +332,7 @@ Cypress.Commands.add('addSlateJSONField', (type, name) => {
332
332
  // --- Remove DX field ----------------------------------------------------------
333
333
  Cypress.Commands.add('removeSlateJSONField', (type, name) => {
334
334
  let api_url, auth;
335
- api_url = Cypress.env('API_PATH') || 'http://localhost:8080/Plone';
335
+ api_url = Cypress.env('API_PATH') || 'http://127.0.0.1:8080/Plone';
336
336
  auth = ploneAuthObj;
337
337
 
338
338
  return cy
@@ -360,7 +360,7 @@ Cypress.Commands.add(
360
360
  password = 'password',
361
361
  roles = ['Member', 'Reader', 'Editor'],
362
362
  groups = {
363
- '@id': 'http://localhost:3000/@users',
363
+ '@id': 'http://127.0.0.1:3000/@users',
364
364
  items: [
365
365
  {
366
366
  id: 'AuthenticatedUsers',
@@ -444,7 +444,7 @@ Cypress.Commands.add(
444
444
  password = ploneAuth[1],
445
445
  roles = ['Member', 'Reader'],
446
446
  users = {
447
- '@id': 'http://localhost:3000/@groups',
447
+ '@id': 'http://127.0.0.1:3000/@groups',
448
448
  items: [],
449
449
  items_total: 0,
450
450
  },
@@ -3,7 +3,7 @@ export function setupGuillotina() {
3
3
  Authorization: 'Basic cm9vdDpyb290',
4
4
  'Content-Type': 'application/json',
5
5
  };
6
- const api_url = 'http://localhost:8081/db';
6
+ const api_url = 'http://127.0.0.1:8081/db';
7
7
 
8
8
  cy.request({
9
9
  method: 'POST',
@@ -62,7 +62,7 @@ export function tearDownGuillotina({ allowFail = false } = {}) {
62
62
  Authorization: 'Basic cm9vdDpyb290',
63
63
  'Content-Type': 'application/json',
64
64
  };
65
- const api_url = 'http://localhost:8081/db';
65
+ const api_url = 'http://127.0.0.1:8081/db';
66
66
 
67
67
  cy.request({
68
68
  method: 'DELETE',
@@ -1,5 +1,5 @@
1
1
  function setup() {
2
- const api_url = Cypress.env('API_PATH') || 'http://localhost:55001/plone';
2
+ const api_url = Cypress.env('API_PATH') || 'http://127.0.0.1:55001/plone';
3
3
  cy.request({
4
4
  method: 'POST',
5
5
  url: `${api_url}/RobotRemote`,
@@ -10,7 +10,7 @@ function setup() {
10
10
  }
11
11
 
12
12
  function teardown() {
13
- const api_url = Cypress.env('API_PATH') || 'http://localhost:55001/plone';
13
+ const api_url = Cypress.env('API_PATH') || 'http://127.0.0.1:55001/plone';
14
14
  cy.request({
15
15
  method: 'POST',
16
16
  url: `${api_url}/RobotRemote`,
@@ -6,7 +6,7 @@ export const getsystemNeedsUpgrade = {
6
6
  plone_gs_metadata_version_file_system: '6008',
7
7
  plone_gs_metadata_version_installed: '6006',
8
8
  plone_restapi_version: '8.32.0',
9
- plone_version: '6.0.0b3',
9
+ plone_version: '6.0.0',
10
10
  python_version:
11
11
  '3.9.14 (main, Sep 13 2022, 03:20:56) \n[GCC 10.2.1 20210110]',
12
12
  upgrade: true,
package/cypress.config.js CHANGED
@@ -5,7 +5,7 @@ module.exports = defineConfig({
5
5
  chromeWebSecurity: false,
6
6
  projectId: 'hvviu4',
7
7
  e2e: {
8
- baseUrl: 'http://localhost:3000',
8
+ baseUrl: 'http://127.0.0.1:3000',
9
9
  excludeSpecPattern: ['*~'],
10
10
  specPattern: 'cypress/tests/**/*.{js,jsx,ts,tsx}',
11
11
  },
@@ -2,14 +2,13 @@ version: '3.3'
2
2
  services:
3
3
 
4
4
  backend:
5
- image: plone/plone-backend:6.0.0b2
5
+ image: plone/plone-backend:6.0.1
6
6
  # Plone 5.2 series can be used too
7
- # image: plone/plone-backend:5.2.9
7
+ # image: plone/plone-backend:5.2.10
8
8
  ports:
9
9
  - '8080:8080'
10
10
  environment:
11
11
  - SITE=Plone
12
- - 'ADDONS=plone.restapi==8.29.0 plone.volto==4.0.0a13 plone.rest==2.0.0a5'
13
12
  - 'PROFILES=plone.volto:default-homepage'
14
13
  labels:
15
14
  - traefik.enable=true
@@ -296,6 +296,7 @@ msgstr ""
296
296
  #: components/manage/Blocks/Image/schema
297
297
  #: components/manage/Blocks/LeadImage/LeadImageSidebar
298
298
  #: components/manage/Blocks/Maps/schema
299
+ #: components/manage/Blocks/Teaser/schema
299
300
  #: components/manage/Blocks/Video/schema
300
301
  # defaultMessage: Alignment
301
302
  msgid "Alignment"
@@ -978,6 +979,7 @@ msgid "Descending"
978
979
  msgstr "Descendent"
979
980
 
980
981
  #: components/manage/Blocks/HeroImageLeft/Edit
982
+ #: components/manage/Blocks/Teaser/schema
981
983
  #: components/manage/Controlpanels/ContentTypes
982
984
  #: components/manage/Widgets/SchemaWidget
983
985
  #: components/manage/Widgets/SelectWidget
@@ -1628,6 +1630,11 @@ msgstr "imatge"
1628
1630
  msgid "Image gallery"
1629
1631
  msgstr "Galeria d'imatges"
1630
1632
 
1633
+ #: components/manage/Blocks/Teaser/schema
1634
+ # defaultMessage: Image override
1635
+ msgid "Image override"
1636
+ msgstr ""
1637
+
1631
1638
  #: components/manage/Blocks/Image/schema
1632
1639
  # defaultMessage: Image size
1633
1640
  msgid "Image size"
@@ -2302,6 +2309,7 @@ msgstr ""
2302
2309
 
2303
2310
  #: components/manage/Blocks/Image/schema
2304
2311
  #: components/manage/Blocks/LeadImage/LeadImageSidebar
2312
+ #: components/manage/Blocks/Teaser/schema
2305
2313
  # defaultMessage: Open in a new tab
2306
2314
  msgid "Open in a new tab"
2307
2315
  msgstr "Obre en una pestanya nova"
@@ -2396,6 +2404,11 @@ msgstr "Eines personals"
2396
2404
  msgid "Persons responsible for creating the content of this item. Please enter a list of user names, one per line. The principal creator should come first."
2397
2405
  msgstr "Responsables de la creació del contingut d'aquest article. Introduïu una llista de noms d'usuari, un per línia. El creador principal hauria de ser primer."
2398
2406
 
2407
+ #: components/manage/Blocks/Teaser/DefaultBody
2408
+ # defaultMessage: Please choose an existing content as source for this element
2409
+ msgid "Please choose an existing content as source for this element"
2410
+ msgstr ""
2411
+
2399
2412
  #: components/manage/Controlpanels/Controlpanels
2400
2413
  # defaultMessage: Please continue with the upgrade.
2401
2414
  msgid "Please continue with the upgrade."
@@ -2666,6 +2679,11 @@ msgstr "Falta l'entrada necessària."
2666
2679
  msgid "Reset term title"
2667
2680
  msgstr "Restableix el títol"
2668
2681
 
2682
+ #: components/manage/Blocks/Teaser/Data
2683
+ # defaultMessage: Reset the block
2684
+ msgid "Reset the block"
2685
+ msgstr ""
2686
+
2669
2687
  #: components/manage/Widgets/QuerystringWidget
2670
2688
  # defaultMessage: Results limit
2671
2689
  msgid "Results limit"
@@ -3236,6 +3254,7 @@ msgstr "Etiquetes per afegir"
3236
3254
  msgid "Tags to remove"
3237
3255
  msgstr "Etiquetes per eliminar"
3238
3256
 
3257
+ #: components/manage/Blocks/Teaser/schema
3239
3258
  #: components/manage/Controlpanels/Aliases
3240
3259
  # defaultMessage: Target
3241
3260
  msgid "Target"
@@ -3261,6 +3280,11 @@ msgstr "Nombre objectiu d'objectes a la memòria per memòria cau"
3261
3280
  msgid "Target url path must start with a slash."
3262
3281
  msgstr ""
3263
3282
 
3283
+ #: components/manage/Blocks/Teaser/schema
3284
+ # defaultMessage: Teaser
3285
+ msgid "Teaser"
3286
+ msgstr ""
3287
+
3264
3288
  #: components/manage/Widgets/SchemaWidget
3265
3289
  # defaultMessage: Text
3266
3290
  msgid "Text"
@@ -3423,6 +3447,7 @@ msgid "Time"
3423
3447
  msgstr "Hora"
3424
3448
 
3425
3449
  #: components/manage/Blocks/HeroImageLeft/Edit
3450
+ #: components/manage/Blocks/Teaser/schema
3426
3451
  #: components/manage/Contents/Contents
3427
3452
  #: components/manage/Contents/ContentsRenameModal
3428
3453
  #: components/manage/Controlpanels/ContentTypes
@@ -4122,6 +4147,11 @@ msgstr "quan"
4122
4147
  msgid "event_where"
4123
4148
  msgstr "On?"
4124
4149
 
4150
+ #: components/manage/Blocks/Teaser/schema
4151
+ # defaultMessage: Head title
4152
+ msgid "head_title"
4153
+ msgstr ""
4154
+
4125
4155
  #: components/theme/PasswordReset/RequestPasswordReset
4126
4156
  # defaultMessage: Password reset confirmation sent
4127
4157
  msgid "heading_sent_password"