apostrophe 3.34.0 → 3.35.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/defaults.js +2 -1
  3. package/index.js +2 -1
  4. package/modules/@apostrophecms/admin-bar/index.js +74 -0
  5. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +16 -6
  6. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextModeAndSettings.vue +24 -1
  7. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextTitle.vue +15 -0
  8. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextUndoRedo.vue +20 -18
  9. package/modules/@apostrophecms/area/ui/apos/components/AposAreaExpandedMenu.vue +35 -0
  10. package/modules/@apostrophecms/asset/lib/globalIcons.js +41 -17
  11. package/modules/@apostrophecms/command-menu/index.js +375 -0
  12. package/modules/@apostrophecms/command-menu/ui/apos/apps/AposCommandMenu.js +34 -0
  13. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuKey.vue +94 -0
  14. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuKeyList.vue +106 -0
  15. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuShortcut.vue +223 -0
  16. package/modules/@apostrophecms/command-menu/ui/apos/components/TheAposCommandMenu.vue +116 -0
  17. package/modules/@apostrophecms/doc-type/index.js +117 -1
  18. package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocContextMenu.vue +7 -0
  19. package/modules/@apostrophecms/i18n/i18n/de.json +446 -0
  20. package/modules/@apostrophecms/i18n/i18n/en.json +27 -0
  21. package/modules/@apostrophecms/i18n/i18n/es.json +19 -0
  22. package/modules/@apostrophecms/i18n/i18n/fr.json +19 -0
  23. package/modules/@apostrophecms/i18n/i18n/pt-BR.json +19 -0
  24. package/modules/@apostrophecms/i18n/i18n/sk.json +19 -0
  25. package/modules/@apostrophecms/image/index.js +7 -0
  26. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManager.vue +2 -0
  27. package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +11 -0
  28. package/modules/@apostrophecms/login/index.js +1 -1
  29. package/modules/@apostrophecms/modal/ui/apos/apps/AposModals.js +10 -1
  30. package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +38 -3
  31. package/modules/@apostrophecms/modal/ui/apos/components/TheAposModals.vue +32 -2
  32. package/modules/@apostrophecms/page/index.js +37 -0
  33. package/modules/@apostrophecms/page/ui/apos/components/AposPagesManager.vue +4 -0
  34. package/modules/@apostrophecms/piece-type/index.js +145 -20
  35. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +5 -1
  36. package/modules/@apostrophecms/rich-text-widget/index.js +153 -5
  37. package/modules/@apostrophecms/rich-text-widget/ui/apos/apps/AposRichTextPermalinkResolver.js +28 -0
  38. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue +80 -10
  39. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapAnchor.vue +253 -0
  40. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapLink.vue +134 -24
  41. package/modules/@apostrophecms/rich-text-widget/ui/apos/tiptap-extensions/Anchor.js +59 -0
  42. package/modules/@apostrophecms/rich-text-widget/ui/apos/tiptap-extensions/Default.js +12 -4
  43. package/modules/@apostrophecms/rich-text-widget/ui/apos/tiptap-extensions/ListItem.js +6 -0
  44. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRelationship.vue +4 -2
  45. package/modules/@apostrophecms/template/views/outerLayoutBase.html +1 -0
  46. package/modules/@apostrophecms/ui/ui/apos/components/AposCheckbox.vue +1 -1
  47. package/modules/@apostrophecms/user/index.js +24 -8
  48. package/modules/@apostrophecms/util/index.js +13 -0
  49. package/package.json +2 -2
  50. package/test/command-menu.js +877 -0
  51. package/test/concurrent-array-relationships.js +0 -1
  52. package/test/users.js +21 -0
  53. package/test/utils/commands.js +204 -0
@@ -89,7 +89,6 @@ describe('Concurrent Array Joins', function() {
89
89
  for (let i = 0; (i < 10); i++) {
90
90
  const person = result[i];
91
91
  assert.strictEqual(person.title, `Hobbyist ${i}`);
92
- console.log(person);
93
92
  assert.strictEqual(person.hobbies.length, 1);
94
93
  assert.strictEqual(person.hobbies[0].name, `Hobby ${i}`);
95
94
  assert(person.hobbies[0]._friends);
package/test/users.js CHANGED
@@ -98,6 +98,27 @@ describe('Users', function() {
98
98
  }
99
99
  });
100
100
 
101
+ it('should verify a user password created with former credential package', async function() {
102
+ const req = apos.task.getReq();
103
+ const user = apos.user.newInstance();
104
+
105
+ user.title = 'Old User';
106
+ user.username = 'olduser';
107
+ user.password = 'passwordThatWentThroughOldCredentialPackageHashing';
108
+ user.email = 'old@user.com';
109
+ user.role = 'admin';
110
+
111
+ await apos.user.insert(req, user);
112
+
113
+ // A password hash that were generated by the former credential package:
114
+ const oldPasswordHashSimulated =
115
+ '{"hash":"/1GntJjtkMY1iPmQY1gn9f3bOZ5tb2qFL+x4qsDerZq2JL8+12TERR4/xqh246wBb+QJwwIRsF/6E+eccshsLxT/","salt":"GJHukLNaG6xDgdIpxVOpqV7xQLQM7e5xnhDW7oaUOe7mTicr7Ca76M4uUJalN/cQ68CE9O7yXZ5WJOz4RN/udcX0","keyLength":66,"hashMethod":"pbkdf2","iterations":2853053}';
116
+
117
+ await apos.user.safe.update({ username: 'olduser' }, { $set: { passwordHash: oldPasswordHashSimulated } });
118
+ await apos.user.verifyPassword(user, 'passwordThatWentThroughOldCredentialPackageHashing');
119
+ await apos.user.safe.remove({ username: 'olduser' });
120
+ });
121
+
101
122
  it('should not be able to insert a new user if their email already exists', async function() {
102
123
  assert(apos.user.newInstance);
103
124
  const user = apos.user.newInstance();
@@ -0,0 +1,204 @@
1
+ const moduleA = {
2
+ commands: {
3
+ add: {
4
+ '@apostrophecms/command-menu:toggle-shortcuts': {
5
+ type: 'item',
6
+ label: 'commandMenuShortcutToggleShortcuts',
7
+ action: {
8
+ type: 'toggle-shortcuts',
9
+ payload: {}
10
+ },
11
+ shortcut: 'Shift+K ?'
12
+ }
13
+ },
14
+ modal: {
15
+ default: {
16
+ '@apostrophecms/command-menu:content': {
17
+ label: 'commandMenuContent',
18
+ commands: [
19
+ '@apostrophecms/command-menu:undo',
20
+ '@apostrophecms/command-menu:redo',
21
+ '@apostrophecms/command-menu:toggle-shortcuts'
22
+ ]
23
+ }
24
+ }
25
+ }
26
+ }
27
+ };
28
+ const moduleB = {
29
+ commands: {
30
+ add: {
31
+ '@apostrophecms/command-menu:test': {
32
+ type: 'item',
33
+ label: 'commandMenuShortcutTest',
34
+ action: {
35
+ type: 'test',
36
+ payload: {}
37
+ },
38
+ shortcut: 'Shift+G'
39
+ }
40
+ },
41
+ modal: {
42
+ default: {
43
+ '@apostrophecms/command-menu:content': {
44
+ label: 'commandMenuContent',
45
+ commands: [
46
+ '@apostrophecms/command-menu:discard-draft',
47
+ '@apostrophecms/command-menu:publish-draft',
48
+ '@apostrophecms/command-menu:test'
49
+ ]
50
+ }
51
+ }
52
+ }
53
+ }
54
+ };
55
+ const moduleC = {
56
+ commands: {
57
+ remove: [
58
+ '@apostrophecms/command-menu:test'
59
+ ],
60
+ modal: {
61
+ default: {
62
+ '@apostrophecms/command-menu:modes': {
63
+ label: 'commandMenuModes',
64
+ commands: [
65
+ '@apostrophecms/command-menu:toggle-edit-preview-mode',
66
+ '@apostrophecms/command-menu:toggle-publish-draft-mode'
67
+ ]
68
+ }
69
+ }
70
+ }
71
+ }
72
+ };
73
+ const moduleD = {
74
+ commands: {
75
+ add: {
76
+ '@apostrophecms/command-menu:toggle-shortcuts': {
77
+ shortcut: '?'
78
+ }
79
+ },
80
+ group: {
81
+ '@apostrophecms/command-menu:general': {
82
+ label: 'commandMenuGeneral',
83
+ commands: [
84
+ '@apostrophecms/command-menu:toggle-shortcuts',
85
+ 'command-menu'
86
+ ]
87
+ }
88
+ }
89
+ }
90
+ };
91
+ const article = {
92
+ commands: {
93
+ add: {
94
+ 'article:create-new': {
95
+ type: 'item',
96
+ label: 'apostrophe:commandMenuCreateNew',
97
+ action: {},
98
+ shortcut: '',
99
+ modal: 'article:manager'
100
+ },
101
+ 'article:search': {
102
+ type: 'item',
103
+ label: 'apostrophe:commandMenuSearch',
104
+ action: {},
105
+ shortcut: '',
106
+ modal: 'article:manager'
107
+ },
108
+ 'article:select-all': {
109
+ type: 'item',
110
+ label: 'apostrophe:commandMenuSelectAll',
111
+ action: {},
112
+ shortcut: '',
113
+ modal: 'article:manager'
114
+ },
115
+ 'article:archive-selected': {
116
+ type: 'item',
117
+ label: 'apostrophe:commandMenuArchiveSelected',
118
+ action: {},
119
+ shortcut: '',
120
+ modal: 'article:manager'
121
+ },
122
+ 'article:exit-manager': {
123
+ type: 'item',
124
+ label: 'apostrophe:commandMenuExitManager',
125
+ action: {},
126
+ shortcut: '',
127
+ modal: 'article:manager'
128
+ }
129
+ },
130
+ modal: {
131
+ 'article:manager': {
132
+ '@apostrophecms/command-menu:manager': {
133
+ label: null,
134
+ commands: [
135
+ 'article:create-new',
136
+ 'article:search',
137
+ 'article:select-all',
138
+ 'article:archive-selected',
139
+ 'article:exit-manager'
140
+ ]
141
+ }
142
+ }
143
+ }
144
+ }
145
+ };
146
+ const topic = {
147
+ commands: {
148
+ add: {
149
+ 'topic:create-new': {
150
+ type: 'item',
151
+ label: 'apostrophe:commandMenuCreateNew',
152
+ action: {},
153
+ shortcut: ''
154
+ },
155
+ 'topic:search': {
156
+ type: 'item',
157
+ label: 'apostrophe:commandMenuSearch',
158
+ action: {},
159
+ shortcut: ''
160
+ },
161
+ 'topic:select-all': {
162
+ type: 'item',
163
+ label: 'apostrophe:commandMenuSelectAll',
164
+ action: {},
165
+ shortcut: ''
166
+ },
167
+ 'topic:archive-selected': {
168
+ type: 'item',
169
+ label: 'apostrophe:commandMenuArchiveSelected',
170
+ action: {},
171
+ shortcut: ''
172
+ },
173
+ 'topic:exit-manager': {
174
+ type: 'item',
175
+ label: 'apostrophe:commandMenuExitManager',
176
+ action: {},
177
+ shortcut: ''
178
+ }
179
+ },
180
+ modal: {
181
+ 'topic:manager': {
182
+ '@apostrophecms/command-menu:manager': {
183
+ label: null,
184
+ commands: [
185
+ 'topic:create-new',
186
+ 'topic:search',
187
+ 'topic:select-all',
188
+ 'topic:archive-selected',
189
+ 'topic:exit-manager'
190
+ ]
191
+ }
192
+ }
193
+ }
194
+ }
195
+ };
196
+
197
+ module.exports = {
198
+ moduleA,
199
+ moduleB,
200
+ moduleC,
201
+ moduleD,
202
+ article,
203
+ topic
204
+ };