aboutsummaryrefslogtreecommitdiffstats
path: root/files
diff options
context:
space:
mode:
Diffstat (limited to 'files')
-rw-r--r--files/ajax/scan.php37
-rw-r--r--files/ajax/upload.php2
-rw-r--r--files/css/files.css4
-rw-r--r--files/index.php2
-rw-r--r--files/js/files.js29
-rw-r--r--files/templates/index.php8
-rw-r--r--files/templates/part.list.php6
7 files changed, 82 insertions, 6 deletions
diff --git a/files/ajax/scan.php b/files/ajax/scan.php
new file mode 100644
index 00000000000..565275911b4
--- /dev/null
+++ b/files/ajax/scan.php
@@ -0,0 +1,37 @@
+<?php
+
+require_once '../../lib/base.php';
+
+set_time_limit(0);//scanning can take ages
+
+$force=isset($_GET['force']) and $_GET['force']=='true';
+$checkOnly=isset($_GET['checkonly']) and $_GET['checkonly']=='true';
+
+if(!$checkOnly){
+ $eventSource=new OC_EventSource();
+}
+
+
+//create the file cache if necesary
+if($force or !OC_FileCache::inCache('')){
+ if(!$checkOnly){
+ OC_DB::beginTransaction();
+ OC_FileCache::scan('',$eventSource);
+ OC_DB::commit();
+ $eventSource->send('success',true);
+ }else{
+ OC_JSON::success(array('data'=>array('done'=>true)));
+ exit;
+ }
+}else{
+ if($checkOnly){
+ OC_JSON::success(array('data'=>array('done'=>false)));
+ exit;
+ }
+ if(isset($eventSource)){
+ $eventSource->send('success',false);
+ }else{
+ exit;
+ }
+}
+$eventSource->close(); \ No newline at end of file
diff --git a/files/ajax/upload.php b/files/ajax/upload.php
index 5f0f68d9531..241edc216ff 100644
--- a/files/ajax/upload.php
+++ b/files/ajax/upload.php
@@ -47,7 +47,7 @@ if(strpos($dir,'..') === false){
$fileCount=count($files['name']);
for($i=0;$i<$fileCount;$i++){
$target=stripslashes($dir) . $files['name'][$i];
- if(OC_Filesystem::fromUploadedFile($files['tmp_name'][$i],$target)){
+ if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i],$target)){
$result[]=array( "status" => "success", 'mime'=>OC_Filesystem::getMimeType($target),'size'=>OC_Filesystem::filesize($target),'name'=>$files['name'][$i]);
}
}
diff --git a/files/css/files.css b/files/css/files.css
index 13ed7fb33e4..512e462cb6f 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -76,4 +76,6 @@ a.action>img{ max-height:16px; max-width:16px; }
/* add breadcrumb divider to the File item in navigation panel */
#navigation>ul>li:first-child { background:url('../../core/img/breadcrumb-start.svg') no-repeat 12.5em 0px; width:12.5em; padding-right:1em; position:fixed; }
-#navigation>ul>li:first-child+li { padding-top:2.9em; } \ No newline at end of file
+#navigation>ul>li:first-child+li { padding-top:2.9em; }
+
+#scanning-message{ top:40%; left:40%; position:absolute; display:none }
diff --git a/files/index.php b/files/index.php
index fbf7a4901a1..f166790ba9c 100644
--- a/files/index.php
+++ b/files/index.php
@@ -94,7 +94,7 @@ $tmpl = new OC_Template( "files", "index", "user" );
$tmpl->assign( "fileList", $list->fetchPage() );
$tmpl->assign( "breadcrumb", $breadcrumbNav->fetchPage() );
$tmpl->assign( 'dir', $dir);
-$tmpl->assign( 'readonly', !OC_Filesystem::is_writeable($dir));
+$tmpl->assign( 'readonly', !OC_Filesystem::is_writable($dir));
$tmpl->assign( "files", $files );
$tmpl->assign( 'uploadMaxFilesize', $maxUploadFilesize);
$tmpl->assign( 'uploadMaxHumanFilesize', OC_Helper::humanFileSize($maxUploadFilesize));
diff --git a/files/js/files.js b/files/js/files.js
index 7c04245c223..bebcf4e97a4 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -336,8 +336,37 @@ $(document).ready(function() {
$('#new>a').click();
});
});
+
+ //check if we need to scan the filesystem
+ $.get(OC.filePath('files','ajax','scan.php'),{checkonly:'true'}, function(response) {
+ if(response.data.done){
+ scanFiles();
+ }
+ }, "json");
});
+function scanFiles(force){
+ force=!!force; //cast to bool
+ scanFiles.scanning=true;
+ $('#scanning-message').show();
+ $('#fileList').remove();
+ var scannerEventSource=new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force});
+ scanFiles.cancel=scannerEventSource.close.bind(scannerEventSource);
+ scannerEventSource.listen('scanning',function(data){
+ $('#scan-count').text(data.count+' files scanned');
+ $('#scan-current').text(data.file+'/');
+ });
+ scannerEventSource.listen('success',function(success){
+ scanFiles.scanning=false;
+ if(success){
+ window.location.reload();
+ }else{
+ alert('error while scanning');
+ }
+ });
+}
+scanFiles.scanning=false;
+
function boolOperationFinished(data, callback) {
result = jQuery.parseJSON(data.responseText);
if(result.status == 'success'){
diff --git a/files/templates/index.php b/files/templates/index.php
index 38a3274ff31..7e9505dec2f 100644
--- a/files/templates/index.php
+++ b/files/templates/index.php
@@ -57,3 +57,11 @@
<?php echo $l->t('The files you are trying to upload exceed the maximum size for file uploads on this server.');?>
</p>
</div>
+<div id="scanning-message">
+ <h3>
+ <?php echo $l->t('Files are being scanned, please wait.');?> <span id='scan-count'></spann>
+ </h3>
+ <p>
+ <?php echo $l->t('Current scanning');?> <span id='scan-current'></spann>
+ </p>
+</div>
diff --git a/files/templates/part.list.php b/files/templates/part.list.php
index a364862119d..b117d81a1a5 100644
--- a/files/templates/part.list.php
+++ b/files/templates/part.list.php
@@ -1,5 +1,5 @@
<?php foreach($_['files'] as $file):
- $write = ($file['writeable']) ? 'true' : 'false';
+ $write = ($file['writable']) ? 'true' : 'false';
$simple_file_size = 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
if($simple_size_color<0) $simple_size_color = 0;
@@ -10,8 +10,8 @@
$name = str_replace('%2F','/', $name);
$directory = str_replace('+','%20',urlencode($file['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['mime']?>" data-size='<?php echo $file['size'];?>' data-write='<?php echo $write;?>'>
- <td class="filename svg" style="background-image:url(<?php if($file['type'] == 'dir') echo mimetype_icon('dir'); else echo mimetype_icon($file['mime']); ?>)">
+ <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;?>'>
+ <td class="filename svg" style="background-image:url(<?php if($file['type'] == 'dir') echo mimetype_icon('dir'); else echo mimetype_icon($file['mimetype']); ?>)">
<?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="">
<span class="nametext">