]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fixed ajax support to also update the current dir permissions
authorVincent Petry <pvince81@owncloud.com>
Thu, 29 Aug 2013 21:45:02 +0000 (23:45 +0200)
committerVincent Petry <pvince81@owncloud.com>
Fri, 13 Sep 2013 17:59:15 +0000 (19:59 +0200)
apps/files/ajax/list.php
apps/files/index.php
apps/files/js/filelist.js
apps/files/lib/helper.php
apps/files/templates/index.php

index 035ffc0e39392bedb25d4e618b26d72b886032c6..f1b713b55346714907d6da144d1cb92dc6b36bc2 100644 (file)
@@ -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));
index ec824f895b6ab176ab57e3f6441b0ec328ca156d..4b930f89024afc5c7442088361ff8c2fa0cbb865 100644 (file)
@@ -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');
index 638864d9eca3b3c98dc2cc7b101bd67b3f134ff7..07605a7d8912be7b35aa880a6b0b1e8198040f3e 100644 (file)
@@ -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();
index 282f0678a9ace233764e889cfead4c3563be2dcf..3c13b8ea6e2509b2fe6b6b1e1766d7a007b28648 100644 (file)
@@ -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;
+       }
 }
index 9ca115f771101c6140481abca00042f3fef08197..0105f4370e509dc59755973a4cf18faf5cd02dcc 100644 (file)
@@ -1,8 +1,7 @@
 <!--[if IE 8]><style>input[type="checkbox"]{padding:0;}table td{position:static !important;}</style><![endif]-->
 <div id="controls">
        <?php print_unescaped($_['breadcrumb']); ?>
-       <?php if ($_['isCreatable']):?>
-               <div class="actions <?php if (isset($_['files']) and count($_['files'])==0):?>emptycontent<?php endif; ?>">
+               <div class="actions creatable <?php if (!$_['isCreatable']):?>hidden<?php endif; ?> <?php if (isset($_['files']) and count($_['files'])==0):?>emptycontent<?php endif; ?>">
                        <div id="new" class="button">
                                <a><?php p($l->t('New'));?></a>
                                <ul>
                        </div>
                </div>
                <div id="file_action_panel"></div>
-       <?php elseif( !$_['isPublic'] ):?>
-               <div class="actions"><input type="button" disabled value="<?php p($l->t('You don’t have write permissions here.'))?>"></div>
-               <input type="hidden" name="dir" value="<?php p($_['dir']) ?>" id="dir">
-       <?php endif;?>
+               <div class="notCreatable notPublic <?php if ($_['isCreatable'] or $_['isPublic'] ):?>hidden<?php endif; ?>">
+                       <div class="actions"><input type="button" disabled value="<?php p($l->t('You don’t have write permissions here.'))?>"></div>
+               </div>
        <input type="hidden" name="permissions" value="<?php p($_['permissions']); ?>" id="permissions">
 </div>