From bfa65cf0cb6875a4e62955be962e082d727f713d Mon Sep 17 00:00:00 2001 From: "John Molakvoæ (skjnldsv)" Date: Tue, 5 Mar 2024 17:29:17 +0100 Subject: feat(files): add Viewer Files ressource handler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- apps/files/src/reference-files.js | 58 --------------- apps/files/src/reference-files.ts | 58 +++++++++++++++ apps/files/src/views/ReferenceFileWidget.vue | 102 +++++++++++++++++++++++++-- 3 files changed, 155 insertions(+), 63 deletions(-) delete mode 100644 apps/files/src/reference-files.js create mode 100644 apps/files/src/reference-files.ts (limited to 'apps/files/src') diff --git a/apps/files/src/reference-files.js b/apps/files/src/reference-files.js deleted file mode 100644 index db563200cd0..00000000000 --- a/apps/files/src/reference-files.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @copyright Copyright (c) 2022 Julius Härtl - * - * @author Julius Härtl - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import Vue from 'vue' -import { translate as t } from '@nextcloud/l10n' - -import { registerWidget, registerCustomPickerElement, NcCustomPickerRenderResult } from '@nextcloud/vue/dist/Components/NcRichText.js' - -import FileWidget from './views/ReferenceFileWidget.vue' -import FileReferencePickerElement from './views/FileReferencePickerElement.vue' - -Vue.mixin({ - methods: { - t, - }, -}) - -registerWidget('file', (el, { richObjectType, richObject, accessible }) => { - const Widget = Vue.extend(FileWidget) - new Widget({ - propsData: { - richObjectType, - richObject, - accessible, - }, - }).$mount(el) -}) - -registerCustomPickerElement('files', (el, { providerId, accessible }) => { - const Element = Vue.extend(FileReferencePickerElement) - const vueElement = new Element({ - propsData: { - providerId, - accessible, - }, - }).$mount(el) - return new NcCustomPickerRenderResult(vueElement.$el, vueElement) -}, (el, renderResult) => { - renderResult.object.$destroy() -}) diff --git a/apps/files/src/reference-files.ts b/apps/files/src/reference-files.ts new file mode 100644 index 00000000000..74a64b43df6 --- /dev/null +++ b/apps/files/src/reference-files.ts @@ -0,0 +1,58 @@ +/** + * @copyright Copyright (c) 2022 Julius Härtl + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import Vue from 'vue' +import { translate as t } from '@nextcloud/l10n' + +import { registerWidget, registerCustomPickerElement, NcCustomPickerRenderResult } from '@nextcloud/vue/dist/Components/NcRichText.js' + +import FileWidget from './views/ReferenceFileWidget.vue' +import FileReferencePickerElement from './views/FileReferencePickerElement.vue' + +Vue.mixin({ + methods: { + t, + }, +}) + +registerWidget('file', (el, { richObjectType, richObject, accessible }) => { + const Widget = Vue.extend(FileWidget) + new Widget({ + propsData: { + richObjectType, + richObject, + accessible, + }, + }).$mount(el) +}, { hasInteractiveView: true }) + +registerCustomPickerElement('files', (el, { providerId, accessible }) => { + const Element = Vue.extend(FileReferencePickerElement) + const vueElement = new Element({ + propsData: { + providerId, + accessible, + }, + }).$mount(el) + return new NcCustomPickerRenderResult(vueElement.$el, vueElement) +}, (el, renderResult) => { + renderResult.object.$destroy() +}) diff --git a/apps/files/src/views/ReferenceFileWidget.vue b/apps/files/src/views/ReferenceFileWidget.vue index 311c105055a..db2baffce65 100644 --- a/apps/files/src/views/ReferenceFileWidget.vue +++ b/apps/files/src/views/ReferenceFileWidget.vue @@ -31,6 +31,22 @@

+ + + + + - +