@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.60e968001a
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/context.d.ts +5 -2
- package/context.js +63 -8
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.d.ts +2 -2
- package/crud/contentEntry/afterDelete.js +2 -2
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.d.ts +2 -2
- package/crud/contentEntry/beforeCreate.js +2 -2
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.d.ts +2 -2
- package/crud/contentEntry/beforeUpdate.js +2 -2
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +3 -7
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +10 -11
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +11 -13
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +83 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.d.ts +0 -2
- package/crud/contentEntry.crud.js +253 -270
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +3 -3
- package/crud/contentModel/afterCreate.js +5 -5
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.d.ts +3 -3
- package/crud/contentModel/afterCreateFrom.js +5 -5
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.d.ts +3 -3
- package/crud/contentModel/afterDelete.js +5 -5
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.d.ts +3 -3
- package/crud/contentModel/afterUpdate.js +5 -5
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +4 -4
- package/crud/contentModel/beforeCreate.js +10 -10
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.d.ts +3 -3
- package/crud/contentModel/beforeDelete.js +6 -6
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +3 -3
- package/crud/contentModel/beforeUpdate.js +5 -5
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +5 -1
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/models.js +12 -0
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/validateModel.js +1 -1
- package/crud/contentModel/validateModelFields.js +47 -42
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +477 -0
- package/crud/contentModel/validation.js +109 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.js +287 -211
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
- package/crud/contentModelGroup/beforeCreate.js +3 -3
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
- package/crud/contentModelGroup/beforeDelete.js +3 -3
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
- package/crud/contentModelGroup/beforeUpdate.js +2 -2
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +30 -0
- package/crud/contentModelGroup/validation.js +43 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.js +102 -82
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.js +3 -8
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +63 -51
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +239 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +17 -19
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +2 -1
- package/fieldConverters/index.js +3 -1
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.d.ts +2 -2
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +59 -29
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +2 -2
- package/graphql/index.js +49 -38
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +2 -2
- package/graphql/schema/baseContentSchema.js +8 -12
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.d.ts +2 -2
- package/graphql/schema/contentEntries.js +6 -6
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +2 -2
- package/graphql/schema/contentModelGroups.js +3 -3
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +2 -2
- package/graphql/schema/contentModels.js +42 -4
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +26 -16
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +4 -18
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +2 -0
- package/graphql/schema/createManageSDL.js +11 -12
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -7
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +8 -7
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +2 -0
- package/graphql/schema/createReadSDL.js +11 -5
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -7
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +2 -2
- package/graphql/schema/schemaPlugins.js +11 -8
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +79 -82
- package/graphql/system.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +21 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +3 -1
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/number.js +4 -0
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +123 -73
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +38 -56
- package/graphqlFields/ref.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +4 -8
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +7 -7
- package/modelManager/DefaultCmsModelManager.js +1 -1
- package/package.json +30 -31
- package/parameters/header.js +1 -1
- package/parameters/manual.js +7 -8
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
- package/plugins/CmsGraphQLSchemaPlugin.js +17 -0
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +38 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsGroupPlugin.js +1 -1
- package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
- package/plugins/CmsModelFieldConverterPlugin.js +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -2
- package/plugins/CmsModelPlugin.js +18 -13
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +1 -1
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js +1 -1
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +26 -0
- package/plugins/index.js.map +1 -1
- package/storage/object.js +7 -8
- package/storage/object.js.map +1 -1
- package/types.d.ts +469 -180
- package/types.js +55 -9
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +5 -9
- package/upgrades/5.33.0/index.js.map +1 -1
- package/utils/converters/Converter.js +1 -1
- package/utils/converters/ConverterCollection.d.ts +7 -0
- package/utils/converters/ConverterCollection.js +36 -8
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -7
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +75 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +4 -2
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +17 -18
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterModelFields.js +5 -9
- package/utils/filterModelFields.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +12 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/permissions.js +1 -5
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +1 -1
- package/utils/renderFields.js +3 -1
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +8 -3
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +3 -1
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +12 -2
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +23 -4
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +24 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/index.js +3 -1
- package/validators/index.js.map +1 -1
- package/validators/unique.js +1 -1
- package/crud/index.d.ts +0 -6
- package/crud/index.js +0 -89
- package/crud/index.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.createContentEntryCrud = exports.STATUS_UNPUBLISHED = exports.
|
|
8
|
+
exports.createContentEntryCrud = exports.STATUS_UNPUBLISHED = exports.STATUS_PUBLISHED = exports.STATUS_DRAFT = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
11
|
|
|
12
12
|
var _mdbid = _interopRequireDefault(require("mdbid"));
|
|
13
13
|
|
|
@@ -41,20 +41,18 @@ var _entryStorage = require("../utils/entryStorage");
|
|
|
41
41
|
|
|
42
42
|
var _valueKeyStorageConverter = require("../utils/converters/valueKeyStorageConverter");
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
44
|
+
var _searchableFields = require("./contentEntry/searchableFields");
|
|
47
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Package mdbid does not have types.
|
|
48
|
+
*/
|
|
49
|
+
// @ts-ignore
|
|
48
50
|
const STATUS_DRAFT = "draft";
|
|
49
51
|
exports.STATUS_DRAFT = STATUS_DRAFT;
|
|
50
52
|
const STATUS_PUBLISHED = "published";
|
|
51
53
|
exports.STATUS_PUBLISHED = STATUS_PUBLISHED;
|
|
52
54
|
const STATUS_UNPUBLISHED = "unpublished";
|
|
53
55
|
exports.STATUS_UNPUBLISHED = STATUS_UNPUBLISHED;
|
|
54
|
-
const STATUS_CHANGES_REQUESTED = "changesRequested";
|
|
55
|
-
exports.STATUS_CHANGES_REQUESTED = STATUS_CHANGES_REQUESTED;
|
|
56
|
-
const STATUS_REVIEW_REQUESTED = "reviewRequested";
|
|
57
|
-
exports.STATUS_REVIEW_REQUESTED = STATUS_REVIEW_REQUESTED;
|
|
58
56
|
|
|
59
57
|
/**
|
|
60
58
|
* Used for some fields to convert their values.
|
|
@@ -221,33 +219,10 @@ const increaseEntryIdVersion = id => {
|
|
|
221
219
|
};
|
|
222
220
|
};
|
|
223
221
|
|
|
224
|
-
const
|
|
225
|
-
const {
|
|
226
|
-
plugins,
|
|
227
|
-
model,
|
|
228
|
-
fields
|
|
229
|
-
} = params;
|
|
230
|
-
const fieldPluginMap = plugins.byType("cms-model-field-to-graphql").reduce((collection, field) => {
|
|
231
|
-
collection[field.fieldType] = field;
|
|
232
|
-
return collection;
|
|
233
|
-
}, {});
|
|
234
|
-
return model.fields.filter(field => {
|
|
235
|
-
if (!field.fieldId) {
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
const plugin = fieldPluginMap[field.type];
|
|
240
|
-
|
|
241
|
-
if (!plugin) {
|
|
242
|
-
return false;
|
|
243
|
-
} else if (!plugin.fullTextSearch) {
|
|
244
|
-
return false;
|
|
245
|
-
} else if (!fields || fields.length === 0) {
|
|
246
|
-
return true;
|
|
247
|
-
}
|
|
222
|
+
const allowedEntryStatus = ["draft", "published", "unpublished"];
|
|
248
223
|
|
|
249
|
-
|
|
250
|
-
|
|
224
|
+
const transformEntryStatus = status => {
|
|
225
|
+
return allowedEntryStatus.includes(status) ? status : "draft";
|
|
251
226
|
};
|
|
252
227
|
|
|
253
228
|
const createContentEntryCrud = params => {
|
|
@@ -260,41 +235,71 @@ const createContentEntryCrud = params => {
|
|
|
260
235
|
const {
|
|
261
236
|
plugins
|
|
262
237
|
} = context;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
const
|
|
268
|
-
const
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
const
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
const
|
|
282
|
-
const
|
|
238
|
+
/**
|
|
239
|
+
* Create
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
const onEntryBeforeCreate = (0, _pubsub.createTopic)("cms.onEntryBeforeCreate");
|
|
243
|
+
const onEntryAfterCreate = (0, _pubsub.createTopic)("cms.onEntryAfterCreate");
|
|
244
|
+
const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError");
|
|
245
|
+
/**
|
|
246
|
+
* Create new revision
|
|
247
|
+
*/
|
|
248
|
+
|
|
249
|
+
const onEntryBeforeCreateRevision = (0, _pubsub.createTopic)("cms.onEntryBeforeCreateRevision");
|
|
250
|
+
const onEntryRevisionAfterCreate = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterCreate");
|
|
251
|
+
const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError");
|
|
252
|
+
/**
|
|
253
|
+
* Update
|
|
254
|
+
*/
|
|
255
|
+
|
|
256
|
+
const onEntryBeforeUpdate = (0, _pubsub.createTopic)("cms.onEntryBeforeUpdate");
|
|
257
|
+
const onEntryAfterUpdate = (0, _pubsub.createTopic)("cms.onEntryAfterUpdate");
|
|
258
|
+
const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
|
|
259
|
+
/**
|
|
260
|
+
* Publish
|
|
261
|
+
*/
|
|
262
|
+
|
|
263
|
+
const onEntryBeforePublish = (0, _pubsub.createTopic)("cms.onEntryBeforePublish");
|
|
264
|
+
const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublic");
|
|
265
|
+
const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError");
|
|
266
|
+
/**
|
|
267
|
+
* Unpublish
|
|
268
|
+
*/
|
|
269
|
+
|
|
270
|
+
const onEntryBeforeUnpublish = (0, _pubsub.createTopic)("cms.onEntryBeforeUnpublish");
|
|
271
|
+
const onEntryAfterUnpublish = (0, _pubsub.createTopic)("cms.onEntryAfterUnpublish");
|
|
272
|
+
const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError");
|
|
273
|
+
/**
|
|
274
|
+
* Delete
|
|
275
|
+
*/
|
|
276
|
+
|
|
277
|
+
const onEntryBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryBeforeDelete");
|
|
278
|
+
const onEntryAfterDelete = (0, _pubsub.createTopic)("cms.onEntryAfterDelete");
|
|
279
|
+
const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError"); // delete revision
|
|
280
|
+
|
|
281
|
+
const onEntryRevisionBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionBeforeDelete");
|
|
282
|
+
const onEntryRevisionAfterDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterDelete");
|
|
283
|
+
const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError"); // get
|
|
284
|
+
|
|
285
|
+
const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet"); // list
|
|
286
|
+
|
|
287
|
+
const onEntryBeforeList = (0, _pubsub.createTopic)("cms.onEntryBeforeList");
|
|
283
288
|
/**
|
|
284
289
|
* We need to assign some default behaviors.
|
|
285
290
|
*/
|
|
286
291
|
|
|
287
292
|
(0, _beforeCreate.assignBeforeEntryCreate)({
|
|
288
293
|
context,
|
|
289
|
-
|
|
294
|
+
onEntryBeforeCreate
|
|
290
295
|
});
|
|
291
296
|
(0, _beforeUpdate.assignBeforeEntryUpdate)({
|
|
292
297
|
context,
|
|
293
|
-
|
|
298
|
+
onEntryBeforeUpdate
|
|
294
299
|
});
|
|
295
300
|
(0, _afterDelete.assignAfterEntryDelete)({
|
|
296
301
|
context,
|
|
297
|
-
|
|
302
|
+
onEntryAfterDelete
|
|
298
303
|
});
|
|
299
304
|
|
|
300
305
|
const checkEntryPermissions = check => {
|
|
@@ -312,18 +317,23 @@ const createContentEntryCrud = params => {
|
|
|
312
317
|
} = params;
|
|
313
318
|
|
|
314
319
|
try {
|
|
315
|
-
await
|
|
320
|
+
await onEntryBeforeDelete.publish({
|
|
316
321
|
entry,
|
|
317
322
|
model
|
|
318
323
|
});
|
|
319
324
|
await storageOperations.entries.delete(model, {
|
|
320
325
|
entry
|
|
321
326
|
});
|
|
322
|
-
await
|
|
327
|
+
await onEntryAfterDelete.publish({
|
|
323
328
|
entry,
|
|
324
329
|
model
|
|
325
330
|
});
|
|
326
331
|
} catch (ex) {
|
|
332
|
+
await onEntryDeleteError.publish({
|
|
333
|
+
entry,
|
|
334
|
+
model,
|
|
335
|
+
error: ex
|
|
336
|
+
});
|
|
327
337
|
throw new _error.default(ex.message || "Could not delete entry.", ex.code || "DELETE_ERROR", {
|
|
328
338
|
entry
|
|
329
339
|
});
|
|
@@ -350,26 +360,78 @@ const createContentEntryCrud = params => {
|
|
|
350
360
|
};
|
|
351
361
|
|
|
352
362
|
return {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
363
|
+
/**
|
|
364
|
+
* Deprecated - will be removed in 5.35.0
|
|
365
|
+
*/
|
|
366
|
+
onBeforeEntryCreate: onEntryBeforeCreate,
|
|
367
|
+
onAfterEntryCreate: onEntryAfterCreate,
|
|
368
|
+
onBeforeEntryCreateRevision: onEntryBeforeCreateRevision,
|
|
369
|
+
onAfterEntryCreateRevision: onEntryRevisionAfterCreate,
|
|
370
|
+
onBeforeEntryUpdate: onEntryBeforeUpdate,
|
|
371
|
+
onAfterEntryUpdate: onEntryAfterUpdate,
|
|
372
|
+
onBeforeEntryDelete: onEntryBeforeDelete,
|
|
373
|
+
onAfterEntryDelete: onEntryAfterDelete,
|
|
374
|
+
onBeforeEntryDeleteRevision: onEntryRevisionBeforeDelete,
|
|
375
|
+
onAfterEntryDeleteRevision: onEntryRevisionAfterDelete,
|
|
376
|
+
onBeforeEntryPublish: onEntryBeforePublish,
|
|
377
|
+
onAfterEntryPublish: onEntryAfterPublish,
|
|
378
|
+
onBeforeEntryUnpublish: onEntryBeforeUnpublish,
|
|
379
|
+
onAfterEntryUnpublish: onEntryAfterUnpublish,
|
|
380
|
+
onBeforeEntryGet: onEntryBeforeGet,
|
|
381
|
+
onBeforeEntryList: onEntryBeforeList,
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Released in 5.34.0
|
|
385
|
+
*
|
|
386
|
+
* Create
|
|
387
|
+
*/
|
|
388
|
+
onEntryBeforeCreate,
|
|
389
|
+
onEntryAfterCreate,
|
|
390
|
+
onEntryCreateError,
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Create revision
|
|
394
|
+
*/
|
|
395
|
+
onEntryRevisionBeforeCreate: onEntryBeforeCreateRevision,
|
|
396
|
+
onEntryRevisionAfterCreate,
|
|
397
|
+
onEntryRevisionCreateError: onEntryCreateRevisionError,
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Update
|
|
401
|
+
*/
|
|
402
|
+
onEntryBeforeUpdate,
|
|
403
|
+
onEntryAfterUpdate,
|
|
404
|
+
onEntryUpdateError,
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Delete whole entry
|
|
408
|
+
*/
|
|
409
|
+
onEntryBeforeDelete,
|
|
410
|
+
onEntryAfterDelete,
|
|
411
|
+
onEntryDeleteError,
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Delete entry revision
|
|
415
|
+
*/
|
|
416
|
+
onEntryRevisionBeforeDelete,
|
|
417
|
+
onEntryRevisionAfterDelete,
|
|
418
|
+
onEntryRevisionDeleteError,
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Publish
|
|
422
|
+
*/
|
|
423
|
+
onEntryBeforePublish,
|
|
424
|
+
onEntryAfterPublish,
|
|
425
|
+
onEntryPublishError,
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Unpublish
|
|
429
|
+
*/
|
|
430
|
+
onEntryBeforeUnpublish,
|
|
431
|
+
onEntryAfterUnpublish,
|
|
432
|
+
onEntryUnpublishError,
|
|
433
|
+
onEntryBeforeGet,
|
|
434
|
+
onEntryBeforeList,
|
|
373
435
|
|
|
374
436
|
/**
|
|
375
437
|
* Get entries by exact revision IDs from the database.
|
|
@@ -379,7 +441,7 @@ const createContentEntryCrud = params => {
|
|
|
379
441
|
/**
|
|
380
442
|
* Get a single entry by revision ID from the database.
|
|
381
443
|
*/
|
|
382
|
-
|
|
444
|
+
async getEntryById(initialModel, id) {
|
|
383
445
|
const where = {
|
|
384
446
|
id
|
|
385
447
|
};
|
|
@@ -387,7 +449,7 @@ const createContentEntryCrud = params => {
|
|
|
387
449
|
model: initialModel,
|
|
388
450
|
plugins
|
|
389
451
|
});
|
|
390
|
-
await
|
|
452
|
+
await onEntryBeforeGet.publish({
|
|
391
453
|
where,
|
|
392
454
|
model
|
|
393
455
|
});
|
|
@@ -403,7 +465,7 @@ const createContentEntryCrud = params => {
|
|
|
403
465
|
/**
|
|
404
466
|
* Get published revisions by entry IDs.
|
|
405
467
|
*/
|
|
406
|
-
|
|
468
|
+
async getPublishedEntriesByIds(initialModel, ids) {
|
|
407
469
|
const permission = await checkEntryPermissions({
|
|
408
470
|
rwd: "r"
|
|
409
471
|
});
|
|
@@ -419,9 +481,9 @@ const createContentEntryCrud = params => {
|
|
|
419
481
|
},
|
|
420
482
|
|
|
421
483
|
/**
|
|
422
|
-
* Get latest revisions by entry IDs.
|
|
484
|
+
* Get the latest revisions by entry IDs.
|
|
423
485
|
*/
|
|
424
|
-
|
|
486
|
+
async getLatestEntriesByIds(initialModel, ids) {
|
|
425
487
|
const permission = await checkEntryPermissions({
|
|
426
488
|
rwd: "r"
|
|
427
489
|
});
|
|
@@ -435,7 +497,8 @@ const createContentEntryCrud = params => {
|
|
|
435
497
|
});
|
|
436
498
|
return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
|
|
437
499
|
},
|
|
438
|
-
|
|
500
|
+
|
|
501
|
+
async getEntryRevisions(initialModel, entryId) {
|
|
439
502
|
const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
|
|
440
503
|
model: initialModel,
|
|
441
504
|
plugins
|
|
@@ -450,7 +513,7 @@ const createContentEntryCrud = params => {
|
|
|
450
513
|
*
|
|
451
514
|
* @internal
|
|
452
515
|
*/
|
|
453
|
-
|
|
516
|
+
async getEntry(initialModel, params) {
|
|
454
517
|
await checkEntryPermissions({
|
|
455
518
|
rwd: "r"
|
|
456
519
|
});
|
|
@@ -462,11 +525,11 @@ const createContentEntryCrud = params => {
|
|
|
462
525
|
where,
|
|
463
526
|
sort
|
|
464
527
|
} = params;
|
|
465
|
-
await
|
|
528
|
+
await onEntryBeforeGet.publish({
|
|
466
529
|
where,
|
|
467
530
|
model
|
|
468
531
|
});
|
|
469
|
-
const [items] = await
|
|
532
|
+
const [items] = await this.listEntries(model, {
|
|
470
533
|
where,
|
|
471
534
|
sort,
|
|
472
535
|
limit: 1
|
|
@@ -484,7 +547,7 @@ const createContentEntryCrud = params => {
|
|
|
484
547
|
*
|
|
485
548
|
* @internal
|
|
486
549
|
*/
|
|
487
|
-
|
|
550
|
+
async listEntries(initialModel, params) {
|
|
488
551
|
const permission = await checkEntryPermissions({
|
|
489
552
|
rwd: "r"
|
|
490
553
|
});
|
|
@@ -494,19 +557,20 @@ const createContentEntryCrud = params => {
|
|
|
494
557
|
plugins
|
|
495
558
|
});
|
|
496
559
|
const {
|
|
497
|
-
where: initialWhere
|
|
560
|
+
where: initialWhere,
|
|
561
|
+
limit: initialLimit
|
|
498
562
|
} = params;
|
|
563
|
+
const limit = initialLimit && initialLimit > 0 ? initialLimit : 50;
|
|
499
564
|
/**
|
|
500
565
|
* We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
|
|
501
566
|
*/
|
|
502
567
|
|
|
503
|
-
const where =
|
|
568
|
+
const where = (0, _objectSpread2.default)({}, initialWhere);
|
|
504
569
|
/**
|
|
505
570
|
* Possibly only get records which are owned by current user.
|
|
506
571
|
* Or if searching for the owner set that value - in the case that user can see other entries than their own.
|
|
507
572
|
*/
|
|
508
573
|
|
|
509
|
-
|
|
510
574
|
const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
|
|
511
575
|
|
|
512
576
|
if (ownedBy !== undefined) {
|
|
@@ -528,14 +592,14 @@ const createContentEntryCrud = params => {
|
|
|
528
592
|
});
|
|
529
593
|
}
|
|
530
594
|
|
|
531
|
-
const fields = getSearchableFields({
|
|
532
|
-
model,
|
|
595
|
+
const fields = (0, _searchableFields.getSearchableFields)({
|
|
596
|
+
fields: model.fields,
|
|
533
597
|
plugins: context.plugins,
|
|
534
|
-
|
|
598
|
+
input: params.fields || []
|
|
535
599
|
});
|
|
536
600
|
|
|
537
601
|
try {
|
|
538
|
-
await
|
|
602
|
+
await onEntryBeforeList.publish({
|
|
539
603
|
where,
|
|
540
604
|
model
|
|
541
605
|
});
|
|
@@ -544,7 +608,8 @@ const createContentEntryCrud = params => {
|
|
|
544
608
|
totalCount,
|
|
545
609
|
cursor,
|
|
546
610
|
items
|
|
547
|
-
} = await storageOperations.entries.list(model,
|
|
611
|
+
} = await storageOperations.entries.list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
612
|
+
limit,
|
|
548
613
|
where,
|
|
549
614
|
fields
|
|
550
615
|
}));
|
|
@@ -562,33 +627,40 @@ const createContentEntryCrud = params => {
|
|
|
562
627
|
} catch (ex) {
|
|
563
628
|
throw new _error.default("Error while fetching entries from storage.", "LIST_ENTRIES_ERROR", {
|
|
564
629
|
params,
|
|
565
|
-
error:
|
|
630
|
+
error: {
|
|
631
|
+
message: ex.message,
|
|
632
|
+
code: ex.code,
|
|
633
|
+
data: ex.data
|
|
634
|
+
},
|
|
566
635
|
model,
|
|
567
636
|
fields
|
|
568
637
|
});
|
|
569
638
|
}
|
|
570
639
|
},
|
|
571
|
-
|
|
640
|
+
|
|
641
|
+
async listLatestEntries(model, params) {
|
|
572
642
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
573
|
-
return
|
|
643
|
+
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
574
644
|
sort: ["createdOn_DESC"]
|
|
575
645
|
}, params || {}), {}, {
|
|
576
|
-
where:
|
|
646
|
+
where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
|
|
577
647
|
latest: true
|
|
578
648
|
})
|
|
579
649
|
}));
|
|
580
650
|
},
|
|
581
|
-
|
|
651
|
+
|
|
652
|
+
async listPublishedEntries(model, params) {
|
|
582
653
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
583
|
-
return
|
|
654
|
+
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
584
655
|
sort: ["createdOn_DESC"]
|
|
585
656
|
}, params || {}), {}, {
|
|
586
|
-
where:
|
|
657
|
+
where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
|
|
587
658
|
published: true
|
|
588
659
|
})
|
|
589
660
|
}));
|
|
590
661
|
},
|
|
591
|
-
|
|
662
|
+
|
|
663
|
+
async createEntry(initialModel, inputData) {
|
|
592
664
|
await checkEntryPermissions({
|
|
593
665
|
rwd: "w"
|
|
594
666
|
});
|
|
@@ -614,7 +686,7 @@ const createContentEntryCrud = params => {
|
|
|
614
686
|
validateEntries: true
|
|
615
687
|
});
|
|
616
688
|
const identity = context.security.getIdentity();
|
|
617
|
-
const locale =
|
|
689
|
+
const locale = this.getLocale();
|
|
618
690
|
const owner = {
|
|
619
691
|
id: identity.id,
|
|
620
692
|
displayName: identity.displayName,
|
|
@@ -644,7 +716,7 @@ const createContentEntryCrud = params => {
|
|
|
644
716
|
let storageEntry = null;
|
|
645
717
|
|
|
646
718
|
try {
|
|
647
|
-
await
|
|
719
|
+
await onEntryBeforeCreate.publish({
|
|
648
720
|
entry,
|
|
649
721
|
input,
|
|
650
722
|
model
|
|
@@ -654,7 +726,7 @@ const createContentEntryCrud = params => {
|
|
|
654
726
|
entry,
|
|
655
727
|
storageEntry
|
|
656
728
|
});
|
|
657
|
-
await
|
|
729
|
+
await onEntryAfterCreate.publish({
|
|
658
730
|
entry,
|
|
659
731
|
storageEntry: result,
|
|
660
732
|
model,
|
|
@@ -662,6 +734,12 @@ const createContentEntryCrud = params => {
|
|
|
662
734
|
});
|
|
663
735
|
return result;
|
|
664
736
|
} catch (ex) {
|
|
737
|
+
await onEntryCreateError.publish({
|
|
738
|
+
error: ex,
|
|
739
|
+
entry,
|
|
740
|
+
model,
|
|
741
|
+
input
|
|
742
|
+
});
|
|
665
743
|
throw new _error.default(ex.message || "Could not create content entry.", ex.code || "CREATE_ENTRY_ERROR", ex.data || {
|
|
666
744
|
error: ex,
|
|
667
745
|
input,
|
|
@@ -670,7 +748,8 @@ const createContentEntryCrud = params => {
|
|
|
670
748
|
});
|
|
671
749
|
}
|
|
672
750
|
},
|
|
673
|
-
|
|
751
|
+
|
|
752
|
+
async createEntryRevisionFrom(initialModel, sourceId, inputData) {
|
|
674
753
|
const permission = await checkEntryPermissions({
|
|
675
754
|
rwd: "w"
|
|
676
755
|
});
|
|
@@ -707,9 +786,7 @@ const createContentEntryCrud = params => {
|
|
|
707
786
|
|
|
708
787
|
|
|
709
788
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
710
|
-
|
|
711
|
-
const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
|
|
712
|
-
|
|
789
|
+
const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
|
|
713
790
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
714
791
|
context,
|
|
715
792
|
model,
|
|
@@ -729,8 +806,7 @@ const createContentEntryCrud = params => {
|
|
|
729
806
|
id,
|
|
730
807
|
version: nextVersion
|
|
731
808
|
} = increaseEntryIdVersion(latestId);
|
|
732
|
-
|
|
733
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
809
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
734
810
|
id,
|
|
735
811
|
version: nextVersion,
|
|
736
812
|
savedOn: new Date().toISOString(),
|
|
@@ -745,11 +821,10 @@ const createContentEntryCrud = params => {
|
|
|
745
821
|
status: STATUS_DRAFT,
|
|
746
822
|
values
|
|
747
823
|
});
|
|
748
|
-
|
|
749
824
|
let storageEntry = null;
|
|
750
825
|
|
|
751
826
|
try {
|
|
752
|
-
await
|
|
827
|
+
await onEntryBeforeCreateRevision.publish({
|
|
753
828
|
input,
|
|
754
829
|
entry,
|
|
755
830
|
original: originalEntry,
|
|
@@ -760,7 +835,7 @@ const createContentEntryCrud = params => {
|
|
|
760
835
|
entry,
|
|
761
836
|
storageEntry
|
|
762
837
|
});
|
|
763
|
-
await
|
|
838
|
+
await onEntryRevisionAfterCreate.publish({
|
|
764
839
|
input,
|
|
765
840
|
entry,
|
|
766
841
|
model,
|
|
@@ -769,6 +844,13 @@ const createContentEntryCrud = params => {
|
|
|
769
844
|
});
|
|
770
845
|
return result;
|
|
771
846
|
} catch (ex) {
|
|
847
|
+
await onEntryCreateRevisionError.publish({
|
|
848
|
+
entry,
|
|
849
|
+
original: originalEntry,
|
|
850
|
+
model,
|
|
851
|
+
input,
|
|
852
|
+
error: ex
|
|
853
|
+
});
|
|
772
854
|
throw new _error.default(ex.message || "Could not create entry from existing one.", ex.code || "CREATE_FROM_REVISION_ERROR", {
|
|
773
855
|
error: ex,
|
|
774
856
|
entry,
|
|
@@ -778,7 +860,8 @@ const createContentEntryCrud = params => {
|
|
|
778
860
|
});
|
|
779
861
|
}
|
|
780
862
|
},
|
|
781
|
-
|
|
863
|
+
|
|
864
|
+
async updateEntry(initialModel, id, inputData, metaInput) {
|
|
782
865
|
const permission = await checkEntryPermissions({
|
|
783
866
|
rwd: "w"
|
|
784
867
|
});
|
|
@@ -816,9 +899,7 @@ const createContentEntryCrud = params => {
|
|
|
816
899
|
entry: originalEntry
|
|
817
900
|
});
|
|
818
901
|
(0, _ownership.checkOwnership)(context, permission, originalEntry);
|
|
819
|
-
|
|
820
|
-
const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
|
|
821
|
-
|
|
902
|
+
const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
|
|
822
903
|
const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
|
|
823
904
|
context,
|
|
824
905
|
model,
|
|
@@ -834,16 +915,16 @@ const createContentEntryCrud = params => {
|
|
|
834
915
|
* We always send the full entry to the hooks and storage operations update.
|
|
835
916
|
*/
|
|
836
917
|
|
|
837
|
-
const entry =
|
|
918
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
838
919
|
savedOn: new Date().toISOString(),
|
|
839
920
|
values,
|
|
840
|
-
meta
|
|
921
|
+
meta,
|
|
922
|
+
status: transformEntryStatus(originalEntry.status)
|
|
841
923
|
});
|
|
842
|
-
|
|
843
924
|
let storageEntry = null;
|
|
844
925
|
|
|
845
926
|
try {
|
|
846
|
-
await
|
|
927
|
+
await onEntryBeforeUpdate.publish({
|
|
847
928
|
entry,
|
|
848
929
|
model,
|
|
849
930
|
input,
|
|
@@ -854,7 +935,7 @@ const createContentEntryCrud = params => {
|
|
|
854
935
|
entry,
|
|
855
936
|
storageEntry
|
|
856
937
|
});
|
|
857
|
-
await
|
|
938
|
+
await onEntryAfterUpdate.publish({
|
|
858
939
|
entry,
|
|
859
940
|
storageEntry: result,
|
|
860
941
|
model,
|
|
@@ -863,6 +944,12 @@ const createContentEntryCrud = params => {
|
|
|
863
944
|
});
|
|
864
945
|
return result;
|
|
865
946
|
} catch (ex) {
|
|
947
|
+
await onEntryUpdateError.publish({
|
|
948
|
+
entry,
|
|
949
|
+
model,
|
|
950
|
+
input,
|
|
951
|
+
error: ex
|
|
952
|
+
});
|
|
866
953
|
throw new _error.default(ex.message || "Could not update existing entry.", ex.code || "UPDATE_ERROR", {
|
|
867
954
|
error: ex,
|
|
868
955
|
entry,
|
|
@@ -872,7 +959,12 @@ const createContentEntryCrud = params => {
|
|
|
872
959
|
});
|
|
873
960
|
}
|
|
874
961
|
},
|
|
875
|
-
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
* Method used internally. Not documented and should not be used in users systems.
|
|
965
|
+
* @internal
|
|
966
|
+
*/
|
|
967
|
+
async republishEntry(initialModel, id) {
|
|
876
968
|
await checkEntryPermissions({
|
|
877
969
|
rwd: "w"
|
|
878
970
|
});
|
|
@@ -911,13 +1003,11 @@ const createContentEntryCrud = params => {
|
|
|
911
1003
|
input: originalEntry.values,
|
|
912
1004
|
validateEntries: false
|
|
913
1005
|
});
|
|
914
|
-
|
|
915
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
1006
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
916
1007
|
savedOn: new Date().toISOString(),
|
|
917
1008
|
webinyVersion: context.WEBINY_VERSION,
|
|
918
1009
|
values
|
|
919
1010
|
});
|
|
920
|
-
|
|
921
1011
|
const storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
|
|
922
1012
|
/**
|
|
923
1013
|
* First we need to update existing entry.
|
|
@@ -949,7 +1039,8 @@ const createContentEntryCrud = params => {
|
|
|
949
1039
|
});
|
|
950
1040
|
}
|
|
951
1041
|
},
|
|
952
|
-
|
|
1042
|
+
|
|
1043
|
+
async deleteEntryRevision(initialModel, revisionId) {
|
|
953
1044
|
const permission = await checkEntryPermissions({
|
|
954
1045
|
rwd: "d"
|
|
955
1046
|
});
|
|
@@ -1005,7 +1096,7 @@ const createContentEntryCrud = params => {
|
|
|
1005
1096
|
}
|
|
1006
1097
|
|
|
1007
1098
|
try {
|
|
1008
|
-
await
|
|
1099
|
+
await onEntryRevisionBeforeDelete.publish({
|
|
1009
1100
|
entry: entryToDelete,
|
|
1010
1101
|
model
|
|
1011
1102
|
});
|
|
@@ -1015,11 +1106,16 @@ const createContentEntryCrud = params => {
|
|
|
1015
1106
|
latestEntry: entryToSetAsLatest,
|
|
1016
1107
|
latestStorageEntry: storageEntryToSetAsLatest
|
|
1017
1108
|
});
|
|
1018
|
-
await
|
|
1109
|
+
await onEntryRevisionAfterDelete.publish({
|
|
1019
1110
|
entry: entryToDelete,
|
|
1020
1111
|
model
|
|
1021
1112
|
});
|
|
1022
1113
|
} catch (ex) {
|
|
1114
|
+
await onEntryRevisionDeleteError.publish({
|
|
1115
|
+
entry: entryToDelete,
|
|
1116
|
+
model,
|
|
1117
|
+
error: ex
|
|
1118
|
+
});
|
|
1023
1119
|
throw new _error.default(ex.message, ex.code || "DELETE_REVISION_ERROR", {
|
|
1024
1120
|
error: ex,
|
|
1025
1121
|
entry: entryToDelete,
|
|
@@ -1029,7 +1125,8 @@ const createContentEntryCrud = params => {
|
|
|
1029
1125
|
});
|
|
1030
1126
|
}
|
|
1031
1127
|
},
|
|
1032
|
-
|
|
1128
|
+
|
|
1129
|
+
async deleteEntry(initialModel, entryId) {
|
|
1033
1130
|
const permission = await checkEntryPermissions({
|
|
1034
1131
|
rwd: "d"
|
|
1035
1132
|
});
|
|
@@ -1053,7 +1150,8 @@ const createContentEntryCrud = params => {
|
|
|
1053
1150
|
entry
|
|
1054
1151
|
});
|
|
1055
1152
|
},
|
|
1056
|
-
|
|
1153
|
+
|
|
1154
|
+
async publishEntry(initialModel, id) {
|
|
1057
1155
|
const permission = await checkEntryPermissions({
|
|
1058
1156
|
pw: "p"
|
|
1059
1157
|
});
|
|
@@ -1073,18 +1171,16 @@ const createContentEntryCrud = params => {
|
|
|
1073
1171
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1074
1172
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1075
1173
|
const currentDate = new Date().toISOString();
|
|
1076
|
-
|
|
1077
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
1174
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
1078
1175
|
status: STATUS_PUBLISHED,
|
|
1079
1176
|
locked: true,
|
|
1080
1177
|
savedOn: currentDate,
|
|
1081
1178
|
publishedOn: currentDate
|
|
1082
1179
|
});
|
|
1083
|
-
|
|
1084
1180
|
let storageEntry = null;
|
|
1085
1181
|
|
|
1086
1182
|
try {
|
|
1087
|
-
await
|
|
1183
|
+
await onEntryBeforePublish.publish({
|
|
1088
1184
|
entry,
|
|
1089
1185
|
model
|
|
1090
1186
|
});
|
|
@@ -1093,13 +1189,18 @@ const createContentEntryCrud = params => {
|
|
|
1093
1189
|
entry,
|
|
1094
1190
|
storageEntry
|
|
1095
1191
|
});
|
|
1096
|
-
await
|
|
1192
|
+
await onEntryAfterPublish.publish({
|
|
1097
1193
|
entry,
|
|
1098
1194
|
storageEntry: result,
|
|
1099
1195
|
model
|
|
1100
1196
|
});
|
|
1101
1197
|
return result;
|
|
1102
1198
|
} catch (ex) {
|
|
1199
|
+
await onEntryPublishError.publish({
|
|
1200
|
+
entry,
|
|
1201
|
+
model,
|
|
1202
|
+
error: ex
|
|
1203
|
+
});
|
|
1103
1204
|
throw new _error.default(ex.message || "Could not publish entry.", ex.code || "PUBLISH_ERROR", {
|
|
1104
1205
|
error: ex,
|
|
1105
1206
|
entry,
|
|
@@ -1109,130 +1210,8 @@ const createContentEntryCrud = params => {
|
|
|
1109
1210
|
});
|
|
1110
1211
|
}
|
|
1111
1212
|
},
|
|
1112
|
-
requestEntryChanges: async (initialModel, id) => {
|
|
1113
|
-
const permission = await checkEntryPermissions({
|
|
1114
|
-
pw: "c"
|
|
1115
|
-
});
|
|
1116
|
-
const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
|
|
1117
|
-
model: initialModel,
|
|
1118
|
-
plugins
|
|
1119
|
-
});
|
|
1120
|
-
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
1121
|
-
id
|
|
1122
|
-
});
|
|
1123
|
-
|
|
1124
|
-
if (!originalStorageEntry) {
|
|
1125
|
-
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
1126
|
-
}
|
|
1127
|
-
|
|
1128
|
-
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1129
|
-
|
|
1130
|
-
if (originalEntry.status !== STATUS_REVIEW_REQUESTED) {
|
|
1131
|
-
throw new _error.default("Cannot request changes on an entry that's not under review.", "ENTRY_NOT_UNDER_REVIEW");
|
|
1132
|
-
}
|
|
1133
|
-
|
|
1134
|
-
const identity = context.security.getIdentity();
|
|
1135
|
-
|
|
1136
|
-
if (originalEntry.ownedBy.id === identity.id) {
|
|
1137
|
-
throw new _error.default("You cannot request changes on your own entry.", "CANNOT_REQUEST_CHANGES_ON_OWN_ENTRY");
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
|
-
(0, _ownership.checkOwnership)(context, permission, originalEntry);
|
|
1141
1213
|
|
|
1142
|
-
|
|
1143
|
-
status: STATUS_CHANGES_REQUESTED
|
|
1144
|
-
});
|
|
1145
|
-
|
|
1146
|
-
let storageEntry = null;
|
|
1147
|
-
|
|
1148
|
-
try {
|
|
1149
|
-
await onBeforeEntryRequestChanges.publish({
|
|
1150
|
-
entry,
|
|
1151
|
-
model
|
|
1152
|
-
});
|
|
1153
|
-
storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
|
|
1154
|
-
const result = await storageOperations.entries.requestChanges(model, {
|
|
1155
|
-
entry,
|
|
1156
|
-
storageEntry
|
|
1157
|
-
});
|
|
1158
|
-
await onAfterEntryRequestChanges.publish({
|
|
1159
|
-
entry,
|
|
1160
|
-
storageEntry: result,
|
|
1161
|
-
model
|
|
1162
|
-
});
|
|
1163
|
-
return result;
|
|
1164
|
-
} catch (ex) {
|
|
1165
|
-
throw new _error.default(ex.message || "Could not request changes for the entry.", ex.code || "REQUEST_CHANGES_ERROR", {
|
|
1166
|
-
entry,
|
|
1167
|
-
originalEntry
|
|
1168
|
-
});
|
|
1169
|
-
}
|
|
1170
|
-
},
|
|
1171
|
-
requestEntryReview: async (initialModel, id) => {
|
|
1172
|
-
const permission = await checkEntryPermissions({
|
|
1173
|
-
pw: "r"
|
|
1174
|
-
});
|
|
1175
|
-
const {
|
|
1176
|
-
id: entryId
|
|
1177
|
-
} = (0, _utils.parseIdentifier)(id);
|
|
1178
|
-
const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
|
|
1179
|
-
model: initialModel,
|
|
1180
|
-
plugins
|
|
1181
|
-
});
|
|
1182
|
-
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
1183
|
-
id
|
|
1184
|
-
});
|
|
1185
|
-
const latestEntryRevision = await storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
1186
|
-
id: entryId
|
|
1187
|
-
});
|
|
1188
|
-
|
|
1189
|
-
if (!originalStorageEntry) {
|
|
1190
|
-
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
1191
|
-
} else if (!latestEntryRevision) {
|
|
1192
|
-
throw new _handlerGraphql.NotFoundError(`Entry "${id}" does not have latest record`);
|
|
1193
|
-
}
|
|
1194
|
-
|
|
1195
|
-
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1196
|
-
const allowedStatuses = [STATUS_DRAFT, STATUS_CHANGES_REQUESTED];
|
|
1197
|
-
|
|
1198
|
-
if (!allowedStatuses.includes(originalEntry.status)) {
|
|
1199
|
-
throw new _error.default("Cannot request review - entry is not a draft nor was a change request issued.", "REQUEST_REVIEW_ERROR", {
|
|
1200
|
-
entry: originalEntry
|
|
1201
|
-
});
|
|
1202
|
-
}
|
|
1203
|
-
|
|
1204
|
-
(0, _ownership.checkOwnership)(context, permission, originalEntry);
|
|
1205
|
-
|
|
1206
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
1207
|
-
status: STATUS_REVIEW_REQUESTED
|
|
1208
|
-
});
|
|
1209
|
-
|
|
1210
|
-
let storageEntry = null;
|
|
1211
|
-
|
|
1212
|
-
try {
|
|
1213
|
-
await onBeforeEntryRequestReview.publish({
|
|
1214
|
-
entry,
|
|
1215
|
-
model
|
|
1216
|
-
});
|
|
1217
|
-
storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
|
|
1218
|
-
const result = await storageOperations.entries.requestReview(model, {
|
|
1219
|
-
entry,
|
|
1220
|
-
storageEntry
|
|
1221
|
-
});
|
|
1222
|
-
await onAfterEntryRequestReview.publish({
|
|
1223
|
-
entry,
|
|
1224
|
-
storageEntry: result,
|
|
1225
|
-
model
|
|
1226
|
-
});
|
|
1227
|
-
return result;
|
|
1228
|
-
} catch (ex) {
|
|
1229
|
-
throw new _error.default(ex.message || "Could not request review on the entry.", ex.code || "REQUEST_REVIEW_ERROR", {
|
|
1230
|
-
originalEntry,
|
|
1231
|
-
entry
|
|
1232
|
-
});
|
|
1233
|
-
}
|
|
1234
|
-
},
|
|
1235
|
-
unpublishEntry: async (initialModel, id) => {
|
|
1214
|
+
async unpublishEntry(initialModel, id) {
|
|
1236
1215
|
const permission = await checkEntryPermissions({
|
|
1237
1216
|
pw: "u"
|
|
1238
1217
|
});
|
|
@@ -1259,15 +1238,13 @@ const createContentEntryCrud = params => {
|
|
|
1259
1238
|
|
|
1260
1239
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1261
1240
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1262
|
-
|
|
1263
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
1241
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
1264
1242
|
status: STATUS_UNPUBLISHED
|
|
1265
1243
|
});
|
|
1266
|
-
|
|
1267
1244
|
let storageEntry = null;
|
|
1268
1245
|
|
|
1269
1246
|
try {
|
|
1270
|
-
await
|
|
1247
|
+
await onEntryBeforeUnpublish.publish({
|
|
1271
1248
|
entry,
|
|
1272
1249
|
model
|
|
1273
1250
|
});
|
|
@@ -1276,13 +1253,18 @@ const createContentEntryCrud = params => {
|
|
|
1276
1253
|
entry,
|
|
1277
1254
|
storageEntry
|
|
1278
1255
|
});
|
|
1279
|
-
await
|
|
1256
|
+
await onEntryAfterUnpublish.publish({
|
|
1280
1257
|
entry,
|
|
1281
1258
|
storageEntry: result,
|
|
1282
1259
|
model
|
|
1283
1260
|
});
|
|
1284
1261
|
return result;
|
|
1285
1262
|
} catch (ex) {
|
|
1263
|
+
await onEntryUnpublishError.publish({
|
|
1264
|
+
entry,
|
|
1265
|
+
model,
|
|
1266
|
+
error: ex
|
|
1267
|
+
});
|
|
1286
1268
|
throw new _error.default(ex.message || "Could not unpublish entry.", ex.code || "UNPUBLISH_ERROR", {
|
|
1287
1269
|
originalEntry,
|
|
1288
1270
|
originalStorageEntry,
|
|
@@ -1291,6 +1273,7 @@ const createContentEntryCrud = params => {
|
|
|
1291
1273
|
});
|
|
1292
1274
|
}
|
|
1293
1275
|
}
|
|
1276
|
+
|
|
1294
1277
|
};
|
|
1295
1278
|
};
|
|
1296
1279
|
|