@strapi/content-manager 0.0.0-experimental.626cf5324f21d318dee435c11cb3e08bb4c414b7 → 0.0.0-experimental.646ad2aaf2b8f9970409242af8d77b0512d19bd1
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/dist/_chunks/{ComponentConfigurationPage-G4EIirP8.js → ComponentConfigurationPage-D1SEOQBu.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-G4EIirP8.js.map → ComponentConfigurationPage-D1SEOQBu.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CnL10QYC.mjs → ComponentConfigurationPage-oqdZo6l8.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-CnL10QYC.mjs.map → ComponentConfigurationPage-oqdZo6l8.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-B2AA1kVF.js → EditConfigurationPage-BP94U6vG.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-B2AA1kVF.js.map → EditConfigurationPage-BP94U6vG.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-I2kKh9dx.mjs → EditConfigurationPage-DVLmpXPs.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-I2kKh9dx.mjs.map → EditConfigurationPage-DVLmpXPs.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-CHgoNwlc.js → EditViewPage-BfAywbBE.js} +15 -5
- package/dist/_chunks/EditViewPage-BfAywbBE.js.map +1 -0
- package/dist/_chunks/{EditViewPage-zFjJK0s8.mjs → EditViewPage-Cvjs7D6M.mjs} +15 -5
- package/dist/_chunks/EditViewPage-Cvjs7D6M.mjs.map +1 -0
- package/dist/_chunks/{Field-DPAzUS1M.mjs → Field-CJrfStLX.mjs} +69 -25
- package/dist/_chunks/Field-CJrfStLX.mjs.map +1 -0
- package/dist/_chunks/{Field-9DePZh-0.js → Field-DC7FM64m.js} +69 -25
- package/dist/_chunks/Field-DC7FM64m.js.map +1 -0
- package/dist/_chunks/{Form-DPm-KZ1A.js → Form-Ahp2hi7E.js} +3 -3
- package/dist/_chunks/Form-Ahp2hi7E.js.map +1 -0
- package/dist/_chunks/{Form-CEkENbkF.mjs → Form-BTgUlCEm.mjs} +3 -3
- package/dist/_chunks/Form-BTgUlCEm.mjs.map +1 -0
- package/dist/_chunks/{History-DXSbTWez.js → History-DZ9T1ZL6.js} +23 -10
- package/dist/_chunks/History-DZ9T1ZL6.js.map +1 -0
- package/dist/_chunks/{History-utls71em.mjs → History-Drr6mxnK.mjs} +24 -11
- package/dist/_chunks/History-Drr6mxnK.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-D5C7ACZ_.js → ListConfigurationPage-B8bYMcVE.js} +2 -2
- package/dist/_chunks/{ListConfigurationPage-D5C7ACZ_.js.map → ListConfigurationPage-B8bYMcVE.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-CuMXWWqb.mjs → ListConfigurationPage-C6calJtW.mjs} +2 -2
- package/dist/_chunks/{ListConfigurationPage-CuMXWWqb.mjs.map → ListConfigurationPage-C6calJtW.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-DfuwH1tt.js → ListViewPage-BfiTNTUl.js} +4 -4
- package/dist/_chunks/{ListViewPage-DfuwH1tt.js.map → ListViewPage-BfiTNTUl.js.map} +1 -1
- package/dist/_chunks/{ListViewPage-CdKd-PS_.mjs → ListViewPage-CQb0CL40.mjs} +4 -4
- package/dist/_chunks/{ListViewPage-CdKd-PS_.mjs.map → ListViewPage-CQb0CL40.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-DkToTT7u.mjs → NoContentTypePage-C-BK38Ai.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-DkToTT7u.mjs.map → NoContentTypePage-C-BK38Ai.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BIxlkWWi.js → NoContentTypePage-wJwVyqoZ.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BIxlkWWi.js.map → NoContentTypePage-wJwVyqoZ.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DlWi4BAH.mjs → NoPermissionsPage-BBdxJ-4m.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DlWi4BAH.mjs.map → NoPermissionsPage-BBdxJ-4m.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-Bu4GWYb-.js → NoPermissionsPage-DKaXyuK9.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-Bu4GWYb-.js.map → NoPermissionsPage-DKaXyuK9.js.map} +1 -1
- package/dist/_chunks/{Relations-CFjTESWQ.js → Relations-D7NskJzt.js} +68 -35
- package/dist/_chunks/Relations-D7NskJzt.js.map +1 -0
- package/dist/_chunks/{Relations-QP5yn9_z.mjs → Relations-DApDLUXv.mjs} +69 -36
- package/dist/_chunks/Relations-DApDLUXv.mjs.map +1 -0
- package/dist/_chunks/{en-BVzUkPxZ.js → en-Bm0D0IWz.js} +8 -8
- package/dist/_chunks/{en-BVzUkPxZ.js.map → en-Bm0D0IWz.js.map} +1 -1
- package/dist/_chunks/{en-CPTj6CjC.mjs → en-DKV44jRb.mjs} +8 -8
- package/dist/_chunks/{en-CPTj6CjC.mjs.map → en-DKV44jRb.mjs.map} +1 -1
- package/dist/_chunks/{index-BHfS6_D5.mjs → index-Bz1SCyIj.mjs} +948 -870
- package/dist/_chunks/index-Bz1SCyIj.mjs.map +1 -0
- package/dist/_chunks/{index-DXiHxy70.js → index-D3u7haqj.js} +947 -868
- package/dist/_chunks/index-D3u7haqj.js.map +1 -0
- package/dist/_chunks/{layout-bE-WUnQ0.js → layout-C_0aK53L.js} +3 -3
- package/dist/_chunks/{layout-bE-WUnQ0.js.map → layout-C_0aK53L.js.map} +1 -1
- package/dist/_chunks/{layout-DX_52HSH.mjs → layout-PNlIceEV.mjs} +3 -3
- package/dist/_chunks/{layout-DX_52HSH.mjs.map → layout-PNlIceEV.mjs.map} +1 -1
- package/dist/_chunks/{relations-SCVAL_aJ.mjs → relations-BAIQsBLx.mjs} +3 -7
- package/dist/_chunks/relations-BAIQsBLx.mjs.map +1 -0
- package/dist/_chunks/{relations-D706vblp.js → relations-ClRXiXcM.js} +3 -7
- package/dist/_chunks/relations-ClRXiXcM.js.map +1 -0
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +3 -2
- package/dist/admin/src/exports.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +32 -1
- package/dist/admin/src/pages/EditView/components/Header.d.ts +1 -0
- package/dist/server/index.js +70 -30
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +70 -30
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -4
- package/dist/server/src/services/document-metadata.d.ts +8 -8
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -4
- package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
- package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/package.json +11 -11
- package/dist/_chunks/EditViewPage-CHgoNwlc.js.map +0 -1
- package/dist/_chunks/EditViewPage-zFjJK0s8.mjs.map +0 -1
- package/dist/_chunks/Field-9DePZh-0.js.map +0 -1
- package/dist/_chunks/Field-DPAzUS1M.mjs.map +0 -1
- package/dist/_chunks/Form-CEkENbkF.mjs.map +0 -1
- package/dist/_chunks/Form-DPm-KZ1A.js.map +0 -1
- package/dist/_chunks/History-DXSbTWez.js.map +0 -1
- package/dist/_chunks/History-utls71em.mjs.map +0 -1
- package/dist/_chunks/Relations-CFjTESWQ.js.map +0 -1
- package/dist/_chunks/Relations-QP5yn9_z.mjs.map +0 -1
- package/dist/_chunks/index-BHfS6_D5.mjs.map +0 -1
- package/dist/_chunks/index-DXiHxy70.js.map +0 -1
- package/dist/_chunks/relations-D706vblp.js.map +0 -1
- package/dist/_chunks/relations-SCVAL_aJ.mjs.map +0 -1
- package/strapi-server.js +0 -3
package/dist/server/index.mjs
CHANGED
@@ -367,7 +367,12 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
367
367
|
if (userToPopulate == null) {
|
368
368
|
return null;
|
369
369
|
}
|
370
|
-
return strapi2.query("admin::user").findOne({
|
370
|
+
return strapi2.query("admin::user").findOne({
|
371
|
+
where: {
|
372
|
+
...userToPopulate.id ? { id: userToPopulate.id } : {},
|
373
|
+
...userToPopulate.documentId ? { documentId: userToPopulate.documentId } : {}
|
374
|
+
}
|
375
|
+
});
|
371
376
|
})
|
372
377
|
);
|
373
378
|
return {
|
@@ -1689,7 +1694,7 @@ const updateDocument = async (ctx, opts) => {
|
|
1689
1694
|
throw new errors.ForbiddenError();
|
1690
1695
|
}
|
1691
1696
|
const pickPermittedFields = documentVersion ? permissionChecker2.sanitizeUpdateInput(documentVersion) : permissionChecker2.sanitizeCreateInput;
|
1692
|
-
const setCreator = setCreatorFields({ user, isEdition: true });
|
1697
|
+
const setCreator = documentVersion ? setCreatorFields({ user, isEdition: true }) : setCreatorFields({ user });
|
1693
1698
|
const sanitizeFn = async.pipe(pickPermittedFields, setCreator);
|
1694
1699
|
const sanitizedBody = await sanitizeFn(body);
|
1695
1700
|
return documentManager2.update(documentVersion?.documentId || id, model, {
|
@@ -1898,11 +1903,17 @@ const collectionTypes = {
|
|
1898
1903
|
}
|
1899
1904
|
const isUpdate = !isCreate;
|
1900
1905
|
if (isUpdate) {
|
1901
|
-
|
1902
|
-
if (!
|
1906
|
+
const documentExists = documentManager2.exists(model, id);
|
1907
|
+
if (!documentExists) {
|
1903
1908
|
throw new errors.NotFoundError("Document not found");
|
1904
1909
|
}
|
1905
|
-
|
1910
|
+
document = await documentManager2.findOne(id, model, { populate, locale });
|
1911
|
+
if (!document) {
|
1912
|
+
if (permissionChecker2.cannot.create({ locale }) || permissionChecker2.cannot.publish({ locale })) {
|
1913
|
+
throw new errors.ForbiddenError();
|
1914
|
+
}
|
1915
|
+
document = await updateDocument(ctx);
|
1916
|
+
} else if (permissionChecker2.can.update(document)) {
|
1906
1917
|
await updateDocument(ctx);
|
1907
1918
|
}
|
1908
1919
|
}
|
@@ -2327,15 +2338,27 @@ const sanitizeMainField = (model, mainField, userAbility) => {
|
|
2327
2338
|
}
|
2328
2339
|
return mainField;
|
2329
2340
|
};
|
2330
|
-
const addStatusToRelations = async (
|
2331
|
-
if (!contentTypes$1.hasDraftAndPublish(strapi.
|
2341
|
+
const addStatusToRelations = async (targetUid, relations2) => {
|
2342
|
+
if (!contentTypes$1.hasDraftAndPublish(strapi.getModel(targetUid))) {
|
2332
2343
|
return relations2;
|
2333
2344
|
}
|
2334
2345
|
const documentMetadata2 = getService$1("document-metadata");
|
2335
|
-
|
2346
|
+
if (!relations2.length) {
|
2347
|
+
return relations2;
|
2348
|
+
}
|
2349
|
+
const firstRelation = relations2[0];
|
2350
|
+
const filters = {
|
2351
|
+
documentId: { $in: relations2.map((r) => r.documentId) },
|
2352
|
+
// NOTE: find the "opposite" status
|
2353
|
+
publishedAt: firstRelation.publishedAt !== null ? { $null: true } : { $notNull: true }
|
2354
|
+
};
|
2355
|
+
const availableStatus = await strapi.query(targetUid).findMany({
|
2356
|
+
select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"],
|
2357
|
+
filters
|
2358
|
+
});
|
2336
2359
|
return relations2.map((relation) => {
|
2337
|
-
const availableStatuses =
|
2338
|
-
(availableDocument) => availableDocument.documentId === relation.documentId
|
2360
|
+
const availableStatuses = availableStatus.filter(
|
2361
|
+
(availableDocument) => availableDocument.documentId === relation.documentId && (relation.locale ? availableDocument.locale === relation.locale : true)
|
2339
2362
|
);
|
2340
2363
|
return {
|
2341
2364
|
...relation,
|
@@ -2356,11 +2379,8 @@ const validateLocale = (sourceUid, targetUid, locale) => {
|
|
2356
2379
|
const isLocalized = strapi.plugin("i18n").service("content-types").isLocalizedContentType;
|
2357
2380
|
const isSourceLocalized = isLocalized(sourceModel);
|
2358
2381
|
const isTargetLocalized = isLocalized(targetModel);
|
2359
|
-
let validatedLocale = locale;
|
2360
|
-
if (!targetModel || !isTargetLocalized)
|
2361
|
-
validatedLocale = void 0;
|
2362
2382
|
return {
|
2363
|
-
locale
|
2383
|
+
locale,
|
2364
2384
|
isSourceLocalized,
|
2365
2385
|
isTargetLocalized
|
2366
2386
|
};
|
@@ -2463,7 +2483,7 @@ const relations = {
|
|
2463
2483
|
attribute,
|
2464
2484
|
fieldsToSelect,
|
2465
2485
|
mainField,
|
2466
|
-
source: { schema: sourceSchema },
|
2486
|
+
source: { schema: sourceSchema, isLocalized: isSourceLocalized },
|
2467
2487
|
target: { schema: targetSchema, isLocalized: isTargetLocalized },
|
2468
2488
|
sourceSchema,
|
2469
2489
|
targetSchema,
|
@@ -2485,7 +2505,8 @@ const relations = {
|
|
2485
2505
|
fieldsToSelect,
|
2486
2506
|
mainField,
|
2487
2507
|
source: {
|
2488
|
-
schema: { uid: sourceUid, modelType: sourceModelType }
|
2508
|
+
schema: { uid: sourceUid, modelType: sourceModelType },
|
2509
|
+
isLocalized: isSourceLocalized
|
2489
2510
|
},
|
2490
2511
|
target: {
|
2491
2512
|
schema: { uid: targetUid },
|
@@ -2523,12 +2544,16 @@ const relations = {
|
|
2523
2544
|
} else {
|
2524
2545
|
where.id = id;
|
2525
2546
|
}
|
2526
|
-
|
2527
|
-
|
2547
|
+
const publishedAt = getPublishedAtClause(status, targetUid);
|
2548
|
+
if (!isEmpty(publishedAt)) {
|
2549
|
+
where[`${alias}.published_at`] = publishedAt;
|
2528
2550
|
}
|
2529
|
-
if (
|
2551
|
+
if (isTargetLocalized && locale) {
|
2530
2552
|
where[`${alias}.locale`] = locale;
|
2531
2553
|
}
|
2554
|
+
if (isSourceLocalized && locale) {
|
2555
|
+
where.locale = locale;
|
2556
|
+
}
|
2532
2557
|
if ((idsToInclude?.length ?? 0) !== 0) {
|
2533
2558
|
where[`${alias}.id`].$notIn = idsToInclude;
|
2534
2559
|
}
|
@@ -2546,7 +2571,8 @@ const relations = {
|
|
2546
2571
|
id: { $notIn: uniq(idsToOmit) }
|
2547
2572
|
});
|
2548
2573
|
}
|
2549
|
-
const
|
2574
|
+
const dbQuery = strapi.get("query-params").transform(targetUid, queryParams);
|
2575
|
+
const res = await strapi.db.query(targetUid).findPage(dbQuery);
|
2550
2576
|
ctx.body = {
|
2551
2577
|
...res,
|
2552
2578
|
results: await addStatusToRelations(targetUid, res.results)
|
@@ -2561,21 +2587,33 @@ const relations = {
|
|
2561
2587
|
attribute,
|
2562
2588
|
targetField,
|
2563
2589
|
fieldsToSelect,
|
2564
|
-
|
2565
|
-
|
2566
|
-
}
|
2567
|
-
target: {
|
2568
|
-
schema: { uid: targetUid }
|
2569
|
-
}
|
2590
|
+
status,
|
2591
|
+
source: { schema: sourceSchema },
|
2592
|
+
target: { schema: targetSchema }
|
2570
2593
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2594
|
+
const { uid: sourceUid } = sourceSchema;
|
2595
|
+
const { uid: targetUid } = targetSchema;
|
2571
2596
|
const permissionQuery = await getService$1("permission-checker").create({ userAbility, model: targetUid }).sanitizedQuery.read({ fields: fieldsToSelect });
|
2572
2597
|
const dbQuery = strapi.db.query(sourceUid);
|
2573
2598
|
const loadRelations = relations$1.isAnyToMany(attribute) ? (...args) => dbQuery.loadPages(...args) : (...args) => dbQuery.load(...args).then((res2) => ({ results: res2 ? [res2] : [] }));
|
2599
|
+
const filters = {};
|
2600
|
+
if (sourceSchema?.options?.draftAndPublish) {
|
2601
|
+
if (targetSchema?.options?.draftAndPublish) {
|
2602
|
+
if (status === "published") {
|
2603
|
+
filters.publishedAt = { $notNull: true };
|
2604
|
+
} else {
|
2605
|
+
filters.publishedAt = { $null: true };
|
2606
|
+
}
|
2607
|
+
}
|
2608
|
+
} else if (targetSchema?.options?.draftAndPublish) {
|
2609
|
+
filters.publishedAt = { $null: true };
|
2610
|
+
}
|
2574
2611
|
const res = await loadRelations({ id: entryId }, targetField, {
|
2575
|
-
select: ["id", "documentId", "locale", "publishedAt"],
|
2612
|
+
select: ["id", "documentId", "locale", "publishedAt", "updatedAt"],
|
2576
2613
|
ordering: "desc",
|
2577
2614
|
page: ctx.request.query.page,
|
2578
|
-
pageSize: ctx.request.query.pageSize
|
2615
|
+
pageSize: ctx.request.query.pageSize,
|
2616
|
+
filters
|
2579
2617
|
});
|
2580
2618
|
const loadedIds = res.results.map((item) => item.id);
|
2581
2619
|
addFiltersClause(permissionQuery, { id: { $in: loadedIds } });
|
@@ -2668,7 +2706,7 @@ const singleTypes = {
|
|
2668
2706
|
permissionChecker2,
|
2669
2707
|
model,
|
2670
2708
|
// @ts-expect-error - fix types
|
2671
|
-
{
|
2709
|
+
{ documentId: document.documentId, locale, publishedAt: null },
|
2672
2710
|
{ availableLocales: true, availableStatus: false }
|
2673
2711
|
);
|
2674
2712
|
ctx.body = { data: {}, meta };
|
@@ -4039,7 +4077,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4039
4077
|
*/
|
4040
4078
|
async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
|
4041
4079
|
const versionsByLocale = groupBy("locale", allVersions);
|
4042
|
-
|
4080
|
+
if (version.locale) {
|
4081
|
+
delete versionsByLocale[version.locale];
|
4082
|
+
}
|
4043
4083
|
const model = strapi2.getModel(uid2);
|
4044
4084
|
const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
|
4045
4085
|
const traversalFunction = async (localeVersion) => traverseEntity(
|