@webiny/api-apw 5.23.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/LICENSE +21 -0
- package/README.md +33 -0
- package/createApw/createChangeRequestMethods.d.ts +2 -0
- package/createApw/createChangeRequestMethods.js +95 -0
- package/createApw/createCommentMethods.d.ts +2 -0
- package/createApw/createCommentMethods.js +96 -0
- package/createApw/createContentReviewMethods.d.ts +6 -0
- package/createApw/createContentReviewMethods.js +301 -0
- package/createApw/createReviewerMethods.d.ts +2 -0
- package/createApw/createReviewerMethods.js +96 -0
- package/createApw/createWorkflowMethods.d.ts +2 -0
- package/createApw/createWorkflowMethods.js +96 -0
- package/createApw/index.d.ts +2 -0
- package/createApw/index.js +54 -0
- package/index.d.ts +2 -0
- package/index.js +28 -0
- package/package.json +67 -0
- package/plugins/context.d.ts +4 -0
- package/plugins/context.js +89 -0
- package/plugins/createManageCMSPlugin.d.ts +2 -0
- package/plugins/createManageCMSPlugin.js +31 -0
- package/plugins/graphql/changeRequest.gql.d.ts +4 -0
- package/plugins/graphql/changeRequest.gql.js +152 -0
- package/plugins/graphql/comment.gql.d.ts +4 -0
- package/plugins/graphql/comment.gql.js +166 -0
- package/plugins/graphql/contentReview.gql.d.ts +4 -0
- package/plugins/graphql/contentReview.gql.js +224 -0
- package/plugins/graphql/reviewer.gql.d.ts +4 -0
- package/plugins/graphql/reviewer.gql.js +111 -0
- package/plugins/graphql/workflow.gql.d.ts +4 -0
- package/plugins/graphql/workflow.gql.js +199 -0
- package/plugins/graphql.d.ts +3 -0
- package/plugins/graphql.js +84 -0
- package/plugins/hooks/createReviewerFromIdentity.d.ts +2 -0
- package/plugins/hooks/createReviewerFromIdentity.js +44 -0
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.d.ts +2 -0
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +66 -0
- package/plugins/hooks/deleteCommentsAfterChangeRequest.d.ts +2 -0
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js +58 -0
- package/plugins/hooks/extendPbPageSchema.d.ts +4 -0
- package/plugins/hooks/extendPbPageSchema.js +24 -0
- package/plugins/hooks/index.d.ts +4 -0
- package/plugins/hooks/index.js +68 -0
- package/plugins/hooks/initializeContentReviewSteps.d.ts +7 -0
- package/plugins/hooks/initializeContentReviewSteps.js +70 -0
- package/plugins/hooks/linkWorkflowToPage.d.ts +9 -0
- package/plugins/hooks/linkWorkflowToPage.js +154 -0
- package/plugins/hooks/updatePendingChangeRequests.d.ts +2 -0
- package/plugins/hooks/updatePendingChangeRequests.js +107 -0
- package/plugins/utils.d.ts +15 -0
- package/plugins/utils.js +69 -0
- package/storageOperations/changeRequestStorageOperations.d.ts +3 -0
- package/storageOperations/changeRequestStorageOperations.js +96 -0
- package/storageOperations/commentStorageOperations.d.ts +3 -0
- package/storageOperations/commentStorageOperations.js +101 -0
- package/storageOperations/contentReviewStorageOperations.d.ts +3 -0
- package/storageOperations/contentReviewStorageOperations.js +72 -0
- package/storageOperations/index.d.ts +9 -0
- package/storageOperations/index.js +63 -0
- package/storageOperations/models/changeRequest.model.d.ts +7 -0
- package/storageOperations/models/changeRequest.model.js +52 -0
- package/storageOperations/models/comment.model.d.ts +9 -0
- package/storageOperations/models/comment.model.js +37 -0
- package/storageOperations/models/contentModelPluginFactory.d.ts +17 -0
- package/storageOperations/models/contentModelPluginFactory.js +33 -0
- package/storageOperations/models/contentReview.model.d.ts +25 -0
- package/storageOperations/models/contentReview.model.js +181 -0
- package/storageOperations/models/index.d.ts +1 -0
- package/storageOperations/models/index.js +87 -0
- package/storageOperations/models/reviewer.model.d.ts +7 -0
- package/storageOperations/models/reviewer.model.js +48 -0
- package/storageOperations/models/utils.d.ts +3 -0
- package/storageOperations/models/utils.js +35 -0
- package/storageOperations/models/workflow.model.d.ts +17 -0
- package/storageOperations/models/workflow.model.js +204 -0
- package/storageOperations/reviewerStorageOperations.d.ts +3 -0
- package/storageOperations/reviewerStorageOperations.js +72 -0
- package/storageOperations/types.d.ts +34 -0
- package/storageOperations/types.js +5 -0
- package/storageOperations/workflowStorageOperations.d.ts +3 -0
- package/storageOperations/workflowStorageOperations.js +72 -0
- package/types.d.ts +646 -0
- package/types.js +63 -0
- package/utils/errors.d.ts +16 -0
- package/utils/errors.js +75 -0
- package/utils/fieldResolver.d.ts +15 -0
- package/utils/fieldResolver.js +58 -0
- package/utils/resolve.d.ts +3 -0
- package/utils/resolve.js +18 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.default = void 0;
|
9
|
+
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
|
+
|
12
|
+
var _CmsModelPlugin = require("@webiny/api-headless-cms/content/plugins/CmsModelPlugin");
|
13
|
+
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
15
|
+
|
16
|
+
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; }
|
17
|
+
|
18
|
+
const contentModelPluginFactory = params => {
|
19
|
+
const {
|
20
|
+
group,
|
21
|
+
locale,
|
22
|
+
tenant,
|
23
|
+
modelDefinition
|
24
|
+
} = params;
|
25
|
+
return new _CmsModelPlugin.CmsModelPlugin(_objectSpread({
|
26
|
+
group,
|
27
|
+
locale,
|
28
|
+
tenant
|
29
|
+
}, modelDefinition));
|
30
|
+
};
|
31
|
+
|
32
|
+
var _default = contentModelPluginFactory;
|
33
|
+
exports.default = _default;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
export declare const createContentReviewModelDefinition: ({ reviewerModelId }: {
|
2
|
+
reviewerModelId: any;
|
3
|
+
}) => {
|
4
|
+
name: string;
|
5
|
+
modelId: string;
|
6
|
+
titleFieldId: string;
|
7
|
+
layout: string[][];
|
8
|
+
fields: (import("@webiny/api-headless-cms/types").CmsModelField | {
|
9
|
+
id: string;
|
10
|
+
label: string;
|
11
|
+
type: string;
|
12
|
+
settings: {
|
13
|
+
fields: any;
|
14
|
+
layout: any;
|
15
|
+
};
|
16
|
+
listValidation: any[];
|
17
|
+
validation: any[];
|
18
|
+
fieldId: string;
|
19
|
+
multipleValues: boolean;
|
20
|
+
predefinedValues: {
|
21
|
+
values: any[];
|
22
|
+
enabled: boolean;
|
23
|
+
};
|
24
|
+
})[];
|
25
|
+
};
|
@@ -0,0 +1,181 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createContentReviewModelDefinition = void 0;
|
7
|
+
|
8
|
+
var _utils = require("./utils");
|
9
|
+
|
10
|
+
var _workflow = require("./workflow.model");
|
11
|
+
|
12
|
+
const contentField = fields => (0, _utils.createModelField)({
|
13
|
+
label: "Content",
|
14
|
+
parent: "contentReview",
|
15
|
+
type: "object",
|
16
|
+
multipleValues: false,
|
17
|
+
settings: {
|
18
|
+
fields
|
19
|
+
},
|
20
|
+
validation: [{
|
21
|
+
name: "required",
|
22
|
+
message: "Value is required."
|
23
|
+
}]
|
24
|
+
});
|
25
|
+
|
26
|
+
const contentStatus = () => (0, _utils.createModelField)({
|
27
|
+
label: "Status",
|
28
|
+
parent: "contentReview",
|
29
|
+
type: "text",
|
30
|
+
predefinedValues: {
|
31
|
+
enabled: true,
|
32
|
+
values: [{
|
33
|
+
label: "Under review",
|
34
|
+
value: "underReview"
|
35
|
+
}, {
|
36
|
+
label: "Ready to be published",
|
37
|
+
value: "readyToBePublished"
|
38
|
+
}, {
|
39
|
+
label: "Published",
|
40
|
+
value: "published"
|
41
|
+
}]
|
42
|
+
},
|
43
|
+
validation: [{
|
44
|
+
name: "required",
|
45
|
+
message: "Value is required."
|
46
|
+
}]
|
47
|
+
});
|
48
|
+
|
49
|
+
const contentIdField = () => (0, _utils.createModelField)({
|
50
|
+
label: "Id",
|
51
|
+
type: "text",
|
52
|
+
parent: "contentReview Content",
|
53
|
+
validation: [{
|
54
|
+
name: "required",
|
55
|
+
message: "Value is required."
|
56
|
+
}]
|
57
|
+
});
|
58
|
+
|
59
|
+
const contentTypeField = () => (0, _utils.createModelField)({
|
60
|
+
label: "Type",
|
61
|
+
type: "text",
|
62
|
+
parent: "contentReview Type",
|
63
|
+
predefinedValues: {
|
64
|
+
enabled: true,
|
65
|
+
values: [{
|
66
|
+
label: "Page",
|
67
|
+
value: "page"
|
68
|
+
}, {
|
69
|
+
value: "cms-entry",
|
70
|
+
label: "CMS Entry"
|
71
|
+
}]
|
72
|
+
},
|
73
|
+
validation: [{
|
74
|
+
name: "required",
|
75
|
+
message: "Value is required."
|
76
|
+
}]
|
77
|
+
}); // TODO: Find a way to store JSON value without "object" field.
|
78
|
+
|
79
|
+
|
80
|
+
const contentSettingsField = () => (0, _utils.createModelField)({
|
81
|
+
label: "Settings",
|
82
|
+
type: "text",
|
83
|
+
parent: "contentReview Settings"
|
84
|
+
});
|
85
|
+
|
86
|
+
const stepStatusField = () => ({
|
87
|
+
multipleValues: false,
|
88
|
+
listValidation: [],
|
89
|
+
renderer: {
|
90
|
+
name: "radio-buttons"
|
91
|
+
},
|
92
|
+
predefinedValues: {
|
93
|
+
enabled: true,
|
94
|
+
values: [{
|
95
|
+
value: "done",
|
96
|
+
label: "Steps done"
|
97
|
+
}, {
|
98
|
+
value: "active",
|
99
|
+
label: "Step active"
|
100
|
+
}, {
|
101
|
+
value: "inactive",
|
102
|
+
label: "Step inactive"
|
103
|
+
}]
|
104
|
+
},
|
105
|
+
label: "Status",
|
106
|
+
id: "contentReview_steps_status",
|
107
|
+
type: "text",
|
108
|
+
validation: [{
|
109
|
+
name: "required",
|
110
|
+
message: "Value is required."
|
111
|
+
}],
|
112
|
+
fieldId: "status"
|
113
|
+
});
|
114
|
+
|
115
|
+
const stepPendingChangeRequests = () => (0, _utils.createModelField)({
|
116
|
+
label: "Pending change requests",
|
117
|
+
type: "number",
|
118
|
+
parent: "contentReview Step",
|
119
|
+
validation: [{
|
120
|
+
name: "required",
|
121
|
+
message: "Value is required."
|
122
|
+
}]
|
123
|
+
});
|
124
|
+
|
125
|
+
const stepSignOffProvidedOn = () => (0, _utils.createModelField)({
|
126
|
+
label: "Sign off provided on",
|
127
|
+
type: "datetime",
|
128
|
+
parent: "contentReview Step"
|
129
|
+
});
|
130
|
+
|
131
|
+
const stepSignOffProvidedBy = fields => (0, _utils.createModelField)({
|
132
|
+
label: "Sign off provided By",
|
133
|
+
type: "object",
|
134
|
+
parent: "contentReview Step",
|
135
|
+
multipleValues: false,
|
136
|
+
settings: {
|
137
|
+
fields
|
138
|
+
}
|
139
|
+
});
|
140
|
+
|
141
|
+
const stepSignOffProvidedById = () => (0, _utils.createModelField)({
|
142
|
+
label: "Id",
|
143
|
+
type: "text",
|
144
|
+
parent: "contentReview Step"
|
145
|
+
});
|
146
|
+
|
147
|
+
const stepSignOffProvidedByDisplayName = () => (0, _utils.createModelField)({
|
148
|
+
label: "DisplayName",
|
149
|
+
type: "text",
|
150
|
+
parent: "contentReview Step"
|
151
|
+
});
|
152
|
+
|
153
|
+
const stepsField = fields => ({
|
154
|
+
id: "contentReview_steps",
|
155
|
+
label: "Steps",
|
156
|
+
type: "object",
|
157
|
+
settings: {
|
158
|
+
fields,
|
159
|
+
layout: fields.map(field => [field.fieldId])
|
160
|
+
},
|
161
|
+
listValidation: [],
|
162
|
+
validation: [],
|
163
|
+
fieldId: "steps",
|
164
|
+
multipleValues: true,
|
165
|
+
predefinedValues: {
|
166
|
+
values: [],
|
167
|
+
enabled: false
|
168
|
+
}
|
169
|
+
});
|
170
|
+
|
171
|
+
const createContentReviewModelDefinition = ({
|
172
|
+
reviewerModelId
|
173
|
+
}) => ({
|
174
|
+
name: "APW - Content Review",
|
175
|
+
modelId: "apwContentReviewModelDefinition",
|
176
|
+
titleFieldId: "content",
|
177
|
+
layout: [["contentReview_content"], ["contentReview_reviewRequestedBy"], ["contentReview_steps"], ["contentReview_changeRequested"]],
|
178
|
+
fields: [contentField([contentIdField(), contentTypeField(), contentSettingsField()]), contentStatus(), stepsField([(0, _workflow.stepTitleField)(), (0, _workflow.stepTypeField)(), (0, _workflow.stepSlugField)(), (0, _workflow.stepReviewersField)(reviewerModelId), stepStatusField(), stepPendingChangeRequests(), stepSignOffProvidedOn(), stepSignOffProvidedBy([stepSignOffProvidedById(), stepSignOffProvidedByDisplayName()])])]
|
179
|
+
});
|
180
|
+
|
181
|
+
exports.createContentReviewModelDefinition = createContentReviewModelDefinition;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const createApwModels: (context: any) => void;
|
@@ -0,0 +1,87 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.createApwModels = void 0;
|
9
|
+
|
10
|
+
var _CmsGroupPlugin = require("@webiny/api-headless-cms/content/plugins/CmsGroupPlugin");
|
11
|
+
|
12
|
+
var _contentModelPluginFactory = _interopRequireDefault(require("./contentModelPluginFactory"));
|
13
|
+
|
14
|
+
var _workflow = require("./workflow.model");
|
15
|
+
|
16
|
+
var _contentReview = require("./contentReview.model");
|
17
|
+
|
18
|
+
var _reviewer = require("./reviewer.model");
|
19
|
+
|
20
|
+
var _comment = require("./comment.model");
|
21
|
+
|
22
|
+
var _changeRequest = require("./changeRequest.model");
|
23
|
+
|
24
|
+
const createApwModels = context => {
|
25
|
+
/**
|
26
|
+
* This should never happen in the actual project.
|
27
|
+
* It is to make sure that we load setup context before the CRUD init in our internal code.
|
28
|
+
*/
|
29
|
+
if (!context.cms) {
|
30
|
+
console.warn("Creating model before cms init.");
|
31
|
+
return;
|
32
|
+
}
|
33
|
+
|
34
|
+
context.security.disableAuthorization();
|
35
|
+
/**
|
36
|
+
* TODO:@ashutosh
|
37
|
+
* We need to move these plugin in an installation plugin
|
38
|
+
*/
|
39
|
+
|
40
|
+
const groupId = "contentModelGroup_apw";
|
41
|
+
/**
|
42
|
+
* Create a CmsGroup.
|
43
|
+
*/
|
44
|
+
|
45
|
+
const cmsGroupPlugin = new _CmsGroupPlugin.CmsGroupPlugin({
|
46
|
+
id: groupId,
|
47
|
+
slug: "apw",
|
48
|
+
name: "APW",
|
49
|
+
description: "Group for Advanced Publishing Workflow"
|
50
|
+
});
|
51
|
+
/**
|
52
|
+
* Create CmsModel plugins.
|
53
|
+
*/
|
54
|
+
|
55
|
+
const changeRequestModelDefinition = (0, _changeRequest.createChangeRequestModelDefinition)();
|
56
|
+
const reviewerModelDefinition = (0, _reviewer.createReviewerModelDefinition)();
|
57
|
+
const workflowModelDefinition = (0, _workflow.createWorkflowModelDefinition)({
|
58
|
+
reviewerModelId: reviewerModelDefinition.modelId
|
59
|
+
});
|
60
|
+
const commentModelDefinition = (0, _comment.createCommentModelDefinition)({
|
61
|
+
modelId: changeRequestModelDefinition.modelId
|
62
|
+
});
|
63
|
+
const contentReviewModelDefinition = (0, _contentReview.createContentReviewModelDefinition)({
|
64
|
+
reviewerModelId: reviewerModelDefinition.modelId
|
65
|
+
});
|
66
|
+
const modelDefinitions = [workflowModelDefinition, contentReviewModelDefinition, reviewerModelDefinition, changeRequestModelDefinition, commentModelDefinition];
|
67
|
+
const cmsModelPlugins = [];
|
68
|
+
|
69
|
+
for (const modelDefinition of modelDefinitions) {
|
70
|
+
const cmsModelPlugin = (0, _contentModelPluginFactory.default)({
|
71
|
+
group: cmsGroupPlugin.contentModelGroup,
|
72
|
+
tenant: context.tenancy.getCurrentTenant().id,
|
73
|
+
locale: context.i18nContent.locale.code,
|
74
|
+
modelDefinition
|
75
|
+
});
|
76
|
+
cmsModelPlugins.push(cmsModelPlugin);
|
77
|
+
}
|
78
|
+
/**
|
79
|
+
* Register them so that they are accessible in cms context
|
80
|
+
*/
|
81
|
+
|
82
|
+
|
83
|
+
context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);
|
84
|
+
context.security.enableAuthorization();
|
85
|
+
};
|
86
|
+
|
87
|
+
exports.createApwModels = createApwModels;
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createReviewerModelDefinition = void 0;
|
7
|
+
|
8
|
+
var _utils = require("./utils");
|
9
|
+
|
10
|
+
const idField = () => (0, _utils.createModelField)({
|
11
|
+
label: "Identity Id",
|
12
|
+
type: "text",
|
13
|
+
parent: "reviewer",
|
14
|
+
validation: [{
|
15
|
+
message: "Value is required.",
|
16
|
+
name: "required"
|
17
|
+
}]
|
18
|
+
});
|
19
|
+
|
20
|
+
const displayNameField = () => (0, _utils.createModelField)({
|
21
|
+
label: "Display Name",
|
22
|
+
type: "text",
|
23
|
+
parent: "reviewer",
|
24
|
+
validation: [{
|
25
|
+
message: "Value is required.",
|
26
|
+
name: "required"
|
27
|
+
}]
|
28
|
+
});
|
29
|
+
|
30
|
+
const typeField = () => (0, _utils.createModelField)({
|
31
|
+
label: "Type",
|
32
|
+
type: "text",
|
33
|
+
parent: "reviewer",
|
34
|
+
validation: [{
|
35
|
+
message: "Value is required.",
|
36
|
+
name: "required"
|
37
|
+
}]
|
38
|
+
});
|
39
|
+
|
40
|
+
const createReviewerModelDefinition = () => ({
|
41
|
+
name: "APW - Reviewer",
|
42
|
+
modelId: "apwReviewerModelDefinition",
|
43
|
+
titleFieldId: "displayName",
|
44
|
+
layout: [["reviewer_id"], ["reviewer_displayName"]],
|
45
|
+
fields: [idField(), displayNameField(), typeField()]
|
46
|
+
});
|
47
|
+
|
48
|
+
exports.createReviewerModelDefinition = createReviewerModelDefinition;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.createModelField = void 0;
|
9
|
+
|
10
|
+
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
11
|
+
|
12
|
+
const createModelField = params => {
|
13
|
+
const {
|
14
|
+
label,
|
15
|
+
type,
|
16
|
+
parent
|
17
|
+
} = params;
|
18
|
+
const fieldId = (0, _camelCase.default)(label);
|
19
|
+
return {
|
20
|
+
id: `${(0, _camelCase.default)(parent)}_${fieldId}`,
|
21
|
+
fieldId,
|
22
|
+
label,
|
23
|
+
type,
|
24
|
+
settings: params.settings || {},
|
25
|
+
listValidation: params.listValidation || [],
|
26
|
+
validation: params.validation || [],
|
27
|
+
multipleValues: params.multipleValues || false,
|
28
|
+
predefinedValues: params.predefinedValues || {
|
29
|
+
values: [],
|
30
|
+
enabled: false
|
31
|
+
}
|
32
|
+
};
|
33
|
+
};
|
34
|
+
|
35
|
+
exports.createModelField = createModelField;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
export declare const stepTitleField: () => import("@webiny/api-headless-cms/types").CmsModelField;
|
2
|
+
export declare const stepTypeField: () => import("@webiny/api-headless-cms/types").CmsModelField;
|
3
|
+
export declare const stepSlugField: () => import("@webiny/api-headless-cms/types").CmsModelField;
|
4
|
+
export declare const stepReviewersField: (reviewerModelId: any) => import("@webiny/api-headless-cms/types").CmsModelField;
|
5
|
+
export declare const createWorkflowModelDefinition: ({ reviewerModelId }: {
|
6
|
+
reviewerModelId: any;
|
7
|
+
}) => {
|
8
|
+
name: string;
|
9
|
+
/**
|
10
|
+
* Id of the model cannot be appWorkflow because it clashes with the GraphQL types for APW.
|
11
|
+
*/
|
12
|
+
modelId: string;
|
13
|
+
layout: string[][];
|
14
|
+
titleFieldId: string;
|
15
|
+
description: any;
|
16
|
+
fields: import("@webiny/api-headless-cms/types").CmsModelField[];
|
17
|
+
};
|
@@ -0,0 +1,204 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.stepTypeField = exports.stepTitleField = exports.stepSlugField = exports.stepReviewersField = exports.createWorkflowModelDefinition = void 0;
|
7
|
+
|
8
|
+
var _utils = require("./utils");
|
9
|
+
|
10
|
+
const titleField = () => (0, _utils.createModelField)({
|
11
|
+
label: "Title",
|
12
|
+
type: "text",
|
13
|
+
parent: "workflow",
|
14
|
+
validation: [{
|
15
|
+
message: "Value is required.",
|
16
|
+
name: "required"
|
17
|
+
}]
|
18
|
+
});
|
19
|
+
|
20
|
+
const stepsField = fields => (0, _utils.createModelField)({
|
21
|
+
label: "Steps",
|
22
|
+
type: "object",
|
23
|
+
parent: "workflow",
|
24
|
+
settings: {
|
25
|
+
fields
|
26
|
+
},
|
27
|
+
multipleValues: true
|
28
|
+
});
|
29
|
+
|
30
|
+
const stepTitleField = () => (0, _utils.createModelField)({
|
31
|
+
label: "Title",
|
32
|
+
type: "text",
|
33
|
+
parent: "workflow steps",
|
34
|
+
validation: [{
|
35
|
+
name: "required",
|
36
|
+
message: "Value is required."
|
37
|
+
}]
|
38
|
+
});
|
39
|
+
|
40
|
+
exports.stepTitleField = stepTitleField;
|
41
|
+
|
42
|
+
const stepTypeField = () => (0, _utils.createModelField)({
|
43
|
+
label: "Type",
|
44
|
+
type: "text",
|
45
|
+
parent: "workflow steps",
|
46
|
+
predefinedValues: {
|
47
|
+
enabled: true,
|
48
|
+
values: [{
|
49
|
+
value: "mandatoryBlocking",
|
50
|
+
label: "Mandatory, blocking - An approval from a reviewer is required before being able to move to the next step and publish the content. "
|
51
|
+
}, {
|
52
|
+
value: "mandatoryNonBlocking",
|
53
|
+
label: "Mandatory, non-blocking - An approval from a reviewer is to publish the content, but the next step in the review workflow is not blocked. "
|
54
|
+
}, {
|
55
|
+
value: "notMandatory",
|
56
|
+
label: "Not mandatory - This is an optional review step. The content can be published regardless if an approval is provided or not."
|
57
|
+
}]
|
58
|
+
},
|
59
|
+
validation: [{
|
60
|
+
name: "required",
|
61
|
+
message: "Value is required."
|
62
|
+
}]
|
63
|
+
});
|
64
|
+
|
65
|
+
exports.stepTypeField = stepTypeField;
|
66
|
+
|
67
|
+
const stepSlugField = () => (0, _utils.createModelField)({
|
68
|
+
label: "Slug",
|
69
|
+
type: "text",
|
70
|
+
parent: "workflow steps",
|
71
|
+
validation: [{
|
72
|
+
name: "required",
|
73
|
+
message: "Value is required."
|
74
|
+
}]
|
75
|
+
});
|
76
|
+
|
77
|
+
exports.stepSlugField = stepSlugField;
|
78
|
+
|
79
|
+
const stepReviewersField = reviewerModelId => (0, _utils.createModelField)({
|
80
|
+
label: "Reviewers",
|
81
|
+
type: "ref",
|
82
|
+
parent: "workflow steps",
|
83
|
+
multipleValues: true,
|
84
|
+
settings: {
|
85
|
+
models: [{
|
86
|
+
modelId: reviewerModelId
|
87
|
+
}]
|
88
|
+
},
|
89
|
+
listValidation: [{
|
90
|
+
name: "minLength",
|
91
|
+
message: "Value is too short.",
|
92
|
+
settings: {
|
93
|
+
value: "1"
|
94
|
+
}
|
95
|
+
}]
|
96
|
+
});
|
97
|
+
|
98
|
+
exports.stepReviewersField = stepReviewersField;
|
99
|
+
|
100
|
+
const scopeField = fields => (0, _utils.createModelField)({
|
101
|
+
type: "object",
|
102
|
+
label: "Scope",
|
103
|
+
parent: "workflow",
|
104
|
+
settings: {
|
105
|
+
fields
|
106
|
+
}
|
107
|
+
});
|
108
|
+
|
109
|
+
const scopeTypeField = () => (0, _utils.createModelField)({
|
110
|
+
label: "Type",
|
111
|
+
parent: "workflow scope",
|
112
|
+
type: "text",
|
113
|
+
validation: [{
|
114
|
+
name: "required",
|
115
|
+
message: "Value is required."
|
116
|
+
}],
|
117
|
+
predefinedValues: {
|
118
|
+
enabled: true,
|
119
|
+
values: [{
|
120
|
+
value: "default",
|
121
|
+
label: "Default - Catch all scope that applies to all content that's being published."
|
122
|
+
}, {
|
123
|
+
value: "pb",
|
124
|
+
label: "Page category (Page Builder only) - The workflow will apply to all pages inside specific categories."
|
125
|
+
}, {
|
126
|
+
value: "cms",
|
127
|
+
label: "Content model (Headless CMS only) - The workflow will apply to all the content inside the specific content models. "
|
128
|
+
}]
|
129
|
+
}
|
130
|
+
});
|
131
|
+
|
132
|
+
const scopeDataField = fields => (0, _utils.createModelField)({
|
133
|
+
label: "Data",
|
134
|
+
parent: "workflow scope",
|
135
|
+
type: "object",
|
136
|
+
settings: {
|
137
|
+
fields
|
138
|
+
}
|
139
|
+
});
|
140
|
+
|
141
|
+
const scopeDataPbCategories = () => (0, _utils.createModelField)({
|
142
|
+
label: "Categories",
|
143
|
+
parent: "workflow scope data",
|
144
|
+
type: "text",
|
145
|
+
multipleValues: true
|
146
|
+
});
|
147
|
+
|
148
|
+
const scopeDataPbPages = () => (0, _utils.createModelField)({
|
149
|
+
label: "Pages",
|
150
|
+
parent: "workflow scope data",
|
151
|
+
type: "text",
|
152
|
+
multipleValues: true
|
153
|
+
});
|
154
|
+
|
155
|
+
const scopeDataCmsModels = () => (0, _utils.createModelField)({
|
156
|
+
label: "Models",
|
157
|
+
parent: "workflow scope data",
|
158
|
+
type: "text",
|
159
|
+
multipleValues: true
|
160
|
+
});
|
161
|
+
|
162
|
+
const scopeDataCmsEntries = () => (0, _utils.createModelField)({
|
163
|
+
label: "Category",
|
164
|
+
parent: "workflow scope data",
|
165
|
+
type: "text",
|
166
|
+
multipleValues: true
|
167
|
+
});
|
168
|
+
|
169
|
+
const applicationField = () => (0, _utils.createModelField)({
|
170
|
+
parent: "workflow",
|
171
|
+
type: "text",
|
172
|
+
label: "App",
|
173
|
+
validation: [{
|
174
|
+
name: "required",
|
175
|
+
message: "Value is required."
|
176
|
+
}],
|
177
|
+
predefinedValues: {
|
178
|
+
enabled: true,
|
179
|
+
values: [{
|
180
|
+
label: "Page Builder",
|
181
|
+
value: "pageBuilder"
|
182
|
+
}, {
|
183
|
+
label: "Headless CMS",
|
184
|
+
value: "cms"
|
185
|
+
}]
|
186
|
+
}
|
187
|
+
});
|
188
|
+
|
189
|
+
const createWorkflowModelDefinition = ({
|
190
|
+
reviewerModelId
|
191
|
+
}) => ({
|
192
|
+
name: "APW - Workflow",
|
193
|
+
|
194
|
+
/**
|
195
|
+
* Id of the model cannot be appWorkflow because it clashes with the GraphQL types for APW.
|
196
|
+
*/
|
197
|
+
modelId: "apwWorkflowModelDefinition",
|
198
|
+
layout: [["workflow_title"], ["workflow_steps"], ["workflow_scope"], ["workflow_app"]],
|
199
|
+
titleFieldId: "title",
|
200
|
+
description: null,
|
201
|
+
fields: [titleField(), stepsField([stepTitleField(), stepTypeField(), stepSlugField(), stepReviewersField(reviewerModelId)]), scopeField([scopeTypeField(), scopeDataField([scopeDataPbCategories(), scopeDataPbPages(), scopeDataCmsModels(), scopeDataCmsEntries()])]), applicationField()]
|
202
|
+
});
|
203
|
+
|
204
|
+
exports.createWorkflowModelDefinition = createWorkflowModelDefinition;
|