Make file actions permissions aware
This commit is contained in:
parent
6f58eca534
commit
4d17ed2f71
|
@ -75,7 +75,7 @@ Calendar_Import={
|
||||||
}
|
}
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if(typeof FileActions !== 'undefined'){
|
if(typeof FileActions !== 'undefined'){
|
||||||
FileActions.register('text/calendar','importcal', '', Calendar_Import.importdialog);
|
FileActions.register('text/calendar','importcal', FileActions.PERMISSION_READ, '', Calendar_Import.importdialog);
|
||||||
FileActions.setDefault('text/calendar','importcal');
|
FileActions.setDefault('text/calendar','importcal');
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -78,9 +78,9 @@ Contacts_Import={
|
||||||
}
|
}
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if(typeof FileActions !== 'undefined'){
|
if(typeof FileActions !== 'undefined'){
|
||||||
FileActions.register('text/vcard','importaddressbook', '', Contacts_Import.importdialog);
|
FileActions.register('text/vcard','importaddressbook', FileActions.PERMISSION_READ, '', Contacts_Import.importdialog);
|
||||||
FileActions.setDefault('text/vcard','importaddressbook');
|
FileActions.setDefault('text/vcard','importaddressbook');
|
||||||
FileActions.register('text/x-vcard','importaddressbook', '', Contacts_Import.importdialog);
|
FileActions.register('text/x-vcard','importaddressbook', FileActions.PERMISSION_READ, '', Contacts_Import.importdialog);
|
||||||
FileActions.setDefault('text/x-vcard','importaddressbook');
|
FileActions.setDefault('text/x-vcard','importaddressbook');
|
||||||
};
|
};
|
||||||
});
|
});
|
|
@ -1,19 +1,28 @@
|
||||||
FileActions={
|
FileActions={
|
||||||
|
PERMISSION_CREATE:4,
|
||||||
|
PERMISSION_READ:1,
|
||||||
|
PERMISSION_UPDATE:2,
|
||||||
|
PERMISSION_DELETE:8,
|
||||||
|
PERMISSION_SHARE:16,
|
||||||
actions:{},
|
actions:{},
|
||||||
defaults:{},
|
defaults:{},
|
||||||
icons:{},
|
icons:{},
|
||||||
currentFile:null,
|
currentFile:null,
|
||||||
register:function(mime,name,icon,action){
|
register:function(mime,name,permissions,icon,action){
|
||||||
if(!FileActions.actions[mime]){
|
if(!FileActions.actions[mime]){
|
||||||
FileActions.actions[mime]={};
|
FileActions.actions[mime]={};
|
||||||
}
|
}
|
||||||
FileActions.actions[mime][name]=action;
|
if (!FileActions.actions[mime][name]) {
|
||||||
|
FileActions.actions[mime][name] = {};
|
||||||
|
}
|
||||||
|
FileActions.actions[mime][name]['action'] = action;
|
||||||
|
FileActions.actions[mime][name]['permissions'] = permissions;
|
||||||
FileActions.icons[name]=icon;
|
FileActions.icons[name]=icon;
|
||||||
},
|
},
|
||||||
setDefault:function(mime,name){
|
setDefault:function(mime,name){
|
||||||
FileActions.defaults[mime]=name;
|
FileActions.defaults[mime]=name;
|
||||||
},
|
},
|
||||||
get:function(mime,type){
|
get:function(mime,type,permissions){
|
||||||
var actions={};
|
var actions={};
|
||||||
if(FileActions.actions.all){
|
if(FileActions.actions.all){
|
||||||
actions=$.extend( actions, FileActions.actions.all )
|
actions=$.extend( actions, FileActions.actions.all )
|
||||||
|
@ -32,9 +41,15 @@ FileActions={
|
||||||
actions=$.extend( actions, FileActions.actions[type] )
|
actions=$.extend( actions, FileActions.actions[type] )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return actions;
|
var filteredActions = {};
|
||||||
|
$.each(actions, function(name, action) {
|
||||||
|
if (action.permissions & permissions) {
|
||||||
|
filteredActions[name] = action.action;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return filteredActions;
|
||||||
},
|
},
|
||||||
getDefault:function(mime,type){
|
getDefault:function(mime,type,permissions){
|
||||||
if(mime){
|
if(mime){
|
||||||
var mimePart=mime.substr(0,mime.indexOf('/'));
|
var mimePart=mime.substr(0,mime.indexOf('/'));
|
||||||
}
|
}
|
||||||
|
@ -48,22 +63,20 @@ FileActions={
|
||||||
}else{
|
}else{
|
||||||
name=FileActions.defaults.all;
|
name=FileActions.defaults.all;
|
||||||
}
|
}
|
||||||
var actions=this.get(mime,type);
|
var actions=this.get(mime,type,permissions);
|
||||||
return actions[name];
|
return actions[name];
|
||||||
},
|
},
|
||||||
display:function(parent, filename, type){
|
display:function(parent){
|
||||||
FileActions.currentFile=parent;
|
FileActions.currentFile=parent;
|
||||||
$('#fileList span.fileactions, #fileList td.date a.action').remove();
|
$('#fileList span.fileactions, #fileList td.date a.action').remove();
|
||||||
var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
|
var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType(), FileActions.getCurrentPermissions());
|
||||||
var file=FileActions.getCurrentFile();
|
var file=FileActions.getCurrentFile();
|
||||||
if($('tr').filterAttr('data-file',file).data('renaming')){
|
if($('tr').filterAttr('data-file',file).data('renaming')){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
parent.children('a.name').append('<span class="fileactions" />');
|
parent.children('a.name').append('<span class="fileactions" />');
|
||||||
var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
|
var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType(), FileActions.getCurrentPermissions());
|
||||||
for(name in actions){
|
for(name in actions){
|
||||||
// no rename and share action for the 'Shared' dir
|
|
||||||
if((name=='Rename' || name =='Share') && type=='dir' && filename=='Shared') { continue; }
|
|
||||||
if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){
|
if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){
|
||||||
var img=FileActions.icons[name];
|
var img=FileActions.icons[name];
|
||||||
if(img.call){
|
if(img.call){
|
||||||
|
@ -86,16 +99,12 @@ FileActions={
|
||||||
parent.find('a.name>span.fileactions').append(element);
|
parent.find('a.name>span.fileactions').append(element);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(actions['Delete'] && (type!='dir' || filename != 'Shared')){ // no delete action for the 'Shared' dir
|
if(actions['Delete']){
|
||||||
var img=FileActions.icons['Delete'];
|
var img=FileActions.icons['Delete'];
|
||||||
if(img.call){
|
if(img.call){
|
||||||
img=img(file);
|
img=img(file);
|
||||||
}
|
}
|
||||||
if ($('#dir').val().indexOf('Shared') != -1) {
|
|
||||||
var html='<a href="#" original-title="' + t('files', 'Unshare') + '" class="action delete" style="display:none" />';
|
|
||||||
} else {
|
|
||||||
var html='<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete" style="display:none" />';
|
var html='<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete" style="display:none" />';
|
||||||
}
|
|
||||||
var element=$(html);
|
var element=$(html);
|
||||||
if(img){
|
if(img){
|
||||||
element.append($('<img src="'+img+'"/>'));
|
element.append($('<img src="'+img+'"/>'));
|
||||||
|
@ -131,6 +140,9 @@ FileActions={
|
||||||
},
|
},
|
||||||
getCurrentType:function(){
|
getCurrentType:function(){
|
||||||
return FileActions.currentFile.parent().attr('data-type');
|
return FileActions.currentFile.parent().attr('data-type');
|
||||||
|
},
|
||||||
|
getCurrentPermissions:function() {
|
||||||
|
return FileActions.currentFile.parent().data('permissions');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,12 +152,12 @@ $(document).ready(function(){
|
||||||
} else {
|
} else {
|
||||||
var downloadScope = 'file';
|
var downloadScope = 'file';
|
||||||
}
|
}
|
||||||
FileActions.register(downloadScope,'Download',function(){return OC.imagePath('core','actions/download')},function(filename){
|
FileActions.register(downloadScope,'Download', FileActions.PERMISSION_READ, function(){return OC.imagePath('core','actions/download')},function(filename){
|
||||||
window.location=OC.filePath('files', 'ajax', 'download.php') + encodeURIComponent('?files='+encodeURIComponent(filename)+'&dir='+encodeURIComponent($('#dir').val()));
|
window.location=OC.filePath('files', 'ajax', 'download.php') + encodeURIComponent('?files='+encodeURIComponent(filename)+'&dir='+encodeURIComponent($('#dir').val()));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
FileActions.register('all','Delete',function(){return OC.imagePath('core','actions/delete')},function(filename){
|
FileActions.register('all','Delete', FileActions.PERMISSION_DELETE, function(){return OC.imagePath('core','actions/delete')},function(filename){
|
||||||
if(Files.cancelUpload(filename)) {
|
if(Files.cancelUpload(filename)) {
|
||||||
if(filename.substr){
|
if(filename.substr){
|
||||||
filename=[filename];
|
filename=[filename];
|
||||||
|
@ -162,11 +174,11 @@ FileActions.register('all','Delete',function(){return OC.imagePath('core','actio
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
FileActions.register('all','Rename',function(){return OC.imagePath('core','actions/rename')},function(filename){
|
FileActions.register('all','Rename', FileActions.PERMISSION_UPDATE, function(){return OC.imagePath('core','actions/rename')},function(filename){
|
||||||
FileList.rename(filename);
|
FileList.rename(filename);
|
||||||
});
|
});
|
||||||
|
|
||||||
FileActions.register('dir','Open','',function(filename){
|
FileActions.register('dir','Open', FileActions.PERMISSION_READ, '', function(filename){
|
||||||
window.location=OC.linkTo('files', 'index.php') + '&dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename);
|
window.location=OC.linkTo('files', 'index.php') + '&dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ $(document).ready(function() {
|
||||||
|
|
||||||
// Sets the file-action buttons behaviour :
|
// Sets the file-action buttons behaviour :
|
||||||
$('tr').live('mouseenter',function(event) {
|
$('tr').live('mouseenter',function(event) {
|
||||||
FileActions.display($(this).children('td.filename'), $(this).attr('data-file'), $(this).attr('data-type'));
|
FileActions.display($(this).children('td.filename'));
|
||||||
});
|
});
|
||||||
$('tr').live('mouseleave',function(event) {
|
$('tr').live('mouseleave',function(event) {
|
||||||
FileActions.hide();
|
FileActions.hide();
|
||||||
|
@ -106,7 +106,8 @@ $(document).ready(function() {
|
||||||
if(!renaming && !FileList.isLoading(filename)){
|
if(!renaming && !FileList.isLoading(filename)){
|
||||||
var mime=$(this).parent().parent().data('mime');
|
var mime=$(this).parent().parent().data('mime');
|
||||||
var type=$(this).parent().parent().data('type');
|
var type=$(this).parent().parent().data('type');
|
||||||
var action=FileActions.getDefault(mime,type);
|
var permissions = $(this).parent().parent().data('permissions');
|
||||||
|
var action=FileActions.getDefault(mime,type, permissions);
|
||||||
if(action){
|
if(action){
|
||||||
action(filename);
|
action(filename);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php foreach($_['files'] as $file):
|
<?php foreach($_['files'] as $file):
|
||||||
$write = ($file['writable']) ? 'true' : 'false';
|
|
||||||
$simple_file_size = OCP\simple_file_size($file['size']);
|
$simple_file_size = OCP\simple_file_size($file['size']);
|
||||||
$simple_size_color = intval(200-$file['size']/(1024*1024)*2); // the bigger the file, the darker the shade of grey; megabytes*2
|
$simple_size_color = intval(200-$file['size']/(1024*1024)*2); // the bigger the file, the darker the shade of grey; megabytes*2
|
||||||
if($simple_size_color<0) $simple_size_color = 0;
|
if($simple_size_color<0) $simple_size_color = 0;
|
||||||
|
@ -10,7 +9,7 @@
|
||||||
$name = str_replace('%2F','/', $name);
|
$name = str_replace('%2F','/', $name);
|
||||||
$directory = str_replace('+','%20',urlencode($file['directory']));
|
$directory = str_replace('+','%20',urlencode($file['directory']));
|
||||||
$directory = str_replace('%2F','/', $directory); ?>
|
$directory = str_replace('%2F','/', $directory); ?>
|
||||||
<tr data-file="<?php echo $name;?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mimetype']?>" data-size='<?php echo $file['size'];?>' data-write='<?php echo $write;?>'>
|
<tr data-file="<?php echo $name;?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mimetype']?>" data-size='<?php echo $file['size'];?>' data-permissions='<?php echo $file['permissions']; ?>'>
|
||||||
<td class="filename svg" style="background-image:url(<?php if($file['type'] == 'dir') echo OCP\mimetype_icon('dir'); else echo OCP\mimetype_icon($file['mimetype']); ?>)">
|
<td class="filename svg" style="background-image:url(<?php if($file['type'] == 'dir') echo OCP\mimetype_icon('dir'); else echo OCP\mimetype_icon($file['mimetype']); ?>)">
|
||||||
<?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" /><?php } ?>
|
<?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" /><?php } ?>
|
||||||
<a class="name" href="<?php if($file['type'] == 'dir') echo $_['baseURL'].$directory.'/'.$name; else echo $_['downloadURL'].$directory.'/'.$name; ?>" title="">
|
<a class="name" href="<?php if($file['type'] == 'dir') echo $_['baseURL'].$directory.'/'.$name; else echo $_['downloadURL'].$directory.'/'.$name; ?>" title="">
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
if(typeof FileActions!=='undefined'){
|
if(typeof FileActions!=='undefined'){
|
||||||
FileActions.register('application/zip','Open','',function(filename){
|
FileActions.register('application/zip','Open', FileActions.PERMISSION_READ, '',function(filename){
|
||||||
window.location=OC.linkTo('files', 'index.php')+'&dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename);
|
window.location=OC.linkTo('files', 'index.php')+'&dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename);
|
||||||
});
|
});
|
||||||
FileActions.setDefault('application/zip','Open');
|
FileActions.setDefault('application/zip','Open');
|
||||||
FileActions.register('application/x-gzip','Open','',function(filename){
|
FileActions.register('application/x-gzip','Open', FileActions.PERMISSION_READ, '',function(filename){
|
||||||
window.location=OC.linkTo('files', 'index.php')+'&dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename);
|
window.location=OC.linkTo('files', 'index.php')+'&dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename);
|
||||||
});
|
});
|
||||||
FileActions.setDefault('application/x-gzip','Open');
|
FileActions.setDefault('application/x-gzip','Open');
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
if(typeof FileActions!=='undefined'){
|
if(typeof FileActions!=='undefined'){
|
||||||
FileActions.register('image','View','',function(filename){
|
FileActions.register('image','View', FileActions.PERMISSION_READ, '',function(filename){
|
||||||
viewImage($('#dir').val(),filename);
|
viewImage($('#dir').val(),filename);
|
||||||
});
|
});
|
||||||
FileActions.setDefault('image','View');
|
FileActions.setDefault('image','View');
|
||||||
|
|
|
@ -40,7 +40,7 @@ $(document).ready(function(){
|
||||||
if(location.href.indexOf("files")!=-1) {
|
if(location.href.indexOf("files")!=-1) {
|
||||||
PDFJS.workerSrc = OC.filePath('files_pdfviewer','js','pdfjs/build/pdf.js');
|
PDFJS.workerSrc = OC.filePath('files_pdfviewer','js','pdfjs/build/pdf.js');
|
||||||
if(typeof FileActions!=='undefined'){
|
if(typeof FileActions!=='undefined'){
|
||||||
FileActions.register('application/pdf','Edit','',function(filename){
|
FileActions.register('application/pdf','Edit', FileActions.PERMISSION_READ, '',function(filename){
|
||||||
showPDFviewer($('#dir').val(),filename);
|
showPDFviewer($('#dir').val(),filename);
|
||||||
});
|
});
|
||||||
FileActions.setDefault('application/pdf','Edit');
|
FileActions.setDefault('application/pdf','Edit');
|
||||||
|
|
|
@ -70,7 +70,14 @@ class OC_Share_Backend_File extends OCP\Share_Backend {
|
||||||
// Set target path
|
// Set target path
|
||||||
$file['path'] = $shares[$file['id']]['file_target'];
|
$file['path'] = $shares[$file['id']]['file_target'];
|
||||||
$file['name'] = basename($file['path']);
|
$file['name'] = basename($file['path']);
|
||||||
// TODO Set permissions: $file['writable']
|
$file['directory'] = $parameters['folder'];
|
||||||
|
$file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
|
||||||
|
$permissions = $shares[$file['id']]['permissions'];
|
||||||
|
if ($file['type'] == 'file') {
|
||||||
|
// Remove Create permission if type is file
|
||||||
|
$permissions &= ~OCP\Share::PERMISSION_CREATE;
|
||||||
|
}
|
||||||
|
$file['permissions'] = $permissions;
|
||||||
$files[] = $file;
|
$files[] = $file;
|
||||||
}
|
}
|
||||||
return $files;
|
return $files;
|
||||||
|
@ -85,7 +92,7 @@ class OC_Share_Backend_File extends OCP\Share_Backend {
|
||||||
}
|
}
|
||||||
$size += $file['size'];
|
$size += $file['size'];
|
||||||
}
|
}
|
||||||
return array(0 => array('name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false));
|
return array(0 => array('name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false, 'type' => 'dir', 'directory' => '', 'permissions' => OCP\Share::PERMISSION_READ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return array();
|
return array();
|
||||||
|
|
|
@ -43,7 +43,18 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File {
|
||||||
$pos = strpos($result['path'], $folder['item']);
|
$pos = strpos($result['path'], $folder['item']);
|
||||||
$path = substr($result['path'], $pos).substr($parameters['folder'], strlen($folder['file_target']));
|
$path = substr($result['path'], $pos).substr($parameters['folder'], strlen($folder['file_target']));
|
||||||
$root = substr($result['path'], 0, $pos);
|
$root = substr($result['path'], 0, $pos);
|
||||||
return OC_FileCache::getFolderContent($path, $root, $mimetype_filter);
|
$files = OC_FileCache::getFolderContent($path, $root, $mimetype_filter);
|
||||||
|
foreach ($files as &$file) {
|
||||||
|
$file['directory'] = $parameters['folder'];
|
||||||
|
$file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
|
||||||
|
$permissions = $folder['permissions'];
|
||||||
|
if ($file['type'] == 'file') {
|
||||||
|
// Remove Create permission if type is file
|
||||||
|
$permissions &= ~OCP\Share::PERMISSION_CREATE;
|
||||||
|
}
|
||||||
|
$file['permissions'] = $permissions;
|
||||||
|
}
|
||||||
|
return $files;
|
||||||
}
|
}
|
||||||
}/* else if ($format == self::FORMAT_OPENDIR_ROOT) {
|
}/* else if ($format == self::FORMAT_OPENDIR_ROOT) {
|
||||||
$query = OCP\DB::prepare('SELECT name FROM *PREFIX*fscache WHERE id IN ('.$ids.')');
|
$query = OCP\DB::prepare('SELECT name FROM *PREFIX*fscache WHERE id IN ('.$ids.')');
|
||||||
|
|
|
@ -222,9 +222,17 @@ function showFileEditor(dir,filename){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Add the ctrl+s event
|
// Add the ctrl+s event
|
||||||
window.aceEditor.commands.addCommand({
name: "save",
bindKey: {
win: "Ctrl-S",
mac: "Command-S",
sender: "editor"
},
exec: function(){
|
window.aceEditor.commands.addCommand({
|
||||||
|
name: "save",
|
||||||
|
bindKey: {
|
||||||
|
win: "Ctrl-S",
|
||||||
|
mac: "Command-S",
|
||||||
|
sender: "editor"
|
||||||
|
},
|
||||||
|
exec: function(){
|
||||||
doFileSave();
|
doFileSave();
|
||||||
}
});
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Failed to get the file.
|
// Failed to get the file.
|
||||||
|
@ -297,11 +305,11 @@ $(window).resize(function() {
|
||||||
var is_editor_shown = false;
|
var is_editor_shown = false;
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if(typeof FileActions!=='undefined'){
|
if(typeof FileActions!=='undefined'){
|
||||||
FileActions.register('text','Edit','',function(filename){
|
FileActions.register('text','Edit', FileActions.PERMISSION_READ, '',function(filename){
|
||||||
showFileEditor($('#dir').val(),filename);
|
showFileEditor($('#dir').val(),filename);
|
||||||
});
|
});
|
||||||
FileActions.setDefault('text','Edit');
|
FileActions.setDefault('text','Edit');
|
||||||
FileActions.register('application/xml','Edit','',function(filename){
|
FileActions.register('application/xml','Edit', FileActions.PERMISSION_READ, '',function(filename){
|
||||||
showFileEditor($('#dir').val(),filename);
|
showFileEditor($('#dir').val(),filename);
|
||||||
});
|
});
|
||||||
FileActions.setDefault('application/xml','Edit');
|
FileActions.setDefault('application/xml','Edit');
|
||||||
|
|
|
@ -11,7 +11,7 @@ $(document).ready(function() {
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if (typeof FileActions !== 'undefined') {
|
if (typeof FileActions !== 'undefined') {
|
||||||
// Add history button to files/index.php
|
// Add history button to files/index.php
|
||||||
FileActions.register('file','History',function(){return OC.imagePath('core','actions/history')},function(filename){
|
FileActions.register('file','History', FileActions.PERMISSION_UPDATE, function(){return OC.imagePath('core','actions/history')},function(filename){
|
||||||
|
|
||||||
if (scanFiles.scanning){return;}//workaround to prevent additional http request block scanning feedback
|
if (scanFiles.scanning){return;}//workaround to prevent additional http request block scanning feedback
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,8 @@ $(document).ready(function() {
|
||||||
// FileActions.register('application/ogg','Add to playlist','',addAudio);
|
// FileActions.register('application/ogg','Add to playlist','',addAudio);
|
||||||
|
|
||||||
if(typeof FileActions!=='undefined'){
|
if(typeof FileActions!=='undefined'){
|
||||||
FileActions.register('audio','Play','',playAudio);
|
FileActions.register('audio','Play', FileActions.PERMISSION_READ, '',playAudio);
|
||||||
FileActions.register('application/ogg','','Play',playAudio);
|
FileActions.register('application/ogg', FileActions.PERMISSION_READ, '','Play',playAudio);
|
||||||
FileActions.setDefault('audio','Play');
|
FileActions.setDefault('audio','Play');
|
||||||
FileActions.setDefault('application/ogg','Play');
|
FileActions.setDefault('application/ogg','Play');
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,7 +164,7 @@ $(document).ready(function() {
|
||||||
if (typeof FileActions !== 'undefined') {
|
if (typeof FileActions !== 'undefined') {
|
||||||
|
|
||||||
OC.Share.loadIcons('file');
|
OC.Share.loadIcons('file');
|
||||||
FileActions.register('all', 'Share', function(filename) {
|
FileActions.register('all', 'Share', FileActions.PERMISSION_SHARE, function(filename) {
|
||||||
// Return the correct sharing icon
|
// Return the correct sharing icon
|
||||||
if (scanFiles.scanning) { return; } // workaround to prevent additional http request block scanning feedback
|
if (scanFiles.scanning) { return; } // workaround to prevent additional http request block scanning feedback
|
||||||
var item = $('#dir').val() + '/' + filename;
|
var item = $('#dir').val() + '/' + filename;
|
||||||
|
|
|
@ -36,7 +36,7 @@ class OC_Files {
|
||||||
$files = array();
|
$files = array();
|
||||||
if (substr($directory, 0, 7) == '/Shared') {
|
if (substr($directory, 0, 7) == '/Shared') {
|
||||||
if ($directory == '/Shared') {
|
if ($directory == '/Shared') {
|
||||||
$files = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP, array('mimetype_filter' => $mimetype_filter));
|
$files = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP, array('folder' => $directory, 'mimetype_filter' => $mimetype_filter));
|
||||||
} else {
|
} else {
|
||||||
$pos = strpos($directory, '/', 8);
|
$pos = strpos($directory, '/', 8);
|
||||||
// Get shared folder name
|
// Get shared folder name
|
||||||
|
@ -49,15 +49,23 @@ class OC_Files {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$files = OC_FileCache::getFolderContent($directory, false, $mimetype_filter);
|
$files = OC_FileCache::getFolderContent($directory, false, $mimetype_filter);
|
||||||
|
foreach ($files as &$file) {
|
||||||
|
$file['directory'] = $directory;
|
||||||
|
$file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
|
||||||
|
$permissions = OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE;
|
||||||
|
if ($file['type'] == 'dir' && $file['writable']) {
|
||||||
|
$permissions |= OCP\Share::PERMISSION_CREATE;
|
||||||
|
}
|
||||||
|
if ($file['writable']) {
|
||||||
|
$permissions |= OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE;
|
||||||
|
}
|
||||||
|
$file['permissions'] = $permissions;
|
||||||
|
}
|
||||||
if ($directory == '') {
|
if ($directory == '') {
|
||||||
// Add 'Shared' folder
|
// Add 'Shared' folder
|
||||||
$files = array_merge($files, OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP_ROOT));
|
$files = array_merge($files, OCP\Share::getItemsSharedWith('file', OC_Share_Backend_File::FORMAT_FILE_APP_ROOT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($files as &$file) {
|
|
||||||
$file['directory'] = $directory;
|
|
||||||
$file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
|
|
||||||
}
|
|
||||||
usort($files, "fileCmp");//TODO: remove this once ajax is merged
|
usort($files, "fileCmp");//TODO: remove this once ajax is merged
|
||||||
return $files;
|
return $files;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue