Skip to content
Snippets Groups Projects
Commit 1eb0faa2 authored by Robin Appelman's avatar Robin Appelman
Browse files

make fileactions extendable by plugins

parent 3892fe55
No related branches found
No related tags found
No related merge requests found
ErrorDocument 404 //owncloud/templates/404.php
php_value upload_max_filesize 20M
php_value post_max_size 20M
SetEnv htaccessWorking true
......@@ -4,6 +4,7 @@
{
display: none;
position: absolute;
right:0px;
background-color: #EEE;
}
......@@ -36,7 +37,7 @@
#file_upload_filename {
background-image:url(../../img/mimetypes/file.png);
}
#file_upload_start {opacity:0;}
#file_upload_start {opacity:0;filter: alpha(opacity = 0);}
#file_newfolder_name {
background-image:url(../../img/places/folder.png); font-weight: bold;
......@@ -104,3 +105,10 @@ table td.filename a
text-decoration: none;
}
.dropArrow{
height:16px;
width:16px;
display: -moz-inline-box; /* fallback for older firefox versions*/
display: inline-block;
background-image:url('../../img/drop-arrow.png');
}
\ No newline at end of file
......@@ -36,6 +36,7 @@ if( !OC_USER::isLoggedIn()){
OC_UTIL::addStyle( "files", "files" );
OC_UTIL::addScript( "files", "files" );
OC_UTIL::addScript( 'files', 'filelist' );
OC_UTIL::addScript( 'files', 'fileactions' );
OC_APP::setActiveNavigationEntry( "files_index" );
// Load the files
$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
......
FileActions={
actions:{},
defaults:{},
register:function(mime,name,action){
if(!FileActions.actions[mime]){
FileActions.actions[mime]={};
}
FileActions.actions[mime][name]=action;
},
setDefault:function(mime,name){
FileActions.defaults[mime]=FileActions.actions[mime][name];
},
get:function(mime,type){
var actions={};
if(FileActions.actions.all){
actions=$.extend( actions, FileActions.actions.all )
}
if(mime){
if(FileActions.actions[mime]){
actions=$.extend( actions, FileActions.actions[mime] )
}
var mimePart=mime.substr(0,mime.indexOf('/'));
if(FileActions.actions[mimePart]){
actions=$.extend( actions, FileActions.actions[mimePart] )
}
}
if(type){//type is 'dir' or 'file'
if(FileActions.actions[type]){
actions=$.extend( actions, FileActions.actions[type] )
}
}
return actions;
},
getDefault:function(mime,type){
if(mime){
var mimePart=mime.substr(0,mime.indexOf('/'));
}
if(mime && FileActions.defaults[mime]){
return FileActions.defaults[mime];
}else if(mime && FileActions.defaults[mimePart]){
return FileActions.defaults[mimePart];
}else if(type && FileActions.defaults[type]){
return FileActions.defaults[type];
}else{
return FileActions.defaults.all;
}
},
display:function(parent){
$('#file_menu>ul').empty();
parent.append($('#file_menu'));
var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
for(name in actions){
var html='<li><a href="" alt="'+name+'">'+name+'</a></li>';
var element=$(html);
element.data('action',name);
element.click(function(){
event.preventDefault();
actions[$(this).data('action')](FileActions.getCurrentFile());
});
$('#file_menu>ul').append(element);
}
$('#file_menu').slideToggle(250);
return false;
},
getCurrentFile:function(){
return $('#file_menu').parents('tr:first').attr('data-file');
},
getCurrentMimeType:function(){
return $('#file_menu').parents('tr:first').attr('data-mime');
},
getCurrentType:function(){
return $('#file_menu').parents('tr:first').attr('data-type');
}
}
FileActions.register('all','Download',function(filename){
window.location='ajax/download.php?files='+filename+'&dir='+$('#dir').val();
$('#file_menu').slideToggle(250);
});
FileActions.register('all','Delete',function(filename){
$.ajax({
url: 'ajax/delete.php',
data: "dir="+$('#dir').val()+"&file="+filename,
complete: function(data){
boolOperationFinished(data, function(){
FileList.remove(filename);
});
}
});
});
FileActions.setDefault('all','Download');
FileActions.register('dir','Open',function(filename){
window.location='index.php?dir='+$('#dir').val()+'/'+filename;
$('#file_menu').slideToggle(250);
});
FileActions.setDefault('dir','Open');
\ No newline at end of file
......@@ -15,11 +15,22 @@ $(document).ready(function() {
// Sets the file-action buttons behaviour :
$('td.fileaction a').live('click',function() {
$(this).parent().append($('#file_menu'));
$('#file_menu').slideToggle(250);
return false;
event.preventDefault();
FileActions.display($(this).parent());
});
// Sets the file link behaviour :
$('td.filename a').live('click',function() {
event.preventDefault();
var filename=$(this).text();
var mime=$(this).parent().parent().attr('data-mime');
var type=$(this).parent().parent().attr('data-type');
var action=FileActions.getDefault(mime,type);
if(action){
action(filename);
}
});
// Sets the select_all checkbox behaviour :
$('#select_all').click(function() {
if($(this).attr('checked'))
......@@ -40,33 +51,10 @@ $(document).ready(function() {
}
});
// Download current file
$('#download_single_file').click(function() {
filename = $('#file_menu').parents('tr:first').find('.filename:first').children('a:first').text();
window.location='ajax/download.php?files='+filename+'&dir='+$('#dir').val();
$('#file_menu').slideToggle(250);
return false;
});
// Delete current file
$('#delete_single_file').click(function() {
filename = $('#file_menu').parents('tr:first').attr('data-file');
$.ajax({
url: 'ajax/delete.php',
data: "dir="+$('#dir').val()+"&file="+filename,
complete: function(data){
boolOperationFinished(data, function(){
FileList.remove(filename);
});
}
});
return false;
});
$('#file_newfolder_submit').click(function() {
$.ajax({
url: 'ajax/newfolder.php',
data: "dir="+$('#dir').val()+"&foldername="+$('#file_newfolder_name').val(),
data: "dir="+$('#dir').val()+"&foldername="+$('#file_newfolder_name').val(),
complete: function(data){boolOperationFinished(data, function(){
var date=formatDate(new Date());
FileList.addDir($('#file_newfolder_name').val(),'0 B',date)
......
......@@ -44,8 +44,5 @@
<div id="file_menu">
<ul>
<li><a href="" title="" id="download_single_file">Download</a></li>
<li><a href="" title="">Share</a></li>
<li><a href="" title="" id="delete_single_file">Delete</a></li>
</ul>
</div>
<?php foreach($_["files"] as $file): ?>
<tr data-file='<?php echo $file['name'];?>' data-type='<?php echo ($file["type"] == "dir")?'dir':'file'?>'>
<tr data-file='<?php echo $file['name'];?>' data-type='<?php echo ($file["type"] == "dir")?'dir':'file'?>' data-mime='<?php echo $file["mime"]?>'>
<td class="selection"><input type="checkbox" /></td>
<td class="filename"><a style="background-image:url(<?php if($file["type"] == "dir") echo mimetype_icon("dir"); else echo mimetype_icon($file["mime"]); ?>)" href="<?php if($file["type"] == "dir") echo link_to("files", "index.php?dir=".$file["directory"]."/".$file["name"]); else echo link_to("files", "download.php?file=".$file["directory"]."/".$file["name"]); ?>" title=""><?php echo htmlspecialchars($file["name"]); ?></a></td>
<td class="filesize"><?php echo human_file_size($file["size"]); ?></td>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment