fix issues with file uploader
[roojs1] / Roo / bootstrap / CardUploader.js
index 7e57e67..8e64291 100644 (file)
@@ -26,7 +26,7 @@ Roo.bootstrap.CardUploader = function(config){
     
     this.fileCollection   = new Roo.util.MixedCollection(false,function(r) {
         return r.data.id
-        });
+     });
     
     
 };
@@ -58,7 +58,7 @@ Roo.extend(Roo.bootstrap.CardUploader, Roo.bootstrap.Input,  {
                 {
                     tag: 'input',
                     type : 'hidden',
-                    nane : this.name,
+                    name : this.name,
                     value : this.value,
                     cls : 'd-none  form-control'
                 },
@@ -190,11 +190,12 @@ Roo.extend(Roo.bootstrap.CardUploader, Roo.bootstrap.Input,  {
             id : Roo.bootstrap.CardUploader.ID--,
             is_uploaded : false,
             src : url,
+            srcfile : file,
             title : file.name,
             mimetype : file.type,
             preview : false,
             is_deleted : 0
-        })
+        });
         
     },
     
@@ -284,13 +285,18 @@ Roo.extend(Roo.bootstrap.CardUploader, Roo.bootstrap.Input,  {
         // this.items.push(cn);
         this.fileCollection.add(cn);
         
+        if (!data.srcfile) {
+            this.updateInput();
+            return;
+        }
+            
         var _t = this;
         var reader = new FileReader();
         reader.addEventListener("load", function() {  
             data.srcdata =  reader.result;
             _t.updateInput();
         });
-        reader.readAsDataURL(data.src);
+        reader.readAsDataURL(data.srcfile);
         
         
         
@@ -301,16 +307,20 @@ Roo.extend(Roo.bootstrap.CardUploader, Roo.bootstrap.Input,  {
         var card  = this.fileCollection.get(id);
         card.data.is_deleted = 1;
         card.data.src = ''; /// delete the source - so it reduces size of not uploaded images etc.
-        this.fileCollection.remove(card);
+        //this.fileCollection.remove(card);
         //this.items = this.items.filter(function(e) { return e != card });
         // dont' really need ot update items.
         card.el.dom.parentNode.removeChild(card.el.dom);
+        this.updateInput();
+
         
     },
     reset: function()
     {
         this.fileCollection.each(function(card) {
-            card.el.dom.parentNode.removeChild(card.el.dom);    
+            if (card.el.dom && card.el.dom.parentNode) {
+                card.el.dom.parentNode.removeChild(card.el.dom);
+            }
         });
         this.fileCollection.clear();
         this.updateInput();