@strapi/content-manager 0.0.0-next.c9f32f6f0c2be1b88323373117f12eb33219d20e → 0.0.0-next.cb5f24c83e8fde7c31e5850c14430d38aa9b8862
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/CardDragPreview-C0QyJgRA.js.map +1 -1
- package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-N-CTtgQa.js → ComponentConfigurationPage-BSEZcJVB.js} +4 -5
- package/dist/_chunks/{ComponentConfigurationPage-N-CTtgQa.js.map → ComponentConfigurationPage-BSEZcJVB.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-BaJMOQyq.mjs → ComponentConfigurationPage-BiASGi7x.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-BaJMOQyq.mjs.map → ComponentConfigurationPage-BiASGi7x.mjs.map} +1 -1
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js → ComponentIcon-CRbtQEUV.js} +2 -3
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js.map → ComponentIcon-CRbtQEUV.js.map} +1 -1
- package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -1
- package/dist/_chunks/{EditConfigurationPage-BHkjAbxH.js → EditConfigurationPage-D2rtvneE.js} +4 -5
- package/dist/_chunks/{EditConfigurationPage-BHkjAbxH.js.map → EditConfigurationPage-D2rtvneE.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CKK-5LfX.mjs → EditConfigurationPage-vN4zupij.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-CKK-5LfX.mjs.map → EditConfigurationPage-vN4zupij.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-QPUftxUd.js → EditViewPage-BwisF04Q.js} +4 -5
- package/dist/_chunks/{EditViewPage-QPUftxUd.js.map → EditViewPage-BwisF04Q.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-B11aeMcf.mjs → EditViewPage-_A31Cl4g.mjs} +3 -3
- package/dist/_chunks/{EditViewPage-B11aeMcf.mjs.map → EditViewPage-_A31Cl4g.mjs.map} +1 -1
- package/dist/_chunks/{Field-Bj_RgtGo.mjs → Field-CvIunNOj.mjs} +129 -96
- package/dist/_chunks/Field-CvIunNOj.mjs.map +1 -0
- package/dist/_chunks/{Field-DUK83cfh.js → Field-Dsu6-FrM.js} +132 -99
- package/dist/_chunks/Field-Dsu6-FrM.js.map +1 -0
- package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
- package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
- package/dist/_chunks/{Form-DLMSoXV7.mjs → Form-DK0fG0Gj.mjs} +3 -3
- package/dist/_chunks/{Form-DLMSoXV7.mjs.map → Form-DK0fG0Gj.mjs.map} +1 -1
- package/dist/_chunks/{Form-DHmBRlHd.js → Form-DUwWcCmA.js} +5 -6
- package/dist/_chunks/{Form-DHmBRlHd.js.map → Form-DUwWcCmA.js.map} +1 -1
- package/dist/_chunks/{History-Di3zm4HT.js → History-CeCDhoJG.js} +5 -6
- package/dist/_chunks/{History-Di3zm4HT.js.map → History-CeCDhoJG.js.map} +1 -1
- package/dist/_chunks/{History-CfCSNlG9.mjs → History-DP8gmXpm.mjs} +4 -4
- package/dist/_chunks/{History-CfCSNlG9.mjs.map → History-DP8gmXpm.mjs.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-0mtv_iqk.mjs → ListConfigurationPage-BCkO5iuN.mjs} +3 -3
- package/dist/_chunks/{ListConfigurationPage-0mtv_iqk.mjs.map → ListConfigurationPage-BCkO5iuN.mjs.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-Cq361KIt.js → ListConfigurationPage-C-bAd44a.js} +4 -5
- package/dist/_chunks/{ListConfigurationPage-Cq361KIt.js.map → ListConfigurationPage-C-bAd44a.js.map} +1 -1
- package/dist/_chunks/{ListViewPage-DFDcG8gM.js → ListViewPage-BKTZFhsM.js} +4 -5
- package/dist/_chunks/{ListViewPage-DFDcG8gM.js.map → ListViewPage-BKTZFhsM.js.map} +1 -1
- package/dist/_chunks/{ListViewPage-BxLVROX8.mjs → ListViewPage-Cf_DgaFV.mjs} +3 -3
- package/dist/_chunks/{ListViewPage-BxLVROX8.mjs.map → ListViewPage-Cf_DgaFV.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BSyvnDZZ.js → NoContentTypePage-D3Cm3v3q.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BSyvnDZZ.js.map → NoContentTypePage-D3Cm3v3q.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BRfDd67_.mjs → NoContentTypePage-nHIyvJcB.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-BRfDd67_.mjs.map → NoContentTypePage-nHIyvJcB.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-CV9V8KWa.mjs → NoPermissionsPage-BALVSJ7x.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-CV9V8KWa.mjs.map → NoPermissionsPage-BALVSJ7x.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DyLphsn_.js → NoPermissionsPage-CChGWBj5.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DyLphsn_.js.map → NoPermissionsPage-CChGWBj5.js.map} +1 -1
- package/dist/_chunks/{Preview-C_B1nx3g.mjs → Preview-C4NBzKUV.mjs} +33 -11
- package/dist/_chunks/Preview-C4NBzKUV.mjs.map +1 -0
- package/dist/_chunks/{Preview-D_3aO6Ly.js → Preview-CT28Ckpg.js} +33 -12
- package/dist/_chunks/Preview-CT28Ckpg.js.map +1 -0
- package/dist/_chunks/{Relations-C6pwmDXh.mjs → Relations-C8uC89cT.mjs} +6 -8
- package/dist/_chunks/{Relations-C6pwmDXh.mjs.map → Relations-C8uC89cT.mjs.map} +1 -1
- package/dist/_chunks/{Relations-Cne2AlrL.js → Relations-CvkPCng_.js} +7 -10
- package/dist/_chunks/{Relations-Cne2AlrL.js.map → Relations-CvkPCng_.js.map} +1 -1
- package/dist/_chunks/{en-Ic0kXjxB.js → en-BK8Xyl5I.js} +2 -1
- package/dist/_chunks/{en-Ic0kXjxB.js.map → en-BK8Xyl5I.js.map} +1 -1
- package/dist/_chunks/{en-DhFUjrNW.mjs → en-Dtk_ot79.mjs} +2 -1
- package/dist/_chunks/{en-DhFUjrNW.mjs.map → en-Dtk_ot79.mjs.map} +1 -1
- package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
- package/dist/_chunks/{index-T-aWjbj2.js → index-CnX_j5h-.js} +206 -124
- package/dist/_chunks/index-CnX_j5h-.js.map +1 -0
- package/dist/_chunks/{index-BpxR3En4.mjs → index-Dh2aGTGJ.mjs} +205 -122
- package/dist/_chunks/index-Dh2aGTGJ.mjs.map +1 -0
- package/dist/_chunks/{layout-DhMZ_lDx.mjs → layout-B5qsPihj.mjs} +4 -4
- package/dist/_chunks/{layout-DhMZ_lDx.mjs.map → layout-B5qsPihj.mjs.map} +1 -1
- package/dist/_chunks/{layout-BEuNwv-F.js → layout-B_qdWGny.js} +5 -6
- package/dist/_chunks/{layout-BEuNwv-F.js.map → layout-B_qdWGny.js.map} +1 -1
- package/dist/_chunks/objects-BcXOv6_9.js.map +1 -1
- package/dist/_chunks/objects-D6yBsdmx.mjs.map +1 -1
- package/dist/_chunks/{relations-kLcuobLk.js → relations-ChcieiF5.js} +2 -2
- package/dist/_chunks/{relations-kLcuobLk.js.map → relations-ChcieiF5.js.map} +1 -1
- package/dist/_chunks/{relations-BdnxoX6f.mjs → relations-DMXpNY-e.mjs} +2 -2
- package/dist/_chunks/{relations-BdnxoX6f.mjs.map → relations-DMXpNY-e.mjs.map} +1 -1
- package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -1
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -1
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js.map → useDragAndDrop-BMtgCYzL.js.map} +1 -1
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs.map → useDragAndDrop-DJ6jqvZN.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/content-manager.d.ts +3 -2
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +7 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
- package/dist/server/index.js +95 -103
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +95 -102
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +1 -0
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -2
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/index.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +4 -2
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +3 -2
- package/dist/server/src/services/index.d.ts.map +1 -1
- 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/services/utils/populate.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/package.json +11 -9
- package/dist/_chunks/Field-Bj_RgtGo.mjs.map +0 -1
- package/dist/_chunks/Field-DUK83cfh.js.map +0 -1
- package/dist/_chunks/Preview-C_B1nx3g.mjs.map +0 -1
- package/dist/_chunks/Preview-D_3aO6Ly.js.map +0 -1
- package/dist/_chunks/index-BpxR3En4.mjs.map +0 -1
- package/dist/_chunks/index-T-aWjbj2.js.map +0 -1
- package/dist/admin/src/preview/constants.d.ts +0 -1
- package/dist/server/src/preview/constants.d.ts +0 -2
- package/dist/server/src/preview/constants.d.ts.map +0 -1
package/dist/server/index.js
CHANGED
@@ -10,8 +10,7 @@ const qs = require("qs");
|
|
10
10
|
const slugify = require("@sindresorhus/slugify");
|
11
11
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
12
12
|
function _interopNamespace(e) {
|
13
|
-
if (e && e.__esModule)
|
14
|
-
return e;
|
13
|
+
if (e && e.__esModule) return e;
|
15
14
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
16
15
|
if (e) {
|
17
16
|
for (const k in e) {
|
@@ -167,8 +166,7 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
167
166
|
};
|
168
167
|
const getRelationRestoreValue = async (versionRelationData, attribute) => {
|
169
168
|
if (Array.isArray(versionRelationData)) {
|
170
|
-
if (versionRelationData.length === 0)
|
171
|
-
return versionRelationData;
|
169
|
+
if (versionRelationData.length === 0) return versionRelationData;
|
172
170
|
const existingAndMissingRelations = await Promise.all(
|
173
171
|
versionRelationData.map((relation) => {
|
174
172
|
return strapi2.documents(attribute.target).findOne({
|
@@ -203,8 +201,7 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
203
201
|
const getDefaultLocale = async () => localesService ? localesService.getDefaultLocale() : null;
|
204
202
|
const isLocalizedContentType = (model) => i18nContentTypeService ? i18nContentTypeService.isLocalizedContentType(model) : false;
|
205
203
|
const getLocaleDictionary = async () => {
|
206
|
-
if (!localesService)
|
207
|
-
return {};
|
204
|
+
if (!localesService) return {};
|
208
205
|
const locales = await localesService.find() || [];
|
209
206
|
return locales.reduce(
|
210
207
|
(acc, locale) => {
|
@@ -740,7 +737,6 @@ const getFeature$1 = () => {
|
|
740
737
|
};
|
741
738
|
};
|
742
739
|
const history = getFeature$1();
|
743
|
-
const FEATURE_ID = "preview";
|
744
740
|
const info = { pluginName: "content-manager", type: "admin" };
|
745
741
|
const previewRouter = {
|
746
742
|
type: "admin",
|
@@ -918,9 +914,6 @@ const services$1 = {
|
|
918
914
|
"preview-config": createPreviewConfigService
|
919
915
|
};
|
920
916
|
const getFeature = () => {
|
921
|
-
if (!strapi.features.future.isEnabled(FEATURE_ID)) {
|
922
|
-
return {};
|
923
|
-
}
|
924
917
|
return {
|
925
918
|
register() {
|
926
919
|
const config = getService(strapi, "preview-config");
|
@@ -1506,8 +1499,7 @@ const isSortable = (schema, name) => {
|
|
1506
1499
|
if (!___default.default.has(schema.attributes, name)) {
|
1507
1500
|
return false;
|
1508
1501
|
}
|
1509
|
-
if (schema.modelType === "component" && name === "id")
|
1510
|
-
return false;
|
1502
|
+
if (schema.modelType === "component" && name === "id") return false;
|
1511
1503
|
const attribute = schema.attributes[name];
|
1512
1504
|
if (NON_SORTABLES.includes(attribute.type)) {
|
1513
1505
|
return false;
|
@@ -1652,8 +1644,7 @@ const createDefaultSettings = async (schema) => {
|
|
1652
1644
|
};
|
1653
1645
|
};
|
1654
1646
|
const syncSettings = async (configuration, schema) => {
|
1655
|
-
if (fp.isEmpty(configuration.settings))
|
1656
|
-
return createDefaultSettings(schema);
|
1647
|
+
if (fp.isEmpty(configuration.settings)) return createDefaultSettings(schema);
|
1657
1648
|
const defaultField = getDefaultMainField(schema);
|
1658
1649
|
const { mainField = defaultField, defaultSortBy = defaultField } = configuration.settings || {};
|
1659
1650
|
return {
|
@@ -1829,8 +1820,7 @@ const excludeNotCreatableFields = (uid2, permissionChecker2) => (body, path = []
|
|
1829
1820
|
}
|
1830
1821
|
switch (attribute.type) {
|
1831
1822
|
case "relation": {
|
1832
|
-
if (canCreate(attributePath))
|
1833
|
-
return body2;
|
1823
|
+
if (canCreate(attributePath)) return body2;
|
1834
1824
|
return fp.set(attributePath, { set: [] }, body2);
|
1835
1825
|
}
|
1836
1826
|
case "component": {
|
@@ -1840,8 +1830,7 @@ const excludeNotCreatableFields = (uid2, permissionChecker2) => (body, path = []
|
|
1840
1830
|
]);
|
1841
1831
|
}
|
1842
1832
|
default: {
|
1843
|
-
if (canCreate(attributePath))
|
1844
|
-
return body2;
|
1833
|
+
if (canCreate(attributePath)) return body2;
|
1845
1834
|
return fp.set(attributePath, null, body2);
|
1846
1835
|
}
|
1847
1836
|
}
|
@@ -2634,8 +2623,7 @@ const validateStatus = (sourceUid, status) => {
|
|
2634
2623
|
const sourceModel = strapi.getModel(sourceUid);
|
2635
2624
|
const isDP = strapiUtils.contentTypes.hasDraftAndPublish;
|
2636
2625
|
const isSourceDP = isDP(sourceModel);
|
2637
|
-
if (!isSourceDP)
|
2638
|
-
return { status: void 0 };
|
2626
|
+
if (!isSourceDP) return { status: void 0 };
|
2639
2627
|
switch (status) {
|
2640
2628
|
case "published":
|
2641
2629
|
return { status: "published" };
|
@@ -3280,18 +3268,15 @@ async function syncMetadatas(configuration, schema) {
|
|
3280
3268
|
___default.default.set(updatedMeta, ["list", "searchable"], false);
|
3281
3269
|
___default.default.set(acc, [key], updatedMeta);
|
3282
3270
|
}
|
3283
|
-
if (!___default.default.has(edit, "mainField"))
|
3284
|
-
return acc;
|
3271
|
+
if (!___default.default.has(edit, "mainField")) return acc;
|
3285
3272
|
if (!isRelation$1(attr)) {
|
3286
3273
|
___default.default.set(updatedMeta, "edit", ___default.default.omit(edit, ["mainField"]));
|
3287
3274
|
___default.default.set(acc, [key], updatedMeta);
|
3288
3275
|
return acc;
|
3289
3276
|
}
|
3290
|
-
if (edit.mainField === "id")
|
3291
|
-
return acc;
|
3277
|
+
if (edit.mainField === "id") return acc;
|
3292
3278
|
const targetSchema = getTargetSchema(attr.targetModel);
|
3293
|
-
if (!targetSchema)
|
3294
|
-
return acc;
|
3279
|
+
if (!targetSchema) return acc;
|
3295
3280
|
if (!isSortable(targetSchema, edit.mainField) && !isListable(targetSchema, edit.mainField)) {
|
3296
3281
|
___default.default.set(updatedMeta, ["edit", "mainField"], getDefaultMainField(targetSchema));
|
3297
3282
|
___default.default.set(acc, [key], updatedMeta);
|
@@ -3336,8 +3321,7 @@ function createDefaultEditLayout(schema) {
|
|
3336
3321
|
return appendToEditLayout([], keys2, schema);
|
3337
3322
|
}
|
3338
3323
|
function syncLayouts(configuration, schema) {
|
3339
|
-
if (___default.default.isEmpty(configuration.layouts))
|
3340
|
-
return createDefaultLayouts(schema);
|
3324
|
+
if (___default.default.isEmpty(configuration.layouts)) return createDefaultLayouts(schema);
|
3341
3325
|
const { list = [], editRelations = [], edit = [] } = configuration.layouts || {};
|
3342
3326
|
let cleanList = list.filter((attr) => isListable(schema, attr));
|
3343
3327
|
const cleanEditRelations = editRelations.filter(
|
@@ -3348,8 +3332,7 @@ function syncLayouts(configuration, schema) {
|
|
3348
3332
|
for (const row of edit) {
|
3349
3333
|
const newRow = [];
|
3350
3334
|
for (const el of row) {
|
3351
|
-
if (!hasEditableAttribute(schema, el.name))
|
3352
|
-
continue;
|
3335
|
+
if (!hasEditableAttribute(schema, el.name)) continue;
|
3353
3336
|
const { hasFieldSize } = getService$2("field-sizes");
|
3354
3337
|
const fieldType = hasFieldSize(schema.attributes[el.name].customField) ? schema.attributes[el.name].customField : schema.attributes[el.name].type;
|
3355
3338
|
if (!isAllowedFieldSize(fieldType, el.size)) {
|
@@ -3380,8 +3363,7 @@ function syncLayouts(configuration, schema) {
|
|
3380
3363
|
};
|
3381
3364
|
}
|
3382
3365
|
const appendToEditLayout = (layout = [], keysToAppend, schema) => {
|
3383
|
-
if (keysToAppend.length === 0)
|
3384
|
-
return layout;
|
3366
|
+
if (keysToAppend.length === 0) return layout;
|
3385
3367
|
let currentRowIndex = Math.max(layout.length - 1, 0);
|
3386
3368
|
if (!layout[currentRowIndex]) {
|
3387
3369
|
layout[currentRowIndex] = [];
|
@@ -3947,6 +3929,12 @@ function getPopulateForRelation(attribute, model, attributeName, { countMany, co
|
|
3947
3929
|
if (initialPopulate) {
|
3948
3930
|
return initialPopulate;
|
3949
3931
|
}
|
3932
|
+
if (attributeName === "localizations") {
|
3933
|
+
const validationPopulate = getPopulateForValidation(model.uid);
|
3934
|
+
return {
|
3935
|
+
populate: validationPopulate.populate
|
3936
|
+
};
|
3937
|
+
}
|
3950
3938
|
if (!isVisibleAttribute$1(model, attributeName)) {
|
3951
3939
|
return true;
|
3952
3940
|
}
|
@@ -4006,6 +3994,9 @@ const getDeepPopulate = (uid2, {
|
|
4006
3994
|
return {};
|
4007
3995
|
}
|
4008
3996
|
const model = strapi.getModel(uid2);
|
3997
|
+
if (!model) {
|
3998
|
+
return {};
|
3999
|
+
}
|
4009
4000
|
return Object.keys(model.attributes).reduce(
|
4010
4001
|
(populateAcc, attributeName) => fp.merge(
|
4011
4002
|
populateAcc,
|
@@ -4025,40 +4016,46 @@ const getDeepPopulate = (uid2, {
|
|
4025
4016
|
{}
|
4026
4017
|
);
|
4027
4018
|
};
|
4028
|
-
const
|
4029
|
-
|
4030
|
-
|
4031
|
-
countOne = false,
|
4032
|
-
maxLevel = Infinity
|
4033
|
-
} = {}, level = 1) => {
|
4034
|
-
if (level > maxLevel) {
|
4019
|
+
const getPopulateForValidation = (uid2) => {
|
4020
|
+
const model = strapi.getModel(uid2);
|
4021
|
+
if (!model) {
|
4035
4022
|
return {};
|
4036
4023
|
}
|
4037
|
-
const model = strapi.getModel(uid2);
|
4038
4024
|
return Object.entries(model.attributes).reduce((populateAcc, [attributeName, attribute]) => {
|
4039
|
-
if (
|
4025
|
+
if (isScalarAttribute(attribute)) {
|
4026
|
+
if (getDoesAttributeRequireValidation(attribute)) {
|
4027
|
+
populateAcc.fields = populateAcc.fields || [];
|
4028
|
+
populateAcc.fields.push(attributeName);
|
4029
|
+
}
|
4040
4030
|
return populateAcc;
|
4041
4031
|
}
|
4042
|
-
if (
|
4043
|
-
|
4044
|
-
|
4045
|
-
|
4032
|
+
if (isComponent(attribute)) {
|
4033
|
+
const component = attribute.component;
|
4034
|
+
const componentResult = getPopulateForValidation(component);
|
4035
|
+
if (Object.keys(componentResult).length > 0) {
|
4036
|
+
populateAcc.populate = populateAcc.populate || {};
|
4037
|
+
populateAcc.populate[attributeName] = componentResult;
|
4038
|
+
}
|
4039
|
+
return populateAcc;
|
4046
4040
|
}
|
4047
|
-
|
4048
|
-
|
4049
|
-
|
4050
|
-
|
4051
|
-
|
4052
|
-
|
4053
|
-
|
4054
|
-
|
4055
|
-
|
4056
|
-
countOne,
|
4057
|
-
maxLevel
|
4041
|
+
if (isDynamicZone(attribute)) {
|
4042
|
+
const components2 = attribute.components;
|
4043
|
+
const componentsResult = (components2 || []).reduce(
|
4044
|
+
(acc, componentUID) => {
|
4045
|
+
const componentResult = getPopulateForValidation(componentUID);
|
4046
|
+
if (Object.keys(componentResult).length > 0) {
|
4047
|
+
acc[componentUID] = componentResult;
|
4048
|
+
}
|
4049
|
+
return acc;
|
4058
4050
|
},
|
4059
|
-
|
4060
|
-
)
|
4061
|
-
|
4051
|
+
{}
|
4052
|
+
);
|
4053
|
+
if (Object.keys(componentsResult).length > 0) {
|
4054
|
+
populateAcc.populate = populateAcc.populate || {};
|
4055
|
+
populateAcc.populate[attributeName] = { on: componentsResult };
|
4056
|
+
}
|
4057
|
+
}
|
4058
|
+
return populateAcc;
|
4062
4059
|
}, {});
|
4063
4060
|
};
|
4064
4061
|
const getDeepPopulateDraftCount = (uid2) => {
|
@@ -4300,7 +4297,6 @@ const AVAILABLE_LOCALES_FIELDS = [
|
|
4300
4297
|
"locale",
|
4301
4298
|
"updatedAt",
|
4302
4299
|
"createdAt",
|
4303
|
-
"status",
|
4304
4300
|
"publishedAt",
|
4305
4301
|
"documentId"
|
4306
4302
|
];
|
@@ -4321,36 +4317,20 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4321
4317
|
/**
|
4322
4318
|
* Returns available locales of a document for the current status
|
4323
4319
|
*/
|
4324
|
-
async getAvailableLocales(uid2, version, allVersions
|
4320
|
+
async getAvailableLocales(uid2, version, allVersions) {
|
4325
4321
|
const versionsByLocale = fp.groupBy("locale", allVersions);
|
4326
4322
|
if (version.locale) {
|
4327
4323
|
delete versionsByLocale[version.locale];
|
4328
4324
|
}
|
4329
4325
|
const model = strapi2.getModel(uid2);
|
4330
|
-
const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
|
4331
|
-
const traversalFunction = async (localeVersion) => strapiUtils.traverseEntity(
|
4332
|
-
({ key }, { remove }) => {
|
4333
|
-
if (keysToKeep.includes(key)) {
|
4334
|
-
return;
|
4335
|
-
}
|
4336
|
-
remove(key);
|
4337
|
-
},
|
4338
|
-
{ schema: model, getModel: strapi2.getModel.bind(strapi2) },
|
4339
|
-
// @ts-expect-error fix types DocumentVersion incompatible with Data
|
4340
|
-
localeVersion
|
4341
|
-
);
|
4342
4326
|
const mappingResult = await strapiUtils.async.map(
|
4343
4327
|
Object.values(versionsByLocale),
|
4344
4328
|
async (localeVersions) => {
|
4345
|
-
const mappedLocaleVersions = await strapiUtils.async.map(
|
4346
|
-
localeVersions,
|
4347
|
-
traversalFunction
|
4348
|
-
);
|
4349
4329
|
if (!strapiUtils.contentTypes.hasDraftAndPublish(model)) {
|
4350
|
-
return
|
4330
|
+
return localeVersions[0];
|
4351
4331
|
}
|
4352
|
-
const draftVersion =
|
4353
|
-
const otherVersions =
|
4332
|
+
const draftVersion = localeVersions.find((v) => v.publishedAt === null);
|
4333
|
+
const otherVersions = localeVersions.filter((v) => v.id !== draftVersion?.id);
|
4354
4334
|
if (!draftVersion) {
|
4355
4335
|
return;
|
4356
4336
|
}
|
@@ -4372,8 +4352,7 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4372
4352
|
const matchStatus = status === "published" ? v.publishedAt !== null : v.publishedAt === null;
|
4373
4353
|
return matchLocale && matchStatus;
|
4374
4354
|
});
|
4375
|
-
if (!availableStatus)
|
4376
|
-
return availableStatus;
|
4355
|
+
if (!availableStatus) return availableStatus;
|
4377
4356
|
return fp.pick(AVAILABLE_STATUS_FIELDS, availableStatus);
|
4378
4357
|
},
|
4379
4358
|
/**
|
@@ -4383,18 +4362,19 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4383
4362
|
* @returns
|
4384
4363
|
*/
|
4385
4364
|
async getManyAvailableStatus(uid2, documents) {
|
4386
|
-
if (!documents.length)
|
4387
|
-
return [];
|
4365
|
+
if (!documents.length) return [];
|
4388
4366
|
const status = documents[0].publishedAt !== null ? "published" : "draft";
|
4389
|
-
const
|
4390
|
-
const
|
4391
|
-
|
4392
|
-
|
4393
|
-
|
4394
|
-
|
4395
|
-
|
4396
|
-
|
4397
|
-
|
4367
|
+
const locales = documents.map((d) => d.locale).filter(Boolean);
|
4368
|
+
const where = {
|
4369
|
+
documentId: { $in: documents.map((d) => d.documentId).filter(Boolean) },
|
4370
|
+
publishedAt: { $null: status === "published" }
|
4371
|
+
};
|
4372
|
+
if (locales.length) {
|
4373
|
+
where.locale = { $in: locales };
|
4374
|
+
}
|
4375
|
+
return strapi2.query(uid2).findMany({
|
4376
|
+
where,
|
4377
|
+
select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"]
|
4398
4378
|
});
|
4399
4379
|
},
|
4400
4380
|
getStatus(version, otherDocumentStatuses) {
|
@@ -4411,10 +4391,8 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4411
4391
|
} else if (otherVersion) {
|
4412
4392
|
draftVersion = otherVersion;
|
4413
4393
|
}
|
4414
|
-
if (!draftVersion)
|
4415
|
-
|
4416
|
-
if (!publishedVersion)
|
4417
|
-
return CONTENT_MANAGER_STATUS.DRAFT;
|
4394
|
+
if (!draftVersion) return CONTENT_MANAGER_STATUS.PUBLISHED;
|
4395
|
+
if (!publishedVersion) return CONTENT_MANAGER_STATUS.DRAFT;
|
4418
4396
|
const isDraftModified = getIsVersionLatestModification(draftVersion, publishedVersion);
|
4419
4397
|
return isDraftModified ? CONTENT_MANAGER_STATUS.MODIFIED : CONTENT_MANAGER_STATUS.PUBLISHED;
|
4420
4398
|
},
|
@@ -4422,11 +4400,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4422
4400
|
// We could refactor this so the locales are only loaded when they're
|
4423
4401
|
// needed. e.g. in the bulk locale action modal.
|
4424
4402
|
async getMetadata(uid2, version, { availableLocales = true, availableStatus = true } = {}) {
|
4425
|
-
const populate =
|
4426
|
-
const
|
4427
|
-
where: { documentId: version.documentId },
|
4403
|
+
const { populate = {}, fields = [] } = getPopulateForValidation(uid2);
|
4404
|
+
const params = {
|
4428
4405
|
populate: {
|
4429
|
-
// Populate only fields that require validation for bulk locale actions
|
4430
4406
|
...populate,
|
4431
4407
|
// NOTE: creator fields are selected in this way to avoid exposing sensitive data
|
4432
4408
|
createdBy: {
|
@@ -4435,9 +4411,15 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4435
4411
|
updatedBy: {
|
4436
4412
|
select: ["id", "firstname", "lastname", "email"]
|
4437
4413
|
}
|
4414
|
+
},
|
4415
|
+
fields: fp.uniq([...AVAILABLE_LOCALES_FIELDS, ...fields]),
|
4416
|
+
filters: {
|
4417
|
+
documentId: version.documentId
|
4438
4418
|
}
|
4439
|
-
}
|
4440
|
-
const
|
4419
|
+
};
|
4420
|
+
const dbParams = strapi2.get("query-params").transform(uid2, params);
|
4421
|
+
const versions = await strapi2.db.query(uid2).findMany(dbParams);
|
4422
|
+
const availableLocalesResult = availableLocales ? await this.getAvailableLocales(uid2, version, versions) : [];
|
4441
4423
|
const availableStatusResult = availableStatus ? this.getAvailableStatus(version, versions) : null;
|
4442
4424
|
return {
|
4443
4425
|
availableLocales: availableLocalesResult,
|
@@ -4464,6 +4446,16 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4464
4446
|
opts.availableStatus = false;
|
4465
4447
|
}
|
4466
4448
|
const meta = await this.getMetadata(uid2, document, opts);
|
4449
|
+
if (document.localizations) {
|
4450
|
+
const otherStatus = await this.getManyAvailableStatus(uid2, document.localizations);
|
4451
|
+
document.localizations = document.localizations.map((d) => {
|
4452
|
+
const status = otherStatus.find((s) => s.documentId === d.documentId);
|
4453
|
+
return {
|
4454
|
+
...d,
|
4455
|
+
status: this.getStatus(d, status ? [status] : [])
|
4456
|
+
};
|
4457
|
+
});
|
4458
|
+
}
|
4467
4459
|
return {
|
4468
4460
|
data: {
|
4469
4461
|
...document,
|