@plone/volto 17.0.0-alpha.0 → 17.0.0-alpha.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/.changelog.draft +19 -13
- package/.yarn/install-state.gz +0 -0
- package/CHANGELOG.md +56 -4
- package/package.json +1 -1
- package/packages/volto-slate/package.json +1 -1
- package/packages/volto-slate/src/blocks/Table/TableBlockView.jsx +4 -4
- package/src/components/manage/BlockChooser/BlockChooserButton.jsx +63 -29
- package/src/components/manage/BlockChooser/BlockChooserSearch.jsx +0 -1
- package/src/components/manage/History/History.jsx +35 -18
- package/src/components/theme/View/EventView.jsx +1 -1
- package/src/components/theme/View/NewsItemView.jsx +1 -1
- package/src/config/index.js +1 -0
- package/src/config/server.js +19 -0
- package/src/express-middleware/devproxy.js +4 -2
- package/src/express-middleware/static.js +32 -0
- package/src/server.jsx +1 -7
- package/src/start-server.js +4 -2
- package/theme/themes/pastanaga/extras/blocks.less +0 -9
package/.changelog.draft
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
|
-
## 17.0.0-alpha.
|
|
1
|
+
## 17.0.0-alpha.1 (2023-03-09)
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### Feature
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
- - Add directive to cache stable resources in browser or intermediate server for 365 days by default directly in the SSR Express server, static resource that could change after a new deployment for 1 minute. @mamico [#2216](https://github.com/plone/volto/issues/2216)
|
|
6
|
+
- Use popperjs in BlockChooser, move the markup to the bottom of the body tag. @sneridagh [#4141](https://github.com/plone/volto/issues/4141)
|
|
7
|
+
- Improvements to the dev API proxy:
|
|
8
|
+
- Prefer RAZZLE_INTERNAL_API_PATH over RAZZLE_API_PATH as the target of the proxy.
|
|
9
|
+
The target of the API proxy is now always logged on startup, even in production mode.
|
|
10
|
+
- Support proxying to a backend served over https. For this configuration it
|
|
11
|
+
might be necessary to set RAZZLE_DEV_PROXY_INSECURE=1 if the backend
|
|
12
|
+
certificate can't be verified.
|
|
8
13
|
|
|
9
|
-
|
|
14
|
+
[davisagli] [#4434](https://github.com/plone/volto/issues/4434)
|
|
10
15
|
|
|
11
|
-
###
|
|
16
|
+
### Bugfix
|
|
12
17
|
|
|
13
|
-
-
|
|
18
|
+
- fix: newsitem and event views wrapper classNames @nzambello [#4443](https://github.com/plone/volto/issues/4443)
|
|
19
|
+
- Fix weird GHA failure on config option not supported @sneridagh [#4466](https://github.com/plone/volto/issues/4466)
|
|
20
|
+
- Fix history view dropdown for first entry, showing 'Revert to this version option' always @sneridagh [#4471](https://github.com/plone/volto/issues/4471)
|
|
21
|
+
- Fix order of row of long table in edit and view mode @iFlameing [#4473](https://github.com/plone/volto/issues/4473)
|
|
22
|
+
- Improve flaky test in autofocus Cypress tests @sneridagh [#4475](https://github.com/plone/volto/issues/4475)
|
|
14
23
|
|
|
15
24
|
### Documentation
|
|
16
25
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
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)
|
|
26
|
+
- Complete teaser docs, add new section in `Blocks`: `Core Blocks developers notes` @sneridagh [#4461](https://github.com/plone/volto/issues/4461)
|
|
27
|
+
- Change from links to inline literals in `CHANGELOG.md` to fix linkcheckbroken. @stevepiercy [#4470](https://github.com/plone/volto/issues/4470)
|
|
22
28
|
|
package/.yarn/install-state.gz
CHANGED
|
Binary file
|
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,35 @@
|
|
|
8
8
|
|
|
9
9
|
<!-- towncrier release notes start -->
|
|
10
10
|
|
|
11
|
+
## 17.0.0-alpha.1 (2023-03-09)
|
|
12
|
+
|
|
13
|
+
### Feature
|
|
14
|
+
|
|
15
|
+
- - Add directive to cache stable resources in browser or intermediate server for 365 days by default directly in the SSR Express server, static resource that could change after a new deployment for 1 minute. @mamico [#2216](https://github.com/plone/volto/issues/2216)
|
|
16
|
+
- Use popperjs in BlockChooser, move the markup to the bottom of the body tag. @sneridagh [#4141](https://github.com/plone/volto/issues/4141)
|
|
17
|
+
- Improvements to the dev API proxy:
|
|
18
|
+
- Prefer RAZZLE_INTERNAL_API_PATH over RAZZLE_API_PATH as the target of the proxy.
|
|
19
|
+
The target of the API proxy is now always logged on startup, even in production mode.
|
|
20
|
+
- Support proxying to a backend served over https. For this configuration it
|
|
21
|
+
might be necessary to set RAZZLE_DEV_PROXY_INSECURE=1 if the backend
|
|
22
|
+
certificate can't be verified.
|
|
23
|
+
|
|
24
|
+
[davisagli] [#4434](https://github.com/plone/volto/issues/4434)
|
|
25
|
+
|
|
26
|
+
### Bugfix
|
|
27
|
+
|
|
28
|
+
- fix: newsitem and event views wrapper classNames @nzambello [#4443](https://github.com/plone/volto/issues/4443)
|
|
29
|
+
- Fix weird GHA failure on config option not supported @sneridagh [#4466](https://github.com/plone/volto/issues/4466)
|
|
30
|
+
- Fix history view dropdown for first entry, showing 'Revert to this version option' always @sneridagh [#4471](https://github.com/plone/volto/issues/4471)
|
|
31
|
+
- Fix order of row of long table in edit and view mode @iFlameing [#4473](https://github.com/plone/volto/issues/4473)
|
|
32
|
+
- Improve flaky test in autofocus Cypress tests @sneridagh [#4475](https://github.com/plone/volto/issues/4475)
|
|
33
|
+
|
|
34
|
+
### Documentation
|
|
35
|
+
|
|
36
|
+
- Complete teaser docs, add new section in `Blocks`: `Core Blocks developers notes` @sneridagh [#4461](https://github.com/plone/volto/issues/4461)
|
|
37
|
+
- Change from links to inline literals in `CHANGELOG.md` to fix linkcheckbroken. @stevepiercy [#4470](https://github.com/plone/volto/issues/4470)
|
|
38
|
+
|
|
39
|
+
|
|
11
40
|
## 17.0.0-alpha.0 (2023-03-04)
|
|
12
41
|
|
|
13
42
|
### Breaking
|
|
@@ -31,6 +60,31 @@
|
|
|
31
60
|
- Use a universal static path for both documentation and volto repos. @stevepiercy [#4376](https://github.com/plone/volto/issues/4376)
|
|
32
61
|
|
|
33
62
|
|
|
63
|
+
## 16.15.0 (2023-03-08)
|
|
64
|
+
|
|
65
|
+
### Feature
|
|
66
|
+
|
|
67
|
+
- Improvements to the dev API proxy:
|
|
68
|
+
- Prefer RAZZLE_INTERNAL_API_PATH over RAZZLE_API_PATH as the target of the proxy.
|
|
69
|
+
The target of the API proxy is now always logged on startup, even in production mode.
|
|
70
|
+
- Support proxying to a backend served over https. For this configuration it
|
|
71
|
+
might be necessary to set RAZZLE_DEV_PROXY_INSECURE=1 if the backend
|
|
72
|
+
certificate can't be verified.
|
|
73
|
+
|
|
74
|
+
[davisagli] [#4434](https://github.com/plone/volto/issues/4434)
|
|
75
|
+
|
|
76
|
+
### Bugfix
|
|
77
|
+
|
|
78
|
+
- fix: newsitem and event views wrapper classNames @nzambello [#4443](https://github.com/plone/volto/issues/4443)
|
|
79
|
+
- Fix weird GHA failure on config option not supported @sneridagh [#4466](https://github.com/plone/volto/issues/4466)
|
|
80
|
+
- Fix history view dropdown for first entry, showing 'Revert to this version option' always @sneridagh [#4471](https://github.com/plone/volto/issues/4471)
|
|
81
|
+
- Fix order of row of long table in edit and view mode @iFlameing [#4473](https://github.com/plone/volto/issues/4473)
|
|
82
|
+
|
|
83
|
+
### Documentation
|
|
84
|
+
|
|
85
|
+
- Complete teaser docs, add new section in `Blocks`: `Core Blocks developers notes` @sneridagh [#4461](https://github.com/plone/volto/issues/4461)
|
|
86
|
+
|
|
87
|
+
|
|
34
88
|
## 16.14.0 (2023-03-03)
|
|
35
89
|
|
|
36
90
|
### Feature
|
|
@@ -72,11 +126,11 @@
|
|
|
72
126
|
- Add the intl string 'Uploading image' to the image block @bipoza [#4180](https://github.com/plone/volto/issues/4180)
|
|
73
127
|
- Fix link integrity overlay is too narrowed @iFlameing [#4399](https://github.com/plone/volto/issues/4399)
|
|
74
128
|
- Fix External link Icon shows up in Grid-text block @iRohitSingh [#4400](https://github.com/plone/volto/issues/4400)
|
|
75
|
-
- Fix broken links: babeljs.io
|
|
129
|
+
- Fix broken links: `babeljs.io/…` @ksuess [#4414](https://github.com/plone/volto/issues/4414)
|
|
76
130
|
|
|
77
131
|
### Documentation
|
|
78
132
|
|
|
79
|
-
- Remove inclusion of CHANGELOG.md for volto repo only. Fixes https://github.com/plone/documentation/issues/1431. @stevepiercy [#4404](https://github.com/plone/volto/issues/4404)
|
|
133
|
+
- Remove inclusion of `CHANGELOG.md` for volto repo only. Fixes https://github.com/plone/documentation/issues/1431. @stevepiercy [#4404](https://github.com/plone/volto/issues/4404)
|
|
80
134
|
|
|
81
135
|
|
|
82
136
|
## 16.11.0 (2023-02-13)
|
|
@@ -1088,8 +1142,6 @@ See https://6.dev-docs.plone.org/volto/upgrade-guide/index.html for more informa
|
|
|
1088
1142
|
|
|
1089
1143
|
## 16.0.0-alpha.34 (2022-09-17)
|
|
1090
1144
|
|
|
1091
|
-
### Breaking
|
|
1092
|
-
|
|
1093
1145
|
### Feature
|
|
1094
1146
|
|
|
1095
1147
|
- Added new components `Aliases` for aliases control in Volto. Alias management in both controlpanel and object view. @andreiggr @avoinea
|
package/package.json
CHANGED
|
@@ -33,13 +33,13 @@ const View = ({ data }) => {
|
|
|
33
33
|
}, [data.table.rows]);
|
|
34
34
|
|
|
35
35
|
const rows = useMemo(() => {
|
|
36
|
-
const items =
|
|
37
|
-
if (!data.table.rows) return
|
|
36
|
+
const items = [];
|
|
37
|
+
if (!data.table.rows) return [];
|
|
38
38
|
data.table.rows.forEach((row, index) => {
|
|
39
39
|
if (index > 0) {
|
|
40
|
-
items[
|
|
40
|
+
items[index] = [];
|
|
41
41
|
row.cells.forEach((cell, cellIndex) => {
|
|
42
|
-
items[
|
|
42
|
+
items[index][cellIndex] = {
|
|
43
43
|
...cell,
|
|
44
44
|
value:
|
|
45
45
|
cell.value && Node.string({ children: cell.value }).length > 0
|
|
@@ -4,8 +4,10 @@ import addSVG from '@plone/volto/icons/circle-plus.svg';
|
|
|
4
4
|
import { blockHasValue } from '@plone/volto/helpers';
|
|
5
5
|
import { Icon, BlockChooser } from '@plone/volto/components';
|
|
6
6
|
import config from '@plone/volto/registry';
|
|
7
|
-
import { Button } from 'semantic-ui-react';
|
|
7
|
+
import { Button, Ref } from 'semantic-ui-react';
|
|
8
8
|
import { defineMessages, useIntl } from 'react-intl';
|
|
9
|
+
import { usePopper } from 'react-popper';
|
|
10
|
+
import { Portal } from 'react-portal';
|
|
9
11
|
|
|
10
12
|
const messages = defineMessages({
|
|
11
13
|
addBlock: {
|
|
@@ -76,41 +78,73 @@ const BlockChooserButton = (props) => {
|
|
|
76
78
|
};
|
|
77
79
|
}, [handleClickOutside]);
|
|
78
80
|
|
|
81
|
+
const [referenceElement, setReferenceElement] = React.useState(null);
|
|
82
|
+
const [popperElement, setPopperElement] = React.useState(null);
|
|
83
|
+
const { styles, attributes } = usePopper(referenceElement, popperElement, {
|
|
84
|
+
placement: config.experimental.addBlockButton.enabled
|
|
85
|
+
? 'bottom'
|
|
86
|
+
: 'right-start',
|
|
87
|
+
modifiers: [
|
|
88
|
+
{
|
|
89
|
+
name: 'offset',
|
|
90
|
+
options: {
|
|
91
|
+
offset: [-10, 5],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'flip',
|
|
96
|
+
options: {
|
|
97
|
+
fallbackPlacements: ['right-end', 'top-start'],
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
});
|
|
102
|
+
|
|
79
103
|
return (
|
|
80
104
|
<>
|
|
81
105
|
{!disableNewBlocks &&
|
|
82
106
|
(config.experimental.addBlockButton.enabled ||
|
|
83
107
|
!blockHasValue(data)) && (
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
108
|
+
<Ref innerRef={setReferenceElement}>
|
|
109
|
+
<Component
|
|
110
|
+
{...props}
|
|
111
|
+
onShowBlockChooser={() => setAddNewBlockOpened(true)}
|
|
112
|
+
/>
|
|
113
|
+
</Ref>
|
|
88
114
|
)}
|
|
89
115
|
{addNewBlockOpened && (
|
|
90
|
-
<
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
<Portal node={document.getElementById('body')}>
|
|
117
|
+
<div
|
|
118
|
+
ref={setPopperElement}
|
|
119
|
+
style={styles.popper}
|
|
120
|
+
{...attributes.popper}
|
|
121
|
+
>
|
|
122
|
+
<BlockChooser
|
|
123
|
+
onMutateBlock={
|
|
124
|
+
onMutateBlock
|
|
125
|
+
? (id, value) => {
|
|
126
|
+
setAddNewBlockOpened(false);
|
|
127
|
+
onMutateBlock(id, value);
|
|
128
|
+
}
|
|
129
|
+
: null
|
|
130
|
+
}
|
|
131
|
+
onInsertBlock={
|
|
132
|
+
onInsertBlock
|
|
133
|
+
? (id, value) => {
|
|
134
|
+
setAddNewBlockOpened(false);
|
|
135
|
+
onInsertBlock(id, value);
|
|
136
|
+
}
|
|
137
|
+
: null
|
|
138
|
+
}
|
|
139
|
+
currentBlock={block}
|
|
140
|
+
allowedBlocks={allowedBlocks}
|
|
141
|
+
blocksConfig={blocksConfig}
|
|
142
|
+
properties={properties}
|
|
143
|
+
showRestricted={showRestricted}
|
|
144
|
+
ref={blockChooserRef}
|
|
145
|
+
/>
|
|
146
|
+
</div>
|
|
147
|
+
</Portal>
|
|
114
148
|
)}
|
|
115
149
|
</>
|
|
116
150
|
);
|
|
@@ -116,22 +116,37 @@ class History extends Component {
|
|
|
116
116
|
this.props.revertHistory(getBaseUrl(this.props.pathname), value);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
* @returns {string} Markup for the component.
|
|
123
|
-
*/
|
|
124
|
-
render() {
|
|
119
|
+
processHistoryEntries = () => {
|
|
120
|
+
// Getting the history entries from the props
|
|
121
|
+
// No clue why the reverse(concat()) is necessary
|
|
125
122
|
const entries = reverse(concat(this.props.entries));
|
|
126
123
|
let title = entries.length > 0 ? entries[0].state_title : '';
|
|
127
124
|
for (let x = 1; x < entries.length; x += 1) {
|
|
128
125
|
entries[x].prev_state_title = title;
|
|
129
126
|
title = entries[x].state_title || title;
|
|
130
127
|
}
|
|
128
|
+
// We reverse them again
|
|
131
129
|
reverse(entries);
|
|
130
|
+
|
|
131
|
+
// We identify the latest 'versioning' entry and mark it
|
|
132
|
+
const current_version = find(entries, (item) => item.type === 'versioning');
|
|
133
|
+
if (current_version) {
|
|
134
|
+
current_version.is_current = true;
|
|
135
|
+
}
|
|
136
|
+
return entries;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Render method.
|
|
141
|
+
* @method render
|
|
142
|
+
* @returns {string} Markup for the component.
|
|
143
|
+
*/
|
|
144
|
+
render() {
|
|
132
145
|
const historyAction = find(this.props.objectActions, {
|
|
133
146
|
id: 'history',
|
|
134
147
|
});
|
|
148
|
+
const entries = this.processHistoryEntries();
|
|
149
|
+
|
|
135
150
|
return !historyAction ? (
|
|
136
151
|
<>
|
|
137
152
|
{this.props.token ? (
|
|
@@ -266,18 +281,20 @@ class History extends Component {
|
|
|
266
281
|
/>
|
|
267
282
|
</Link>
|
|
268
283
|
)}
|
|
269
|
-
{'version' in entry &&
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
284
|
+
{'version' in entry &&
|
|
285
|
+
entry.may_revert &&
|
|
286
|
+
!entry.is_current && (
|
|
287
|
+
<Dropdown.Item
|
|
288
|
+
value={entry.version}
|
|
289
|
+
onClick={this.onRevert}
|
|
290
|
+
>
|
|
291
|
+
<Icon name="undo" />{' '}
|
|
292
|
+
<FormattedMessage
|
|
293
|
+
id="Revert to this revision"
|
|
294
|
+
defaultMessage="Revert to this revision"
|
|
295
|
+
/>
|
|
296
|
+
</Dropdown.Item>
|
|
297
|
+
)}
|
|
281
298
|
</Dropdown.Menu>
|
|
282
299
|
</Dropdown>
|
|
283
300
|
)}
|
|
@@ -43,7 +43,7 @@ const EventView = (props) => {
|
|
|
43
43
|
const { content } = props;
|
|
44
44
|
|
|
45
45
|
return (
|
|
46
|
-
<div id="page-document" className="ui container
|
|
46
|
+
<div id="page-document" className="ui container view-wrapper event-view">
|
|
47
47
|
<Grid>
|
|
48
48
|
<Grid.Column width={7} className="mobile hidden">
|
|
49
49
|
{hasBlocksData(content) ? (
|
|
@@ -21,7 +21,7 @@ import RenderBlocks from '@plone/volto/components/theme/View/RenderBlocks';
|
|
|
21
21
|
*/
|
|
22
22
|
const NewsItemView = ({ content }) =>
|
|
23
23
|
hasBlocksData(content) ? (
|
|
24
|
-
<div id="page-document" className="ui container
|
|
24
|
+
<div id="page-document" className="ui container view-wrapper newsitem-view">
|
|
25
25
|
<RenderBlocks content={content} />
|
|
26
26
|
</div>
|
|
27
27
|
) : (
|
package/src/config/index.js
CHANGED
|
@@ -89,6 +89,7 @@ let config = {
|
|
|
89
89
|
// https://6.docs.plone.org/volto/deploying/seamless-mode.html
|
|
90
90
|
devProxyToApiPath:
|
|
91
91
|
process.env.RAZZLE_DEV_PROXY_API_PATH ||
|
|
92
|
+
process.env.RAZZLE_INTERNAL_API_PATH ||
|
|
92
93
|
process.env.RAZZLE_API_PATH ||
|
|
93
94
|
'http://localhost:8080/Plone', // Set it to '' for disabling the proxy
|
|
94
95
|
// proxyRewriteTarget Set it for set a custom target for the proxy or overide the internal VHM rewrite
|
package/src/config/server.js
CHANGED
|
@@ -2,6 +2,7 @@ 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
4
|
import sitemapMiddleware from '@plone/volto/express-middleware/sitemap';
|
|
5
|
+
import staticsMiddleware from '@plone/volto/express-middleware/static';
|
|
5
6
|
import devProxyMiddleware from '@plone/volto/express-middleware/devproxy';
|
|
6
7
|
|
|
7
8
|
const settings = {
|
|
@@ -11,10 +12,28 @@ const settings = {
|
|
|
11
12
|
imagesMiddleware(),
|
|
12
13
|
robotstxtMiddleware(),
|
|
13
14
|
sitemapMiddleware(),
|
|
15
|
+
staticsMiddleware(),
|
|
14
16
|
],
|
|
15
17
|
criticalCssPath: 'public/critical.css',
|
|
16
18
|
readCriticalCss: null, // so it will be defaultReadCriticalCss
|
|
17
19
|
extractScripts: { errorPages: false },
|
|
20
|
+
staticFiles: [
|
|
21
|
+
{
|
|
22
|
+
id: 'root_static',
|
|
23
|
+
match: /^\/static\/.*/,
|
|
24
|
+
headers: {
|
|
25
|
+
// stable resources never change. 31536000 seconds == 365 days
|
|
26
|
+
'Cache-Control': 'public, max-age=31536000',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: 'all',
|
|
31
|
+
match: /.*/,
|
|
32
|
+
headers: {
|
|
33
|
+
'Cache-Control': 'public, max-age=60',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
],
|
|
18
37
|
};
|
|
19
38
|
|
|
20
39
|
export default settings;
|
|
@@ -75,12 +75,14 @@ export default function () {
|
|
|
75
75
|
const { apiPathURL, instancePath } = getEnv();
|
|
76
76
|
const target =
|
|
77
77
|
config.settings.proxyRewriteTarget ||
|
|
78
|
-
`/VirtualHostBase
|
|
78
|
+
`/VirtualHostBase/${apiPathURL.protocol.slice(0, -1)}/${
|
|
79
|
+
apiPathURL.hostname
|
|
80
|
+
}:${apiPathURL.port}${instancePath}/++api++/VirtualHostRoot`;
|
|
79
81
|
|
|
80
82
|
return `${target}${path.replace('/++api++', '')}`;
|
|
81
83
|
},
|
|
82
84
|
logLevel: process.env.DEBUG_HPM ? 'debug' : 'silent',
|
|
83
|
-
...(
|
|
85
|
+
...(process.env.RAZZLE_DEV_PROXY_INSECURE && {
|
|
84
86
|
changeOrigin: true,
|
|
85
87
|
secure: false,
|
|
86
88
|
}),
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import config from '@plone/volto/registry';
|
|
4
|
+
|
|
5
|
+
const staticMiddleware = express.static(
|
|
6
|
+
process.env.BUILD_DIR
|
|
7
|
+
? path.join(process.env.BUILD_DIR, 'public')
|
|
8
|
+
: process.env.RAZZLE_PUBLIC_DIR,
|
|
9
|
+
{
|
|
10
|
+
setHeaders: function (res, path) {
|
|
11
|
+
const pathLib = require('path');
|
|
12
|
+
const base = pathLib.resolve(process.env.RAZZLE_PUBLIC_DIR);
|
|
13
|
+
const relpath = path.substr(base.length);
|
|
14
|
+
config.settings.serverConfig.staticFiles.some((elem) => {
|
|
15
|
+
if (relpath.match(elem.match)) {
|
|
16
|
+
for (const name in elem.headers) {
|
|
17
|
+
res.setHeader(name, elem.headers[name] || 'undefined');
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
export default function () {
|
|
28
|
+
const middleware = express.Router();
|
|
29
|
+
middleware.all('*', staticMiddleware);
|
|
30
|
+
middleware.id = 'staticResourcesProcessor';
|
|
31
|
+
return middleware;
|
|
32
|
+
}
|
package/src/server.jsx
CHANGED
|
@@ -59,13 +59,6 @@ const supported = new locale.Locales(keys(languages), 'en');
|
|
|
59
59
|
|
|
60
60
|
const server = express()
|
|
61
61
|
.disable('x-powered-by')
|
|
62
|
-
.use(
|
|
63
|
-
express.static(
|
|
64
|
-
process.env.BUILD_DIR
|
|
65
|
-
? path.join(process.env.BUILD_DIR, 'public')
|
|
66
|
-
: process.env.RAZZLE_PUBLIC_DIR,
|
|
67
|
-
),
|
|
68
|
-
)
|
|
69
62
|
.head('/*', function (req, res) {
|
|
70
63
|
// Support for HEAD requests. Required by start-test utility in CI.
|
|
71
64
|
res.send('');
|
|
@@ -329,6 +322,7 @@ export const defaultReadCriticalCss = () => {
|
|
|
329
322
|
// Exposed for the console bootstrap info messages
|
|
330
323
|
server.apiPath = config.settings.apiPath;
|
|
331
324
|
server.devProxyToApiPath = config.settings.devProxyToApiPath;
|
|
325
|
+
server.proxyRewriteTarget = config.settings.proxyRewriteTarget;
|
|
332
326
|
server.publicURL = config.settings.publicURL;
|
|
333
327
|
|
|
334
328
|
export default server;
|
package/src/start-server.js
CHANGED
|
@@ -19,9 +19,11 @@ export default () => {
|
|
|
19
19
|
} else {
|
|
20
20
|
console.log(`API server (API_PATH) is set to: ${app.apiPath}`);
|
|
21
21
|
}
|
|
22
|
-
if (
|
|
22
|
+
if (app.devProxyToApiPath)
|
|
23
23
|
console.log(
|
|
24
|
-
`
|
|
24
|
+
`Proxying API requests from ${app.publicURL}/++api++ to ${
|
|
25
|
+
app.devProxyToApiPath
|
|
26
|
+
}${app.proxyRewriteTarget || ''}`,
|
|
25
27
|
);
|
|
26
28
|
console.log(`🎭 Volto started at ${bind_address}:${port} 🚀`);
|
|
27
29
|
|
|
@@ -482,7 +482,6 @@ body.has-toolbar.has-sidebar-collapsed .ui.wrapper > .ui.inner.block.full {
|
|
|
482
482
|
border: none !important;
|
|
483
483
|
background: white !important;
|
|
484
484
|
border-radius: 50% !important;
|
|
485
|
-
transform: translateX(-50%);
|
|
486
485
|
}
|
|
487
486
|
|
|
488
487
|
&:not(.new-add-block) {
|
|
@@ -712,20 +711,12 @@ body.has-toolbar.has-sidebar-collapsed .ui.wrapper > .ui.inner.block.full {
|
|
|
712
711
|
}
|
|
713
712
|
|
|
714
713
|
.blocks-chooser {
|
|
715
|
-
position: absolute;
|
|
716
|
-
z-index: 10;
|
|
717
|
-
top: 100%;
|
|
718
|
-
left: 50%;
|
|
719
714
|
width: 310px;
|
|
720
715
|
padding: 4px;
|
|
721
716
|
background-color: rgba(255, 255, 255, 0.975);
|
|
722
717
|
border-radius: 2px;
|
|
723
718
|
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.05);
|
|
724
719
|
|
|
725
|
-
&.new-add-block {
|
|
726
|
-
transform: translate(-50%, 22px);
|
|
727
|
-
}
|
|
728
|
-
|
|
729
720
|
&:not(.new-add-block) {
|
|
730
721
|
top: -12px;
|
|
731
722
|
left: -9px;
|