apostrophe 3.61.1 → 3.63.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/CHANGELOG.md +49 -0
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBar.vue +1 -1
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +6 -4
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaEditor.vue +9 -1
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +8 -0
- package/modules/@apostrophecms/area/ui/apos/components/AposWidgetControls.vue +6 -3
- package/modules/@apostrophecms/doc/index.js +256 -7
- package/modules/@apostrophecms/doc/ui/apos/mixins/AposFieldMetaUtilsMixin.js +93 -0
- package/modules/@apostrophecms/doc-type/index.js +78 -12
- package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +9 -1
- package/modules/@apostrophecms/doc-type/ui/apos/logic/AposDocContextMenu.js +24 -6
- package/modules/@apostrophecms/i18n/i18n/en.json +1 -0
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManager.vue +8 -7
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerDisplay.vue +1 -5
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerEditor.vue +5 -2
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerSelections.vue +1 -5
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +4 -2
- package/modules/@apostrophecms/login/index.js +25 -19
- package/modules/@apostrophecms/login/ui/apos/components/AposLoginForm.vue +11 -1
- package/modules/@apostrophecms/login/ui/apos/logic/AposLoginForm.js +46 -2
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalShareDraft.vue +8 -3
- package/modules/@apostrophecms/modal/ui/apos/mixins/AposEditorMixin.js +3 -0
- package/modules/@apostrophecms/page/index.js +118 -27
- package/modules/@apostrophecms/page/ui/apos/components/AposPagesManager.vue +3 -1
- package/modules/@apostrophecms/page/ui/apos/logic/AposPagesManager.js +7 -0
- package/modules/@apostrophecms/page-type/index.js +81 -4
- package/modules/@apostrophecms/permission/index.js +60 -31
- package/modules/@apostrophecms/piece-type/index.js +19 -41
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +9 -1
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposUtilityOperations.vue +16 -1
- package/modules/@apostrophecms/rich-text-widget/index.js +141 -1
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue +8 -0
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapImage.vue +7 -7
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapLink.vue +38 -79
- package/modules/@apostrophecms/rich-text-widget/ui/apos/tiptap-extensions/Link.js +11 -0
- package/modules/@apostrophecms/schema/index.js +9 -0
- package/modules/@apostrophecms/schema/lib/addFieldTypes.js +22 -2
- package/modules/@apostrophecms/schema/ui/apos/components/AposArrayEditor.vue +1 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputArea.vue +4 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputArray.vue +7 -8
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputObject.vue +2 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputSlug.vue +1 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputString.vue +1 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputWrapper.vue +76 -30
- package/modules/@apostrophecms/schema/ui/apos/components/AposSchema.vue +2 -4
- package/modules/@apostrophecms/schema/ui/apos/components/AposSearchList.vue +1 -1
- package/modules/@apostrophecms/schema/ui/apos/logic/AposArrayEditor.js +7 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArea.js +13 -1
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArray.js +5 -1
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputObject.js +21 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRelationship.js +12 -8
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputWrapper.js +35 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposSchema.js +6 -0
- package/modules/@apostrophecms/schema/ui/apos/mixins/AposInputMixin.js +41 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposCellContextMenu.vue +1 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposCheckbox.vue +1 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposTree.vue +7 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposTreeRows.vue +8 -0
- package/modules/@apostrophecms/ui/ui/apos/mixins/AposPublishMixin.js +10 -4
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_inputs.scss +2 -2
- package/modules/@apostrophecms/widget-type/ui/apos/components/AposWidgetEditor.vue +7 -0
- package/modules/@apostrophecms/widget-type/ui/apos/mixins/AposWidgetMixin.js +6 -0
- package/package.json +2 -2
- package/test/areas.js +1 -1
- package/test/assets.js +2 -2
- package/test/attachments.js +2 -2
- package/test/base-module.js +2 -1
- package/test/base-url-env-var.js +2 -2
- package/test/change-doc-ids.js +33 -31
- package/test/command-menu.js +2 -2
- package/test/content-i18n.js +47 -46
- package/test/db.js +2 -2
- package/test/docs.js +301 -126
- package/test/draft-published.js +2 -2
- package/test/email.js +2 -1
- package/test/express.js +3 -2
- package/test/external-front.js +4 -4
- package/test/field-meta.js +363 -0
- package/test/global.js +2 -1
- package/test/http.js +4 -2
- package/test/images.js +87 -88
- package/test/job.js +34 -34
- package/test/locks.js +2 -2
- package/test/login-requirements.js +3 -2
- package/test/middleware-and-route-order.js +2 -2
- package/test/page-type.js +2 -1
- package/test/pages-autocomplete.js +192 -0
- package/test/pages-public-api.js +2 -2
- package/test/pages-rest.js +4 -4
- package/test/pages.js +389 -57
- package/test/parked-pages.js +47 -47
- package/test/permissions.js +76 -0
- package/test/pieces-page-type.js +2 -1
- package/test/pieces-public-api.js +38 -38
- package/test/pieces.js +4 -4
- package/test/published-pages.js +16 -16
- package/test/rich-text-widget.js +164 -0
- package/test/schema-queryBuilders.js +180 -0
- package/test/schemaBuilders.js +4 -4
- package/test/schemas.js +220 -221
- package/test/search.js +2 -2
- package/test/soft-redirects.js +2 -1
- package/test/templates.js +2 -2
- package/test/users.js +2 -1
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apostrophe",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.63.0",
|
|
4
4
|
"description": "The Apostrophe Content Management System.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"pretest": "npm run lint",
|
|
8
|
-
"test": "nyc --reporter=html mocha -t 10000",
|
|
8
|
+
"test": "nyc --reporter=html mocha -t 10000 --ignore=test/assets.js && nyc --reporter=html mocha -t 10000 test/assets.js",
|
|
9
9
|
"eslint": "eslint --ext .js,.vue .",
|
|
10
10
|
"eslint-fix": "npm run eslint -- --fix",
|
|
11
11
|
"i18n": "node scripts/lint-i18n",
|
package/test/areas.js
CHANGED
package/test/assets.js
CHANGED
|
@@ -12,8 +12,6 @@ const {
|
|
|
12
12
|
fillExtraBundles
|
|
13
13
|
} = require('../modules/@apostrophecms/asset/lib/webpack/utils');
|
|
14
14
|
|
|
15
|
-
let apos;
|
|
16
|
-
|
|
17
15
|
const badModules = {
|
|
18
16
|
badModuleConfig: {
|
|
19
17
|
options: {
|
|
@@ -85,6 +83,8 @@ const modules = {
|
|
|
85
83
|
};
|
|
86
84
|
|
|
87
85
|
describe('Assets', function() {
|
|
86
|
+
let apos;
|
|
87
|
+
|
|
88
88
|
const {
|
|
89
89
|
publicFolderPath,
|
|
90
90
|
cacheFolderPath,
|
package/test/attachments.js
CHANGED
package/test/base-module.js
CHANGED
package/test/base-url-env-var.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
const t = require('../test-lib/test.js');
|
|
2
2
|
const assert = require('assert');
|
|
3
|
-
let apos;
|
|
4
|
-
let savedBaseUrl;
|
|
5
3
|
|
|
6
4
|
const config = {
|
|
7
5
|
root: module,
|
|
@@ -11,6 +9,8 @@ const config = {
|
|
|
11
9
|
|
|
12
10
|
describe('Locales', function() {
|
|
13
11
|
this.timeout(t.timeout);
|
|
12
|
+
let apos;
|
|
13
|
+
let savedBaseUrl;
|
|
14
14
|
|
|
15
15
|
before(async function() {
|
|
16
16
|
savedBaseUrl = process.env.APOS_BASE_URL;
|
package/test/change-doc-ids.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
const t = require('../test-lib/test.js');
|
|
2
2
|
const assert = require('assert');
|
|
3
|
-
let apos;
|
|
4
|
-
const articles = []; const categories = [];
|
|
5
3
|
|
|
6
4
|
describe('change-doc-ids', function() {
|
|
7
5
|
|
|
6
|
+
let apos;
|
|
7
|
+
const articles = [];
|
|
8
|
+
const categories = [];
|
|
9
|
+
|
|
8
10
|
this.timeout(t.timeout);
|
|
9
11
|
|
|
10
12
|
after(function() {
|
|
@@ -102,33 +104,33 @@ describe('change-doc-ids', function() {
|
|
|
102
104
|
await sanityCheck(newPageId, newCategoryId);
|
|
103
105
|
});
|
|
104
106
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
assert.strictEqual(newCategory.aposDocId, newCategoryId.replace(/:.+$/, ''));
|
|
107
|
+
async function sanityCheck(newPageId, newCategoryId) {
|
|
108
|
+
const pages = await apos.page.find(apos.task.getReq(), {}).children(true).toArray();
|
|
109
|
+
const test = pages.find(page => page.slug === '/test');
|
|
110
|
+
assert(test);
|
|
111
|
+
assert(test._children[0]);
|
|
112
|
+
assert(!test._children[1]);
|
|
113
|
+
assert.strictEqual(test._children[0].slug, '/test/child');
|
|
114
|
+
if (newPageId) {
|
|
115
|
+
assert.strictEqual(test._id, newPageId);
|
|
116
|
+
const newPageDocId = newPageId.replace(/:.+$/, '');
|
|
117
|
+
assert.strictEqual(test.aposDocId, newPageDocId);
|
|
118
|
+
assert(test.path.includes(newPageDocId));
|
|
119
|
+
assert(test._children[0].path.includes(newPageDocId));
|
|
120
|
+
}
|
|
121
|
+
const articles = await apos.article.find(apos.task.getReq(), {}).sort({ slug: 1 }).toArray();
|
|
122
|
+
assert.strictEqual(articles[0].title, 'Article 0');
|
|
123
|
+
assert(articles[0]._categories);
|
|
124
|
+
assert.strictEqual(articles[0]._categories.length, 2);
|
|
125
|
+
assert(articles[0]._categories.find(category => category.slug === 'category-0'));
|
|
126
|
+
assert(articles[0]._categories.find(category => category.slug === 'category-1'));
|
|
127
|
+
if (newCategoryId) {
|
|
128
|
+
assert.strictEqual(articles[0]._categories[0]._id, newCategoryId);
|
|
129
|
+
const newCategory = articles[0]._categories.find(category => category._id === newCategoryId);
|
|
130
|
+
assert(newCategory);
|
|
131
|
+
assert.strictEqual(newCategory._id, newCategoryId);
|
|
132
|
+
assert.strictEqual(newCategory.aposDocId, newCategoryId.replace(/:.+$/, ''));
|
|
133
|
+
}
|
|
133
134
|
}
|
|
134
|
-
|
|
135
|
+
|
|
136
|
+
});
|
package/test/command-menu.js
CHANGED
|
@@ -684,7 +684,7 @@ describe('Command-Menu', function() {
|
|
|
684
684
|
action: {},
|
|
685
685
|
shortcut: 'c',
|
|
686
686
|
permission: {
|
|
687
|
-
action: '
|
|
687
|
+
action: 'create',
|
|
688
688
|
type: '@apostrophecms/page',
|
|
689
689
|
mode: 'draft'
|
|
690
690
|
}
|
|
@@ -704,7 +704,7 @@ describe('Command-Menu', function() {
|
|
|
704
704
|
action: {},
|
|
705
705
|
shortcut: 'c',
|
|
706
706
|
permission: {
|
|
707
|
-
action: '
|
|
707
|
+
action: 'create',
|
|
708
708
|
type: '@apostrophecms/page',
|
|
709
709
|
mode: 'published'
|
|
710
710
|
}
|
package/test/content-i18n.js
CHANGED
|
@@ -1,56 +1,57 @@
|
|
|
1
1
|
const t = require('../test-lib/test.js');
|
|
2
2
|
const assert = require('assert');
|
|
3
|
-
let apos;
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
4
|
+
describe('content-i18n', function() {
|
|
5
|
+
|
|
6
|
+
let apos;
|
|
7
|
+
|
|
8
|
+
const config = {
|
|
9
|
+
root: module,
|
|
10
|
+
// Wrong port, but that is OK for this test
|
|
11
|
+
baseUrl: 'http://localhost:3000',
|
|
12
|
+
modules: {
|
|
13
|
+
'@apostrophecms/i18n': {
|
|
14
|
+
options: {
|
|
15
|
+
locales: {
|
|
16
|
+
en: {
|
|
17
|
+
label: 'English'
|
|
18
|
+
},
|
|
19
|
+
'en-CA': {
|
|
20
|
+
label: 'Canadian English',
|
|
21
|
+
prefix: '/ca-en'
|
|
22
|
+
},
|
|
23
|
+
'fr-CA': {
|
|
24
|
+
label: 'Canadian French',
|
|
25
|
+
prefix: '/ca-fr'
|
|
26
|
+
},
|
|
27
|
+
'es-MX': {
|
|
28
|
+
label: 'Mexico',
|
|
29
|
+
hostname: 'example.mx'
|
|
30
|
+
}
|
|
27
31
|
}
|
|
28
32
|
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
},
|
|
34
|
+
'@apostrophecms/express': {
|
|
35
|
+
options: {
|
|
36
|
+
// Allows us to inject an X-Forwarded-Host header for test purposes
|
|
37
|
+
trustProxy: true
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
'default-page': {},
|
|
41
|
+
'@apostrophecms/page': {
|
|
42
|
+
options: {
|
|
43
|
+
park: [
|
|
44
|
+
{
|
|
45
|
+
parkedId: 'people',
|
|
46
|
+
type: 'default-page',
|
|
47
|
+
slug: '/people',
|
|
48
|
+
title: 'People'
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
describe('Locales', function() {
|
|
54
|
+
};
|
|
54
55
|
|
|
55
56
|
this.timeout(t.timeout);
|
|
56
57
|
|
package/test/db.js
CHANGED