From 710d017eec7a97c1e58ef0cd4556555cf84b9b8f Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Fri, 6 Jun 2014 13:50:41 +0200 Subject: [PATCH] Added more columns to ext storage list Now using system mount and personal mount calls to get the relevant mount points including backend information. --- apps/files_external/js/mountsfilelist.js | 10 +++- apps/files_external/lib/api.php | 61 ++++++++++++++++-------- apps/files_external/templates/list.php | 6 +++ 3 files changed, 55 insertions(+), 22 deletions(-) diff --git a/apps/files_external/js/mountsfilelist.js b/apps/files_external/js/mountsfilelist.js index fffe994268..95b596bca8 100644 --- a/apps/files_external/js/mountsfilelist.js +++ b/apps/files_external/js/mountsfilelist.js @@ -29,8 +29,16 @@ _createRow: function(fileData) { // TODO: hook earlier and render the whole row here var $tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments); + var $scopeColumn = $(''); + var $backendColumn = $(''); + var scopeText = t('files_external', 'Personal'); + if (fileData.scope === 'system') { + scopeText = t('files_external', 'System'); + } $tr.find('.filesize,.date').remove(); - $tr.find('td.filename').after(''); + $scopeColumn.text(scopeText); + $backendColumn.text(fileData.backend); + $tr.find('td.filename').after($scopeColumn).after($backendColumn); $tr.find('td.filename input:checkbox').remove(); return $tr; }, diff --git a/apps/files_external/lib/api.php b/apps/files_external/lib/api.php index d94dbcffc8..51c48427aa 100644 --- a/apps/files_external/lib/api.php +++ b/apps/files_external/lib/api.php @@ -24,6 +24,39 @@ namespace OCA\Files\External; class Api { + /** + * Formats the given mount config to a mount entry. + * + * @param bool $isSystemMount true for system mount, false + * for personal mount + * + * @return array entry + */ + private static function formatMount($mountConfig, $isSystemMount = false) { + // split user name from mount point + $path = dirname($mountConfig['mountpoint']); + if ($path === '.') { + $path = ''; + } + + $permissions = \OCP\PERMISSION_READ; + // personal mounts can be deleted + if (!$isSystemMount) { + $permissions |= \OCP\PERMISSION_DELETE; + } + + // TODO: add storageType, might need to use another OC_Mount_Config method + $entry = array( + 'name' => basename($mountConfig['mountpoint']), + 'path' => $path, + 'type' => 'dir', + 'backend' => $mountConfig['backend'], + 'scope' => ( $isSystemMount ? 'system' : 'personal' ), + 'permissions' => $permissions + ); + return $entry; + } + /** * Returns the mount points visible for this user. * @@ -33,30 +66,16 @@ class Api { public static function getUserMounts($params) { $entries = array(); $user = \OC_User::getUser(); - $mounts = \OC_Mount_Config::getAbsoluteMountPoints($user); - foreach ($mounts as $mountPoint => $config) { - // split user name from mount point - $parts = explode('/', ltrim($mountPoint, '/')); - array_shift($parts); // use name - array_shift($parts); // files - $mountPoint = implode('/', $parts); + $personalMounts = \OC_Mount_Config::getPersonalMountPoints(); + $systemMounts = \OC_Mount_Config::getSystemMountPoints(); - $path = dirname($mountPoint); - if ($path === '.') { - $path = ''; - } + foreach ($systemMounts as $mountConfig) { + $entries[] = self::formatMount($mountConfig, true); + } - // TODO: give delete permissions if mount type is personal - $permissions = \OCP\PERMISSION_READ; - - // TODO: add storageType, might need to use another OC_Mount_Config method - $entries[] = array( - 'name' => basename($mountPoint), - 'path' => $path, - 'type' => 'dir', - 'permissions' => $permissions - ); + foreach ($personalMounts as $mountConfig) { + $entries[] = self::formatMount($mountConfig, false); } return new \OC_OCS_Result($entries); diff --git a/apps/files_external/templates/list.php b/apps/files_external/templates/list.php index 225616e8cf..900a17be71 100644 --- a/apps/files_external/templates/list.php +++ b/apps/files_external/templates/list.php @@ -16,6 +16,12 @@ t( 'Name' )); ?> + + t('Storage type')); ?> + + + t('Scope')); ?> +