@conduction/nextcloud-vue 0.1.0-beta.10 → 0.1.0-beta.12
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/dist/nextcloud-vue.cjs.js +64663 -63467
- package/dist/nextcloud-vue.cjs.js.map +1 -1
- package/dist/nextcloud-vue.css +443 -444
- package/dist/nextcloud-vue.esm.js +64637 -63443
- package/dist/nextcloud-vue.esm.js.map +1 -1
- package/l10n/en.json +164 -0
- package/l10n/nl.json +164 -0
- package/package.json +19 -3
- package/src/components/CnAdvancedFormDialog/CnAdvancedFormDialog.vue +8 -7
- package/src/components/CnAdvancedFormDialog/CnDataTab.vue +2 -2
- package/src/components/CnAdvancedFormDialog/CnMetadataTab.vue +5 -5
- package/src/components/CnAdvancedFormDialog/CnPropertiesTab.vue +2 -2
- package/src/components/CnCardGrid/CnCardGrid.vue +2 -1
- package/src/components/CnChartWidget/CnChartWidget.vue +29 -1
- package/src/components/CnCopyDialog/CnCopyDialog.vue +15 -6
- package/src/components/CnDashboardPage/CnDashboardPage.vue +5 -4
- package/src/components/CnDetailGrid/CnDetailGrid.vue +3 -1
- package/src/components/CnDetailPage/CnDetailPage.vue +5 -4
- package/src/components/CnFacetSidebar/CnFacetSidebar.vue +3 -2
- package/src/components/CnFilterBar/CnFilterBar.vue +3 -2
- package/src/components/CnFormDialog/CnFormDialog.vue +122 -9
- package/src/components/CnIndexPage/CnIndexPage.vue +1 -0
- package/src/components/CnIndexSidebar/CnIndexSidebar.vue +8 -7
- package/src/components/CnJsonViewer/CnJsonViewer.vue +33 -4
- package/src/components/CnMassActionBar/CnMassActionBar.vue +1 -1
- package/src/components/CnMassImportDialog/CnMassImportDialog.vue +2 -2
- package/src/components/CnNotesCard/CnNotesCard.vue +7 -6
- package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +11 -10
- package/src/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue +3 -2
- package/src/components/CnObjectSidebar/CnAuditTrailTab.vue +8 -7
- package/src/components/CnObjectSidebar/CnFilesTab.vue +6 -5
- package/src/components/CnObjectSidebar/CnNotesTab.vue +8 -7
- package/src/components/CnObjectSidebar/CnObjectSidebar.vue +6 -5
- package/src/components/CnObjectSidebar/CnTagsTab.vue +3 -2
- package/src/components/CnObjectSidebar/CnTasksTab.vue +11 -10
- package/src/components/CnRegisterMapping/CnRegisterMapping.vue +14 -13
- package/src/components/CnSchemaFormDialog/CnSchemaFormDialog.vue +15 -14
- package/src/components/CnSchemaFormDialog/CnSchemaPropertyActions.vue +4 -4
- package/src/components/CnSchemaFormDialog/CnSchemaSecurityTab.vue +10 -10
- package/src/components/CnSettingsSection/CnSettingsSection.vue +5 -4
- package/src/components/CnStatsBlock/CnStatsBlock.vue +5 -4
- package/src/components/CnStatsPanel/CnStatsPanel.vue +3 -2
- package/src/components/CnTabbedFormDialog/CnTabbedFormDialog.vue +9 -8
- package/src/components/CnTableWidget/CnTableWidget.vue +3 -2
- package/src/components/CnTasksCard/CnTasksCard.vue +5 -4
- package/src/components/CnTimelineStages/CnTimelineStages.vue +3 -1
- package/src/components/CnUserActionMenu/CnUserActionMenu.vue +7 -6
- package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +4 -3
- package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +3 -1
- package/src/index.js +4 -0
- package/src/l10n/index.js +12 -0
- package/src/store/createCrudStore.d.ts +350 -0
- package/src/store/createCrudStore.js +58 -5
- package/src/store/pluginMerge.js +55 -0
- package/src/store/plugins/index.js +1 -0
- package/src/store/plugins/logs.d.ts +22 -0
- package/src/store/plugins/logs.js +172 -0
- package/src/store/useObjectStore.js +19 -49
- package/src/types/index.d.ts +32 -0
- package/src/utils/schema.js +3 -2
|
@@ -115,6 +115,7 @@
|
|
|
115
115
|
</template>
|
|
116
116
|
|
|
117
117
|
<script>
|
|
118
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
118
119
|
import { NcButton, NcListItem, NcLoadingIcon, NcSelect, NcDateTimePickerNative } from '@nextcloud/vue'
|
|
119
120
|
import History from 'vue-material-design-icons/History.vue'
|
|
120
121
|
import { buildHeaders } from '../../utils/index.js'
|
|
@@ -129,13 +130,13 @@ export default {
|
|
|
129
130
|
register: { type: String, default: '' },
|
|
130
131
|
schema: { type: String, default: '' },
|
|
131
132
|
apiBase: { type: String, default: '/apps/openregister/api' },
|
|
132
|
-
noAuditTrailLabel: { type: String, default: 'No audit trail entries' },
|
|
133
|
-
noMatchLabel: { type: String, default: 'No matching entries' },
|
|
134
|
-
actionFilterLabel: { type: String, default: 'Action' },
|
|
135
|
-
userFilterLabel: { type: String, default: 'User' },
|
|
136
|
-
fromLabel: { type: String, default: 'From' },
|
|
137
|
-
toLabel: { type: String, default: 'To' },
|
|
138
|
-
loadMoreLabel: { type: String, default: 'Load more' },
|
|
133
|
+
noAuditTrailLabel: { type: String, default: () => t('nextcloud-vue', 'No audit trail entries') },
|
|
134
|
+
noMatchLabel: { type: String, default: () => t('nextcloud-vue', 'No matching entries') },
|
|
135
|
+
actionFilterLabel: { type: String, default: () => t('nextcloud-vue', 'Action') },
|
|
136
|
+
userFilterLabel: { type: String, default: () => t('nextcloud-vue', 'User') },
|
|
137
|
+
fromLabel: { type: String, default: () => t('nextcloud-vue', 'From') },
|
|
138
|
+
toLabel: { type: String, default: () => t('nextcloud-vue', 'To') },
|
|
139
|
+
loadMoreLabel: { type: String, default: () => t('nextcloud-vue', 'Load more') },
|
|
139
140
|
},
|
|
140
141
|
|
|
141
142
|
data() {
|
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
</template>
|
|
74
74
|
|
|
75
75
|
<script>
|
|
76
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
76
77
|
import { NcButton, NcListItem, NcActionButton, NcLoadingIcon } from '@nextcloud/vue'
|
|
77
78
|
import Upload from 'vue-material-design-icons/Upload.vue'
|
|
78
79
|
import FileOutline from 'vue-material-design-icons/FileOutline.vue'
|
|
@@ -90,11 +91,11 @@ export default {
|
|
|
90
91
|
register: { type: String, default: '' },
|
|
91
92
|
schema: { type: String, default: '' },
|
|
92
93
|
apiBase: { type: String, default: '/apps/openregister/api' },
|
|
93
|
-
dropZoneLabel: { type: String, default: 'Drop files here or click to browse' },
|
|
94
|
-
noFilesLabel: { type: String, default: 'No files attached' },
|
|
95
|
-
openLabel: { type: String, default: 'Open' },
|
|
96
|
-
deleteLabel: { type: String, default: 'Delete' },
|
|
97
|
-
loadMoreLabel: { type: String, default: 'Load more' },
|
|
94
|
+
dropZoneLabel: { type: String, default: () => t('nextcloud-vue', 'Drop files here or click to browse') },
|
|
95
|
+
noFilesLabel: { type: String, default: () => t('nextcloud-vue', 'No files attached') },
|
|
96
|
+
openLabel: { type: String, default: () => t('nextcloud-vue', 'Open') },
|
|
97
|
+
deleteLabel: { type: String, default: () => t('nextcloud-vue', 'Delete') },
|
|
98
|
+
loadMoreLabel: { type: String, default: () => t('nextcloud-vue', 'Load more') },
|
|
98
99
|
},
|
|
99
100
|
|
|
100
101
|
data() {
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
</template>
|
|
68
68
|
|
|
69
69
|
<script>
|
|
70
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
70
71
|
import { NcButton, NcListItem, NcActionButton, NcLoadingIcon } from '@nextcloud/vue'
|
|
71
72
|
import CommentTextOutline from 'vue-material-design-icons/CommentTextOutline.vue'
|
|
72
73
|
import Send from 'vue-material-design-icons/Send.vue'
|
|
@@ -84,13 +85,13 @@ export default {
|
|
|
84
85
|
register: { type: String, default: '' },
|
|
85
86
|
schema: { type: String, default: '' },
|
|
86
87
|
apiBase: { type: String, default: '/apps/openregister/api' },
|
|
87
|
-
addNoteLabel: { type: String, default: 'Add note' },
|
|
88
|
-
addNotePlaceholder: { type: String, default: 'Write a note...' },
|
|
89
|
-
editLabel: { type: String, default: 'Edit' },
|
|
90
|
-
saveLabel: { type: String, default: 'Save' },
|
|
91
|
-
cancelLabel: { type: String, default: 'Cancel' },
|
|
92
|
-
deleteLabel: { type: String, default: 'Delete' },
|
|
93
|
-
noNotesLabel: { type: String, default: 'No notes yet' },
|
|
88
|
+
addNoteLabel: { type: String, default: () => t('nextcloud-vue', 'Add note') },
|
|
89
|
+
addNotePlaceholder: { type: String, default: () => t('nextcloud-vue', 'Write a note...') },
|
|
90
|
+
editLabel: { type: String, default: () => t('nextcloud-vue', 'Edit') },
|
|
91
|
+
saveLabel: { type: String, default: () => t('nextcloud-vue', 'Save') },
|
|
92
|
+
cancelLabel: { type: String, default: () => t('nextcloud-vue', 'Cancel') },
|
|
93
|
+
deleteLabel: { type: String, default: () => t('nextcloud-vue', 'Delete') },
|
|
94
|
+
noNotesLabel: { type: String, default: () => t('nextcloud-vue', 'No notes yet') },
|
|
94
95
|
},
|
|
95
96
|
|
|
96
97
|
data() {
|
|
@@ -109,6 +109,7 @@
|
|
|
109
109
|
</template>
|
|
110
110
|
|
|
111
111
|
<script>
|
|
112
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
112
113
|
import { NcAppSidebar, NcAppSidebarTab } from '@nextcloud/vue'
|
|
113
114
|
|
|
114
115
|
import Paperclip from 'vue-material-design-icons/Paperclip.vue'
|
|
@@ -221,11 +222,11 @@ export default {
|
|
|
221
222
|
},
|
|
222
223
|
|
|
223
224
|
// --- Pre-translated labels ---
|
|
224
|
-
filesLabel: { type: String, default: 'Files' },
|
|
225
|
-
notesLabel: { type: String, default: 'Notes' },
|
|
226
|
-
tagsLabel: { type: String, default: 'Tags' },
|
|
227
|
-
tasksLabel: { type: String, default: 'Tasks' },
|
|
228
|
-
auditTrailLabel: { type: String, default: 'Audit
|
|
225
|
+
filesLabel: { type: String, default: () => t('nextcloud-vue', 'Files') },
|
|
226
|
+
notesLabel: { type: String, default: () => t('nextcloud-vue', 'Notes') },
|
|
227
|
+
tagsLabel: { type: String, default: () => t('nextcloud-vue', 'Tags') },
|
|
228
|
+
tasksLabel: { type: String, default: () => t('nextcloud-vue', 'Tasks') },
|
|
229
|
+
auditTrailLabel: { type: String, default: () => t('nextcloud-vue', 'Audit trail') },
|
|
229
230
|
},
|
|
230
231
|
|
|
231
232
|
emits: ['update:open'],
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
</template>
|
|
57
57
|
|
|
58
58
|
<script>
|
|
59
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
59
60
|
import { NcButton, NcTextField, NcLoadingIcon } from '@nextcloud/vue'
|
|
60
61
|
import TagOutline from 'vue-material-design-icons/TagOutline.vue'
|
|
61
62
|
import Plus from 'vue-material-design-icons/Plus.vue'
|
|
@@ -72,8 +73,8 @@ export default {
|
|
|
72
73
|
register: { type: String, default: '' },
|
|
73
74
|
schema: { type: String, default: '' },
|
|
74
75
|
apiBase: { type: String, default: '/apps/openregister/api' },
|
|
75
|
-
addTagPlaceholder: { type: String, default: 'Add tag...' },
|
|
76
|
-
noTagsLabel: { type: String, default: 'No tags' },
|
|
76
|
+
addTagPlaceholder: { type: String, default: () => t('nextcloud-vue', 'Add tag...') },
|
|
77
|
+
noTagsLabel: { type: String, default: () => t('nextcloud-vue', 'No tags') },
|
|
77
78
|
},
|
|
78
79
|
|
|
79
80
|
data() {
|
|
@@ -125,6 +125,7 @@
|
|
|
125
125
|
</template>
|
|
126
126
|
|
|
127
127
|
<script>
|
|
128
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
128
129
|
import { NcButton, NcTextField, NcListItem, NcActionButton, NcLoadingIcon, NcDateTimePickerNative, NcSelect } from '@nextcloud/vue'
|
|
129
130
|
import Plus from 'vue-material-design-icons/Plus.vue'
|
|
130
131
|
import Delete from 'vue-material-design-icons/Delete.vue'
|
|
@@ -160,16 +161,16 @@ export default {
|
|
|
160
161
|
register: { type: String, default: '' },
|
|
161
162
|
schema: { type: String, default: '' },
|
|
162
163
|
apiBase: { type: String, default: '/apps/openregister/api' },
|
|
163
|
-
addTaskPlaceholder: { type: String, default: 'Add task...' },
|
|
164
|
-
deadlineLabel: { type: String, default: 'Deadline' },
|
|
165
|
-
assigneeLabel: { type: String, default: 'Assignee' },
|
|
166
|
-
completeLabel: { type: String, default: 'Complete' },
|
|
167
|
-
editLabel: { type: String, default: 'Edit' },
|
|
168
|
-
deleteLabel: { type: String, default: 'Delete' },
|
|
169
|
-
noTasksLabel: { type: String, default: 'No linked tasks' },
|
|
170
|
-
loadMoreLabel: { type: String, default: 'Load more' },
|
|
171
|
-
statusFilterLabel: { type: String, default: 'Status' },
|
|
172
|
-
assigneeFilterLabel: { type: String, default: 'Assignee' },
|
|
164
|
+
addTaskPlaceholder: { type: String, default: () => t('nextcloud-vue', 'Add task...') },
|
|
165
|
+
deadlineLabel: { type: String, default: () => t('nextcloud-vue', 'Deadline') },
|
|
166
|
+
assigneeLabel: { type: String, default: () => t('nextcloud-vue', 'Assignee') },
|
|
167
|
+
completeLabel: { type: String, default: () => t('nextcloud-vue', 'Complete') },
|
|
168
|
+
editLabel: { type: String, default: () => t('nextcloud-vue', 'Edit') },
|
|
169
|
+
deleteLabel: { type: String, default: () => t('nextcloud-vue', 'Delete') },
|
|
170
|
+
noTasksLabel: { type: String, default: () => t('nextcloud-vue', 'No linked tasks') },
|
|
171
|
+
loadMoreLabel: { type: String, default: () => t('nextcloud-vue', 'Load more') },
|
|
172
|
+
statusFilterLabel: { type: String, default: () => t('nextcloud-vue', 'Status') },
|
|
173
|
+
assigneeFilterLabel: { type: String, default: () => t('nextcloud-vue', 'Assignee') },
|
|
173
174
|
},
|
|
174
175
|
|
|
175
176
|
data() {
|
|
@@ -150,6 +150,7 @@
|
|
|
150
150
|
</template>
|
|
151
151
|
|
|
152
152
|
<script>
|
|
153
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
153
154
|
import { CnSettingsSection } from '../CnSettingsSection/index.js'
|
|
154
155
|
import { NcButton, NcLoadingIcon, NcNoteCard, NcSelect } from '@nextcloud/vue'
|
|
155
156
|
import ContentSave from 'vue-material-design-icons/ContentSave.vue'
|
|
@@ -209,12 +210,12 @@ export default {
|
|
|
209
210
|
/** Section title */
|
|
210
211
|
name: {
|
|
211
212
|
type: String,
|
|
212
|
-
default: 'Register
|
|
213
|
+
default: () => t('nextcloud-vue', 'Register configuration'),
|
|
213
214
|
},
|
|
214
215
|
/** Section description */
|
|
215
216
|
description: {
|
|
216
217
|
type: String,
|
|
217
|
-
default: 'Configure OpenRegister schema mappings for your object types',
|
|
218
|
+
default: () => t('nextcloud-vue', 'Configure OpenRegister schema mappings for your object types'),
|
|
218
219
|
},
|
|
219
220
|
/** Documentation URL */
|
|
220
221
|
docUrl: {
|
|
@@ -259,12 +260,12 @@ export default {
|
|
|
259
260
|
/** Save button text */
|
|
260
261
|
saveButtonText: {
|
|
261
262
|
type: String,
|
|
262
|
-
default: 'Save
|
|
263
|
+
default: () => t('nextcloud-vue', 'Save configuration'),
|
|
263
264
|
},
|
|
264
265
|
/** Reimport button text */
|
|
265
266
|
reimportButtonText: {
|
|
266
267
|
type: String,
|
|
267
|
-
default: 'Re-import configuration',
|
|
268
|
+
default: () => t('nextcloud-vue', 'Re-import configuration'),
|
|
268
269
|
},
|
|
269
270
|
/** Auto-match schema titles to type slugs on register change */
|
|
270
271
|
autoMatch: {
|
|
@@ -275,15 +276,15 @@ export default {
|
|
|
275
276
|
labels: {
|
|
276
277
|
type: Object,
|
|
277
278
|
default: () => ({
|
|
278
|
-
register: 'Register',
|
|
279
|
-
schema: 'Schema',
|
|
280
|
-
configured: 'Configured',
|
|
281
|
-
notConfigured: 'Not configured',
|
|
282
|
-
noSchemas: 'No schemas available in this register',
|
|
283
|
-
selectRegister: 'Select a register',
|
|
284
|
-
selectSchema: 'Select a schema',
|
|
285
|
-
allConfigured: 'All types configured',
|
|
286
|
-
partiallyConfigured: 'configured',
|
|
279
|
+
register: t('nextcloud-vue', 'Register'),
|
|
280
|
+
schema: t('nextcloud-vue', 'Schema'),
|
|
281
|
+
configured: t('nextcloud-vue', 'Configured'),
|
|
282
|
+
notConfigured: t('nextcloud-vue', 'Not configured'),
|
|
283
|
+
noSchemas: t('nextcloud-vue', 'No schemas available in this register'),
|
|
284
|
+
selectRegister: t('nextcloud-vue', 'Select a register'),
|
|
285
|
+
selectSchema: t('nextcloud-vue', 'Select a schema'),
|
|
286
|
+
allConfigured: t('nextcloud-vue', 'All types configured'),
|
|
287
|
+
partiallyConfigured: t('nextcloud-vue', 'configured'),
|
|
287
288
|
}),
|
|
288
289
|
},
|
|
289
290
|
},
|
|
@@ -179,6 +179,7 @@
|
|
|
179
179
|
</template>
|
|
180
180
|
|
|
181
181
|
<script>
|
|
182
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
182
183
|
import {
|
|
183
184
|
NcButton,
|
|
184
185
|
NcTextField,
|
|
@@ -268,25 +269,25 @@ export default {
|
|
|
268
269
|
/** Show "Delete" button */
|
|
269
270
|
showDelete: { type: Boolean, default: false },
|
|
270
271
|
// Labels (pre-translated strings with English defaults)
|
|
271
|
-
cancelLabel: { type: String, default: 'Cancel' },
|
|
272
|
-
closeLabel: { type: String, default: 'Close' },
|
|
272
|
+
cancelLabel: { type: String, default: () => t('nextcloud-vue', 'Cancel') },
|
|
273
|
+
closeLabel: { type: String, default: () => t('nextcloud-vue', 'Close') },
|
|
273
274
|
/** Confirm button label. Defaults to "Create" or "Save". */
|
|
274
275
|
confirmLabel: { type: String, default: '' },
|
|
275
276
|
/** Success message. Defaults to "Schema saved successfully." */
|
|
276
277
|
successText: { type: String, default: '' },
|
|
277
|
-
extendSchemaLabel: { type: String, default: 'Extend
|
|
278
|
-
analyzePropertiesLabel: { type: String, default: 'Analyze
|
|
279
|
-
validateObjectsLabel: { type: String, default: 'Validate
|
|
280
|
-
deleteObjectsLabel: { type: String, default: 'Delete
|
|
281
|
-
publishObjectsLabel: { type: String, default: 'Publish
|
|
282
|
-
deleteLabel: { type: String, default: 'Delete' },
|
|
283
|
-
deleteObjectsTooltip: { type: String, default: 'Delete all objects in this schema' },
|
|
284
|
-
publishObjectsTooltip: { type: String, default: 'Publish all objects in this schema' },
|
|
278
|
+
extendSchemaLabel: { type: String, default: () => t('nextcloud-vue', 'Extend schema') },
|
|
279
|
+
analyzePropertiesLabel: { type: String, default: () => t('nextcloud-vue', 'Analyze properties') },
|
|
280
|
+
validateObjectsLabel: { type: String, default: () => t('nextcloud-vue', 'Validate objects') },
|
|
281
|
+
deleteObjectsLabel: { type: String, default: () => t('nextcloud-vue', 'Delete objects') },
|
|
282
|
+
publishObjectsLabel: { type: String, default: () => t('nextcloud-vue', 'Publish objects') },
|
|
283
|
+
deleteLabel: { type: String, default: () => t('nextcloud-vue', 'Delete') },
|
|
284
|
+
deleteObjectsTooltip: { type: String, default: () => t('nextcloud-vue', 'Delete all objects in this schema') },
|
|
285
|
+
publishObjectsTooltip: { type: String, default: () => t('nextcloud-vue', 'Publish all objects in this schema') },
|
|
285
286
|
/** Tooltip for the Delete Objects button when no objects exist */
|
|
286
|
-
noDeleteObjectsTooltip: { type: String, default: 'No objects to delete' },
|
|
287
|
+
noDeleteObjectsTooltip: { type: String, default: () => t('nextcloud-vue', 'No objects to delete') },
|
|
287
288
|
/** Tooltip for the Publish Objects button when no objects exist */
|
|
288
|
-
noPublishObjectsTooltip: { type: String, default: 'No objects to publish' },
|
|
289
|
-
cannotDeleteTooltip: { type: String, default: 'Cannot delete: objects are still attached' },
|
|
289
|
+
noPublishObjectsTooltip: { type: String, default: () => t('nextcloud-vue', 'No objects to publish') },
|
|
290
|
+
cannotDeleteTooltip: { type: String, default: () => t('nextcloud-vue', 'Cannot delete: objects are still attached') },
|
|
290
291
|
},
|
|
291
292
|
data() {
|
|
292
293
|
return {
|
|
@@ -333,7 +334,7 @@ export default {
|
|
|
333
334
|
},
|
|
334
335
|
sortedUserGroups() {
|
|
335
336
|
return this.userGroups
|
|
336
|
-
.filter(group => group.id !== 'admin' && group.id !== 'public')
|
|
337
|
+
.filter(group => group.id !== 'admin' && group.id !== 'public' && group.id !== 'authenticated')
|
|
337
338
|
.sort((a, b) => {
|
|
338
339
|
const nameA = a.displayname || a.id
|
|
339
340
|
const nameB = b.displayname || b.id
|
|
@@ -1240,7 +1240,7 @@ export default {
|
|
|
1240
1240
|
|
|
1241
1241
|
getDisplayGroupName(groupId) {
|
|
1242
1242
|
if (groupId === 'public') return 'Public'
|
|
1243
|
-
if (groupId === '
|
|
1243
|
+
if (groupId === 'authenticated') return 'Authenticated'
|
|
1244
1244
|
if (groupId === 'admin') return 'Admin'
|
|
1245
1245
|
|
|
1246
1246
|
const group = this.userGroups.find(g => g.id === groupId)
|
|
@@ -1284,8 +1284,8 @@ export default {
|
|
|
1284
1284
|
return permissionsList.sort((a, b) => {
|
|
1285
1285
|
if (a.groupId === 'public') return -1
|
|
1286
1286
|
if (b.groupId === 'public') return 1
|
|
1287
|
-
if (a.groupId === '
|
|
1288
|
-
if (b.groupId === '
|
|
1287
|
+
if (a.groupId === 'authenticated') return -1
|
|
1288
|
+
if (b.groupId === 'authenticated') return 1
|
|
1289
1289
|
if (a.groupId === 'admin') return 1
|
|
1290
1290
|
if (b.groupId === 'admin') return -1
|
|
1291
1291
|
return a.group.localeCompare(b.group)
|
|
@@ -1295,7 +1295,7 @@ export default {
|
|
|
1295
1295
|
getAvailableGroupsForProperty() {
|
|
1296
1296
|
return [
|
|
1297
1297
|
{ id: 'public', label: 'Public (Unauthenticated)' },
|
|
1298
|
-
{ id: '
|
|
1298
|
+
{ id: 'authenticated', label: 'Authenticated' },
|
|
1299
1299
|
...this.sortedUserGroups.map(group => ({
|
|
1300
1300
|
id: group.id,
|
|
1301
1301
|
label: group.displayname || group.id,
|
|
@@ -57,31 +57,31 @@
|
|
|
57
57
|
</td>
|
|
58
58
|
</tr>
|
|
59
59
|
|
|
60
|
-
<!--
|
|
60
|
+
<!-- Authenticated users group -->
|
|
61
61
|
<tr class="cn-schema-form__user-row">
|
|
62
62
|
<td class="cn-schema-form__group-name">
|
|
63
|
-
<span class="cn-schema-form__group-badge cn-schema-form__user">
|
|
63
|
+
<span class="cn-schema-form__group-badge cn-schema-form__user">authenticated</span>
|
|
64
64
|
<small>Authenticated users</small>
|
|
65
65
|
</td>
|
|
66
66
|
<td>
|
|
67
67
|
<NcCheckboxRadioSwitch
|
|
68
|
-
:checked="hasGroupPermission('
|
|
69
|
-
@update:checked="updateGroupPermission('
|
|
68
|
+
:checked="hasGroupPermission('authenticated', 'create')"
|
|
69
|
+
@update:checked="updateGroupPermission('authenticated', 'create', $event)" />
|
|
70
70
|
</td>
|
|
71
71
|
<td>
|
|
72
72
|
<NcCheckboxRadioSwitch
|
|
73
|
-
:checked="hasGroupPermission('
|
|
74
|
-
@update:checked="updateGroupPermission('
|
|
73
|
+
:checked="hasGroupPermission('authenticated', 'read')"
|
|
74
|
+
@update:checked="updateGroupPermission('authenticated', 'read', $event)" />
|
|
75
75
|
</td>
|
|
76
76
|
<td>
|
|
77
77
|
<NcCheckboxRadioSwitch
|
|
78
|
-
:checked="hasGroupPermission('
|
|
79
|
-
@update:checked="updateGroupPermission('
|
|
78
|
+
:checked="hasGroupPermission('authenticated', 'update')"
|
|
79
|
+
@update:checked="updateGroupPermission('authenticated', 'update', $event)" />
|
|
80
80
|
</td>
|
|
81
81
|
<td>
|
|
82
82
|
<NcCheckboxRadioSwitch
|
|
83
|
-
:checked="hasGroupPermission('
|
|
84
|
-
@update:checked="updateGroupPermission('
|
|
83
|
+
:checked="hasGroupPermission('authenticated', 'delete')"
|
|
84
|
+
@update:checked="updateGroupPermission('authenticated', 'delete', $event)" />
|
|
85
85
|
</td>
|
|
86
86
|
</tr>
|
|
87
87
|
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
</template>
|
|
61
61
|
|
|
62
62
|
<script>
|
|
63
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
63
64
|
import { NcSettingsSection, NcLoadingIcon, NcButton } from '@nextcloud/vue'
|
|
64
65
|
import Refresh from 'vue-material-design-icons/Refresh.vue'
|
|
65
66
|
import InformationOutline from 'vue-material-design-icons/InformationOutline.vue'
|
|
@@ -140,7 +141,7 @@ export default {
|
|
|
140
141
|
/** Message shown during loading */
|
|
141
142
|
loadingMessage: {
|
|
142
143
|
type: String,
|
|
143
|
-
default: 'Loading...',
|
|
144
|
+
default: () => t('nextcloud-vue', 'Loading...'),
|
|
144
145
|
},
|
|
145
146
|
/** Whether the section is in an error state */
|
|
146
147
|
error: {
|
|
@@ -150,7 +151,7 @@ export default {
|
|
|
150
151
|
/** Message shown when in error state */
|
|
151
152
|
errorMessage: {
|
|
152
153
|
type: String,
|
|
153
|
-
default: 'An error occurred',
|
|
154
|
+
default: () => t('nextcloud-vue', 'An error occurred'),
|
|
154
155
|
},
|
|
155
156
|
/** Callback function for retry button (shown in error state). If null, no retry button is shown. */
|
|
156
157
|
onRetry: {
|
|
@@ -160,7 +161,7 @@ export default {
|
|
|
160
161
|
/** Text for the retry button */
|
|
161
162
|
retryButtonText: {
|
|
162
163
|
type: String,
|
|
163
|
-
default: 'Retry',
|
|
164
|
+
default: () => t('nextcloud-vue', 'Retry'),
|
|
164
165
|
},
|
|
165
166
|
/** Whether the section has no data to show */
|
|
166
167
|
empty: {
|
|
@@ -170,7 +171,7 @@ export default {
|
|
|
170
171
|
/** Message shown when section is empty */
|
|
171
172
|
emptyMessage: {
|
|
172
173
|
type: String,
|
|
173
|
-
default: 'No data available',
|
|
174
|
+
default: () => t('nextcloud-vue', 'No data available'),
|
|
174
175
|
},
|
|
175
176
|
},
|
|
176
177
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<!-- Content -->
|
|
16
16
|
<div class="cn-stats-block__content">
|
|
17
17
|
<div class="cn-stats-block__header">
|
|
18
|
-
<h4>{{ title || 'Objects' }}</h4>
|
|
18
|
+
<h4>{{ title || t('nextcloud-vue', 'Objects') }}</h4>
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
<div v-if="count > 0 || (showZeroCount && count === 0)" class="cn-stats-block__count">
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
</template>
|
|
50
50
|
|
|
51
51
|
<script>
|
|
52
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
52
53
|
import { NcLoadingIcon } from '@nextcloud/vue'
|
|
53
54
|
|
|
54
55
|
/**
|
|
@@ -112,7 +113,7 @@ export default {
|
|
|
112
113
|
/** Label displayed next to the count */
|
|
113
114
|
countLabel: {
|
|
114
115
|
type: String,
|
|
115
|
-
default: 'objects',
|
|
116
|
+
default: () => t('nextcloud-vue', 'objects'),
|
|
116
117
|
},
|
|
117
118
|
/** Detailed breakdown object (key-value pairs) */
|
|
118
119
|
breakdown: {
|
|
@@ -127,12 +128,12 @@ export default {
|
|
|
127
128
|
/** Text shown while loading */
|
|
128
129
|
loadingLabel: {
|
|
129
130
|
type: String,
|
|
130
|
-
default: 'Loading...',
|
|
131
|
+
default: () => t('nextcloud-vue', 'Loading...'),
|
|
131
132
|
},
|
|
132
133
|
/** Text shown when count is 0 */
|
|
133
134
|
emptyLabel: {
|
|
134
135
|
type: String,
|
|
135
|
-
default: 'No items found',
|
|
136
|
+
default: () => t('nextcloud-vue', 'No items found'),
|
|
136
137
|
},
|
|
137
138
|
/** Icon component (e.g., imported MDI icon) */
|
|
138
139
|
icon: {
|
|
@@ -143,6 +143,7 @@
|
|
|
143
143
|
</template>
|
|
144
144
|
|
|
145
145
|
<script>
|
|
146
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
146
147
|
import { NcLoadingIcon, NcListItem } from '@nextcloud/vue'
|
|
147
148
|
import { CnStatsBlock } from '../CnStatsBlock/index.js'
|
|
148
149
|
import { CnKpiGrid } from '../CnKpiGrid/index.js'
|
|
@@ -238,13 +239,13 @@ export default {
|
|
|
238
239
|
/** Label shown during loading state */
|
|
239
240
|
loadingLabel: {
|
|
240
241
|
type: String,
|
|
241
|
-
default: 'Loading...',
|
|
242
|
+
default: () => t('nextcloud-vue', 'Loading...'),
|
|
242
243
|
},
|
|
243
244
|
|
|
244
245
|
/** Default text shown when a section has no items. Can be overridden per section via `section.emptyLabel`. */
|
|
245
246
|
emptyLabel: {
|
|
246
247
|
type: String,
|
|
247
|
-
default: 'No data available',
|
|
248
|
+
default: () => t('nextcloud-vue', 'No data available'),
|
|
248
249
|
},
|
|
249
250
|
},
|
|
250
251
|
|
|
@@ -102,6 +102,7 @@
|
|
|
102
102
|
</template>
|
|
103
103
|
|
|
104
104
|
<script>
|
|
105
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
105
106
|
import {
|
|
106
107
|
NcButton,
|
|
107
108
|
NcDialog,
|
|
@@ -171,7 +172,7 @@ export default {
|
|
|
171
172
|
*/
|
|
172
173
|
entityName: {
|
|
173
174
|
type: String,
|
|
174
|
-
default: 'Item',
|
|
175
|
+
default: () => t('nextcloud-vue', 'Item'),
|
|
175
176
|
},
|
|
176
177
|
/**
|
|
177
178
|
* NcDialog size. One of 'small', 'normal', 'large', 'full'.
|
|
@@ -220,7 +221,7 @@ export default {
|
|
|
220
221
|
*/
|
|
221
222
|
cancelLabel: {
|
|
222
223
|
type: String,
|
|
223
|
-
default: 'Cancel',
|
|
224
|
+
default: () => t('nextcloud-vue', 'Cancel'),
|
|
224
225
|
},
|
|
225
226
|
/**
|
|
226
227
|
* Close button label shown in the result phase.
|
|
@@ -229,7 +230,7 @@ export default {
|
|
|
229
230
|
*/
|
|
230
231
|
closeLabel: {
|
|
231
232
|
type: String,
|
|
232
|
-
default: 'Close',
|
|
233
|
+
default: () => t('nextcloud-vue', 'Close'),
|
|
233
234
|
},
|
|
234
235
|
/**
|
|
235
236
|
* Primary confirm button label. Defaults to "Create" in create mode
|
|
@@ -248,7 +249,7 @@ export default {
|
|
|
248
249
|
*/
|
|
249
250
|
createAnotherLabel: {
|
|
250
251
|
type: String,
|
|
251
|
-
default: 'Create another',
|
|
252
|
+
default: () => t('nextcloud-vue', 'Create another'),
|
|
252
253
|
},
|
|
253
254
|
},
|
|
254
255
|
data() {
|
|
@@ -292,8 +293,8 @@ export default {
|
|
|
292
293
|
return this.dialogTitle
|
|
293
294
|
}
|
|
294
295
|
return this.isCreateMode
|
|
295
|
-
?
|
|
296
|
-
:
|
|
296
|
+
? t('nextcloud-vue', 'Create {title}', { title: this.entityName })
|
|
297
|
+
: t('nextcloud-vue', 'Edit {title}', { title: this.entityName })
|
|
297
298
|
},
|
|
298
299
|
/**
|
|
299
300
|
* Resolved success text for NcNoteCard.
|
|
@@ -304,7 +305,7 @@ export default {
|
|
|
304
305
|
if (this.successText) {
|
|
305
306
|
return this.successText
|
|
306
307
|
}
|
|
307
|
-
return
|
|
308
|
+
return t('nextcloud-vue', '{title} saved successfully.', { title: this.entityName })
|
|
308
309
|
},
|
|
309
310
|
/**
|
|
310
311
|
* Resolved primary button label.
|
|
@@ -315,7 +316,7 @@ export default {
|
|
|
315
316
|
if (this.confirmLabel) {
|
|
316
317
|
return this.confirmLabel
|
|
317
318
|
}
|
|
318
|
-
return this.isCreateMode ? 'Create' : 'Save'
|
|
319
|
+
return this.isCreateMode ? t('nextcloud-vue', 'Create') : t('nextcloud-vue', 'Save')
|
|
319
320
|
},
|
|
320
321
|
},
|
|
321
322
|
beforeDestroy() {
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
</template>
|
|
52
52
|
|
|
53
53
|
<script>
|
|
54
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
54
55
|
import { NcLoadingIcon } from '@nextcloud/vue'
|
|
55
56
|
import CnDataTable from '../CnDataTable/CnDataTable.vue'
|
|
56
57
|
|
|
@@ -153,12 +154,12 @@ export default {
|
|
|
153
154
|
/** Pre-translated "View all" label. */
|
|
154
155
|
viewAllLabel: {
|
|
155
156
|
type: String,
|
|
156
|
-
default: 'View all',
|
|
157
|
+
default: () => t('nextcloud-vue', 'View all'),
|
|
157
158
|
},
|
|
158
159
|
/** Pre-translated empty state text. */
|
|
159
160
|
emptyText: {
|
|
160
161
|
type: String,
|
|
161
|
-
default: 'No data available',
|
|
162
|
+
default: () => t('nextcloud-vue', 'No data available'),
|
|
162
163
|
},
|
|
163
164
|
},
|
|
164
165
|
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
</template>
|
|
88
88
|
|
|
89
89
|
<script>
|
|
90
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
90
91
|
import { NcLoadingIcon } from '@nextcloud/vue'
|
|
91
92
|
import CheckboxMarkedOutline from 'vue-material-design-icons/CheckboxMarkedOutline.vue'
|
|
92
93
|
import CheckboxBlankOutline from 'vue-material-design-icons/CheckboxBlankOutline.vue'
|
|
@@ -162,10 +163,10 @@ export default {
|
|
|
162
163
|
},
|
|
163
164
|
|
|
164
165
|
// --- Pre-translated labels ---
|
|
165
|
-
titleLabel: { type: String, default: 'Tasks' },
|
|
166
|
-
noTasksLabel: { type: String, default: 'No tasks' },
|
|
167
|
-
showAllLabel: { type: String, default: 'Show all' },
|
|
168
|
-
unassignedLabel: { type: String, default: 'Unassigned' },
|
|
166
|
+
titleLabel: { type: String, default: () => t('nextcloud-vue', 'Tasks') },
|
|
167
|
+
noTasksLabel: { type: String, default: () => t('nextcloud-vue', 'No tasks') },
|
|
168
|
+
showAllLabel: { type: String, default: () => t('nextcloud-vue', 'Show all') },
|
|
169
|
+
unassignedLabel: { type: String, default: () => t('nextcloud-vue', 'Unassigned') },
|
|
169
170
|
},
|
|
170
171
|
|
|
171
172
|
emits: ['show-all'],
|
|
@@ -67,6 +67,8 @@
|
|
|
67
67
|
</template>
|
|
68
68
|
|
|
69
69
|
<script>
|
|
70
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
71
|
+
|
|
70
72
|
/**
|
|
71
73
|
* CnTimelineStages — Timeline/progress stages component.
|
|
72
74
|
*
|
|
@@ -148,7 +150,7 @@ export default {
|
|
|
148
150
|
*/
|
|
149
151
|
ariaLabel: {
|
|
150
152
|
type: String,
|
|
151
|
-
default: 'Progress stages',
|
|
153
|
+
default: () => t('nextcloud-vue', 'Progress stages'),
|
|
152
154
|
},
|
|
153
155
|
},
|
|
154
156
|
|
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
</template>
|
|
98
98
|
|
|
99
99
|
<script>
|
|
100
|
+
import { translate as t } from '@nextcloud/l10n'
|
|
100
101
|
import { NcPopover, NcActionButton, NcAvatar } from '@nextcloud/vue'
|
|
101
102
|
|
|
102
103
|
import MessageTextOutline from 'vue-material-design-icons/MessageTextOutline.vue'
|
|
@@ -143,7 +144,7 @@ export default {
|
|
|
143
144
|
/** The user's display name */
|
|
144
145
|
displayName: {
|
|
145
146
|
type: String,
|
|
146
|
-
default: 'Unknown',
|
|
147
|
+
default: () => t('nextcloud-vue', 'Unknown'),
|
|
147
148
|
},
|
|
148
149
|
/** Whether the menu is interactive (false for current user or system accounts) */
|
|
149
150
|
interactive: {
|
|
@@ -152,11 +153,11 @@ export default {
|
|
|
152
153
|
},
|
|
153
154
|
|
|
154
155
|
// --- Pre-translated labels ---
|
|
155
|
-
sendMessageLabel: { type: String, default: 'Send message' },
|
|
156
|
-
startChatLabel: { type: String, default: 'Start chat' },
|
|
157
|
-
sendEmailLabel: { type: String, default: 'Send email' },
|
|
158
|
-
planMeetingLabel: { type: String, default: '
|
|
159
|
-
noActionsLabel: { type: String, default: 'No communication apps available' },
|
|
156
|
+
sendMessageLabel: { type: String, default: () => t('nextcloud-vue', 'Send message') },
|
|
157
|
+
startChatLabel: { type: String, default: () => t('nextcloud-vue', 'Start chat') },
|
|
158
|
+
sendEmailLabel: { type: String, default: () => t('nextcloud-vue', 'Send email') },
|
|
159
|
+
planMeetingLabel: { type: String, default: () => t('nextcloud-vue', 'Schedule meeting') },
|
|
160
|
+
noActionsLabel: { type: String, default: () => t('nextcloud-vue', 'No communication apps available') },
|
|
160
161
|
},
|
|
161
162
|
|
|
162
163
|
emits: ['action'],
|