@webiny/api-headless-cms 5.33.5 → 5.34.0-beta.0
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.js +3 -7
- 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 +249 -269
- 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 +42 -34
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel.crud.js +222 -169
- 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.crud.js +87 -37
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/index.js +3 -7
- package/crud/index.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/graphQLHandlerFactory.js +21 -17
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +1 -1
- package/graphql/schema/baseContentSchema.js +4 -8
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +1 -1
- package/graphql/schema/contentModels.js +18 -1
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +12 -14
- 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.js +7 -10
- 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 +3 -7
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +5 -3
- 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/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 +23 -23
- package/graphqlFields/ref.js.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +7 -7
- package/modelManager/DefaultCmsModelManager.js +1 -1
- package/package.json +27 -28
- 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/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/storage/object.js +7 -8
- package/storage/object.js.map +1 -1
- package/types.d.ts +436 -164
- package/types.js +50 -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.js +10 -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.js +3 -1
- 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/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
|
});
|
|
@@ -500,13 +563,12 @@ const createContentEntryCrud = params => {
|
|
|
500
563
|
* We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
|
|
501
564
|
*/
|
|
502
565
|
|
|
503
|
-
const where =
|
|
566
|
+
const where = (0, _objectSpread2.default)({}, initialWhere);
|
|
504
567
|
/**
|
|
505
568
|
* Possibly only get records which are owned by current user.
|
|
506
569
|
* Or if searching for the owner set that value - in the case that user can see other entries than their own.
|
|
507
570
|
*/
|
|
508
571
|
|
|
509
|
-
|
|
510
572
|
const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
|
|
511
573
|
|
|
512
574
|
if (ownedBy !== undefined) {
|
|
@@ -528,14 +590,14 @@ const createContentEntryCrud = params => {
|
|
|
528
590
|
});
|
|
529
591
|
}
|
|
530
592
|
|
|
531
|
-
const fields = getSearchableFields({
|
|
532
|
-
model,
|
|
593
|
+
const fields = (0, _searchableFields.getSearchableFields)({
|
|
594
|
+
fields: model.fields,
|
|
533
595
|
plugins: context.plugins,
|
|
534
|
-
|
|
596
|
+
input: params.fields || []
|
|
535
597
|
});
|
|
536
598
|
|
|
537
599
|
try {
|
|
538
|
-
await
|
|
600
|
+
await onEntryBeforeList.publish({
|
|
539
601
|
where,
|
|
540
602
|
model
|
|
541
603
|
});
|
|
@@ -544,7 +606,7 @@ const createContentEntryCrud = params => {
|
|
|
544
606
|
totalCount,
|
|
545
607
|
cursor,
|
|
546
608
|
items
|
|
547
|
-
} = await storageOperations.entries.list(model,
|
|
609
|
+
} = await storageOperations.entries.list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
548
610
|
where,
|
|
549
611
|
fields
|
|
550
612
|
}));
|
|
@@ -562,33 +624,40 @@ const createContentEntryCrud = params => {
|
|
|
562
624
|
} catch (ex) {
|
|
563
625
|
throw new _error.default("Error while fetching entries from storage.", "LIST_ENTRIES_ERROR", {
|
|
564
626
|
params,
|
|
565
|
-
error:
|
|
627
|
+
error: {
|
|
628
|
+
message: ex.message,
|
|
629
|
+
code: ex.code,
|
|
630
|
+
data: ex.data
|
|
631
|
+
},
|
|
566
632
|
model,
|
|
567
633
|
fields
|
|
568
634
|
});
|
|
569
635
|
}
|
|
570
636
|
},
|
|
571
|
-
|
|
637
|
+
|
|
638
|
+
async listLatestEntries(model, params) {
|
|
572
639
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
573
|
-
return
|
|
640
|
+
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
574
641
|
sort: ["createdOn_DESC"]
|
|
575
642
|
}, params || {}), {}, {
|
|
576
|
-
where:
|
|
643
|
+
where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
|
|
577
644
|
latest: true
|
|
578
645
|
})
|
|
579
646
|
}));
|
|
580
647
|
},
|
|
581
|
-
|
|
648
|
+
|
|
649
|
+
async listPublishedEntries(model, params) {
|
|
582
650
|
const where = (params === null || params === void 0 ? void 0 : params.where) || {};
|
|
583
|
-
return
|
|
651
|
+
return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
584
652
|
sort: ["createdOn_DESC"]
|
|
585
653
|
}, params || {}), {}, {
|
|
586
|
-
where:
|
|
654
|
+
where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
|
|
587
655
|
published: true
|
|
588
656
|
})
|
|
589
657
|
}));
|
|
590
658
|
},
|
|
591
|
-
|
|
659
|
+
|
|
660
|
+
async createEntry(initialModel, inputData) {
|
|
592
661
|
await checkEntryPermissions({
|
|
593
662
|
rwd: "w"
|
|
594
663
|
});
|
|
@@ -614,7 +683,7 @@ const createContentEntryCrud = params => {
|
|
|
614
683
|
validateEntries: true
|
|
615
684
|
});
|
|
616
685
|
const identity = context.security.getIdentity();
|
|
617
|
-
const locale =
|
|
686
|
+
const locale = this.getLocale();
|
|
618
687
|
const owner = {
|
|
619
688
|
id: identity.id,
|
|
620
689
|
displayName: identity.displayName,
|
|
@@ -644,7 +713,7 @@ const createContentEntryCrud = params => {
|
|
|
644
713
|
let storageEntry = null;
|
|
645
714
|
|
|
646
715
|
try {
|
|
647
|
-
await
|
|
716
|
+
await onEntryBeforeCreate.publish({
|
|
648
717
|
entry,
|
|
649
718
|
input,
|
|
650
719
|
model
|
|
@@ -654,7 +723,7 @@ const createContentEntryCrud = params => {
|
|
|
654
723
|
entry,
|
|
655
724
|
storageEntry
|
|
656
725
|
});
|
|
657
|
-
await
|
|
726
|
+
await onEntryAfterCreate.publish({
|
|
658
727
|
entry,
|
|
659
728
|
storageEntry: result,
|
|
660
729
|
model,
|
|
@@ -662,6 +731,12 @@ const createContentEntryCrud = params => {
|
|
|
662
731
|
});
|
|
663
732
|
return result;
|
|
664
733
|
} catch (ex) {
|
|
734
|
+
await onEntryCreateError.publish({
|
|
735
|
+
error: ex,
|
|
736
|
+
entry,
|
|
737
|
+
model,
|
|
738
|
+
input
|
|
739
|
+
});
|
|
665
740
|
throw new _error.default(ex.message || "Could not create content entry.", ex.code || "CREATE_ENTRY_ERROR", ex.data || {
|
|
666
741
|
error: ex,
|
|
667
742
|
input,
|
|
@@ -670,7 +745,8 @@ const createContentEntryCrud = params => {
|
|
|
670
745
|
});
|
|
671
746
|
}
|
|
672
747
|
},
|
|
673
|
-
|
|
748
|
+
|
|
749
|
+
async createEntryRevisionFrom(initialModel, sourceId, inputData) {
|
|
674
750
|
const permission = await checkEntryPermissions({
|
|
675
751
|
rwd: "w"
|
|
676
752
|
});
|
|
@@ -707,9 +783,7 @@ const createContentEntryCrud = params => {
|
|
|
707
783
|
|
|
708
784
|
|
|
709
785
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
710
|
-
|
|
711
|
-
const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
|
|
712
|
-
|
|
786
|
+
const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
|
|
713
787
|
await (0, _entryDataValidation.validateModelEntryData)({
|
|
714
788
|
context,
|
|
715
789
|
model,
|
|
@@ -729,8 +803,7 @@ const createContentEntryCrud = params => {
|
|
|
729
803
|
id,
|
|
730
804
|
version: nextVersion
|
|
731
805
|
} = increaseEntryIdVersion(latestId);
|
|
732
|
-
|
|
733
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
806
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
734
807
|
id,
|
|
735
808
|
version: nextVersion,
|
|
736
809
|
savedOn: new Date().toISOString(),
|
|
@@ -745,11 +818,10 @@ const createContentEntryCrud = params => {
|
|
|
745
818
|
status: STATUS_DRAFT,
|
|
746
819
|
values
|
|
747
820
|
});
|
|
748
|
-
|
|
749
821
|
let storageEntry = null;
|
|
750
822
|
|
|
751
823
|
try {
|
|
752
|
-
await
|
|
824
|
+
await onEntryBeforeCreateRevision.publish({
|
|
753
825
|
input,
|
|
754
826
|
entry,
|
|
755
827
|
original: originalEntry,
|
|
@@ -760,7 +832,7 @@ const createContentEntryCrud = params => {
|
|
|
760
832
|
entry,
|
|
761
833
|
storageEntry
|
|
762
834
|
});
|
|
763
|
-
await
|
|
835
|
+
await onEntryRevisionAfterCreate.publish({
|
|
764
836
|
input,
|
|
765
837
|
entry,
|
|
766
838
|
model,
|
|
@@ -769,6 +841,13 @@ const createContentEntryCrud = params => {
|
|
|
769
841
|
});
|
|
770
842
|
return result;
|
|
771
843
|
} catch (ex) {
|
|
844
|
+
await onEntryCreateRevisionError.publish({
|
|
845
|
+
entry,
|
|
846
|
+
original: originalEntry,
|
|
847
|
+
model,
|
|
848
|
+
input,
|
|
849
|
+
error: ex
|
|
850
|
+
});
|
|
772
851
|
throw new _error.default(ex.message || "Could not create entry from existing one.", ex.code || "CREATE_FROM_REVISION_ERROR", {
|
|
773
852
|
error: ex,
|
|
774
853
|
entry,
|
|
@@ -778,7 +857,8 @@ const createContentEntryCrud = params => {
|
|
|
778
857
|
});
|
|
779
858
|
}
|
|
780
859
|
},
|
|
781
|
-
|
|
860
|
+
|
|
861
|
+
async updateEntry(initialModel, id, inputData, metaInput) {
|
|
782
862
|
const permission = await checkEntryPermissions({
|
|
783
863
|
rwd: "w"
|
|
784
864
|
});
|
|
@@ -816,9 +896,7 @@ const createContentEntryCrud = params => {
|
|
|
816
896
|
entry: originalEntry
|
|
817
897
|
});
|
|
818
898
|
(0, _ownership.checkOwnership)(context, permission, originalEntry);
|
|
819
|
-
|
|
820
|
-
const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
|
|
821
|
-
|
|
899
|
+
const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
|
|
822
900
|
const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
|
|
823
901
|
context,
|
|
824
902
|
model,
|
|
@@ -834,16 +912,16 @@ const createContentEntryCrud = params => {
|
|
|
834
912
|
* We always send the full entry to the hooks and storage operations update.
|
|
835
913
|
*/
|
|
836
914
|
|
|
837
|
-
const entry =
|
|
915
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
838
916
|
savedOn: new Date().toISOString(),
|
|
839
917
|
values,
|
|
840
|
-
meta
|
|
918
|
+
meta,
|
|
919
|
+
status: transformEntryStatus(originalEntry.status)
|
|
841
920
|
});
|
|
842
|
-
|
|
843
921
|
let storageEntry = null;
|
|
844
922
|
|
|
845
923
|
try {
|
|
846
|
-
await
|
|
924
|
+
await onEntryBeforeUpdate.publish({
|
|
847
925
|
entry,
|
|
848
926
|
model,
|
|
849
927
|
input,
|
|
@@ -854,7 +932,7 @@ const createContentEntryCrud = params => {
|
|
|
854
932
|
entry,
|
|
855
933
|
storageEntry
|
|
856
934
|
});
|
|
857
|
-
await
|
|
935
|
+
await onEntryAfterUpdate.publish({
|
|
858
936
|
entry,
|
|
859
937
|
storageEntry: result,
|
|
860
938
|
model,
|
|
@@ -863,6 +941,12 @@ const createContentEntryCrud = params => {
|
|
|
863
941
|
});
|
|
864
942
|
return result;
|
|
865
943
|
} catch (ex) {
|
|
944
|
+
await onEntryUpdateError.publish({
|
|
945
|
+
entry,
|
|
946
|
+
model,
|
|
947
|
+
input,
|
|
948
|
+
error: ex
|
|
949
|
+
});
|
|
866
950
|
throw new _error.default(ex.message || "Could not update existing entry.", ex.code || "UPDATE_ERROR", {
|
|
867
951
|
error: ex,
|
|
868
952
|
entry,
|
|
@@ -872,7 +956,12 @@ const createContentEntryCrud = params => {
|
|
|
872
956
|
});
|
|
873
957
|
}
|
|
874
958
|
},
|
|
875
|
-
|
|
959
|
+
|
|
960
|
+
/**
|
|
961
|
+
* Method used internally. Not documented and should not be used in users systems.
|
|
962
|
+
* @internal
|
|
963
|
+
*/
|
|
964
|
+
async republishEntry(initialModel, id) {
|
|
876
965
|
await checkEntryPermissions({
|
|
877
966
|
rwd: "w"
|
|
878
967
|
});
|
|
@@ -911,13 +1000,11 @@ const createContentEntryCrud = params => {
|
|
|
911
1000
|
input: originalEntry.values,
|
|
912
1001
|
validateEntries: false
|
|
913
1002
|
});
|
|
914
|
-
|
|
915
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
1003
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
916
1004
|
savedOn: new Date().toISOString(),
|
|
917
1005
|
webinyVersion: context.WEBINY_VERSION,
|
|
918
1006
|
values
|
|
919
1007
|
});
|
|
920
|
-
|
|
921
1008
|
const storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
|
|
922
1009
|
/**
|
|
923
1010
|
* First we need to update existing entry.
|
|
@@ -949,7 +1036,8 @@ const createContentEntryCrud = params => {
|
|
|
949
1036
|
});
|
|
950
1037
|
}
|
|
951
1038
|
},
|
|
952
|
-
|
|
1039
|
+
|
|
1040
|
+
async deleteEntryRevision(initialModel, revisionId) {
|
|
953
1041
|
const permission = await checkEntryPermissions({
|
|
954
1042
|
rwd: "d"
|
|
955
1043
|
});
|
|
@@ -1005,7 +1093,7 @@ const createContentEntryCrud = params => {
|
|
|
1005
1093
|
}
|
|
1006
1094
|
|
|
1007
1095
|
try {
|
|
1008
|
-
await
|
|
1096
|
+
await onEntryRevisionBeforeDelete.publish({
|
|
1009
1097
|
entry: entryToDelete,
|
|
1010
1098
|
model
|
|
1011
1099
|
});
|
|
@@ -1015,11 +1103,16 @@ const createContentEntryCrud = params => {
|
|
|
1015
1103
|
latestEntry: entryToSetAsLatest,
|
|
1016
1104
|
latestStorageEntry: storageEntryToSetAsLatest
|
|
1017
1105
|
});
|
|
1018
|
-
await
|
|
1106
|
+
await onEntryRevisionAfterDelete.publish({
|
|
1019
1107
|
entry: entryToDelete,
|
|
1020
1108
|
model
|
|
1021
1109
|
});
|
|
1022
1110
|
} catch (ex) {
|
|
1111
|
+
await onEntryRevisionDeleteError.publish({
|
|
1112
|
+
entry: entryToDelete,
|
|
1113
|
+
model,
|
|
1114
|
+
error: ex
|
|
1115
|
+
});
|
|
1023
1116
|
throw new _error.default(ex.message, ex.code || "DELETE_REVISION_ERROR", {
|
|
1024
1117
|
error: ex,
|
|
1025
1118
|
entry: entryToDelete,
|
|
@@ -1029,7 +1122,8 @@ const createContentEntryCrud = params => {
|
|
|
1029
1122
|
});
|
|
1030
1123
|
}
|
|
1031
1124
|
},
|
|
1032
|
-
|
|
1125
|
+
|
|
1126
|
+
async deleteEntry(initialModel, entryId) {
|
|
1033
1127
|
const permission = await checkEntryPermissions({
|
|
1034
1128
|
rwd: "d"
|
|
1035
1129
|
});
|
|
@@ -1053,7 +1147,8 @@ const createContentEntryCrud = params => {
|
|
|
1053
1147
|
entry
|
|
1054
1148
|
});
|
|
1055
1149
|
},
|
|
1056
|
-
|
|
1150
|
+
|
|
1151
|
+
async publishEntry(initialModel, id) {
|
|
1057
1152
|
const permission = await checkEntryPermissions({
|
|
1058
1153
|
pw: "p"
|
|
1059
1154
|
});
|
|
@@ -1073,18 +1168,16 @@ const createContentEntryCrud = params => {
|
|
|
1073
1168
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1074
1169
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1075
1170
|
const currentDate = new Date().toISOString();
|
|
1076
|
-
|
|
1077
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
1171
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
1078
1172
|
status: STATUS_PUBLISHED,
|
|
1079
1173
|
locked: true,
|
|
1080
1174
|
savedOn: currentDate,
|
|
1081
1175
|
publishedOn: currentDate
|
|
1082
1176
|
});
|
|
1083
|
-
|
|
1084
1177
|
let storageEntry = null;
|
|
1085
1178
|
|
|
1086
1179
|
try {
|
|
1087
|
-
await
|
|
1180
|
+
await onEntryBeforePublish.publish({
|
|
1088
1181
|
entry,
|
|
1089
1182
|
model
|
|
1090
1183
|
});
|
|
@@ -1093,13 +1186,18 @@ const createContentEntryCrud = params => {
|
|
|
1093
1186
|
entry,
|
|
1094
1187
|
storageEntry
|
|
1095
1188
|
});
|
|
1096
|
-
await
|
|
1189
|
+
await onEntryAfterPublish.publish({
|
|
1097
1190
|
entry,
|
|
1098
1191
|
storageEntry: result,
|
|
1099
1192
|
model
|
|
1100
1193
|
});
|
|
1101
1194
|
return result;
|
|
1102
1195
|
} catch (ex) {
|
|
1196
|
+
await onEntryPublishError.publish({
|
|
1197
|
+
entry,
|
|
1198
|
+
model,
|
|
1199
|
+
error: ex
|
|
1200
|
+
});
|
|
1103
1201
|
throw new _error.default(ex.message || "Could not publish entry.", ex.code || "PUBLISH_ERROR", {
|
|
1104
1202
|
error: ex,
|
|
1105
1203
|
entry,
|
|
@@ -1109,130 +1207,8 @@ const createContentEntryCrud = params => {
|
|
|
1109
1207
|
});
|
|
1110
1208
|
}
|
|
1111
1209
|
},
|
|
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
1210
|
|
|
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) => {
|
|
1211
|
+
async unpublishEntry(initialModel, id) {
|
|
1236
1212
|
const permission = await checkEntryPermissions({
|
|
1237
1213
|
pw: "u"
|
|
1238
1214
|
});
|
|
@@ -1259,15 +1235,13 @@ const createContentEntryCrud = params => {
|
|
|
1259
1235
|
|
|
1260
1236
|
(0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
|
|
1261
1237
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1262
|
-
|
|
1263
|
-
const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
|
|
1238
|
+
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
1264
1239
|
status: STATUS_UNPUBLISHED
|
|
1265
1240
|
});
|
|
1266
|
-
|
|
1267
1241
|
let storageEntry = null;
|
|
1268
1242
|
|
|
1269
1243
|
try {
|
|
1270
|
-
await
|
|
1244
|
+
await onEntryBeforeUnpublish.publish({
|
|
1271
1245
|
entry,
|
|
1272
1246
|
model
|
|
1273
1247
|
});
|
|
@@ -1276,13 +1250,18 @@ const createContentEntryCrud = params => {
|
|
|
1276
1250
|
entry,
|
|
1277
1251
|
storageEntry
|
|
1278
1252
|
});
|
|
1279
|
-
await
|
|
1253
|
+
await onEntryAfterUnpublish.publish({
|
|
1280
1254
|
entry,
|
|
1281
1255
|
storageEntry: result,
|
|
1282
1256
|
model
|
|
1283
1257
|
});
|
|
1284
1258
|
return result;
|
|
1285
1259
|
} catch (ex) {
|
|
1260
|
+
await onEntryUnpublishError.publish({
|
|
1261
|
+
entry,
|
|
1262
|
+
model,
|
|
1263
|
+
error: ex
|
|
1264
|
+
});
|
|
1286
1265
|
throw new _error.default(ex.message || "Could not unpublish entry.", ex.code || "UNPUBLISH_ERROR", {
|
|
1287
1266
|
originalEntry,
|
|
1288
1267
|
originalStorageEntry,
|
|
@@ -1291,6 +1270,7 @@ const createContentEntryCrud = params => {
|
|
|
1291
1270
|
});
|
|
1292
1271
|
}
|
|
1293
1272
|
}
|
|
1273
|
+
|
|
1294
1274
|
};
|
|
1295
1275
|
};
|
|
1296
1276
|
|