From 364e7991a42c92affb9085082ff79f6b653de6dd Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 29 Aug 2013 23:45:02 +0200 Subject: [PATCH] Fixed ajax support to also update the current dir permissions --- apps/files/ajax/list.php | 4 ++++ apps/files/index.php | 14 +------------- apps/files/js/filelist.js | 16 ++++++++++++++-- apps/files/lib/helper.php | 22 ++++++++++++++++++++++ apps/files/templates/index.php | 10 ++++------ 5 files changed, 45 insertions(+), 21 deletions(-) diff --git a/apps/files/ajax/list.php b/apps/files/ajax/list.php index 035ffc0e39..f1b713b553 100644 --- a/apps/files/ajax/list.php +++ b/apps/files/ajax/list.php @@ -20,6 +20,8 @@ $doBreadcrumb = isset($_GET['breadcrumb']); $data = array(); $baseUrl = OCP\Util::linkTo('files', 'index.php') . '?dir='; +$permissions = \OCA\files\lib\Helper::getDirPermissions($dir); + // Make breadcrumb if($doBreadcrumb) { $breadcrumb = \OCA\files\lib\Helper::makeBreadcrumb($dir); @@ -38,6 +40,8 @@ $list = new OCP\Template("files", "part.list", ""); $list->assign('files', $files, false); $list->assign('baseURL', $baseUrl, false); $list->assign('downloadURL', OCP\Util::linkToRoute('download', array('file' => '/'))); +$list->assign('isPublic', false); $data['files'] = $list->fetchPage(); +$data['permissions'] = $permissions; OCP\JSON::success(array('data' => $data)); diff --git a/apps/files/index.php b/apps/files/index.php index ec824f895b..4b930f8902 100644 --- a/apps/files/index.php +++ b/apps/files/index.php @@ -65,19 +65,7 @@ $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); $breadcrumbNav->assign('breadcrumb', $breadcrumb); $breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir='); -$permissions = OCP\PERMISSION_READ; -if (\OC\Files\Filesystem::isCreatable($dir . '/')) { - $permissions |= OCP\PERMISSION_CREATE; -} -if (\OC\Files\Filesystem::isUpdatable($dir . '/')) { - $permissions |= OCP\PERMISSION_UPDATE; -} -if (\OC\Files\Filesystem::isDeletable($dir . '/')) { - $permissions |= OCP\PERMISSION_DELETE; -} -if (\OC\Files\Filesystem::isSharable($dir . '/')) { - $permissions |= OCP\PERMISSION_SHARE; -} +$permissions = \OCA\files\lib\Helper::getDirPermissions($dir); if ($needUpgrade) { OCP\Util::addscript('files', 'upgrade'); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 638864d9ec..07605a7d89 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -7,9 +7,11 @@ var FileList={ }); }, update:function(fileListHtml) { - var $fileList = $('#fileList'); + var $fileList = $('#fileList'), + permissions = $('#permissions').val(), + isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; $fileList.empty().html(fileListHtml); - $('#emptycontent').toggleClass('hidden', $fileList.find('tr').length > 0); + $('#emptycontent').toggleClass('hidden', !isCreatable || $fileList.find('tr').length > 0); $fileList.find('tr').each(function () { FileActions.display($(this).children('td.filename')); }); @@ -216,6 +218,10 @@ var FileList={ return; } + if (result.data.permissions){ + FileList.setDirectoryPermissions(result.data.permissions); + } + if(typeof(result.data.breadcrumb) != 'undefined'){ $controls.find('.crumb').remove(); $controls.prepend(result.data.breadcrumb); @@ -232,6 +238,12 @@ var FileList={ FileList.update(result.data.files); }, + setDirectoryPermissions: function(permissions){ + var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; + $('#permissions').val(permissions); + $('.creatable').toggleClass('hidden', !isCreatable); + $('.notCreatable').toggleClass('hidden', isCreatable); + }, remove:function(name){ $('tr').filterAttr('data-file',name).find('td.filename').draggable('destroy'); $('tr').filterAttr('data-file',name).remove(); diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php index 282f0678a9..3c13b8ea6e 100644 --- a/apps/files/lib/helper.php +++ b/apps/files/lib/helper.php @@ -111,4 +111,26 @@ class Helper } return $breadcrumb; } + + /** + * Returns the numeric permissions for the given directory. + * @param string $dir directory without trailing slash + * @return numeric permissions + */ + public static function getDirPermissions($dir){ + $permissions = \OCP\PERMISSION_READ; + if (\OC\Files\Filesystem::isCreatable($dir . '/')) { + $permissions |= \OCP\PERMISSION_CREATE; + } + if (\OC\Files\Filesystem::isUpdatable($dir . '/')) { + $permissions |= \OCP\PERMISSION_UPDATE; + } + if (\OC\Files\Filesystem::isDeletable($dir . '/')) { + $permissions |= \OCP\PERMISSION_DELETE; + } + if (\OC\Files\Filesystem::isSharable($dir . '/')) { + $permissions |= \OCP\PERMISSION_SHARE; + } + return $permissions; + } } diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index 9ca115f771..0105f4370e 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -1,8 +1,7 @@
- -
+
t('New'));?>
    @@ -50,10 +49,9 @@
- -
- - +
+
+