apostrophe 4.7.0 → 4.7.2
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.md +12 -0
- package/modules/@apostrophecms/asset/index.js +1 -1
- package/modules/@apostrophecms/doc-type/index.js +0 -1
- package/modules/@apostrophecms/page/index.js +15 -0
- package/package.json +1 -1
- package/test/content-i18n.js +1 -1
- package/test/events2.js +4 -2
- package/test/parked-pages.js +75 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.7.2 (2024-10-09)
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
* Correct a race condition that can cause a crash at startup when custom `uploadfs` options are present in some specific cloud environments e.g. when using Azure Blob Storage.
|
|
8
|
+
|
|
9
|
+
## 4.7.1 (2024-09-20)
|
|
10
|
+
|
|
11
|
+
### Fixes
|
|
12
|
+
|
|
13
|
+
* Ensure parked fields are not modified for parked pages when not configured in `_defaults`.
|
|
14
|
+
|
|
3
15
|
## 4.7.0 (2024-09-05)
|
|
4
16
|
|
|
5
17
|
### Adds
|
|
@@ -2442,7 +2442,6 @@ module.exports = {
|
|
|
2442
2442
|
// except this one (filtering by topic pares down the list of categories and
|
|
2443
2443
|
// vice versa)
|
|
2444
2444
|
const _query = baseQuery.clone();
|
|
2445
|
-
console.log('filter is:', filter);
|
|
2446
2445
|
_query[filter](null);
|
|
2447
2446
|
choices[filter] = await _query.toChoices(filter, { counts: query.get('counts') });
|
|
2448
2447
|
}
|
|
@@ -846,6 +846,21 @@ module.exports = {
|
|
|
846
846
|
},
|
|
847
847
|
handlers(self) {
|
|
848
848
|
return {
|
|
849
|
+
'@apostrophecms/page-type:beforeSave': {
|
|
850
|
+
handleParkedFieldsOverride(req, doc) {
|
|
851
|
+
if (!doc.parkedId) {
|
|
852
|
+
return;
|
|
853
|
+
}
|
|
854
|
+
const parked = self.parked.find(p => p.parkedId === doc.parkedId);
|
|
855
|
+
if (!parked) {
|
|
856
|
+
return;
|
|
857
|
+
}
|
|
858
|
+
const parkedFields = Object.keys(parked).filter(field => field !== '_defaults');
|
|
859
|
+
for (const parkedField of parkedFields) {
|
|
860
|
+
doc[parkedField] = parked[parkedField];
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
},
|
|
849
864
|
beforeSend: {
|
|
850
865
|
async addLevelAttributeToBody(req) {
|
|
851
866
|
// Add level as a data attribute on the body tag
|
package/package.json
CHANGED
package/test/content-i18n.js
CHANGED
package/test/events2.js
CHANGED
|
@@ -45,10 +45,12 @@ describe('Promisified Events: @apostrophecms/doc-type:beforeInsert', function()
|
|
|
45
45
|
{
|
|
46
46
|
type: 'default-page',
|
|
47
47
|
findMeAgain: true,
|
|
48
|
-
title: 'Test',
|
|
49
48
|
slug: '/test',
|
|
50
49
|
visibility: 'public',
|
|
51
|
-
parkedId: 'test'
|
|
50
|
+
parkedId: 'test',
|
|
51
|
+
_defaults: {
|
|
52
|
+
title: 'Test'
|
|
53
|
+
}
|
|
52
54
|
}
|
|
53
55
|
]
|
|
54
56
|
}
|
package/test/parked-pages.js
CHANGED
|
@@ -271,6 +271,81 @@ describe('Parked Pages', function() {
|
|
|
271
271
|
});
|
|
272
272
|
await validate(apos6, [ '/', '/archive', '/default1', '/default2', '/default3', '/default3/child1' ]);
|
|
273
273
|
});
|
|
274
|
+
|
|
275
|
+
it('field override on save is possible only when it is configured as default', async function () {
|
|
276
|
+
this.timeout(20000);
|
|
277
|
+
await t.destroy(apos6);
|
|
278
|
+
apos6 = await t.create({
|
|
279
|
+
root: module,
|
|
280
|
+
modules: {
|
|
281
|
+
'@apostrophecms/page': {
|
|
282
|
+
options: {
|
|
283
|
+
park: [
|
|
284
|
+
...park2,
|
|
285
|
+
{
|
|
286
|
+
parkedId: 'default3',
|
|
287
|
+
type: 'default-page',
|
|
288
|
+
title: 'Default 3',
|
|
289
|
+
slug: '/default3'
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
parkedId: 'default4',
|
|
293
|
+
type: 'default-page',
|
|
294
|
+
title: 'Default 4',
|
|
295
|
+
_defaults: {
|
|
296
|
+
slug: '/default4'
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
'default-page': {}
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
const manager = apos6.doc.getManager('default-page');
|
|
306
|
+
const req = apos.task.getReq({ mode: 'draft' });
|
|
307
|
+
|
|
308
|
+
// slug override not possible, slug is NOT configured in defaults
|
|
309
|
+
{
|
|
310
|
+
const page = await manager.find(req, {
|
|
311
|
+
parkedId: 'default3',
|
|
312
|
+
aposMode: 'draft'
|
|
313
|
+
}).toObject();
|
|
314
|
+
assert.strictEqual(page.slug, '/default3');
|
|
315
|
+
assert.deepStrictEqual(page.parked, [ 'parkedId', 'type', 'title', 'slug' ]);
|
|
316
|
+
|
|
317
|
+
page.slug = '/default3-overridden';
|
|
318
|
+
await manager.update(req, page);
|
|
319
|
+
const updated = await manager.find(req, {
|
|
320
|
+
parkedId: 'default3',
|
|
321
|
+
aposMode: 'draft'
|
|
322
|
+
}).toObject();
|
|
323
|
+
|
|
324
|
+
assert.strictEqual(updated.slug, '/default3');
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// slug override is possible because slug is configured in defaults
|
|
328
|
+
{
|
|
329
|
+
const page = await manager.find(req, {
|
|
330
|
+
parkedId: 'default4',
|
|
331
|
+
aposMode: 'draft'
|
|
332
|
+
}).toObject();
|
|
333
|
+
assert.strictEqual(page.slug, '/default4');
|
|
334
|
+
assert.deepStrictEqual(page.parked, [ 'parkedId', 'type', 'title' ]);
|
|
335
|
+
|
|
336
|
+
page.slug = '/default4-overridden';
|
|
337
|
+
await manager.update(req, page);
|
|
338
|
+
const updated = await manager.find(req, {
|
|
339
|
+
parkedId: 'default4',
|
|
340
|
+
aposMode: 'draft'
|
|
341
|
+
}).toObject();
|
|
342
|
+
|
|
343
|
+
assert.strictEqual(updated.slug, '/default4-overridden');
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
await t.destroy(apos6);
|
|
347
|
+
apos6 = null;
|
|
348
|
+
});
|
|
274
349
|
});
|
|
275
350
|
|
|
276
351
|
async function validate(apos, expected) {
|