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 @@
+
+
+
+
+
-
+