@kitconcept/core 2.0.0-alpha.11 → 2.0.0-alpha.13
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/.changelog.draft +9 -8
- package/CHANGELOG.md +22 -0
- package/locales/de/LC_MESSAGES/volto.po +14 -4
- package/locales/en/LC_MESSAGES/volto.po +10 -0
- package/locales/es/LC_MESSAGES/volto.po +10 -0
- package/locales/pt_BR/LC_MESSAGES/volto.po +10 -0
- package/locales/volto.pot +11 -1
- package/package.json +3 -5
- package/src/actions/exportImport/exportImport.js +1 -11
- package/src/components/Controlpanels/ExportImport.jsx +49 -16
- package/src/constants/ActionTypes.js +0 -1
- package/src/icons/export.svg +11 -0
- package/src/icons/import.svg +11 -0
package/.changelog.draft
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
## 2.0.0-alpha.
|
|
1
|
+
## 2.0.0-alpha.13 (2026-03-14)
|
|
2
|
+
|
|
3
|
+
### Breaking
|
|
4
|
+
|
|
5
|
+
- Removed add-ons from frontend, moved to the distributions. @sneridagh
|
|
6
|
+
- Replaced support of `@mbarde/volto-image-crop-widget` with `@plone-collective/volto-image-editor`. @sneridagh
|
|
2
7
|
|
|
3
8
|
### Feature
|
|
4
9
|
|
|
5
|
-
-
|
|
6
|
-
- Add controlpanel to export and import content. @iFlameing
|
|
10
|
+
- Improve UX on Export Import control panel and add missing German translations. @danalvrz
|
|
7
11
|
|
|
8
12
|
### Internal
|
|
9
13
|
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
The specific version should be managed in a distribution instead.
|
|
13
|
-
This avoids the need to release `@kitconcept/core` just to include a new release of VLT.
|
|
14
|
-
@davisagli
|
|
14
|
+
- Use Volto 19a27.
|
|
15
|
+
See https://github.com/plone/volto/releases/tag/19.0.0-alpha.27 @sneridagh
|
|
15
16
|
|
|
16
17
|
|
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,28 @@
|
|
|
8
8
|
|
|
9
9
|
<!-- towncrier release notes start -->
|
|
10
10
|
|
|
11
|
+
## 2.0.0-alpha.13 (2026-03-14)
|
|
12
|
+
|
|
13
|
+
### Breaking
|
|
14
|
+
|
|
15
|
+
- Removed add-ons from frontend, moved to the distributions. @sneridagh
|
|
16
|
+
- Replaced support of `@mbarde/volto-image-crop-widget` with `@plone-collective/volto-image-editor`. @sneridagh
|
|
17
|
+
|
|
18
|
+
### Feature
|
|
19
|
+
|
|
20
|
+
- Improve UX on Export Import control panel and add missing German translations. @danalvrz
|
|
21
|
+
|
|
22
|
+
### Internal
|
|
23
|
+
|
|
24
|
+
- Use Volto 19a27.
|
|
25
|
+
See https://github.com/plone/volto/releases/tag/19.0.0-alpha.27 @sneridagh
|
|
26
|
+
|
|
27
|
+
## 2.0.0-alpha.12 (2026-02-27)
|
|
28
|
+
|
|
29
|
+
### Bugfix
|
|
30
|
+
|
|
31
|
+
- Fix content export. @davisagli
|
|
32
|
+
|
|
11
33
|
## 2.0.0-alpha.11 (2026-02-26)
|
|
12
34
|
|
|
13
35
|
### Feature
|
|
@@ -22,6 +22,11 @@ msgstr ""
|
|
|
22
22
|
msgid "Back"
|
|
23
23
|
msgstr "Zurück"
|
|
24
24
|
|
|
25
|
+
#. Default: "Choose file"
|
|
26
|
+
#: components/Controlpanels/ExportImport
|
|
27
|
+
msgid "Choose file"
|
|
28
|
+
msgstr "Datai auswählen"
|
|
29
|
+
|
|
25
30
|
#. Default: "Configuration Versions"
|
|
26
31
|
#: components/Controlpanels/UpgradeControlPanel
|
|
27
32
|
msgid "Configuration Versions"
|
|
@@ -55,7 +60,7 @@ msgstr "Inhalt exportieren"
|
|
|
55
60
|
#. Default: "Export Site"
|
|
56
61
|
#: components/Controlpanels/ExportImport
|
|
57
62
|
msgid "Export Site"
|
|
58
|
-
msgstr "
|
|
63
|
+
msgstr "Website exportieren"
|
|
59
64
|
|
|
60
65
|
#. Default: "Export successful"
|
|
61
66
|
#: components/Controlpanels/ExportImport
|
|
@@ -65,7 +70,7 @@ msgstr "Export erfolgreich"
|
|
|
65
70
|
#. Default: "Exporting…"
|
|
66
71
|
#: components/Controlpanels/ExportImport
|
|
67
72
|
msgid "Exporting…"
|
|
68
|
-
msgstr ""
|
|
73
|
+
msgstr "Exportieren..."
|
|
69
74
|
|
|
70
75
|
#. Default: "Import Content"
|
|
71
76
|
#: components/Controlpanels/ExportImport
|
|
@@ -75,7 +80,7 @@ msgstr "Inhalt importieren"
|
|
|
75
80
|
#. Default: "Import Site"
|
|
76
81
|
#: components/Controlpanels/ExportImport
|
|
77
82
|
msgid "Import Site"
|
|
78
|
-
msgstr "Importieren
|
|
83
|
+
msgstr "Website Importieren"
|
|
79
84
|
|
|
80
85
|
#. Default: "Import successful"
|
|
81
86
|
#: components/Controlpanels/ExportImport
|
|
@@ -85,7 +90,7 @@ msgstr "Import erfolgreich"
|
|
|
85
90
|
#. Default: "Importing…"
|
|
86
91
|
#: components/Controlpanels/ExportImport
|
|
87
92
|
msgid "Importing…"
|
|
88
|
-
msgstr ""
|
|
93
|
+
msgstr "Importieren..."
|
|
89
94
|
|
|
90
95
|
#. Default: "Latest available configuration"
|
|
91
96
|
#: components/Controlpanels/UpgradeControlPanel
|
|
@@ -102,6 +107,11 @@ msgstr ""
|
|
|
102
107
|
msgid "No addons found"
|
|
103
108
|
msgstr ""
|
|
104
109
|
|
|
110
|
+
#. Default: "No file selected"
|
|
111
|
+
#: components/Controlpanels/ExportImport
|
|
112
|
+
msgid "No file selected"
|
|
113
|
+
msgstr "Keine Datei ausgewählt"
|
|
114
|
+
|
|
105
115
|
#. Default: "Package Version"
|
|
106
116
|
#: components/Controlpanels/VersionOverview
|
|
107
117
|
msgid "Package Version"
|
|
@@ -22,6 +22,11 @@ msgstr ""
|
|
|
22
22
|
msgid "Back"
|
|
23
23
|
msgstr ""
|
|
24
24
|
|
|
25
|
+
#. Default: "Choose file"
|
|
26
|
+
#: components/Controlpanels/ExportImport
|
|
27
|
+
msgid "Choose file"
|
|
28
|
+
msgstr ""
|
|
29
|
+
|
|
25
30
|
#. Default: "Configuration Versions"
|
|
26
31
|
#: components/Controlpanels/UpgradeControlPanel
|
|
27
32
|
msgid "Configuration Versions"
|
|
@@ -102,6 +107,11 @@ msgstr ""
|
|
|
102
107
|
msgid "No addons found"
|
|
103
108
|
msgstr ""
|
|
104
109
|
|
|
110
|
+
#. Default: "No file selected"
|
|
111
|
+
#: components/Controlpanels/ExportImport
|
|
112
|
+
msgid "No file selected"
|
|
113
|
+
msgstr ""
|
|
114
|
+
|
|
105
115
|
#. Default: "Package Version"
|
|
106
116
|
#: components/Controlpanels/VersionOverview
|
|
107
117
|
msgid "Package Version"
|
|
@@ -29,6 +29,11 @@ msgstr ""
|
|
|
29
29
|
msgid "Back"
|
|
30
30
|
msgstr ""
|
|
31
31
|
|
|
32
|
+
#. Default: "Choose file"
|
|
33
|
+
#: components/Controlpanels/ExportImport
|
|
34
|
+
msgid "Choose file"
|
|
35
|
+
msgstr ""
|
|
36
|
+
|
|
32
37
|
#. Default: "Configuration Versions"
|
|
33
38
|
#: components/Controlpanels/UpgradeControlPanel
|
|
34
39
|
msgid "Configuration Versions"
|
|
@@ -109,6 +114,11 @@ msgstr ""
|
|
|
109
114
|
msgid "No addons found"
|
|
110
115
|
msgstr ""
|
|
111
116
|
|
|
117
|
+
#. Default: "No file selected"
|
|
118
|
+
#: components/Controlpanels/ExportImport
|
|
119
|
+
msgid "No file selected"
|
|
120
|
+
msgstr ""
|
|
121
|
+
|
|
112
122
|
#. Default: "Package Version"
|
|
113
123
|
#: components/Controlpanels/VersionOverview
|
|
114
124
|
msgid "Package Version"
|
|
@@ -27,6 +27,11 @@ msgstr "Complementos"
|
|
|
27
27
|
msgid "Back"
|
|
28
28
|
msgstr "Voltar"
|
|
29
29
|
|
|
30
|
+
#. Default: "Choose file"
|
|
31
|
+
#: components/Controlpanels/ExportImport
|
|
32
|
+
msgid "Choose file"
|
|
33
|
+
msgstr ""
|
|
34
|
+
|
|
30
35
|
#. Default: "Configuration Versions"
|
|
31
36
|
#: components/Controlpanels/UpgradeControlPanel
|
|
32
37
|
msgid "Configuration Versions"
|
|
@@ -107,6 +112,11 @@ msgstr "Mais informações sobre o procedimento de atualização podem ser encon
|
|
|
107
112
|
msgid "No addons found"
|
|
108
113
|
msgstr "Nenhum complemento encontrado"
|
|
109
114
|
|
|
115
|
+
#. Default: "No file selected"
|
|
116
|
+
#: components/Controlpanels/ExportImport
|
|
117
|
+
msgid "No file selected"
|
|
118
|
+
msgstr ""
|
|
119
|
+
|
|
110
120
|
#. Default: "Package Version"
|
|
111
121
|
#: components/Controlpanels/VersionOverview
|
|
112
122
|
msgid "Package Version"
|
package/locales/volto.pot
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
msgid ""
|
|
2
2
|
msgstr ""
|
|
3
3
|
"Project-Id-Version: Plone\n"
|
|
4
|
-
"POT-Creation-Date: 2026-
|
|
4
|
+
"POT-Creation-Date: 2026-03-09T12:12:02.110Z\n"
|
|
5
5
|
"Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
|
|
6
6
|
"Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
|
|
7
7
|
"Content-Type: text/plain; charset=utf-8\n"
|
|
@@ -24,6 +24,11 @@ msgstr ""
|
|
|
24
24
|
msgid "Back"
|
|
25
25
|
msgstr ""
|
|
26
26
|
|
|
27
|
+
#. Default: "Choose file"
|
|
28
|
+
#: components/Controlpanels/ExportImport
|
|
29
|
+
msgid "Choose file"
|
|
30
|
+
msgstr ""
|
|
31
|
+
|
|
27
32
|
#. Default: "Configuration Versions"
|
|
28
33
|
#: components/Controlpanels/UpgradeControlPanel
|
|
29
34
|
msgid "Configuration Versions"
|
|
@@ -104,6 +109,11 @@ msgstr ""
|
|
|
104
109
|
msgid "No addons found"
|
|
105
110
|
msgstr ""
|
|
106
111
|
|
|
112
|
+
#. Default: "No file selected"
|
|
113
|
+
#: components/Controlpanels/ExportImport
|
|
114
|
+
msgid "No file selected"
|
|
115
|
+
msgstr ""
|
|
116
|
+
|
|
107
117
|
#. Default: "Package Version"
|
|
108
118
|
#: components/Controlpanels/VersionOverview
|
|
109
119
|
msgid "Package Version"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kitconcept/core",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.13",
|
|
4
4
|
"description": "Core setup for kitconcept GmbH distributions built on top of Plone",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,9 +20,7 @@
|
|
|
20
20
|
"access": "public"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@
|
|
24
|
-
"@plone-collective/volto-authomatic": "3.0.0-alpha.6",
|
|
25
|
-
"@plone/components": "^3.0.2"
|
|
23
|
+
"@plone/components": "^4.0.0-alpha.6"
|
|
26
24
|
},
|
|
27
25
|
"peerDependencies": {
|
|
28
26
|
"react": "^18.2.0",
|
|
@@ -39,7 +37,7 @@
|
|
|
39
37
|
"release-it": "^19.0.5",
|
|
40
38
|
"typescript": "^5.7.3",
|
|
41
39
|
"vitest": "^3.1.2",
|
|
42
|
-
"@plone/types": "
|
|
40
|
+
"@plone/types": "2.0.0-alpha.14"
|
|
43
41
|
},
|
|
44
42
|
"scripts": {
|
|
45
43
|
"i18n": "rm -rf build/messages && NODE_ENV=production i18n --addon",
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import { POST_IMPORT
|
|
2
|
-
|
|
3
|
-
export const exportContent = () => {
|
|
4
|
-
return {
|
|
5
|
-
type: POST_EXPORT,
|
|
6
|
-
request: {
|
|
7
|
-
op: 'post',
|
|
8
|
-
path: '/@export',
|
|
9
|
-
},
|
|
10
|
-
};
|
|
11
|
-
};
|
|
1
|
+
import { POST_IMPORT } from '../../constants/ActionTypes';
|
|
12
2
|
|
|
13
3
|
export const importContent = (file) => {
|
|
14
4
|
const formData = new FormData();
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* using @plone/components (React Aria based)
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import React, { useState } from 'react';
|
|
6
|
+
import React, { useRef, useState } from 'react';
|
|
7
7
|
import Toolbar from '@plone/volto/components/manage/Toolbar/Toolbar';
|
|
8
8
|
import Icon from '@plone/volto/components/theme/Icon/Icon';
|
|
9
9
|
import { Link } from 'react-router-dom';
|
|
@@ -14,14 +14,11 @@ import { Button, Container } from '@plone/components';
|
|
|
14
14
|
import { toast } from 'react-toastify';
|
|
15
15
|
import { createPortal } from 'react-dom';
|
|
16
16
|
|
|
17
|
-
import { useDispatch } from 'react-redux';
|
|
18
|
-
import {
|
|
19
|
-
exportContent,
|
|
20
|
-
importContent,
|
|
21
|
-
} from '../../actions/exportImport/exportImport';
|
|
17
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
18
|
+
import { importContent } from '../../actions/exportImport/exportImport';
|
|
22
19
|
|
|
23
|
-
import
|
|
24
|
-
import
|
|
20
|
+
import importSVG from '../../icons/import.svg';
|
|
21
|
+
import exportSVG from '../../icons/export.svg';
|
|
25
22
|
import backSVG from '@plone/volto/icons/back.svg';
|
|
26
23
|
|
|
27
24
|
import { defineMessages, useIntl } from 'react-intl';
|
|
@@ -75,13 +72,23 @@ const messages = defineMessages({
|
|
|
75
72
|
id: 'Importing…',
|
|
76
73
|
defaultMessage: 'Importing…',
|
|
77
74
|
},
|
|
75
|
+
chooseFile: {
|
|
76
|
+
id: 'Choose file',
|
|
77
|
+
defaultMessage: 'Choose file',
|
|
78
|
+
},
|
|
79
|
+
noFileSelected: {
|
|
80
|
+
id: 'No file selected',
|
|
81
|
+
defaultMessage: 'No file selected',
|
|
82
|
+
},
|
|
78
83
|
});
|
|
79
84
|
|
|
80
85
|
const ContentTransfer = ({ pathname }) => {
|
|
81
86
|
const [file, setFile] = useState(null);
|
|
87
|
+
const fileInputRef = useRef(null);
|
|
82
88
|
const intl = useIntl();
|
|
83
89
|
const isClient = useClient();
|
|
84
90
|
const dispatch = useDispatch();
|
|
91
|
+
const token = useSelector((state) => state.userSession.token);
|
|
85
92
|
|
|
86
93
|
const [exporting, setExporting] = useState(false);
|
|
87
94
|
const [importing, setImporting] = useState(false);
|
|
@@ -90,7 +97,12 @@ const ContentTransfer = ({ pathname }) => {
|
|
|
90
97
|
try {
|
|
91
98
|
setExporting(true);
|
|
92
99
|
|
|
93
|
-
const res = await
|
|
100
|
+
const res = await fetch('/++api++/@export', {
|
|
101
|
+
method: 'POST',
|
|
102
|
+
headers: {
|
|
103
|
+
Authorization: `Bearer ${token}`,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
94
106
|
|
|
95
107
|
if (!res.ok) throw new Error('Export failed');
|
|
96
108
|
|
|
@@ -165,13 +177,15 @@ const ContentTransfer = ({ pathname }) => {
|
|
|
165
177
|
<div className="grid-container">
|
|
166
178
|
<div className="grid-column export">
|
|
167
179
|
<h2>{intl.formatMessage(messages.exportContent)}</h2>
|
|
180
|
+
<span>
|
|
181
|
+
<Icon name={exportSVG} size="50px" />
|
|
182
|
+
</span>
|
|
168
183
|
|
|
169
184
|
<Button
|
|
170
185
|
variant="primary"
|
|
171
186
|
isDisabled={exporting}
|
|
172
187
|
onPress={handleExport}
|
|
173
188
|
>
|
|
174
|
-
<Icon name={downloadSVG} size="20px" />
|
|
175
189
|
{exporting ? (
|
|
176
190
|
<span>{intl.formatMessage(messages.exporting)}</span>
|
|
177
191
|
) : (
|
|
@@ -182,19 +196,38 @@ const ContentTransfer = ({ pathname }) => {
|
|
|
182
196
|
|
|
183
197
|
<div className="grid-column import">
|
|
184
198
|
<h2>{intl.formatMessage(messages.importContent)}</h2>
|
|
199
|
+
<span>
|
|
200
|
+
<Icon name={importSVG} size="50px" />
|
|
201
|
+
</span>
|
|
185
202
|
|
|
186
|
-
<input
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
203
|
+
<div className="file-input-wrapper">
|
|
204
|
+
<input
|
|
205
|
+
ref={fileInputRef}
|
|
206
|
+
type="file"
|
|
207
|
+
accept=".zip"
|
|
208
|
+
onChange={(e) => setFile(e.target.files[0])}
|
|
209
|
+
hidden
|
|
210
|
+
/>
|
|
211
|
+
<Button
|
|
212
|
+
variant="secondary"
|
|
213
|
+
onPress={() => fileInputRef.current?.click()}
|
|
214
|
+
>
|
|
215
|
+
{intl.formatMessage(messages.chooseFile)}
|
|
216
|
+
</Button>
|
|
217
|
+
<span className="file-input-name">
|
|
218
|
+
{file
|
|
219
|
+
? file.name.length > 48
|
|
220
|
+
? `${file.name.slice(0, 35)}…${file.name.slice(-12)}`
|
|
221
|
+
: file.name
|
|
222
|
+
: intl.formatMessage(messages.noFileSelected)}
|
|
223
|
+
</span>
|
|
224
|
+
</div>
|
|
191
225
|
|
|
192
226
|
<Button
|
|
193
227
|
variant="primary"
|
|
194
228
|
isDisabled={!file || importing}
|
|
195
229
|
onPress={handleImport}
|
|
196
230
|
>
|
|
197
|
-
<Icon name={uploadSVG} size="20px" />
|
|
198
231
|
{importing ? (
|
|
199
232
|
<span>{intl.formatMessage(messages.importing)}</span>
|
|
200
233
|
) : (
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_22614_98210)">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.1539 0V3.84615H43.4423L15.9423 31.3269L18.6731 34.0577L46.1539 6.55769V28.8462H50V0H21.1539Z" fill="black"/>
|
|
4
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M34.6154 46.1538H3.84615V15.3846H25V11.5385H0V50H38.4615V25H34.6154V46.1538Z" fill="black"/>
|
|
5
|
+
</g>
|
|
6
|
+
<defs>
|
|
7
|
+
<clipPath id="clip0_22614_98210">
|
|
8
|
+
<rect width="50" height="50" fill="white"/>
|
|
9
|
+
</clipPath>
|
|
10
|
+
</defs>
|
|
11
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_22614_98218)">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M28.8462 50L28.8462 46.1539L6.55774 46.1538L34.0577 18.6731L31.327 15.9423L3.8462 43.4423L3.8462 21.1538L5.21129e-05 21.1538L4.95911e-05 50L28.8462 50Z" fill="black"/>
|
|
4
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.3846 3.84616L46.1538 3.84616L46.1538 34.6154L25 34.6154L25 38.4616L50 38.4616L50 1.20005e-05L11.5385 8.63812e-06L11.5385 25L15.3846 25L15.3846 3.84616Z" fill="black"/>
|
|
5
|
+
</g>
|
|
6
|
+
<defs>
|
|
7
|
+
<clipPath id="clip0_22614_98218">
|
|
8
|
+
<rect width="50" height="50" fill="white" transform="translate(50 50) rotate(-180)"/>
|
|
9
|
+
</clipPath>
|
|
10
|
+
</defs>
|
|
11
|
+
</svg>
|