diff options
-rw-r--r-- | .htaccess | 4 | ||||
-rw-r--r-- | apps/files_imageviewer/appinfo/app.php | 6 | ||||
-rw-r--r-- | apps/files_imageviewer/appinfo/info.xml | 10 | ||||
-rw-r--r-- | apps/files_imageviewer/css/lightbox.css | 23 | ||||
-rw-r--r-- | apps/files_imageviewer/js/lightbox.js | 58 | ||||
-rw-r--r-- | files/ajax/timezone.php | 4 | ||||
-rw-r--r-- | files/ajax/upload.php | 2 | ||||
-rw-r--r-- | files/css/files.css | 36 | ||||
-rw-r--r-- | files/index.php | 5 | ||||
-rw-r--r-- | files/js/fileactions.js | 101 | ||||
-rw-r--r-- | files/js/filelist.js | 54 | ||||
-rw-r--r-- | files/js/files.js | 333 | ||||
-rw-r--r-- | files/js/timezone.js | 12 | ||||
-rw-r--r-- | files/templates/index.php | 25 | ||||
-rw-r--r-- | files/templates/part.list.php | 2 | ||||
-rw-r--r-- | lib/base.php | 11 | ||||
-rw-r--r-- | lib/filestorage.php | 2 |
17 files changed, 450 insertions, 238 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/apps/files_imageviewer/appinfo/app.php b/apps/files_imageviewer/appinfo/app.php new file mode 100644 index 00000000000..bc0059b8b66 --- /dev/null +++ b/apps/files_imageviewer/appinfo/app.php @@ -0,0 +1,6 @@ +<?php + +OC_UTIL::addScript( 'files_imageviewer', 'lightbox' ); +OC_UTIL::addStyle( 'files_imageviewer', 'lightbox' ); + +?> diff --git a/apps/files_imageviewer/appinfo/info.xml b/apps/files_imageviewer/appinfo/info.xml new file mode 100644 index 00000000000..f658409be79 --- /dev/null +++ b/apps/files_imageviewer/appinfo/info.xml @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<info> + <id>files_imageview</id> + <name>Imageviewer</name> + <description>Simple image viewer for owncloud</description> + <version>1.0</version> + <licence>AGPL</licence> + <author>Robin Appelman</author> + <require>2</require> +</info>
\ No newline at end of file diff --git a/apps/files_imageviewer/css/lightbox.css b/apps/files_imageviewer/css/lightbox.css new file mode 100644 index 00000000000..a6e844a2e28 --- /dev/null +++ b/apps/files_imageviewer/css/lightbox.css @@ -0,0 +1,23 @@ +#lightbox_overlay{ + position:fixed; + display:none; + height:100%; + width:100%; + top:0px; + left:0px; + opacity:0.5; + filter: alpha(opacity = 50); + background-color:black; + z-index:9999; +} + +#lightbox{ + position:fixed; + display:none; + max-height:90%; + max-width:90%; + top:10px; + margin-left:auto; + margin-right:auto; + z-index:9999; +}
\ No newline at end of file diff --git a/apps/files_imageviewer/js/lightbox.js b/apps/files_imageviewer/js/lightbox.js new file mode 100644 index 00000000000..25da2bc6835 --- /dev/null +++ b/apps/files_imageviewer/js/lightbox.js @@ -0,0 +1,58 @@ + +var lightBoxShown=false; +$(document).ready(function() { + if(typeof FileActions!=='undefined'){ + images={};//image cache + var overlay=$('<div id="lightbox_overlay"/>'); + $( 'body' ).append(overlay); + var container=$('<div id="lightbox"/>'); + $( 'body' ).append(container); + FileActions.register('image','View',function(filename){ + var location='ajax/download.php?files='+filename+'&dir='+$('#dir').val(); + overlay.show(); + if(!images[location]){ + var img = new Image(); + img.onload = function(){ + images[location]=img; + showLightbox(container,img); + } + img.src = location; + }else{ + showLightbox(container,images[location]); + } + }); + $( 'body' ).click(hideLightbox); + FileActions.setDefault('image','View'); + } +}); + +function showLightbox(container,img){ + var maxWidth = $( window ).width() - 50; + var maxHeight = $( window ).height() - 50; + if( img.width > maxWidth || img.height > maxHeight ) { // One of these is larger than the window + var ratio = img.width / img.height; + if( img.height >= maxHeight ) { + img.height = maxHeight; + img.width = maxHeight * ratio; + } else { + img.width = maxWidth; + img.height = maxWidth * ratio; + } + } + container.empty(); + container.append(img); + container.css('top',Math.round( ($( window ).height() - img.height)/2)); + container.css('left',Math.round( ($( window ).width() - img.width)/2)); + $('#lightbox').show(); + setTimeout(function(){ + lightBoxShown=true; + },100); +} + +function hideLightbox(){ + if(lightBoxShown){ + $('#lightbox_overlay').hide(); + $('#lightbox').hide(); + lightBoxShown=false; + } +}
\ No newline at end of file diff --git a/files/ajax/timezone.php b/files/ajax/timezone.php new file mode 100644 index 00000000000..93d06611a0d --- /dev/null +++ b/files/ajax/timezone.php @@ -0,0 +1,4 @@ +<?php + session_start(); + $_SESSION['timezone'] = $_GET['time']; +?>
\ No newline at end of file diff --git a/files/ajax/upload.php b/files/ajax/upload.php index 0939ad0d097..effee0c03c1 100644 --- a/files/ajax/upload.php +++ b/files/ajax/upload.php @@ -21,7 +21,7 @@ if(!empty($dir)) $dir .= '/'; $target='/' . stripslashes($dir) . $fileName; if(strpos($dir,'..') === false){ if(OC_FILESYSTEM::fromUploadedFile($source,$target)){ - echo json_encode(array( "status" => "success")); + echo json_encode(array( "status" => "success", 'mime'=>OC_FILESYSTEM::getMimeType($target),'size'=>OC_FILESYSTEM::filesize($target))); exit(); } } diff --git a/files/css/files.css b/files/css/files.css index c3f7d82aa6e..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; } @@ -23,24 +24,44 @@ display: inline; } -#fileSelector, #file_upload_cancel, #file_newfolder_submit { +#fileSelector, #file_upload_submit, #file_newfolder_submit { display: none; } -#file_upload_start, #file_newfolder_name { +#file_upload_filename, #file_newfolder_name { background-repeat: no-repeat; background-position: 0.5em 0; padding-left: 2em; } -#file_upload_start {background-image:url(../../img/mimetypes/file.png);} +#file_upload_filename { + background-image:url(../../img/mimetypes/file.png); +} +#file_upload_start {opacity:0;filter: alpha(opacity = 0);} #file_newfolder_name { background-image:url(../../img/places/folder.png); font-weight: bold; width: 14em; } -#file_newfolder_submit { +#file_upload_start, #file_upload_filename{ + position:absolute; + top:0px; + left:0px; + width:30ex; + font-size: 0.9em; +} + +#file_upload_wrapper{ + position:relative; + top:-1.2em; + left:-2em; + display: -moz-inline-box; /* fallback for older firefox versions*/ + display: inline-block; + width:30ex; +} + +#file_newfolder_submit, #file_upload_submit { width: 3em; } @@ -84,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 7ac3bce6051..a163895131e 100644 --- a/files/index.php +++ b/files/index.php @@ -35,6 +35,11 @@ if( !OC_USER::isLoggedIn()){ // Load the files we need OC_UTIL::addStyle( "files", "files" ); OC_UTIL::addScript( "files", "files" ); +OC_UTIL::addScript( 'files', 'filelist' ); +OC_UTIL::addScript( 'files', 'fileactions' ); +if(!isset($_SESSION['timezone'])){ + OC_UTIL::addScript( 'files', 'timezone' ); +} 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..dec1d1cfb04 --- /dev/null +++ b/files/js/fileactions.js @@ -0,0 +1,101 @@ +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){ + event.preventDefault(); + $('#file_menu').slideToggle(250); + var action=actions[$(this).data('action')]; + $('#file_menu ul').empty(); + 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(); +}); + +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; +}); + +FileActions.setDefault('dir','Open');
\ No newline at end of file diff --git a/files/js/filelist.js b/files/js/filelist.js new file mode 100644 index 00000000000..14cce8a3897 --- /dev/null +++ b/files/js/filelist.js @@ -0,0 +1,54 @@ +FileList={ + update:function(fileListHtml) { + $('#fileList').empty().html(fileListHtml); + }, + addFile:function(name,size,lastModified){ + var html='<tr data-file="'+name+'" data-type="file">'; + html+='<td class="selection"><input type="checkbox" /></td>'; + html+='<td class="filename"><a style="background-image:url(img/file.png)" href="download.php?file='+$('#dir').val()+'/'+name+'">'+name+'</a></td>'; + html+='<td class="filesize">'+size+'</td>'; + html+='<td class="date">'+lastModified+'</td>'; + html+='<td class="fileaction"><a href="" title="+" class="dropArrow"></a></td>'; + html+='</tr>'; + FileList.insertElement(name,'file',$(html)); + }, + addDir:function(name,size,lastModified){ + var html='<tr data-file="'+name+'" data-type="dir">'; + html+='<td class="selection"><input type="checkbox" /></td>'; + html+='<td class="filename"><a style="background-image:url(img/folder.png)" href="index.php?dir='+$('#dir').val()+'/'+name+'">'+name+'</a></td>'; + html+='<td class="filesize">'+size+'</td>'; + html+='<td class="date">'+lastModified+'</td>'; + html+='<td class="fileaction"><a href="" title="+" class="dropArrow"></a></td>'; + html+='</tr>'; + + FileList.insertElement(name,'dir',$(html)); + }, + refresh:function(data) { + result = jQuery.parseJSON(data.responseText); + if(typeof(result.data.breadcrumb) != 'undefined'){ + updateBreadcrumb(result.data.breadcrumb); + } + FileList.update(result.data.files); + resetFileActionPanel(); + }, + remove:function(name){ + $('tr[data-file="'+name+'"]').remove(); + }, + insertElement:function(name,type,element){ + //find the correct spot to insert the file or folder + var fileElements=$('tr[data-file][data-type="'+type+'"]'); + var pos; + if(name.localeCompare($(fileElements[0]).attr('data-file'))<0){ + pos=0; + }else if(name.localeCompare($(fileElements[fileElements.length-1]).attr('data-file'))>0){ + pos=fileElements.length-1; + }else{ + for(var pos=1;pos<fileElements.length-1;pos++){ + if(name.localeCompare($(fileElements[pos]).attr('data-file'))>0 && name.localeCompare($(fileElements[pos+1]).attr('data-file'))<0){ + break; + } + } + } + $(fileElements[pos]).after(element); + } +}
\ No newline at end of file diff --git a/files/js/files.js b/files/js/files.js index aed2d596272..0172ab1b1a9 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -1,132 +1,66 @@ $(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( - 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() { + // Sets browser table behaviour : + $('.browser tr').hover( + function() { + $(this).addClass('mouseOver'); + }, + function() { + $(this).removeClass('mouseOver'); + } + ); - if($(this).attr('checked')) - // Check all - $('td.selection input:checkbox').attr('checked', true); - else - // Uncheck all - $('td.selection input:checkbox').attr('checked', false); - }); + // Sets the file-action buttons behaviour : + $('td.fileaction a').live('click',function(event) { + event.preventDefault(); + FileActions.display($(this).parent()); + }); - $('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); - } + // Sets the file link behaviour : + $('td.filename a').live('click',function(event) { + 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); } }); - // 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; + // Sets the select_all checkbox behaviour : + $('#select_all').click(function() { + if($(this).attr('checked')) + // Check all + $('td.selection input:checkbox').attr('checked', true); + else + // Uncheck all + $('td.selection 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() { - if($('#file_upload_start').attr('mode') == 'menu') { - $('#file_upload_form')[0].reset(); - $('#fileSelector').change(function() { - //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'); - }); - $('#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(); + $('td.selection input:checkbox').live('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); } - $('#fileSelector').focus(); - } else if($('#file_upload_start').attr('mode') == 'action') { - $('#file_upload_cancel').slideUp(250); - $('#file_upload_form').attr('uploading', true); - $('#file_upload_target').load(uploadFinished); } }); - $('#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_action_panel').attr('activeAction', 'false'); -// $('#file_upload_form').hide(); -// $('p.actions a.upload:first').show(); - }); - - $('#file_new_dir_submit').click(function() { + $('#file_newfolder_submit').click(function() { $.ajax({ url: 'ajax/newfolder.php', - data: "dir="+$('#dir').val()+"&foldername="+$('#file_new_dir_name').val(), - complete: function(data){boolOperationFinished(data, false);} + 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) + });} }); + $('#file_newfolder_submit').fadeOut(250).trigger('vanish'); }); $('#file_newfolder_name').click(function(){ @@ -149,60 +83,10 @@ $(document).ready(function() { } }); - $('#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'); -// $('#fileSelector').replaceWith('<input type="file" name="file" id="fileSelector">'); -// $('#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; -// }); - - - -// $('.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) { + $('.download').live('click',function(event) { var files=''; - $('td.selection input:checkbox:checked').parent().parent().children('.filename').each(function(i,element){ - files+=';'+$(element).text(); + $('td.selection input:checkbox:checked').parent().parent().each(function(i,element){ + files+=';'+$(element).attr('data-file'); }); files=files.substr(1);//remove leading ; @@ -213,10 +97,10 @@ $(document).ready(function() { return false; }); - $('.delete').click(function(event) { + $('.delete').live('click',function(event) { var files=''; - $('td.selection input:checkbox:checked').parent().parent().children('.filename').each(function(i,element){ - files+=';'+$(element).text(); + $('td.selection input:checkbox:checked').parent().parent().each(function(i,element){ + files+=';'+$(element).attr('data-file'); }); files=files.substr(1);//remove leading ; @@ -224,12 +108,47 @@ $(document).ready(function() { url: 'ajax/delete.php', data: "dir="+$('#dir').val()+"&files="+files, complete: function(data){ - boolOperationFinished(data, false); + boolOperationFinished(data, function(){ + $('td.selection input:checkbox:checked').parent().parent().each(function(i,element){ + FileList.remove($(element).attr('data-file')); + }); + }); } }); return false; }); + + $('#file_upload_start').change(function(){ + var filename=$(this).val(); + filename=filename.replace(/^.*[\/\\]/g, ''); + $('#file_upload_filename').val(filename); + $('#file_upload_submit').show(); + }) + + $('#file_upload_submit').click(function(){ + var name=$('#file_upload_filename').val(); + if($('#file_upload_start')[0].files[0] && $('#file_upload_start')[0].files[0].size>0){ + var size=humanFileSize($('#file_upload_start')[0].files[0].size); + }else{ + var size='Pending'; + } + $('#file_upload_target').load(function(){ + var response=jQuery.parseJSON($('#file_upload_target').contents().find('body').text()); + //set mimetype and if needed filesize + $('tr[data-file="'+name+'"]').attr('data-mime',response.mime); + if(size=='Pending'){ + $('tr[data-file='+name+'] td.filesize').text(response.size); + } + }); + $('#file_upload_form').submit(); + var date=new Date(); + var uploadTime=formatDate(date); + FileList.addFile(name,size,uploadTime); + $('#file_upload_filename').val($('#file_upload_filename').data('upload_text')); + }); + //save the original upload button text + $('#file_upload_filename').data('upload_text',$('#file_upload_filename').val()); }); var adjustNewFolderSize = function() { @@ -251,74 +170,44 @@ function unsplitSize(stayingEl, vanishingEl) { $(vanishingEl).fadeOut(250); } -function uploadFinished() { - result = $('#file_upload_target').contents().text(); - result = eval("(" + result + ");"); - $('#file_upload_target').load(function(){}); - if(result.status == "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({ - url: 'ajax/list.php', - 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_upload_start').val('Upload ' + $('.max_human_file_size:first').val()); - $('#file_upload_start').attr('mode', 'menu'); - } - }); - } - $('#file_upload_form').attr('uploading', false); -} - function resetFileActionPanel() { $('#file_action_panel form').css({"display":"none"}); $('#file_action_panel').attr('activeAction', false); } -function boolOperationFinished(data, single, el) { - result = eval("("+data.responseText+");"); +function boolOperationFinished(data, callback) { + result = jQuery.parseJSON(data.responseText); if(result.status == 'success'){ - if(single) { - $('#file_menu').slideToggle(0); - $('body').append($('#file_menu')); - $(el).remove(); - } else { - $.ajax({ - url: 'ajax/list.php', - data: "dir="+$('#dir').val(), - complete: refreshContents - }); - } + callback.call(); } else { alert(result.data.message); } } -function refreshContents(data) { - result = eval("("+data.responseText+");"); - if(typeof(result.data.breadcrumb) != 'undefined'){ - updateBreadcrumb(result.data.breadcrumb); - } - updateFileList(result.data.files); - $('td.fileaction a').click(function() { - $(this).parent().append($('#file_menu')); - $('#file_menu').slideToggle(250); - return false; - }); - resetFileActionPanel(); -} - function updateBreadcrumb(breadcrumbHtml) { $('p.nav').empty().html(breadcrumbHtml); } -function updateFileList(fileListHtml) { - $('#fileList').empty().html(fileListHtml); +function humanFileSize(bytes){ + if( bytes < 1024 ){ + return bytes+' B'; + } + bytes = Math.round(bytes / 1024, 1 ); + if( bytes < 1024 ){ + return bytes+' kB'; + } + bytes = Math.round( bytes / 1024, 1 ); + if( bytes < 1024 ){ + return bytes+' MB'; + } + + // Wow, heavy duty for owncloud + bytes = Math.round( bytes / 1024, 1 ); + return bytes+' GB'; } + +function formatDate(date){ + var monthNames = [ "January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December" ]; + return monthNames[date.getMonth()]+' '+date.getDate()+', '+date.getFullYear()+', '+((date.getHours()<10)?'0':'')+date.getHours()+':'+date.getMinutes(); +}
\ No newline at end of file diff --git a/files/js/timezone.js b/files/js/timezone.js new file mode 100644 index 00000000000..d569683f210 --- /dev/null +++ b/files/js/timezone.js @@ -0,0 +1,12 @@ +//send the clients time zone to the server +$(document).ready(function() { + var visitortimezone = (-new Date().getTimezoneOffset()/60); + $.ajax({ + type: "GET", + url: "ajax/timezone.php", + data: 'time='+ visitortimezone, + success: function(){ + location.reload(); + } + }); +});
\ No newline at end of file diff --git a/files/templates/index.php b/files/templates/index.php index 4d34222b966..11cf0360e1e 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -1,9 +1,23 @@ <div class="controls"> <div class="actions"> - <form id="file_upload_form" action="ajax/upload.php" -method="post" enctype="multipart/form-data" target="file_upload_target"><input -type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_["uploadMaxFilesize"] ?>" id="max_upload"><input -type="hidden" class="max_human_file_size" value="(max <?php echo $_["uploadMaxHumanFilesize"]; ?>)"><input type="hidden" name="dir" value="<?php echo $_["dir"] ?>" id="dir"><input class="prettybutton" type="submit" id="file_upload_start" value="Upload (max <?php echo $_["uploadMaxHumanFilesize"];?>)" /> <input class="prettybutton" type="button" id="file_upload_cancel" value="X" /><input type="file" name="file" id="fileSelector"><iframe id="file_upload_target" name="file_upload_target" src=""></iframe></form><form id="file_newfolder_form"><input type="text" class="prettybutton" name="file_newfolder_name" id="file_newfolder_name" value="New Folder" /> <input class="prettybutton" type="button" id="file_newfolder_submit" name="file_newfolder_submit" value="OK" /></form><a href="" title="" class="download">Download</a><a href="" title="" class="share">Share</a><a href="" title="" class="delete">Delete</a> + <form id="file_upload_form" action="ajax/upload.php" method="post" enctype="multipart/form-data" target="file_upload_target"> + <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_["uploadMaxFilesize"] ?>" id="max_upload"> + <input type="hidden" class="max_human_file_size" value="(max <?php echo $_["uploadMaxHumanFilesize"]; ?>)"> + <input type="hidden" name="dir" value="<?php echo $_["dir"] ?>" id="dir"> + <div id='file_upload_wrapper'> + <input class="prettybutton" id='file_upload_filename' value="Upload (max <?php echo $_["uploadMaxHumanFilesize"];?>)"/> + <input class="prettybutton" type="file" id="file_upload_start" name='file'/> + </div> + <input class="prettybutton" type="button" id="file_upload_submit" name="file_upload_submit" value="OK" /> + <iframe id="file_upload_target" name="file_upload_target" src=""></iframe> + </form> + <form id="file_newfolder_form"> + <input type="text" class="prettybutton" name="file_newfolder_name" id="file_newfolder_name" value="New Folder" /> + <input class="prettybutton" type="button" id="file_newfolder_submit" name="file_newfolder_submit" value="OK" /> + </form> + <a href="" title="" class="download">Download</a> + <a href="" title="" class="share">Share</a> + <a href="" title="" class="delete">Delete</a> </div> <div id="file_action_panel"> </div> @@ -30,8 +44,5 @@ type="hidden" class="max_human_file_size" value="(max <?php echo $_["uploadMaxHu <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 0d3355678c3..16d9d92c040 100644 --- a/files/templates/part.list.php +++ b/files/templates/part.list.php @@ -1,5 +1,5 @@ <?php foreach($_["files"] as $file): ?> - <tr> + <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> diff --git a/lib/base.php b/lib/base.php index 04f8f5c9fa4..e5b6656c2a9 100644 --- a/lib/base.php +++ b/lib/base.php @@ -236,8 +236,15 @@ class OC_UTIL { * @param bool dateOnly option to ommit time from the result */ public static function formatDate( $timestamp,$dateOnly=false){ - $timeformat=$dateOnly?'F j, Y':'F j, Y, H:i'; - return date($timeformat,$timestamp); + if(isset($_SESSION['timezone'])){//adjust to clients timezone if we know it + $systemTimeZone = intval(exec('date +%z')); + $systemTimeZone=(round($systemTimeZone/100,0)*60)+($systemTimeZone%100); + $clientTimeZone=$_SESSION['timezone']*60; + $offset=$clientTimeZone-$systemTimeZone; + $timestamp=$timestamp+$offset*60; + } + $timeformat=$dateOnly?'F j, Y':'F j, Y, H:i'; + return date($timeformat,$timestamp); } /** diff --git a/lib/filestorage.php b/lib/filestorage.php index d4db77f2c89..157e44ff298 100644 --- a/lib/filestorage.php +++ b/lib/filestorage.php @@ -386,7 +386,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ } } if($return=rmdir($dir)){ - $this->clearFolderSizeCache($path); + $this->clearFolderSizeCache($dir); } return $return; } |