Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dojox.widget.FileInput"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.widget.FileInput"] = true;dojo.provide("dojox.widget.FileInput");dojo.experimental("dojox.widget.FileInput");dojo.require("dijit.form._FormWidget");dojo.require("dijit._Templated");dojo.declare("dojox.widget.FileInput",[dijit.form._FormWidget,dijit._Templated],{// summary: A styled input type="file"//// description: A input type="file" form widget, with a button for uploading to be styled via css,// a cancel button to clear selection, and FormWidget mixin to provide standard dijit.form.Form// support (FIXME: maybe not fully implemented)// label: String// the title text of the "Browse" buttonlabel: "Browse ...",// cancelText: String// the title of the "Cancel" buttoncancelText: "Cancel",// name: String// ugh, this should be pulled from this.domNodename: "uploadFile",templateString:"<div class=\"dijitFileInput\">\n\t<input id=\"${id}\" class=\"dijitFileInputReal\" type=\"file\" dojoAttachPoint=\"fileInput\" name=\"${name}\" />\n\t<div class=\"dijitFakeInput\">\n\t\t<input class=\"dijitFileInputVisible\" type=\"text\" dojoAttachPoint=\"focusNode, inputNode\" />\n\t\t<span class=\"dijitFileInputText\" dojoAttachPoint=\"titleNode\">${label}</span>\n\t\t<span class=\"dijitFileInputButton\" dojoAttachPoint=\"cancelNode\" \n\t\t\tdojoAttachEvent=\"onclick:_onClick\">${cancelText}</span>\n\t</div>\n</div>\n",startup: function(){// summary: listen for changes on our real file inputthis.inherited("startup",arguments);this._listener = dojo.connect(this.fileInput,"onchange",this,"_matchValue");this._keyListener = dojo.connect(this.fileInput,"onkeyup",this,"_matchValue");},_matchValue: function(){// summary: set the content of the upper input based on the semi-hidden file inputthis.inputNode.value = this.fileInput.value;if(this.inputNode.value){this.cancelNode.style.visibility = "visible";dojo.fadeIn({ node: this.cancelNode, duration:275 }).play();}},setLabel: function(/* String */label,/* String? */cssClass){// summary: method to allow use to change button labelthis.titleNode.innerHTML = label;},_onClick: function(/* Event */e){// summary: on click of cancel button, since we can't clear the input because of// security reasons, we destroy it, and add a new one in it's place.dojo.disconnect(this._listener);dojo.disconnect(this._keyListener);this.domNode.removeChild(this.fileInput);dojo.fadeOut({ node: this.cancelNode, duration:275 }).play();// should we use cloneNode()? can we?this.fileInput = document.createElement('input');this.fileInput.setAttribute("type","file");this.fileInput.setAttribute("id",this.id);this.fileInput.setAttribute("name",this.name);dojo.addClass(this.fileInput,"dijitFileInputReal");this.domNode.appendChild(this.fileInput);this._keyListener = dojo.connect(this.fileInput,"onkeyup",this,"_matchValue");this._listener = dojo.connect(this.fileInput,"onchange",this,"_matchValue");this.inputNode.value = "";}});}