@strapi/content-manager 0.0.0-experimental.2cfaca2410c03f1dee31ca18c06aedfb313e0fb4 → 0.0.0-experimental.2e2b694fbeb6a64dd7504ce6bccecf956e9eaf03
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-hLMNf7KI.mjs → ComponentConfigurationPage-CIjXcRAB.mjs} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-hLMNf7KI.mjs.map → ComponentConfigurationPage-CIjXcRAB.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-DnnZJc1F.js → ComponentConfigurationPage-gsCd80MU.js} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-DnnZJc1F.js.map → ComponentConfigurationPage-gsCd80MU.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-Dh6sq-G4.mjs → EditConfigurationPage-BglmD_BF.mjs} +4 -4
- package/dist/_chunks/{EditConfigurationPage-Dh6sq-G4.mjs.map → EditConfigurationPage-BglmD_BF.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CpLj5gYZ.js → EditConfigurationPage-DHDQKBzw.js} +4 -4
- package/dist/_chunks/{EditConfigurationPage-CpLj5gYZ.js.map → EditConfigurationPage-DHDQKBzw.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-D2QVRr_2.js → EditViewPage-C4iTxUPU.js} +15 -5
- package/dist/_chunks/EditViewPage-C4iTxUPU.js.map +1 -0
- package/dist/_chunks/{EditViewPage-BU1ugeVi.mjs → EditViewPage-CiwVPMaK.mjs} +15 -5
- package/dist/_chunks/EditViewPage-CiwVPMaK.mjs.map +1 -0
- package/dist/_chunks/{Field-VSPY6uzs.mjs → Field-DIjL1b5d.mjs} +70 -26
- package/dist/_chunks/Field-DIjL1b5d.mjs.map +1 -0
- package/dist/_chunks/{Field-BEDX9i_V.js → Field-DhXEK8y1.js} +70 -26
- package/dist/_chunks/Field-DhXEK8y1.js.map +1 -0
- package/dist/_chunks/{Form-05Oaes1N.mjs → Form-CmNesrvR.mjs} +3 -3
- package/dist/_chunks/Form-CmNesrvR.mjs.map +1 -0
- package/dist/_chunks/{Form-DCaY8xBX.js → Form-CwmJ4sWe.js} +3 -3
- package/dist/_chunks/Form-CwmJ4sWe.js.map +1 -0
- package/dist/_chunks/{History-BrJ1tUvt.js → History-BLCCNgCt.js} +24 -11
- package/dist/_chunks/History-BLCCNgCt.js.map +1 -0
- package/dist/_chunks/{History-BqO2G3MV.mjs → History-D-99Wh30.mjs} +25 -12
- package/dist/_chunks/History-D-99Wh30.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-Eane5LKE.js → ListConfigurationPage-DxWpeZrO.js} +3 -3
- package/dist/_chunks/{ListConfigurationPage-Eane5LKE.js.map → ListConfigurationPage-DxWpeZrO.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-C6rsFlme.mjs → ListConfigurationPage-JPWZz7Kg.mjs} +3 -3
- package/dist/_chunks/{ListConfigurationPage-C6rsFlme.mjs.map → ListConfigurationPage-JPWZz7Kg.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-Coj-RPsx.js → ListViewPage-CIQekSFz.js} +15 -4
- package/dist/_chunks/ListViewPage-CIQekSFz.js.map +1 -0
- package/dist/_chunks/{ListViewPage-yE_zYhcI.mjs → ListViewPage-DSK3f0ST.mjs} +15 -4
- package/dist/_chunks/{ListViewPage-yE_zYhcI.mjs.map → ListViewPage-DSK3f0ST.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BDJ0dshy.js → NoContentTypePage-C5cxKvC2.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BDJ0dshy.js.map → NoContentTypePage-C5cxKvC2.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-NW_FSVdY.mjs → NoContentTypePage-D99LU1YP.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-NW_FSVdY.mjs.map → NoContentTypePage-D99LU1YP.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-h0I3ImsX.mjs → NoPermissionsPage-DBrBw-0y.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-h0I3ImsX.mjs.map → NoPermissionsPage-DBrBw-0y.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-BOtb5FTM.js → NoPermissionsPage-Oy4tmUrW.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-BOtb5FTM.js.map → NoPermissionsPage-Oy4tmUrW.js.map} +1 -1
- package/dist/_chunks/{Relations-FP0uWpBz.mjs → Relations-BBmhcWFV.mjs} +69 -36
- package/dist/_chunks/Relations-BBmhcWFV.mjs.map +1 -0
- package/dist/_chunks/{Relations-CVh0DOKv.js → Relations-eG-9p_qS.js} +68 -35
- package/dist/_chunks/Relations-eG-9p_qS.js.map +1 -0
- package/dist/_chunks/{en-BlhnxQfj.js → en-Bm0D0IWz.js} +7 -7
- package/dist/_chunks/{en-BlhnxQfj.js.map → en-Bm0D0IWz.js.map} +1 -1
- package/dist/_chunks/{en-C8YBvRrK.mjs → en-DKV44jRb.mjs} +7 -7
- package/dist/_chunks/{en-C8YBvRrK.mjs.map → en-DKV44jRb.mjs.map} +1 -1
- package/dist/_chunks/{index-DTKVhcla.js → index-BIWDoFLK.js} +124 -87
- package/dist/_chunks/index-BIWDoFLK.js.map +1 -0
- package/dist/_chunks/{index-CPCHQ3X_.mjs → index-BrUzbQ30.mjs} +124 -88
- package/dist/_chunks/index-BrUzbQ30.mjs.map +1 -0
- package/dist/_chunks/{layout-B4UhJ8MJ.mjs → layout-_5-cXs34.mjs} +3 -3
- package/dist/_chunks/{layout-B4UhJ8MJ.mjs.map → layout-_5-cXs34.mjs.map} +1 -1
- package/dist/_chunks/{layout-CWgZzMYf.js → layout-lMc9i1-Z.js} +3 -3
- package/dist/_chunks/{layout-CWgZzMYf.js.map → layout-lMc9i1-Z.js.map} +1 -1
- package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
- package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
- package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
- package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
- package/dist/_chunks/{relations-D81a_2zw.js → relations-BRHithi8.js} +3 -7
- package/dist/_chunks/relations-BRHithi8.js.map +1 -0
- package/dist/_chunks/{relations-B83Ge9a7.mjs → relations-B_VLk-DD.mjs} +3 -7
- package/dist/_chunks/relations-B_VLk-DD.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +2 -0
- package/dist/admin/src/pages/EditView/components/Header.d.ts +1 -0
- package/dist/admin/src/preview/constants.d.ts +1 -0
- package/dist/admin/src/preview/index.d.ts +4 -0
- package/dist/server/index.js +81 -29
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +81 -29
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.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/preview/constants.d.ts +2 -0
- package/dist/server/src/preview/constants.d.ts.map +1 -0
- package/dist/server/src/preview/index.d.ts +4 -0
- package/dist/server/src/preview/index.d.ts.map +1 -0
- 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 +9 -9
- package/dist/_chunks/EditViewPage-BU1ugeVi.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-D2QVRr_2.js.map +0 -1
- package/dist/_chunks/Field-BEDX9i_V.js.map +0 -1
- package/dist/_chunks/Field-VSPY6uzs.mjs.map +0 -1
- package/dist/_chunks/Form-05Oaes1N.mjs.map +0 -1
- package/dist/_chunks/Form-DCaY8xBX.js.map +0 -1
- package/dist/_chunks/History-BqO2G3MV.mjs.map +0 -1
- package/dist/_chunks/History-BrJ1tUvt.js.map +0 -1
- package/dist/_chunks/ListViewPage-Coj-RPsx.js.map +0 -1
- package/dist/_chunks/Relations-CVh0DOKv.js.map +0 -1
- package/dist/_chunks/Relations-FP0uWpBz.mjs.map +0 -1
- package/dist/_chunks/index-CPCHQ3X_.mjs.map +0 -1
- package/dist/_chunks/index-DTKVhcla.js.map +0 -1
- package/dist/_chunks/relations-B83Ge9a7.mjs.map +0 -1
- package/dist/_chunks/relations-D81a_2zw.js.map +0 -1
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 {
|
@@ -664,7 +669,7 @@ const historyVersion = {
|
|
664
669
|
}
|
665
670
|
}
|
666
671
|
};
|
667
|
-
const getFeature = () => {
|
672
|
+
const getFeature$1 = () => {
|
668
673
|
if (strapi.ee.features.isEnabled("cms-content-history")) {
|
669
674
|
return {
|
670
675
|
register({ strapi: strapi2 }) {
|
@@ -687,7 +692,7 @@ const getFeature = () => {
|
|
687
692
|
}
|
688
693
|
};
|
689
694
|
};
|
690
|
-
const history = getFeature();
|
695
|
+
const history = getFeature$1();
|
691
696
|
const register = async ({ strapi: strapi2 }) => {
|
692
697
|
await history.register?.({ strapi: strapi2 });
|
693
698
|
};
|
@@ -695,6 +700,18 @@ const ALLOWED_WEBHOOK_EVENTS = {
|
|
695
700
|
ENTRY_PUBLISH: "entry.publish",
|
696
701
|
ENTRY_UNPUBLISH: "entry.unpublish"
|
697
702
|
};
|
703
|
+
const FEATURE_ID = "preview";
|
704
|
+
const getFeature = () => {
|
705
|
+
if (!strapi.features.future.isEnabled(FEATURE_ID)) {
|
706
|
+
return {};
|
707
|
+
}
|
708
|
+
return {
|
709
|
+
bootstrap() {
|
710
|
+
console.log("Bootstrapping preview server");
|
711
|
+
}
|
712
|
+
};
|
713
|
+
};
|
714
|
+
const preview = getFeature();
|
698
715
|
const bootstrap = async () => {
|
699
716
|
Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
|
700
717
|
strapi.get("webhookStore").addAllowedEvent(key, value);
|
@@ -704,6 +721,7 @@ const bootstrap = async () => {
|
|
704
721
|
await getService$1("content-types").syncConfigurations();
|
705
722
|
await getService$1("permission").registerPermissions();
|
706
723
|
await history.bootstrap?.({ strapi });
|
724
|
+
await preview.bootstrap?.({ strapi });
|
707
725
|
};
|
708
726
|
const destroy = async ({ strapi: strapi2 }) => {
|
709
727
|
await history.destroy?.({ strapi: strapi2 });
|
@@ -1689,7 +1707,7 @@ const updateDocument = async (ctx, opts) => {
|
|
1689
1707
|
throw new errors.ForbiddenError();
|
1690
1708
|
}
|
1691
1709
|
const pickPermittedFields = documentVersion ? permissionChecker2.sanitizeUpdateInput(documentVersion) : permissionChecker2.sanitizeCreateInput;
|
1692
|
-
const setCreator = setCreatorFields({ user, isEdition: true });
|
1710
|
+
const setCreator = documentVersion ? setCreatorFields({ user, isEdition: true }) : setCreatorFields({ user });
|
1693
1711
|
const sanitizeFn = async.pipe(pickPermittedFields, setCreator);
|
1694
1712
|
const sanitizedBody = await sanitizeFn(body);
|
1695
1713
|
return documentManager2.update(documentVersion?.documentId || id, model, {
|
@@ -1898,11 +1916,17 @@ const collectionTypes = {
|
|
1898
1916
|
}
|
1899
1917
|
const isUpdate = !isCreate;
|
1900
1918
|
if (isUpdate) {
|
1901
|
-
|
1902
|
-
if (!
|
1919
|
+
const documentExists = documentManager2.exists(model, id);
|
1920
|
+
if (!documentExists) {
|
1903
1921
|
throw new errors.NotFoundError("Document not found");
|
1904
1922
|
}
|
1905
|
-
|
1923
|
+
document = await documentManager2.findOne(id, model, { populate, locale });
|
1924
|
+
if (!document) {
|
1925
|
+
if (permissionChecker2.cannot.create({ locale }) || permissionChecker2.cannot.publish({ locale })) {
|
1926
|
+
throw new errors.ForbiddenError();
|
1927
|
+
}
|
1928
|
+
document = await updateDocument(ctx);
|
1929
|
+
} else if (permissionChecker2.can.update(document)) {
|
1906
1930
|
await updateDocument(ctx);
|
1907
1931
|
}
|
1908
1932
|
}
|
@@ -2327,15 +2351,27 @@ const sanitizeMainField = (model, mainField, userAbility) => {
|
|
2327
2351
|
}
|
2328
2352
|
return mainField;
|
2329
2353
|
};
|
2330
|
-
const addStatusToRelations = async (
|
2331
|
-
if (!contentTypes$1.hasDraftAndPublish(strapi.
|
2354
|
+
const addStatusToRelations = async (targetUid, relations2) => {
|
2355
|
+
if (!contentTypes$1.hasDraftAndPublish(strapi.getModel(targetUid))) {
|
2332
2356
|
return relations2;
|
2333
2357
|
}
|
2334
2358
|
const documentMetadata2 = getService$1("document-metadata");
|
2335
|
-
|
2359
|
+
if (!relations2.length) {
|
2360
|
+
return relations2;
|
2361
|
+
}
|
2362
|
+
const firstRelation = relations2[0];
|
2363
|
+
const filters = {
|
2364
|
+
documentId: { $in: relations2.map((r) => r.documentId) },
|
2365
|
+
// NOTE: find the "opposite" status
|
2366
|
+
publishedAt: firstRelation.publishedAt !== null ? { $null: true } : { $notNull: true }
|
2367
|
+
};
|
2368
|
+
const availableStatus = await strapi.query(targetUid).findMany({
|
2369
|
+
select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"],
|
2370
|
+
filters
|
2371
|
+
});
|
2336
2372
|
return relations2.map((relation) => {
|
2337
|
-
const availableStatuses =
|
2338
|
-
(availableDocument) => availableDocument.documentId === relation.documentId
|
2373
|
+
const availableStatuses = availableStatus.filter(
|
2374
|
+
(availableDocument) => availableDocument.documentId === relation.documentId && (relation.locale ? availableDocument.locale === relation.locale : true)
|
2339
2375
|
);
|
2340
2376
|
return {
|
2341
2377
|
...relation,
|
@@ -2356,11 +2392,8 @@ const validateLocale = (sourceUid, targetUid, locale) => {
|
|
2356
2392
|
const isLocalized = strapi.plugin("i18n").service("content-types").isLocalizedContentType;
|
2357
2393
|
const isSourceLocalized = isLocalized(sourceModel);
|
2358
2394
|
const isTargetLocalized = isLocalized(targetModel);
|
2359
|
-
let validatedLocale = locale;
|
2360
|
-
if (!targetModel || !isTargetLocalized)
|
2361
|
-
validatedLocale = void 0;
|
2362
2395
|
return {
|
2363
|
-
locale
|
2396
|
+
locale,
|
2364
2397
|
isSourceLocalized,
|
2365
2398
|
isTargetLocalized
|
2366
2399
|
};
|
@@ -2463,7 +2496,7 @@ const relations = {
|
|
2463
2496
|
attribute,
|
2464
2497
|
fieldsToSelect,
|
2465
2498
|
mainField,
|
2466
|
-
source: { schema: sourceSchema },
|
2499
|
+
source: { schema: sourceSchema, isLocalized: isSourceLocalized },
|
2467
2500
|
target: { schema: targetSchema, isLocalized: isTargetLocalized },
|
2468
2501
|
sourceSchema,
|
2469
2502
|
targetSchema,
|
@@ -2485,7 +2518,8 @@ const relations = {
|
|
2485
2518
|
fieldsToSelect,
|
2486
2519
|
mainField,
|
2487
2520
|
source: {
|
2488
|
-
schema: { uid: sourceUid, modelType: sourceModelType }
|
2521
|
+
schema: { uid: sourceUid, modelType: sourceModelType },
|
2522
|
+
isLocalized: isSourceLocalized
|
2489
2523
|
},
|
2490
2524
|
target: {
|
2491
2525
|
schema: { uid: targetUid },
|
@@ -2527,9 +2561,12 @@ const relations = {
|
|
2527
2561
|
if (!isEmpty(publishedAt)) {
|
2528
2562
|
where[`${alias}.published_at`] = publishedAt;
|
2529
2563
|
}
|
2530
|
-
if (
|
2564
|
+
if (isTargetLocalized && locale) {
|
2531
2565
|
where[`${alias}.locale`] = locale;
|
2532
2566
|
}
|
2567
|
+
if (isSourceLocalized && locale) {
|
2568
|
+
where.locale = locale;
|
2569
|
+
}
|
2533
2570
|
if ((idsToInclude?.length ?? 0) !== 0) {
|
2534
2571
|
where[`${alias}.id`].$notIn = idsToInclude;
|
2535
2572
|
}
|
@@ -2547,7 +2584,8 @@ const relations = {
|
|
2547
2584
|
id: { $notIn: uniq(idsToOmit) }
|
2548
2585
|
});
|
2549
2586
|
}
|
2550
|
-
const
|
2587
|
+
const dbQuery = strapi.get("query-params").transform(targetUid, queryParams);
|
2588
|
+
const res = await strapi.db.query(targetUid).findPage(dbQuery);
|
2551
2589
|
ctx.body = {
|
2552
2590
|
...res,
|
2553
2591
|
results: await addStatusToRelations(targetUid, res.results)
|
@@ -2562,21 +2600,33 @@ const relations = {
|
|
2562
2600
|
attribute,
|
2563
2601
|
targetField,
|
2564
2602
|
fieldsToSelect,
|
2565
|
-
|
2566
|
-
|
2567
|
-
}
|
2568
|
-
target: {
|
2569
|
-
schema: { uid: targetUid }
|
2570
|
-
}
|
2603
|
+
status,
|
2604
|
+
source: { schema: sourceSchema },
|
2605
|
+
target: { schema: targetSchema }
|
2571
2606
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2607
|
+
const { uid: sourceUid } = sourceSchema;
|
2608
|
+
const { uid: targetUid } = targetSchema;
|
2572
2609
|
const permissionQuery = await getService$1("permission-checker").create({ userAbility, model: targetUid }).sanitizedQuery.read({ fields: fieldsToSelect });
|
2573
2610
|
const dbQuery = strapi.db.query(sourceUid);
|
2574
2611
|
const loadRelations = relations$1.isAnyToMany(attribute) ? (...args) => dbQuery.loadPages(...args) : (...args) => dbQuery.load(...args).then((res2) => ({ results: res2 ? [res2] : [] }));
|
2612
|
+
const filters = {};
|
2613
|
+
if (sourceSchema?.options?.draftAndPublish) {
|
2614
|
+
if (targetSchema?.options?.draftAndPublish) {
|
2615
|
+
if (status === "published") {
|
2616
|
+
filters.publishedAt = { $notNull: true };
|
2617
|
+
} else {
|
2618
|
+
filters.publishedAt = { $null: true };
|
2619
|
+
}
|
2620
|
+
}
|
2621
|
+
} else if (targetSchema?.options?.draftAndPublish) {
|
2622
|
+
filters.publishedAt = { $null: true };
|
2623
|
+
}
|
2575
2624
|
const res = await loadRelations({ id: entryId }, targetField, {
|
2576
|
-
select: ["id", "documentId", "locale", "publishedAt"],
|
2625
|
+
select: ["id", "documentId", "locale", "publishedAt", "updatedAt"],
|
2577
2626
|
ordering: "desc",
|
2578
2627
|
page: ctx.request.query.page,
|
2579
|
-
pageSize: ctx.request.query.pageSize
|
2628
|
+
pageSize: ctx.request.query.pageSize,
|
2629
|
+
filters
|
2580
2630
|
});
|
2581
2631
|
const loadedIds = res.results.map((item) => item.id);
|
2582
2632
|
addFiltersClause(permissionQuery, { id: { $in: loadedIds } });
|
@@ -4040,7 +4090,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4040
4090
|
*/
|
4041
4091
|
async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
|
4042
4092
|
const versionsByLocale = groupBy("locale", allVersions);
|
4043
|
-
|
4093
|
+
if (version.locale) {
|
4094
|
+
delete versionsByLocale[version.locale];
|
4095
|
+
}
|
4044
4096
|
const model = strapi2.getModel(uid2);
|
4045
4097
|
const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
|
4046
4098
|
const traversalFunction = async (localeVersion) => traverseEntity(
|