@strapi/content-manager 5.0.0-rc.4 → 5.0.0-rc.6
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-5ukroXAh.js → ComponentConfigurationPage-DXYBg6Q4.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-5ukroXAh.js.map → ComponentConfigurationPage-DXYBg6Q4.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-BAgyHiMm.mjs → ComponentConfigurationPage-Diwy7rap.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-BAgyHiMm.mjs.map → ComponentConfigurationPage-Diwy7rap.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-DmoXawIh.mjs → EditConfigurationPage-C62aCKGN.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-DmoXawIh.mjs.map → EditConfigurationPage-C62aCKGN.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-Xp7lun0f.js → EditConfigurationPage-DCyvZplh.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-Xp7lun0f.js.map → EditConfigurationPage-DCyvZplh.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-BLsjc5F-.mjs → EditViewPage-D7pEHIUi.mjs} +3 -3
- package/dist/_chunks/{EditViewPage-BLsjc5F-.mjs.map → EditViewPage-D7pEHIUi.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-C-ukDOB7.js → EditViewPage-Q1iL6Yjq.js} +3 -3
- package/dist/_chunks/{EditViewPage-C-ukDOB7.js.map → EditViewPage-Q1iL6Yjq.js.map} +1 -1
- package/dist/_chunks/{Field-Cs7duwWd.mjs → Field-B5WAARex.mjs} +3 -3
- package/dist/_chunks/Field-B5WAARex.mjs.map +1 -0
- package/dist/_chunks/{Field-Bfph5SOd.js → Field-tNsYzab8.js} +3 -3
- package/dist/_chunks/Field-tNsYzab8.js.map +1 -0
- package/dist/_chunks/{Form-CPYqIWDG.js → Form-BLOtEgdG.js} +2 -2
- package/dist/_chunks/{Form-CPYqIWDG.js.map → Form-BLOtEgdG.js.map} +1 -1
- package/dist/_chunks/{Form-Dg_GS5TQ.mjs → Form-BdgxktG0.mjs} +2 -2
- package/dist/_chunks/{Form-Dg_GS5TQ.mjs.map → Form-BdgxktG0.mjs.map} +1 -1
- package/dist/_chunks/{History-DNQkXANT.js → History-CNQ3y0Td.js} +4 -4
- package/dist/_chunks/{History-DNQkXANT.js.map → History-CNQ3y0Td.js.map} +1 -1
- package/dist/_chunks/{History-wrnHqf09.mjs → History-DCbphAxD.mjs} +4 -4
- package/dist/_chunks/{History-wrnHqf09.mjs.map → History-DCbphAxD.mjs.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-CUQxfpjT.js → ListConfigurationPage-CGiDaV99.js} +2 -2
- package/dist/_chunks/{ListConfigurationPage-CUQxfpjT.js.map → ListConfigurationPage-CGiDaV99.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-DScmJVkW.mjs → ListConfigurationPage-DfvPhk6u.mjs} +2 -2
- package/dist/_chunks/{ListConfigurationPage-DScmJVkW.mjs.map → ListConfigurationPage-DfvPhk6u.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-BsLiH2-2.js → ListViewPage-BoBeCtmC.js} +9 -4
- package/dist/_chunks/ListViewPage-BoBeCtmC.js.map +1 -0
- package/dist/_chunks/{ListViewPage-C4IvrMgY.mjs → ListViewPage-D4UEitVJ.mjs} +10 -5
- package/dist/_chunks/ListViewPage-D4UEitVJ.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-Djg8nPlj.mjs → NoContentTypePage-Dg8RTwSG.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-Djg8nPlj.mjs.map → NoContentTypePage-Dg8RTwSG.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BZ-PnGAf.js → NoContentTypePage-r8lNSL9g.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BZ-PnGAf.js.map → NoContentTypePage-r8lNSL9g.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-_lUqjGW3.js → NoPermissionsPage-C-4rQU7A.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-_lUqjGW3.js.map → NoPermissionsPage-C-4rQU7A.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DSP7R-hv.mjs → NoPermissionsPage-Kpz9mv4K.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DSP7R-hv.mjs.map → NoPermissionsPage-Kpz9mv4K.mjs.map} +1 -1
- package/dist/_chunks/{Relations-CtELXYIK.js → Relations-DORNjmbK.js} +3 -3
- package/dist/_chunks/{Relations-CtELXYIK.js.map → Relations-DORNjmbK.js.map} +1 -1
- package/dist/_chunks/{Relations-BZr8tL0R.mjs → Relations-Q66m8cnC.mjs} +3 -3
- package/dist/_chunks/{Relations-BZr8tL0R.mjs.map → Relations-Q66m8cnC.mjs.map} +1 -1
- package/dist/_chunks/{index-OerGjbAN.js → index-B74KYy73.js} +28 -36
- package/dist/_chunks/index-B74KYy73.js.map +1 -0
- package/dist/_chunks/{index-c_5DdJi-.mjs → index-CW--YEA6.mjs} +29 -37
- package/dist/_chunks/index-CW--YEA6.mjs.map +1 -0
- package/dist/_chunks/{layout-oPBiO7RY.mjs → layout-CcKSoI_3.mjs} +17 -5
- package/dist/_chunks/{layout-oPBiO7RY.mjs.map → layout-CcKSoI_3.mjs.map} +1 -1
- package/dist/_chunks/{layout-Ci7qHlFb.js → layout-CwR7rEv4.js} +16 -4
- package/dist/_chunks/{layout-Ci7qHlFb.js.map → layout-CwR7rEv4.js.map} +1 -1
- package/dist/_chunks/{relations-BIdWFjdq.mjs → relations-Dsery6I2.mjs} +2 -2
- package/dist/_chunks/{relations-BIdWFjdq.mjs.map → relations-Dsery6I2.mjs.map} +1 -1
- package/dist/_chunks/{relations-COBpStiF.js → relations-S1dd0utS.js} +2 -2
- package/dist/_chunks/{relations-COBpStiF.js.map → relations-S1dd0utS.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +98 -58
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +99 -59
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +1 -1
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/_chunks/Field-Bfph5SOd.js.map +0 -1
- package/dist/_chunks/Field-Cs7duwWd.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-BsLiH2-2.js.map +0 -1
- package/dist/_chunks/ListViewPage-C4IvrMgY.mjs.map +0 -1
- package/dist/_chunks/index-OerGjbAN.js.map +0 -1
- package/dist/_chunks/index-c_5DdJi-.mjs.map +0 -1
package/dist/admin/index.mjs
CHANGED
package/dist/server/index.js
CHANGED
@@ -226,9 +226,10 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
226
226
|
const meta = await documentMetadataService.getMetadata(contentTypeUid, document);
|
227
227
|
return documentMetadataService.getStatus(document, meta.availableStatus);
|
228
228
|
};
|
229
|
-
const getDeepPopulate2 = (uid2) => {
|
229
|
+
const getDeepPopulate2 = (uid2, useDatabaseSyntax = false) => {
|
230
230
|
const model = strapi2.getModel(uid2);
|
231
231
|
const attributes = Object.entries(model.attributes);
|
232
|
+
const fieldSelector = useDatabaseSyntax ? "select" : "fields";
|
232
233
|
return attributes.reduce((acc, [attributeName, attribute]) => {
|
233
234
|
switch (attribute.type) {
|
234
235
|
case "relation": {
|
@@ -238,12 +239,12 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
238
239
|
}
|
239
240
|
const isVisible2 = strapiUtils.contentTypes.isVisibleAttribute(model, attributeName);
|
240
241
|
if (isVisible2) {
|
241
|
-
acc[attributeName] = {
|
242
|
+
acc[attributeName] = { [fieldSelector]: ["documentId", "locale", "publishedAt"] };
|
242
243
|
}
|
243
244
|
break;
|
244
245
|
}
|
245
246
|
case "media": {
|
246
|
-
acc[attributeName] = {
|
247
|
+
acc[attributeName] = { [fieldSelector]: ["id"] };
|
247
248
|
break;
|
248
249
|
}
|
249
250
|
case "component": {
|
@@ -494,6 +495,42 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
494
495
|
}
|
495
496
|
};
|
496
497
|
};
|
498
|
+
const shouldCreateHistoryVersion = (context) => {
|
499
|
+
if (!strapi.requestContext.get()?.request.url.startsWith("/content-manager")) {
|
500
|
+
return false;
|
501
|
+
}
|
502
|
+
if (context.action !== "create" && context.action !== "update" && context.action !== "clone" && context.action !== "publish" && context.action !== "unpublish" && context.action !== "discardDraft") {
|
503
|
+
return false;
|
504
|
+
}
|
505
|
+
if (context.action === "update" && strapi.requestContext.get()?.request.url.endsWith("/actions/publish")) {
|
506
|
+
return false;
|
507
|
+
}
|
508
|
+
if (!context.contentType.uid.startsWith("api::")) {
|
509
|
+
return false;
|
510
|
+
}
|
511
|
+
return true;
|
512
|
+
};
|
513
|
+
const getSchemas = (uid2) => {
|
514
|
+
const attributesSchema = strapi.getModel(uid2).attributes;
|
515
|
+
const componentsSchemas = Object.keys(attributesSchema).reduce(
|
516
|
+
(currentComponentSchemas, key) => {
|
517
|
+
const fieldSchema = attributesSchema[key];
|
518
|
+
if (fieldSchema.type === "component") {
|
519
|
+
const componentSchema = strapi.getModel(fieldSchema.component).attributes;
|
520
|
+
return {
|
521
|
+
...currentComponentSchemas,
|
522
|
+
[fieldSchema.component]: componentSchema
|
523
|
+
};
|
524
|
+
}
|
525
|
+
return currentComponentSchemas;
|
526
|
+
},
|
527
|
+
{}
|
528
|
+
);
|
529
|
+
return {
|
530
|
+
schema: fp.omit(FIELDS_TO_IGNORE, attributesSchema),
|
531
|
+
componentsSchemas
|
532
|
+
};
|
533
|
+
};
|
497
534
|
const createLifecyclesService = ({ strapi: strapi2 }) => {
|
498
535
|
const state = {
|
499
536
|
deleteExpiredJob: null,
|
@@ -506,63 +543,43 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
506
543
|
return;
|
507
544
|
}
|
508
545
|
strapi2.documents.use(async (context, next) => {
|
509
|
-
if (!strapi2.requestContext.get()?.request.url.startsWith("/content-manager")) {
|
510
|
-
return next();
|
511
|
-
}
|
512
|
-
if (context.action !== "create" && context.action !== "update" && context.action !== "clone" && context.action !== "publish" && context.action !== "unpublish" && context.action !== "discardDraft") {
|
513
|
-
return next();
|
514
|
-
}
|
515
|
-
if (context.action === "update" && strapi2.requestContext.get()?.request.url.endsWith("/actions/publish")) {
|
516
|
-
return next();
|
517
|
-
}
|
518
|
-
const contentTypeUid = context.contentType.uid;
|
519
|
-
if (!contentTypeUid.startsWith("api::")) {
|
520
|
-
return next();
|
521
|
-
}
|
522
546
|
const result = await next();
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
547
|
+
if (!shouldCreateHistoryVersion(context)) {
|
548
|
+
return result;
|
549
|
+
}
|
550
|
+
const documentId = context.action === "create" || context.action === "clone" ? result.documentId : context.params.documentId;
|
527
551
|
const defaultLocale = await serviceUtils.getDefaultLocale();
|
528
|
-
const
|
529
|
-
if (
|
530
|
-
|
531
|
-
"[Content manager history middleware]: An array of locales was provided, but only a single locale is supported for the findOne operation."
|
532
|
-
);
|
533
|
-
return next();
|
552
|
+
const locales = fp.castArray(context.params?.locale || defaultLocale);
|
553
|
+
if (!locales.length) {
|
554
|
+
return result;
|
534
555
|
}
|
535
|
-
const
|
536
|
-
|
537
|
-
|
538
|
-
|
556
|
+
const uid2 = context.contentType.uid;
|
557
|
+
const schemas = getSchemas(uid2);
|
558
|
+
const localeEntries = await strapi2.db.query(uid2).findMany({
|
559
|
+
where: {
|
560
|
+
documentId,
|
561
|
+
locale: { $in: locales },
|
562
|
+
publishedAt: null
|
563
|
+
},
|
564
|
+
populate: serviceUtils.getDeepPopulate(
|
565
|
+
uid2,
|
566
|
+
true
|
567
|
+
/* use database syntax */
|
568
|
+
)
|
539
569
|
});
|
540
|
-
const status = await serviceUtils.getVersionStatus(contentTypeUid, document);
|
541
|
-
const attributesSchema = strapi2.getModel(contentTypeUid).attributes;
|
542
|
-
const componentsSchemas = Object.keys(
|
543
|
-
attributesSchema
|
544
|
-
).reduce((currentComponentSchemas, key) => {
|
545
|
-
const fieldSchema = attributesSchema[key];
|
546
|
-
if (fieldSchema.type === "component") {
|
547
|
-
const componentSchema = strapi2.getModel(fieldSchema.component).attributes;
|
548
|
-
return {
|
549
|
-
...currentComponentSchemas,
|
550
|
-
[fieldSchema.component]: componentSchema
|
551
|
-
};
|
552
|
-
}
|
553
|
-
return currentComponentSchemas;
|
554
|
-
}, {});
|
555
570
|
await strapi2.db.transaction(async ({ onCommit }) => {
|
556
|
-
onCommit(() => {
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
571
|
+
onCommit(async () => {
|
572
|
+
for (const entry of localeEntries) {
|
573
|
+
const status = await serviceUtils.getVersionStatus(uid2, entry);
|
574
|
+
await getService(strapi2, "history").createVersion({
|
575
|
+
contentType: uid2,
|
576
|
+
data: fp.omit(FIELDS_TO_IGNORE, entry),
|
577
|
+
relatedDocumentId: documentId,
|
578
|
+
locale: entry.locale,
|
579
|
+
status,
|
580
|
+
...schemas
|
581
|
+
});
|
582
|
+
}
|
566
583
|
});
|
567
584
|
});
|
568
585
|
return result;
|
@@ -1880,11 +1897,28 @@ const collectionTypes = {
|
|
1880
1897
|
const publishedDocument = await strapi.db.transaction(async () => {
|
1881
1898
|
const permissionQuery = await permissionChecker2.sanitizedQuery.publish(ctx.query);
|
1882
1899
|
const populate = await getService$1("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1883
|
-
|
1900
|
+
let document;
|
1901
|
+
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1902
|
+
const isCreate = fp.isNil(id);
|
1903
|
+
if (isCreate) {
|
1904
|
+
if (permissionChecker2.cannot.create()) {
|
1905
|
+
throw new strapiUtils.errors.ForbiddenError();
|
1906
|
+
}
|
1907
|
+
document = await createDocument(ctx, { populate });
|
1908
|
+
}
|
1909
|
+
const isUpdate = !isCreate;
|
1910
|
+
if (isUpdate) {
|
1911
|
+
document = await documentManager2.findOne(id, model, { populate, locale });
|
1912
|
+
if (!document) {
|
1913
|
+
throw new strapiUtils.errors.NotFoundError("Document not found");
|
1914
|
+
}
|
1915
|
+
if (permissionChecker2.can.update(document)) {
|
1916
|
+
await updateDocument(ctx);
|
1917
|
+
}
|
1918
|
+
}
|
1884
1919
|
if (permissionChecker2.cannot.publish(document)) {
|
1885
1920
|
throw new strapiUtils.errors.ForbiddenError();
|
1886
1921
|
}
|
1887
|
-
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1888
1922
|
const publishResult = await documentManager2.publish(document.documentId, model, {
|
1889
1923
|
locale
|
1890
1924
|
// TODO: Allow setting creator fields on publish
|
@@ -4133,7 +4167,13 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4133
4167
|
*/
|
4134
4168
|
async formatDocumentWithMetadata(uid2, document, opts = {}) {
|
4135
4169
|
if (!document) {
|
4136
|
-
return
|
4170
|
+
return {
|
4171
|
+
data: document,
|
4172
|
+
meta: {
|
4173
|
+
availableLocales: [],
|
4174
|
+
availableStatus: []
|
4175
|
+
}
|
4176
|
+
};
|
4137
4177
|
}
|
4138
4178
|
const hasDraftAndPublish = strapiUtils.contentTypes.hasDraftAndPublish(strapi2.getModel(uid2));
|
4139
4179
|
if (!hasDraftAndPublish) {
|