From a57ae757c651b63227f2f548c0bbff3cb0d229d2 Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Tue, 28 Jan 2020 10:35:12 +0100 Subject: [PATCH] Move sharing indicators into own component and add extension point Moved to smaller components Load custom indicators as part of extension Added click handler Use parentPath and add docs Added missing sharesTree getter Extended docs Added props --- apps/files/docs/extensionpoints.adoc | 75 ++++++++- apps/files/src/components/AllFilesList.vue | 84 +--------- .../StatusIndicators/DefaultIndicators.vue | 145 ++++++++++++++++++ .../StatusIndicators/StatusIndicators.vue | 63 ++++++++ changelog/unreleased/2895-1 | 7 + changelog/unreleased/2895-2 | 6 + src/store/apps.js | 13 +- src/store/config.js | 3 + themes/owncloud.json | 3 + 9 files changed, 318 insertions(+), 81 deletions(-) create mode 100644 apps/files/src/components/FilesLists/StatusIndicators/DefaultIndicators.vue create mode 100644 apps/files/src/components/FilesLists/StatusIndicators/StatusIndicators.vue create mode 100644 changelog/unreleased/2895-1 create mode 100644 changelog/unreleased/2895-2 diff --git a/apps/files/docs/extensionpoints.adoc b/apps/files/docs/extensionpoints.adoc index 8745bdf8fd1..9834c19e71d 100644 --- a/apps/files/docs/extensionpoints.adoc +++ b/apps/files/docs/extensionpoints.adoc @@ -1,4 +1,4 @@ -## Extensionpoints +## Extension points #### file-details-panel @@ -17,3 +17,76 @@ OC.$extend.request('files', 'file-details-panel', payload).then( response => {}); ---- + +### Files list status indicators + +An extension can extend status indicators in files list with custom component, properties and methods. +Extending this list can be done by creating a new object inside of appInfo called `filesListIndicators`. This object can contain keys `name` and `component`. + +#### Props + +Please see known issues before using props in custom indicators. + +- `item`: resource to which are indicators assigned +- `parentPath`: parent folder path of the item + +#### Example: + +##### App entry point +[source,js] +---- +import ExampleIndicators from './components/ExampleIndicators.vue' + +const appInfo = { + name: 'ExampleIndicators', + id: 'ExampleIndicators', + icon: 'info', + isFileEditor: false, + extensions: [], + filesListIndicators: [{ + name: 'CustomIndicators', + component: ExampleIndicators + }] +} +---- + +##### ExampleIndicators component +[source,vue] +---- + + + +---- + +#### Known issues: + +Passing resource as a prop into the dynamic component causes Vuex mutation error. To avoid this, access resource direcly via parent component - `this.$parent.item` \ No newline at end of file diff --git a/apps/files/src/components/AllFilesList.vue b/apps/files/src/components/AllFilesList.vue index 0874d58ee1b..8023baf2362 100644 --- a/apps/files/src/components/AllFilesList.vue +++ b/apps/files/src/components/AllFilesList.vue @@ -29,14 +29,7 @@ class="uk-margin-small-left" /> -
- - - - - - -
+
{{ item.size | fileSize }}
@@ -75,18 +68,16 @@ diff --git a/apps/files/src/components/FilesLists/StatusIndicators/StatusIndicators.vue b/apps/files/src/components/FilesLists/StatusIndicators/StatusIndicators.vue new file mode 100644 index 00000000000..1d3719c159a --- /dev/null +++ b/apps/files/src/components/FilesLists/StatusIndicators/StatusIndicators.vue @@ -0,0 +1,63 @@ + + + diff --git a/changelog/unreleased/2895-1 b/changelog/unreleased/2895-1 new file mode 100644 index 00000000000..c5263b49791 --- /dev/null +++ b/changelog/unreleased/2895-1 @@ -0,0 +1,7 @@ +Enhancement: Add files list status indicators extension point + +We've added the ability for the extension to inject custom status indicator into files list. +New indicators will then appear next to the default one. + +https://github.com/owncloud/phoenix/issues/2895 +https://github.com/owncloud/phoenix/pull/2928 diff --git a/changelog/unreleased/2895-2 b/changelog/unreleased/2895-2 new file mode 100644 index 00000000000..31e34cb9b68 --- /dev/null +++ b/changelog/unreleased/2895-2 @@ -0,0 +1,6 @@ +Enhancement: Add theme option to disable default files list status indicators + +We've added the option into the theme to disable default files list status indicators. + +https://github.com/owncloud/phoenix/issues/2895 +https://github.com/owncloud/phoenix/pull/2928 diff --git a/src/store/apps.js b/src/store/apps.js index 311dc34e86f..ddba6dba3df 100644 --- a/src/store/apps.js +++ b/src/store/apps.js @@ -8,6 +8,7 @@ const state = { extensions: {}, newFileHandlers: [], fileSideBars: [], + customFilesListIndicators: [], meta: {} } @@ -118,6 +119,15 @@ const mutations = { }) state.fileSideBars = list } + + if (appInfo.filesListIndicators) { + const indicators = state.customFilesListIndicators + appInfo.filesListIndicators.forEach(indicator => { + indicators.push(indicator) + }) + state.customFilesListIndicators = indicators + } + if (!appInfo.id) return // name: use id as fallback display name // icon: use empty box as fallback icon @@ -164,7 +174,8 @@ const getters = { }, fileSideBars: state => { return state.fileSideBars - } + }, + customFilesListIndicators: state => state.customFilesListIndicators } export default { diff --git a/src/store/config.js b/src/store/config.js index 0ded00196cd..d9f6c8ccb50 100644 --- a/src/store/config.js +++ b/src/store/config.js @@ -23,6 +23,9 @@ const state = { }, logo: { favicon: '' + }, + filesList: { + hideDefaultStatusIndicators: false } } } diff --git a/themes/owncloud.json b/themes/owncloud.json index 37193e6592d..e097e5a49cf 100644 --- a/themes/owncloud.json +++ b/themes/owncloud.json @@ -5,5 +5,8 @@ }, "logo": { "favicon": "themes/owncloud/favicon.jpg" + }, + "filesList": { + "hideDefaultStatusIndicators": false } }