From 61ffa182ee90e1a08538f438fb5528e32b3cf70a Mon Sep 17 00:00:00 2001 From: Jakob Sack Date: Wed, 2 Mar 2011 23:06:23 +0100 Subject: Application "files" is able to list the files again, start of splitting css files --- files/js/files.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 files/js/files.js (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js new file mode 100644 index 00000000000..9ab573ee92b --- /dev/null +++ b/files/js/files.js @@ -0,0 +1,39 @@ +$(document).ready(function() { + // Sets browser table behaviour : + $('.browser tr').hover( + function() { + $(this).addClass('mouseOver'); + }, + function() { + $(this).removeClass('mouseOver'); + } + ); + + // Sets logs table behaviour : + $('.logs tr').hover( + function() { + $(this).addClass('mouseOver'); + }, + function() { + $(this).removeClass('mouseOver'); + } + ); + + // Sets the file-action buttons behaviour : + $('td.fileaction a').click(function() { + $(this).parent().append($('#file_menu')); + $('#file_menu').slideToggle(250); + return false; + }); + + // Sets the select_all checkbox behaviour : + $('#select_all').click(function() { + + if($(this).attr('checked')) + // Check all + $('.browser input:checkbox').attr('checked', true); + else + // Uncheck all + $('.browser input:checkbox').attr('checked', false); + }); +}); -- cgit v1.2.3 From a7da3cd6a0f847820efd71a7aa2f58fb4fcf05a0 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Sat, 16 Apr 2011 22:56:40 +0200 Subject: basic file upload reimplemented --- files/css/files.css | 8 ++++++++ files/index.php | 1 + files/js/files.js | 21 +++++++++++++++++++++ files/templates/index.php | 14 +++++++++++++- 4 files changed, 43 insertions(+), 1 deletion(-) (limited to 'files/js/files.js') diff --git a/files/css/files.css b/files/css/files.css index 8ab07d45241..160c9307409 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -19,6 +19,14 @@ text-decoration: none; } +#file_upload_form { + display: none; +} + +#file_upload_target { + display: none; +} + /* FILE TABLE */ table td.filesize, table td.date diff --git a/files/index.php b/files/index.php index a68ae9c0bb4..7f6a11ff03c 100644 --- a/files/index.php +++ b/files/index.php @@ -59,6 +59,7 @@ foreach( explode( "/", $dir ) as $i ){ $tmpl = new OC_TEMPLATE( "files", "index", "user" ); $tmpl->assign( "files", $files ); $tmpl->assign( "breadcrumb", $breadcrumb ); +$tmpl->assign( 'dir', $dir); $tmpl->printPage(); ?> diff --git a/files/js/files.js b/files/js/files.js index 9ab573ee92b..ba08e254349 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -36,4 +36,25 @@ $(document).ready(function() { // Uncheck all $('.browser input:checkbox').attr('checked', false); }); + + // Shows and hides file upload form + $('#file_upload_button').toggle(function() { + $('#file_upload_form').css({"display":"block"}); + }, function() { + $('#file_upload_form').css({"display":"none"}); + }); + + $('#file_upload_start').click(function() { + $('#file_upload_target').load(uploadFinished); + }); }); + +function uploadFinished() { + result = $('#file_upload_target').contents().text(); + result = eval("(" + result + ");"); + if(result.status == "error") { + alert('An error occcured, upload failed.'); + } else { + location.href = 'index.php?dir=' + $('#dir').val(); + } +} diff --git a/files/templates/index.php b/files/templates/index.php index f1fdafc27cc..94d3769c9ac 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -7,8 +7,20 @@ @@ -33,16 +30,8 @@ name="file_upload_target" src=""> - - - - - - - - - - + +
)" href="" title="">+
-- cgit v1.2.3 From 9b26cb0bfb6c6b3aab03eb3320a9a9917786f1ac Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Sun, 17 Apr 2011 17:49:56 +0200 Subject: implement "new folder" function --- files/ajax/newfolder.php | 29 ++++++++++++++++++++++ files/css/files.css | 4 +-- files/js/files.js | 62 +++++++++++++++++++++++++++++++++++++++++------ files/templates/index.php | 7 +++--- 4 files changed, 89 insertions(+), 13 deletions(-) create mode 100644 files/ajax/newfolder.php (limited to 'files/js/files.js') diff --git a/files/ajax/newfolder.php b/files/ajax/newfolder.php new file mode 100644 index 00000000000..988e7f04012 --- /dev/null +++ b/files/ajax/newfolder.php @@ -0,0 +1,29 @@ + "error", "data" => array( "message" => "Authentication error" ))); + exit(); +} + +// Get the params +$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; +$foldername = isset( $_GET['foldername'] ) ? $_GET['foldername'] : ''; + +if($foldername == '') { + echo json_encode( array( "status" => "error", "data" => array( "message" => "Empty Foldername" ))); + exit(); +} +error_log('try to create ' . $foldername . ' in ' . $dir); +if(OC_FILES::newFile($dir, $foldername, 'dir')) { + echo json_encode( array( "status" => "success", "data" => array())); + exit(); +} + +echo json_encode( array( "status" => "error", "data" => array( "message" => "Error when creating the folder" ))); \ No newline at end of file diff --git a/files/css/files.css b/files/css/files.css index 1d7fb5ef592..4c5bd0427b6 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -23,11 +23,11 @@ display: none; } -#file_upload_target { +#file_newfolder_form { display: none; } -#file_action_panel { +#file_upload_target { display: none; } diff --git a/files/js/files.js b/files/js/files.js index 44506763032..313727cedbc 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -1,4 +1,6 @@ $(document).ready(function() { + $('#file_action_panel').attr('activeAction', false); + // Sets browser table behaviour : $('.browser tr').hover( function() { @@ -37,16 +39,43 @@ $(document).ready(function() { $('.browser input:checkbox').attr('checked', false); }); - // Shows and hides file upload form - $('#file_upload_button').toggle(function() { - $('#file_upload_form').css({"display":"block"}); - }, function() { - $('#file_upload_form').css({"display":"none"}); - }); - $('#file_upload_start').click(function() { $('#file_upload_target').load(uploadFinished); }); + + $('#file_new_dir_submit').click(function() { + $.ajax({ + url: 'ajax/newfolder.php', + data: "dir="+$('#dir').val()+"&foldername="+$('#file_new_dir_name').val(), + complete: boolOpFinished + }); + }); + + $('.upload').click(function(){ + if($('#file_action_panel').attr('activeAction') != 'upload') { + $('#file_action_panel').attr('activeAction', 'upload'); + $('#fileSelector').replaceWith(''); + $('#file_action_panel form').css({"display":"none"}); + $('#file_upload_form').css({"display":"block"}); + } else { + $('#file_action_panel').attr('activeAction', 'false'); + $('#file_upload_form').css({"display":"none"}) + } + return false; + }); + + $('.new-dir').click(function(){ + if($('#file_action_panel').attr('activeAction') != 'new-dir') { + $('#file_action_panel').attr('activeAction', 'new-dir'); + $('#file_new_dir_name').val(''); + $('#file_action_panel form').css({"display":"none"}); + $('#file_newfolder_form').css({"display":"block"}) + } else { + $('#file_newfolder_form').css({"display":"none"}) + $('#file_action_panel').attr('activeAction', false); + } + return false; + }); }); function uploadFinished() { @@ -64,6 +93,24 @@ function uploadFinished() { } } +function resetFileActionPanel() { + $('#file_action_panel form').css({"display":"none"}); + $('#file_action_panel').attr('activeAction', false); +} + +function boolOpFinished(data) { + result = eval("("+data.responseText+");"); + if(result.status == 'success'){ + $.ajax({ + url: 'ajax/list.php', + data: "dir="+$('#dir').val(), + complete: refreshContents + }); + } else { + alert(result.data.message); + } +} + function refreshContents(data) { result = eval("("+data.responseText+");"); if(typeof(result.data.breadcrumb) != 'undefined'){ @@ -71,6 +118,7 @@ function refreshContents(data) { } updateFileList(result.data.files); $('#file_upload_button').click(); + resetFileActionPanel(); } function updateBreadcrumb(breadcrumbHtml) { diff --git a/files/templates/index.php b/files/templates/index.php index 28187bcb531..c6dc123cee0 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -5,16 +5,15 @@ href="" title="" class="new-dir">New folderDownloadDelete

-
-
+ " id="max_upload">" id="dir">
-
-
+
 
-- cgit v1.2.3 From 1ffb09b38a9521e5421362a895c777fc0468ce38 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Sun, 17 Apr 2011 19:00:22 +0200 Subject: nicely slide in and out file action elements --- files/js/files.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index 313727cedbc..5c11bddeb56 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -55,11 +55,11 @@ $(document).ready(function() { if($('#file_action_panel').attr('activeAction') != 'upload') { $('#file_action_panel').attr('activeAction', 'upload'); $('#fileSelector').replaceWith(''); - $('#file_action_panel form').css({"display":"none"}); - $('#file_upload_form').css({"display":"block"}); + $('#file_action_panel form').slideUp(250); + $('#file_upload_form').slideDown(250); } else { $('#file_action_panel').attr('activeAction', 'false'); - $('#file_upload_form').css({"display":"none"}) + $('#file_upload_form').slideUp(250); } return false; }); @@ -68,10 +68,10 @@ $(document).ready(function() { if($('#file_action_panel').attr('activeAction') != 'new-dir') { $('#file_action_panel').attr('activeAction', 'new-dir'); $('#file_new_dir_name').val(''); - $('#file_action_panel form').css({"display":"none"}); - $('#file_newfolder_form').css({"display":"block"}) + $('#file_action_panel form').slideUp(250); + $('#file_newfolder_form').slideDown(250); } else { - $('#file_newfolder_form').css({"display":"none"}) + $('#file_newfolder_form').slideUp(250); $('#file_action_panel').attr('activeAction', false); } return false; -- cgit v1.2.3 From 03747a0ffbb177de43db306f43e2896eb9cf740f Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 18 Apr 2011 10:02:01 +0200 Subject: implemented Delete action in file menu --- files/js/files.js | 39 +++++++++++++++++++++++++++++++-------- files/templates/index.php | 2 +- 2 files changed, 32 insertions(+), 9 deletions(-) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index 5c11bddeb56..019758dc497 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -39,6 +39,19 @@ $(document).ready(function() { $('.browser input:checkbox').attr('checked', false); }); + // Delete current file + $('#delete_single_file').click(function() { + filename = $('#file_menu').parents('tr:first').find('.filename:first').children('a:first').text(); + $.ajax({ + url: 'ajax/delete.php', + data: "dir="+$('#dir').val()+"&file="+filename, + complete: function(data){ + boolOperationFinished(data, true, $('#file_menu').parents('tr:first')); + } + }); + return false; + }); + $('#file_upload_start').click(function() { $('#file_upload_target').load(uploadFinished); }); @@ -47,7 +60,7 @@ $(document).ready(function() { $.ajax({ url: 'ajax/newfolder.php', data: "dir="+$('#dir').val()+"&foldername="+$('#file_new_dir_name').val(), - complete: boolOpFinished + complete: function(data){boolOperationFinished(data, false);} }); }); @@ -98,14 +111,20 @@ function resetFileActionPanel() { $('#file_action_panel').attr('activeAction', false); } -function boolOpFinished(data) { +function boolOperationFinished(data, single, el) { result = eval("("+data.responseText+");"); if(result.status == 'success'){ - $.ajax({ - url: 'ajax/list.php', - data: "dir="+$('#dir').val(), - complete: refreshContents - }); + if(single) { + $('#file_menu').slideToggle(0); + $('body').append($('#file_menu')); + $(el).remove(); + } else { + $.ajax({ + url: 'ajax/list.php', + data: "dir="+$('#dir').val(), + complete: refreshContents + }); + } } else { alert(result.data.message); } @@ -117,7 +136,11 @@ function refreshContents(data) { updateBreadcrumb(result.data.breadcrumb); } updateFileList(result.data.files); - $('#file_upload_button').click(); + $('td.fileaction a').click(function() { + $(this).parent().append($('#file_menu')); + $('#file_menu').slideToggle(250); + return false; + }); resetFileActionPanel(); } diff --git a/files/templates/index.php b/files/templates/index.php index 75eef0d16e4..d38e771c2e1 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -40,6 +40,6 @@ name="file_upload_target" src=""> -- cgit v1.2.3 From 4d1ff67cac5df734ab224ee42424a7e53ca1caa6 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 18 Apr 2011 12:41:19 +0200 Subject: make select all checkbox work again --- files/js/files.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index 019758dc497..6dc1f639e83 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -33,10 +33,10 @@ $(document).ready(function() { if($(this).attr('checked')) // Check all - $('.browser input:checkbox').attr('checked', true); + $('td.selection input:checkbox').attr('checked', true); else // Uncheck all - $('.browser input:checkbox').attr('checked', false); + $('td.selection input:checkbox').attr('checked', false); }); // Delete current file -- cgit v1.2.3 From 5896fbd91005cd523bbcbae8a65eb7ce159edc95 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 18 Apr 2011 12:49:52 +0200 Subject: make state of select all checkbox consistent --- files/js/files.js | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index 6dc1f639e83..906f33a9dd9 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -39,6 +39,16 @@ $(document).ready(function() { $('td.selection input:checkbox').attr('checked', false); }); + $('td.selection input:checkbox').click(function() { + if(!$(this).attr('checked')){ + $('#select_all').attr('checked',false); + }else{ + if($('td.selection input:checkbox:checked').length==$('td.selection input:checkbox').length){ + $('#select_all').attr('checked',true); + } + } + }); + // Delete current file $('#delete_single_file').click(function() { filename = $('#file_menu').parents('tr:first').find('.filename:first').children('a:first').text(); -- cgit v1.2.3 From ca00d37a710673fa359daf1817da78787a137f01 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 18 Apr 2011 15:40:17 +0200 Subject: Make the download button work --- files/ajax/download.php | 37 +++++++++++++++++++++++++++++++++++++ files/js/files.js | 14 ++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 files/ajax/download.php (limited to 'files/js/files.js') diff --git a/files/ajax/download.php b/files/ajax/download.php new file mode 100644 index 00000000000..0b2f894a11b --- /dev/null +++ b/files/ajax/download.php @@ -0,0 +1,37 @@ +. +* +*/ + +// Init owncloud +require_once('../../lib/base.php'); + +// Check if we are a user +if( !OC_USER::isLoggedIn()){ + header( "Location: ".OC_HELPER::linkTo( "index.php" )); + exit(); +} + +$files = $_GET["files"]; +$dir = $_GET["dir"]; + +OC_FILES::get($dir,$files); +?> diff --git a/files/js/files.js b/files/js/files.js index 906f33a9dd9..4bf1c77fdbd 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -99,6 +99,20 @@ $(document).ready(function() { } return false; }); + + $('.download').click(function(event) { + var files=''; + $('td.selection input:checkbox:checked').parent().parent().children('.filename').each(function(i,element){ + files+=';'+$(element).text(); + }); + files=files.substr(1);//remove leading ; + + //send the browser to the download location + var dir=$('#dir').val()||'/'; +// alert(files); + window.location='ajax/download.php?files='+files+'&dir='+dir; + return false; + }); }); function uploadFinished() { -- cgit v1.2.3 From 5a11e739b4fe3562df139798eac3566fa4809d60 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 18 Apr 2011 16:48:35 +0200 Subject: implemented deleting multiple files --- files/ajax/delete.php | 21 +++++++++++++++------ files/js/files.js | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) (limited to 'files/js/files.js') diff --git a/files/ajax/delete.php b/files/ajax/delete.php index 113476f0254..79caf4d0bb2 100644 --- a/files/ajax/delete.php +++ b/files/ajax/delete.php @@ -14,14 +14,23 @@ if( !OC_USER::isLoggedIn()){ // Get data $dir = $_GET["dir"]; -$file = $_GET["file"]; +$files = isset($_GET["file"]) ? $_GET["file"] : $_GET["files"]; -// Delete -if( OC_FILES::delete( $dir, $file )){ - echo json_encode( array( "status" => "success", "data" => array( "dir" => $dir, "file" => $file ))); +$files = explode(';', $files); +$filesWithError = ''; +$status = 'success'; +//Now delete +foreach($files as $file) { + if( !OC_FILES::delete( $dir, $file )){ + $filesWithError .= $file . "\n"; + $status = 'error'; + } } -else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete file" ))); + +if($status == 'success') { + echo json_encode( array( "status" => $status, "data" => array( "dir" => $dir, "files" => $files ))); +} else { + echo json_encode( array( "status" => $status, "data" => array( "message" => "Could not delete:\n" . $filesWithError ))); } ?> diff --git a/files/js/files.js b/files/js/files.js index 4bf1c77fdbd..06d5dbf0328 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -113,6 +113,25 @@ $(document).ready(function() { window.location='ajax/download.php?files='+files+'&dir='+dir; return false; }); + + $('.delete').click(function(event) { + var files=''; + $('td.selection input:checkbox:checked').parent().parent().children('.filename').each(function(i,element){ + files+=';'+$(element).text(); + }); + files=files.substr(1);//remove leading ; + + //send the browser to the download location + $.ajax({ + url: 'ajax/delete.php', + data: "dir="+$('#dir').val()+"&files="+files, + complete: function(data){ + boolOperationFinished(data, false); + } + }); + + return false; + }); }); function uploadFinished() { -- cgit v1.2.3 From 4ae158bbe03e33ed4cf9b42af44ef7b7876a6fe2 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 18 Apr 2011 16:59:30 +0200 Subject: implemented download single file from file menu --- files/js/files.js | 9 ++++++++- files/templates/index.php | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index 06d5dbf0328..f1cb200817b 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -49,6 +49,14 @@ $(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').find('.filename:first').children('a:first').text(); @@ -121,7 +129,6 @@ $(document).ready(function() { }); files=files.substr(1);//remove leading ; - //send the browser to the download location $.ajax({ url: 'ajax/delete.php', data: "dir="+$('#dir').val()+"&files="+files, diff --git a/files/templates/index.php b/files/templates/index.php index d38e771c2e1..f761f1f538d 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -38,7 +38,7 @@ name="file_upload_target" src="">
-- cgit v1.2.3 From 4cb9cdb3371f77e21f6f62ffab3f479aabdcf598 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 18 Apr 2011 23:44:41 +0200 Subject: fancyfying file upload, part I --- files/css/files.css | 5 +++++ files/js/files.js | 25 +++++++++++++++++++++++-- files/templates/index.php | 9 +++++---- 3 files changed, 33 insertions(+), 6 deletions(-) (limited to 'files/js/files.js') diff --git a/files/css/files.css b/files/css/files.css index 771e66fed64..806582da213 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -23,6 +23,11 @@ display: none; } +#file_upload_form input[type="button"]{ + /* this is a dirty wurgaround, Jan needs to fix it in global css*/ + font-size: 0.9em; +} + #file_newfolder_form { display: none; } diff --git a/files/js/files.js b/files/js/files.js index f1cb200817b..edb57fc2c0e 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -74,6 +74,12 @@ $(document).ready(function() { $('#file_upload_target').load(uploadFinished); }); + $('#file_upload_cancel').click(function() { + $('#file_action_panel').attr('activeAction', 'false'); + $('#file_upload_form').hide(); + $('p.actions a.upload:first').show(); + }); + $('#file_new_dir_submit').click(function() { $.ajax({ url: 'ajax/newfolder.php', @@ -86,8 +92,16 @@ $(document).ready(function() { if($('#file_action_panel').attr('activeAction') != 'upload') { $('#file_action_panel').attr('activeAction', 'upload'); $('#fileSelector').replaceWith(''); + $('#fileSelector').change(function() { + $('#file_upload_start').val('Upload ' + $('#fileSelector').val()); + $('p.actions a.upload:first').after($('#file_upload_form')); + $('#file_upload_form').css('display', 'inline'); + $('p.actions a.upload:first').hide(); + $('#fileSelector').hide(); + }); $('#file_action_panel form').slideUp(250); - $('#file_upload_form').slideDown(250); +// $('#file_upload_form').slideDown(250); + $('#fileSelector').click(); } else { $('#file_action_panel').attr('activeAction', 'false'); $('#file_upload_form').slideUp(250); @@ -95,6 +109,8 @@ $(document).ready(function() { return false; }); + + $('.new-dir').click(function(){ if($('#file_action_panel').attr('activeAction') != 'new-dir') { $('#file_action_panel').attr('activeAction', 'new-dir'); @@ -151,7 +167,12 @@ function uploadFinished() { $.ajax({ url: 'ajax/list.php', data: "dir="+dir, - complete: refreshContents + complete: function(data) { + refreshContents(data); + $('#file_action_panel').prepend($('#file_upload_form')); + $('#file_upload_form').css('display', 'block').hide(); + $('p.actions a.upload:first').show(); + } }); } } diff --git a/files/templates/index.php b/files/templates/index.php index f761f1f538d..54de41c594a 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -1,6 +1,6 @@

- UploadUpload (max )New folderDownloadDelete @@ -9,9 +9,10 @@ href="" title="" class="delete">Delete

" id="max_upload">" id="dir">)" />
 
-- cgit v1.2.3 From 4a9fdd2918c3828b4c60e22eda4dc89a9228bc8e Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 19 Apr 2011 02:51:59 +0200 Subject: fancy upload button. does work with firefox (at least 4) and chromium, but not with Konqueror, Rekonq, Opera. --- css/styles.css | 14 ++++---- files/css/files.css | 4 +++ files/js/files.js | 81 +++++++++++++++++++++++++++++++---------------- files/templates/index.php | 16 +++------- 4 files changed, 68 insertions(+), 47 deletions(-) (limited to 'files/js/files.js') diff --git a/css/styles.css b/css/styles.css index 6a4e7d8f897..6b866843541 100644 --- a/css/styles.css +++ b/css/styles.css @@ -106,13 +106,13 @@ p.nav a { padding:0.5em 1.5em 0.5em 0.5em; background-position:right center; bac p.nav a img { height:16px; vertical-align:text-top; } /* ACTIONS BAR */ -p.actions { padding:0; } -p.actions a { padding:0.5em 0.5em 0.5em 3em; background-position:1em center; background-repeat:no-repeat; background-image:url('../img/action.png'); border-right:1px solid #eee; text-decoration:none; color:#333; } -p.actions a:hover, p.actions a:focus { background-color:#eee; color:#000; outline:0; } -p.actions a:active { outline:0; } -p.actions a.new-dir { background-image:url('../img/folder-new.png'); } -p.actions a.download { background-image:url('../img/download.png'); } -p.actions a.delete { background-image:url('../img/delete.png'); } +p.actions, div.actions { padding:0; } +p.actions a, div.actions a { padding:0.5em 0.5em 0.5em 3em; background-position:1em center; background-repeat:no-repeat; background-image:url('../img/action.png'); border-right:1px solid #eee; text-decoration:none; color:#333; } +p.actions a:hover, p.actions a:focus, div.actions a:hover, div.actions a:focus { background-color:#eee; color:#000; outline:0; } +p.actions a:active, div.actions a:active { outline:0; } +p.actions a.new-dir, div.actions a.new-dir { background-image:url('../img/folder-new.png'); } +p.actions a.download, div.actions a.download { background-image:url('../img/download.png'); } +p.actions a.delete, div.actions a.delete { background-image:url('../img/delete.png'); } /* USER SETTINGS ------------------------------------------------------------ */ #quota_indicator { margin:0 4em 1em 0; padding:0; border:1px solid #ddd; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; } diff --git a/files/css/files.css b/files/css/files.css index 806582da213..6313e6d1ca6 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -20,6 +20,10 @@ } #file_upload_form { + display: inline; +} + +#fileSelector, #file_upload_cancel { display: none; } diff --git a/files/js/files.js b/files/js/files.js index edb57fc2c0e..c0905f4af9d 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -1,5 +1,6 @@ $(document).ready(function() { $('#file_action_panel').attr('activeAction', false); + $('#file_upload_start').attr('mode', 'menu'); // Sets browser table behaviour : $('.browser tr').hover( @@ -70,14 +71,35 @@ $(document).ready(function() { return false; }); - $('#file_upload_start').click(function() { - $('#file_upload_target').load(uploadFinished); + $('#file_upload_start').click(function() { + if($('#file_upload_start').attr('mode') == 'menu') { + $('#fileSelector').change(function() { +// alert("foo"); + + //Chromium prepends C:\fakepath.... + bspos = $('#fileSelector').val().lastIndexOf('\\')+1; + filename = $('#fileSelector').val().substr(bspos); + + $('#file_upload_start').val('Upload ' + filename); + $('#fileSelector').hide(); + $('#file_upload_cancel').slideDown(250); + $('#file_upload_start').attr('mode', 'action'); + }); + $('#fileSelector').show(); //needed for Chromium compatibility + $('#fileSelector').click(); + } else if($('#file_upload_start').attr('mode') == 'action') { + $('#file_upload_cancel').slideUp(250); + $('#file_upload_target').load(uploadFinished); + } }); $('#file_upload_cancel').click(function() { - $('#file_action_panel').attr('activeAction', 'false'); - $('#file_upload_form').hide(); - $('p.actions a.upload:first').show(); + $('#file_upload_start').val('Upload ' + $('.max_human_file_size:first').val()); + $('#file_upload_start').attr('mode', 'menu'); + $('#file_upload_cancel').hide; +// $('#file_action_panel').attr('activeAction', 'false'); +// $('#file_upload_form').hide(); +// $('p.actions a.upload:first').show(); }); $('#file_new_dir_submit').click(function() { @@ -88,26 +110,26 @@ $(document).ready(function() { }); }); - $('.upload').click(function(){ - if($('#file_action_panel').attr('activeAction') != 'upload') { - $('#file_action_panel').attr('activeAction', 'upload'); - $('#fileSelector').replaceWith(''); - $('#fileSelector').change(function() { - $('#file_upload_start').val('Upload ' + $('#fileSelector').val()); - $('p.actions a.upload:first').after($('#file_upload_form')); - $('#file_upload_form').css('display', 'inline'); - $('p.actions a.upload:first').hide(); - $('#fileSelector').hide(); - }); - $('#file_action_panel form').slideUp(250); -// $('#file_upload_form').slideDown(250); - $('#fileSelector').click(); - } else { - $('#file_action_panel').attr('activeAction', 'false'); - $('#file_upload_form').slideUp(250); - } - return false; - }); +// $('.upload').click(function(){ +// if($('#file_action_panel').attr('activeAction') != 'upload') { +// $('#file_action_panel').attr('activeAction', 'upload'); +// $('#fileSelector').replaceWith(''); +// $('#fileSelector').change(function() { +// $('#file_upload_start').val('Upload ' + $('#fileSelector').val()); +// $('p.actions a.upload:first').after($('#file_upload_form')); +// $('#file_upload_form').css('display', 'inline'); +// $('p.actions a.upload:first').hide(); +// $('#fileSelector').hide(); +// }); +// $('#file_action_panel form').slideUp(250); +// // $('#file_upload_form').slideDown(250); +// $('#fileSelector').click(); +// } else { +// $('#file_action_panel').attr('activeAction', 'false'); +// $('#file_upload_form').slideUp(250); +// } +// return false; +// }); @@ -169,9 +191,12 @@ function uploadFinished() { data: "dir="+dir, complete: function(data) { refreshContents(data); - $('#file_action_panel').prepend($('#file_upload_form')); - $('#file_upload_form').css('display', 'block').hide(); - $('p.actions a.upload:first').show(); +// $('#file_action_panel').prepend($('#file_upload_form')); +// $('#file_upload_form').css('display', 'block').hide(); +// $('p.actions a.upload:first').show(); + $('#file_upload_start').val('Upload ' + $('.max_human_file_size:first').val()); + $('#file_upload_start').attr('mode', 'menu'); +// $('#fileSelector').replaceWith(''); } }); } diff --git a/files/templates/index.php b/files/templates/index.php index 54de41c594a..e794bad300c 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -1,19 +1,11 @@
-

- Upload (max )New folderDownloadDelete -

-
+
" id="max_upload">" id="dir"> 
+type="hidden" class="max_human_file_size" value="(max )">" id="dir">)" /> New folderDownloadDelete +
+
 
-- cgit v1.2.3 From 07c6c7f4fac4323122daf05f63ccf9152a709afb Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 19 Apr 2011 08:05:08 +0200 Subject: upload works in a not so fancy way for konqueror and rekonq --- files/js/files.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index c0905f4af9d..3ab09251f6f 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -74,8 +74,6 @@ $(document).ready(function() { $('#file_upload_start').click(function() { if($('#file_upload_start').attr('mode') == 'menu') { $('#fileSelector').change(function() { -// alert("foo"); - //Chromium prepends C:\fakepath.... bspos = $('#fileSelector').val().lastIndexOf('\\')+1; filename = $('#fileSelector').val().substr(bspos); @@ -86,7 +84,10 @@ $(document).ready(function() { $('#file_upload_start').attr('mode', 'action'); }); $('#fileSelector').show(); //needed for Chromium compatibility - $('#fileSelector').click(); + //rekonq does not call change-event, when click() is executed by script + if(navigator.userAgent.indexOf('rekonq') == -1){ + $('#fileSelector').click(); + } } else if($('#file_upload_start').attr('mode') == 'action') { $('#file_upload_cancel').slideUp(250); $('#file_upload_target').load(uploadFinished); -- cgit v1.2.3 From ef25b32856bb02f947297aaab03ba5265b3e9292 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 19 Apr 2011 08:15:23 +0200 Subject: don't upload canceled files --- files/js/files.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index 3ab09251f6f..40857fb03d6 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -95,9 +95,10 @@ $(document).ready(function() { }); $('#file_upload_cancel').click(function() { + $('#file_upload_form')[0].reset(); $('#file_upload_start').val('Upload ' + $('.max_human_file_size:first').val()); $('#file_upload_start').attr('mode', 'menu'); - $('#file_upload_cancel').hide; + $('#file_upload_cancel').hide(); // $('#file_action_panel').attr('activeAction', 'false'); // $('#file_upload_form').hide(); // $('p.actions a.upload:first').show(); -- cgit v1.2.3 From 3d5c13a3e16bedc7e8ce062c82e4ddb3b42d2318 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 19 Apr 2011 09:13:50 +0200 Subject: don't create firefox hardlock --- files/ajax/upload.php | 2 +- files/js/files.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'files/js/files.js') diff --git a/files/ajax/upload.php b/files/ajax/upload.php index 194d84f4be2..0939ad0d097 100644 --- a/files/ajax/upload.php +++ b/files/ajax/upload.php @@ -28,6 +28,6 @@ if(strpos($dir,'..') === false){ $error = $_FILES['file']['error']; -echo json_encode(array( 'status' => 'error', 'data' => array('error' => $error))); +echo json_encode(array( 'status' => 'error', 'data' => array('error' => $error, "file" => $fileName))); ?> diff --git a/files/js/files.js b/files/js/files.js index 40857fb03d6..bfb68317b02 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -1,6 +1,7 @@ $(document).ready(function() { $('#file_action_panel').attr('activeAction', false); $('#file_upload_start').attr('mode', 'menu'); + $('#file_upload_form').attr('uploading', false); // Sets browser table behaviour : $('.browser tr').hover( @@ -73,6 +74,7 @@ $(document).ready(function() { $('#file_upload_start').click(function() { if($('#file_upload_start').attr('mode') == 'menu') { + $('#file_upload_form')[0].reset(); $('#fileSelector').change(function() { //Chromium prepends C:\fakepath.... bspos = $('#fileSelector').val().lastIndexOf('\\')+1; @@ -90,6 +92,7 @@ $(document).ready(function() { } } else if($('#file_upload_start').attr('mode') == 'action') { $('#file_upload_cancel').slideUp(250); + $('#file_upload_form').attr('uploading', true); $('#file_upload_target').load(uploadFinished); } }); @@ -184,8 +187,11 @@ $(document).ready(function() { function uploadFinished() { result = $('#file_upload_target').contents().text(); result = eval("(" + result + ");"); + $('#file_upload_target').load(function(){}); if(result.status == "error") { - alert('An error occcured, upload failed.\nError code: ' + result.data.error); + if($('#file_upload_form').attr('uploading') == true) { + alert('An error occcured, upload failed.\nError code: ' + result.data.error + '\nFilename: ' + result.data.file); + } } else { dir = $('#dir').val(); $.ajax({ @@ -198,10 +204,10 @@ function uploadFinished() { // $('p.actions a.upload:first').show(); $('#file_upload_start').val('Upload ' + $('.max_human_file_size:first').val()); $('#file_upload_start').attr('mode', 'menu'); -// $('#fileSelector').replaceWith(''); } }); } + $('#file_upload_form').attr('uploading', false); } function resetFileActionPanel() { -- cgit v1.2.3 From 85764257eac2d35db32bfe225fdbf3f6301ef7c2 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 19 Apr 2011 12:21:55 +0200 Subject: refurbished new folder button --- files/css/files.css | 25 +++++++++------ files/js/files.js | 79 ++++++++++++++++++++++++++++++++++++++++------- files/templates/index.php | 3 +- 3 files changed, 83 insertions(+), 24 deletions(-) (limited to 'files/js/files.js') diff --git a/files/css/files.css b/files/css/files.css index 368adba2911..e3a7528fbf4 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -19,29 +19,34 @@ text-decoration: none; } -#file_upload_form { +#file_upload_form, #file_newfolder_form { display: inline; } -#fileSelector, #file_upload_cancel { +#fileSelector, #file_upload_cancel, #file_newfolder_submit { display: none; } -#file_upload_start { - background-image:url(/owncloud-dev/img/mimetypes/file.png); +#file_upload_start, #file_newfolder_name { background-repeat: no-repeat; background-position: 0.5em 0; padding-left: 2em; - } -#file_upload_form input[type="button"]{ - /* this is a dirty wurgaround, Jan needs to fix it in global css*/ - font-size: 0.9em; +#file_upload_start {background-image:url(/owncloud-dev/img/mimetypes/file.png);} + +#file_newfolder_name { + background-image:url(/owncloud-dev/img/places/folder.png); font-weight: bold; + width: 14em; } -#file_newfolder_form { - display: none; +#file_newfolder_submit { + width: 3em; +} + +form input[type="button"], form input[type="text"]{ + /* this is a dirty wurgaround, Jan needs to fix it in global css*/ + font-size: 0.9em; } #file_upload_target { diff --git a/files/js/files.js b/files/js/files.js index bfb68317b02..901078680de 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -2,6 +2,8 @@ $(document).ready(function() { $('#file_action_panel').attr('activeAction', false); $('#file_upload_start').attr('mode', 'menu'); $('#file_upload_form').attr('uploading', false); + $('#file_newfolder_name').css('width', '14em'); + $('#file_newfolder_submit').css('width', '3em'); // Sets browser table behaviour : $('.browser tr').hover( @@ -115,6 +117,40 @@ $(document).ready(function() { }); }); + $('#file_newfolder_name').click(function(){ + if($('#file_newfolder_name').val() == 'New Folder'){ + $('#file_newfolder_name').val(''); + } + }); + + $('#file_newfolder_name').bind('keyup', adjustNewFolderSize); + + $('#file_newfolder_submit').bind('vanish', function() { + $('#file_newfolder_name').bind('keyup', adjustNewFolderSize); + unsplitSize($('#file_newfolder_name'),$('#file_newfolder_submit')); + }); + + $('#file_newfolder_name').focusout(function(){ + if($('#file_newfolder_name').val() == '') { + $('#file_newfolder_form')[0].reset(); + $('#file_newfolder_submit').fadeOut(250).trigger('vanish'); + } + }); + + $('#file_newfolder_submit').click(function() { + if($('#file_newfolder_name').val() != '') { + $.ajax({ + url: 'ajax/newfolder.php', + data: "dir="+$('#dir').val()+"&foldername="+$('#file_newfolder_name').val(), + complete: function(data){ + boolOperationFinished(data, false); + $('#file_newfolder_form')[0].reset(); + } + }); + } + $('#file_newfolder_submit').fadeOut(250).trigger('vanish'); + }); + // $('.upload').click(function(){ // if($('#file_action_panel').attr('activeAction') != 'upload') { // $('#file_action_panel').attr('activeAction', 'upload'); @@ -138,18 +174,18 @@ $(document).ready(function() { - $('.new-dir').click(function(){ - if($('#file_action_panel').attr('activeAction') != 'new-dir') { - $('#file_action_panel').attr('activeAction', 'new-dir'); - $('#file_new_dir_name').val(''); - $('#file_action_panel form').slideUp(250); - $('#file_newfolder_form').slideDown(250); - } else { - $('#file_newfolder_form').slideUp(250); - $('#file_action_panel').attr('activeAction', false); - } - return false; - }); +// $('.new-dir').click(function(){ +// if($('#file_action_panel').attr('activeAction') != 'new-dir') { +// $('#file_action_panel').attr('activeAction', 'new-dir'); +// $('#file_new_dir_name').val(''); +// $('#file_action_panel form').slideUp(250); +// $('#file_newfolder_form').slideDown(250); +// } else { +// $('#file_newfolder_form').slideUp(250); +// $('#file_action_panel').attr('activeAction', false); +// } +// return false; +// }); $('.download').click(function(event) { var files=''; @@ -184,6 +220,25 @@ $(document).ready(function() { }); }); +var adjustNewFolderSize = function() { + if($('#file_newfolder_name').val() != '') { + splitSize($('#file_newfolder_name'),$('#file_newfolder_submit')); + $('#file_newfolder_name').unbind('keyup', adjustNewFolderSize); + }; +} + +function splitSize(existingEl, appearingEl) { + nw = parseInt($(existingEl).css('width')) - parseInt($(appearingEl).css('width')); + $(existingEl).css('width', nw + 'px'); + $(appearingEl).fadeIn(250); +} + +function unsplitSize(stayingEl, vanishingEl) { + nw = parseInt($(stayingEl).css('width')) + parseInt($(vanishingEl).css('width')); + $(stayingEl).css('width', nw + 'px'); + $(vanishingEl).fadeOut(250); +} + function uploadFinished() { result = $('#file_upload_target').contents().text(); result = eval("(" + result + ");"); diff --git a/files/templates/index.php b/files/templates/index.php index e794bad300c..4d34222b966 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -3,10 +3,9 @@
" id="max_upload">)">" id="dir">)" /> 
New folderDownloadDelete +type="hidden" class="max_human_file_size" value="(max )">" id="dir">)" /> 
 
DownloadDelete
-
 
-- cgit v1.2.3 From 0385cc52dcc97a11a6efc0720272867a14b1f675 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 19 Apr 2011 12:33:19 +0200 Subject: hide filechooser if user clicked on cancel --- files/js/files.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'files/js/files.js') diff --git a/files/js/files.js b/files/js/files.js index 901078680de..aed2d596272 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -87,11 +87,23 @@ $(document).ready(function() { $('#file_upload_cancel').slideDown(250); $('#file_upload_start').attr('mode', 'action'); }); + $('#file_upload_start').focusin(function() { + if($('#fileSelector').val() == '') { + $('#fileSelector').hide(); + $('#file_upload_start').unbind('focusin'); + } + }); + $('#fileSelector').focusout(function() { + if($('#fileSelector').val() == '') { + $('#fileSelector').hide(); + } + }); $('#fileSelector').show(); //needed for Chromium compatibility //rekonq does not call change-event, when click() is executed by script if(navigator.userAgent.indexOf('rekonq') == -1){ $('#fileSelector').click(); } + $('#fileSelector').focus(); } else if($('#file_upload_start').attr('mode') == 'action') { $('#file_upload_cancel').slideUp(250); $('#file_upload_form').attr('uploading', true); -- cgit v1.2.3