Fixed ajax support to also update the current dir permissions

This commit is contained in:
Vincent Petry 2013-08-29 23:45:02 +02:00
parent 4549cf519e
commit 364e7991a4
5 changed files with 45 additions and 21 deletions

View 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));

View 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');

View 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();

View 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;
}
}

View 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>
@ -50,10 +49,9 @@
</div>
</div>
<div id="file_action_panel"></div>
<?php elseif( !$_['isPublic'] ):?>
<div class="actions"><input type="button" disabled value="<?php p($l->t('You dont 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 dont have write permissions here.'))?>"></div>
</div>
<input type="hidden" name="permissions" value="<?php p($_['permissions']); ?>" id="permissions">
</div>