From 8761b201a51df4458b92a219b468aec135382e6c Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 5 Jul 2016 15:05:01 +0200 Subject: [PATCH] Add "goto" links for files in non-default file lists --- apps/files/js/filelist.js | 2 +- apps/files/js/gotoplugin.js | 58 ++++++++++++++++++++ apps/files/lib/Controller/ViewController.php | 1 + 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 apps/files/js/gotoplugin.js diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 593f182cf7317..24a6f4ec6e269 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -1387,7 +1387,7 @@ return; } this._setCurrentDir(targetDir, changeUrl, fileId); - this.reload().then(function(success){ + return this.reload().then(function(success){ if (!success) { self.changeDirectory(currentDir, true); } diff --git a/apps/files/js/gotoplugin.js b/apps/files/js/gotoplugin.js new file mode 100644 index 0000000000000..69ec64b0266a7 --- /dev/null +++ b/apps/files/js/gotoplugin.js @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2016 Robin Appelman + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + + +(function (OCA) { + + OCA.Files = OCA.Files || {}; + + /** + * @namespace OCA.Files.GotoPlugin + * + */ + OCA.Files.GotoPlugin = { + name: 'Goto', + + disallowedLists: [ + 'files', + 'trashbin' + ], + + attach: function (fileList) { + if (this.disallowedLists.indexOf(fileList.id) !== -1) { + return; + } + var fileActions = fileList.fileActions; + + fileActions.registerAction({ + name: 'Goto', + displayName: t('files', 'View in folder'), + mime: 'all', + permissions: OC.PERMISSION_ALL, + iconClass: 'icon-goto nav-icon-extstoragemounts', + type: OCA.Files.FileActions.TYPE_DROPDOWN, + actionHandler: function (fileName, context) { + var fileModel = context.fileInfoModel; + OCA.Files.App.setActiveView('files', {silent: true}); + OCA.Files.App.fileList.changeDirectory(fileModel.get('path'), true, true).then(function() { + OCA.Files.App.fileList.scrollTo(fileModel.get('name')); + }); + }, + render: function (actionSpec, isDefault, context) { + return fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context) + .removeClass('permanent'); + } + }); + } + }; +})(OCA); + +OC.Plugins.register('OCA.Files.FileList', OCA.Files.GotoPlugin); + diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index 30d5bb87f1397..1137f47c6d2d1 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -171,6 +171,7 @@ public function index($dir = '', $view = '', $fileid = null) { \OCP\Util::addScript('files', 'favoritesfilelist'); \OCP\Util::addScript('files', 'tagsplugin'); + \OCP\Util::addScript('files', 'gotoplugin'); \OCP\Util::addScript('files', 'favoritesplugin'); \OCP\Util::addScript('files', 'detailfileinfoview');