Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-06-04 22:16:44 +0400
committerRobin Appelman <icewind1991@gmail.com>2011-06-04 22:16:44 +0400
commit1eb0faa2642babdd3031fdfa611ee10d1a3ccec5 (patch)
tree78b311b484839586f78200bb4b537627de89958a
parent3892fe55110ce86d742cabcf1422d96115590c5b (diff)
make fileactions extendable by plugins
-rw-r--r--.htaccess4
-rw-r--r--files/css/files.css10
-rw-r--r--files/index.php1
-rw-r--r--files/js/fileactions.js100
-rw-r--r--files/js/files.js44
-rw-r--r--files/templates/index.php3
-rw-r--r--files/templates/part.list.php2
7 files changed, 131 insertions, 33 deletions
diff --git a/.htaccess b/.htaccess
new file mode 100644
index 00000000000..58230365bf5
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,4 @@
+ErrorDocument 404 //owncloud/templates/404.php
+php_value upload_max_filesize 20M
+php_value post_max_size 20M
+SetEnv htaccessWorking true
diff --git a/files/css/files.css b/files/css/files.css
index 1cfca68ff55..7c7965ab847 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -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
diff --git a/files/index.php b/files/index.php
index 79f8b677018..d796583a4ae 100644
--- a/files/index.php
+++ b/files/index.php
@@ -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'] : '';
diff --git a/files/js/fileactions.js b/files/js/fileactions.js
new file mode 100644
index 00000000000..bb02b639c57
--- /dev/null
+++ b/files/js/fileactions.js
@@ -0,0 +1,100 @@
+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
diff --git a/files/js/files.js b/files/js/files.js
index 2c595ee4457..c758432a4f6 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -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)
diff --git a/files/templates/index.php b/files/templates/index.php
index 6222724e7be..11cf0360e1e 100644
--- a/files/templates/index.php
+++ b/files/templates/index.php
@@ -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>
diff --git a/files/templates/part.list.php b/files/templates/part.list.php
index f99cd87be24..16d9d92c040 100644
--- a/files/templates/part.list.php
+++ b/files/templates/part.list.php
@@ -1,5 +1,5 @@
<?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>