]> git.mxchange.org Git - friendica.git/blobdiff - addon/js_upload/js_upload.php
Added plural string for contact block
[friendica.git] / addon / js_upload / js_upload.php
index b738ade241d1400628737ea9309c2edd9df1f28a..9f3fa960096ee04ba2204dcad5077b118998478c 100644 (file)
@@ -36,6 +36,11 @@ function js_upload_form(&$a,&$b) {
        $b['addon_text'] .= '<link href="' . $a->get_baseurl() . '/addon/js_upload/file-uploader/client/fileuploader.css" rel="stylesheet" type="text/css">';
        $b['addon_text'] .= '<script src="' . $a->get_baseurl() . '/addon/js_upload/file-uploader/client/fileuploader.js" type="text/javascript"></script>';
    
+       $upload_msg = t('Upload a file');
+       $drop_msg = t('Drop files here to upload');
+       $cancel = t('Cancel');
+       $failed = t('Failed');
+
        $b['addon_text'] .= <<< EOT
        
  <div id="file-uploader-demo1">                
@@ -65,6 +70,22 @@ function createUploader() {
        uploader = new qq.FileUploader({
                element: document.getElementById('file-uploader-demo1'),
                action: '{$b['post_url']}',
+
+        template: '<div class="qq-uploader">' + 
+                '<div class="qq-upload-drop-area"><span>$drop_msg</span></div>' +
+                '<div class="qq-upload-button">$upload_msg</div>' +
+                '<ul class="qq-upload-list"></ul>' + 
+             '</div>',
+
+        // template for one item in file list
+        fileTemplate: '<li>' +
+                '<span class="qq-upload-file"></span>' +
+                '<span class="qq-upload-spinner"></span>' +
+                '<span class="qq-upload-size"></span>' +
+                '<a class="qq-upload-cancel" href="#">$cancel</a>' +
+                '<span class="qq-upload-failed-text">$failed</span>' +
+            '</li>',        
+
                debug: true,
                onSubmit: function(id,filename) {
 
@@ -105,7 +126,7 @@ function js_upload_post_init(&$a,&$b) {
 
        $uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
 
-       $result = $uploader->handleUpload('uploads/');
+       $result = $uploader->handleUpload();
 
 
        // to pass data through iframe you will need to encode all html tags
@@ -124,11 +145,10 @@ function js_upload_post_file(&$a,&$b) {
 
        $result = $a->data['upload_result'];
 
-       $b['src']               = 'uploads/' . $result['filename'];
+       $b['src']               = $result['path'];
        $b['filename']  = $result['filename'];
        $b['filesize']  = filesize($b['src']);
 
-logger('post_file' . print_r($b, true));
 }
 
 
@@ -147,28 +167,32 @@ logger('upload_post_end');
  * Handle file uploads via XMLHttpRequest
  */
 class qqUploadedFileXhr {
+
+       private $pathnm = '';
+
     /**
-     * Save the file to the specified path
+     * Save the file in the temp dir.
      * @return boolean TRUE on success
      */
-    function save($path) {    
+    function save() {    
         $input = fopen("php://input", "r");
-        $temp = tmpfile();
+        $this->pathnm = tempnam(sys_get_temp_dir(),'frn');
+               $temp = fopen($this->pathnm,"w");
         $realSize = stream_copy_to_stream($input, $temp);
+
         fclose($input);
+               fclose($temp);
         
         if ($realSize != $this->getSize()){            
             return false;
         }
-        
-        $target = fopen($path, "w");        
-        fseek($temp, 0, SEEK_SET);
-        stream_copy_to_stream($temp, $target);
-        fclose($target);
-        
         return true;
     }
 
+       function getPath() {
+               return $this->pathnm;
+       }
+
     function getName() {
         return $_GET['qqfile'];
     }
@@ -187,16 +211,22 @@ class qqUploadedFileXhr {
  */
 
 class qqUploadedFileForm {  
+
+
     /**
      * Save the file to the specified path
      * @return boolean TRUE on success
      */
-    function save($path) {
-        if(!move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)){
-            return false;
-        }
+
+
+    function save() {
         return true;
     }
+
+       function getPath() {
+               return $_FILES['qqfile']['tmp_name'];
+       }
+
     function getName() {
         return $_FILES['qqfile']['name'];
     }
@@ -225,6 +255,7 @@ class qqFileUploader {
         } else {
             $this->file = false; 
         }
+
     }
     
     private function checkServerSettings(){        
@@ -251,10 +282,7 @@ class qqFileUploader {
     /**
      * Returns array('success'=>true) or array('error'=>'error message')
      */
-    function handleUpload($uploadDirectory, $replaceOldFile = FALSE){
-        if (!is_writable($uploadDirectory)){
-            return array('error' => t('Server error. Upload directory isn\'t writable.'));
-        }
+    function handleUpload(){
         
         if (!$this->file){
             return array('error' => t('No files were uploaded.'));
@@ -289,18 +317,18 @@ class qqFileUploader {
             return array('error' => t('File has an invalid extension, it should be one of ') . $these . '.');
         }
         
-        if(!$replaceOldFile){
-            /// don't overwrite previous files that were uploaded
-            while (file_exists($uploadDirectory . $filename . '.' . $ext)) {
-                $filename .= rand(10, 99);
-            }
-        }
-        
-        if ($this->file->save($uploadDirectory . $filename . '.' . $ext)){
-            return array('success'=>true,'filename' => $filename . '.' . $ext);
+        if ($this->file->save()){
+            return array(
+                               'success'=>true,
+                               'path' => $this->file->getPath(), 
+                               'filename' => $filename . '.' . $ext
+                       );
         } else {
-            return array('error'=> t('Could not save uploaded file.') .
-                t('The upload was cancelled, or server error encountered'),'filename' => $filename . '.' . $ext);
+            return array(
+                               'error'=> t('Upload was cancelled, or server error encountered'),
+                               'path' => $this->file->getPath(), 
+                               'filename' => $filename . '.' . $ext
+                       );
         }
         
     }