try and reset
[roojs1] / Roo / bootstrap / ButtonUploader.js
1
2 /*
3 * Licence: LGPL
4 */
5
6 /**
7  * @class Roo.bootstrap.ButtonUploader
8  * @extends Roo.bootstrap.Button
9  * Bootstrap Button Uploader class - it's a button which when you add files to it
10  *
11  * 
12  * @cfg {Number} errorTimeout default 3000
13  * @cfg {Array}  images  an array of ?? Img objects ??? when loading existing files..
14  * @cfg {Array}  html The button text.
15  * @cfg {Boolean}  multiple (default true) Should the upload allow multiple files to be uploaded.
16  *
17  * @constructor
18  * Create a new CardUploader
19  * @param {Object} config The config object
20  */
21
22 Roo.bootstrap.ButtonUploader = function(config){
23     
24  
25     
26     Roo.bootstrap.ButtonUploader.superclass.constructor.call(this, config);
27     
28      
29      this.addEvents({
30          // raw events
31         /**
32          * @event beforeselect
33          * When button is pressed, before show upload files dialog is shown
34          * @param {Roo.bootstrap.UploaderButton} this
35          *
36          */
37         'beforeselect' : true,
38          /**
39          * @event fired when files have been selected, 
40          * When a the download link is clicked
41          * @param {Roo.bootstrap.UploaderButton} this
42          * @param {Array} Array of files that have been uploaded
43          */
44         'uploaded' : true
45         
46     });
47 };
48  
49 Roo.extend(Roo.bootstrap.ButtonUploader, Roo.bootstrap.Button,  {
50     
51      
52     errorTimeout : 3000,
53      
54     images : false,
55    
56     fileCollection : false,
57     allowBlank : true,
58     
59     multiple : true,
60     
61     getAutoCreate : function()
62     {
63         var im = {
64             tag: 'input',
65             type : 'file',
66             cls : 'd-none  roo-card-upload-selector' 
67           
68         };
69         if (this.multiple) {
70             im.multiple = 'multiple';
71         }
72         
73         return  {
74             cls :'div' ,
75             cn : [
76                 Roo.bootstrap.Button.prototype.getAutoCreate.call(this),
77                 im
78
79             ]
80         };
81            
82          
83     },
84      
85    
86     initEvents : function()
87     {
88         
89         Roo.bootstrap.Button.prototype.initEvents.call(this);
90         
91         
92         
93         
94         
95         this.urlAPI = (window.createObjectURL && window) || 
96                                 (window.URL && URL.revokeObjectURL && URL) || 
97                                 (window.webkitURL && webkitURL);
98                         
99          
100          
101          
102         this.selectorEl = this.el.select('.roo-card-upload-selector', true).first();
103         
104         this.selectorEl.on('change', this.onFileSelected, this);
105          
106          
107        
108     },
109     
110    
111     onClick : function(e)
112     {
113         e.preventDefault();
114         
115         if ( this.fireEvent('beforeselect', this) === false) {
116             return;
117         }
118          
119         this.selectorEl.dom.click();
120          
121     },
122     
123     onFileSelected : function(e)
124     {
125         e.preventDefault();
126         
127         if(typeof(this.selectorEl.dom.files) == 'undefined' || !this.selectorEl.dom.files.length){
128             return;
129         }
130         var files = Array.prototype.slice.call(this.selectorEl.dom.files);
131         this.selectorEl.dom.value  = '';// hopefully reset..
132         
133         this.fireEvent('uploaded', this,  files );
134         
135     },
136     
137        
138    
139     
140     /**
141      * addCard - add an Attachment to the uploader
142      * @param data - the data about the image to upload
143      *
144      * {
145           id : 123
146           title : "Title of file",
147           is_uploaded : false,
148           src : "http://.....",
149           srcfile : { the File upload object },
150           mimetype : file.type,
151           preview : false,
152           is_deleted : 0
153           .. any other data...
154         }
155      *
156      * 
157     */
158      
159     reset: function()
160     {
161          
162          this.selectorEl
163     } 
164     
165     
166     
167     
168 });
169