diff options
Diffstat (limited to 'js/dojo/dojox/editor/plugins/UploadImage.js')
| -rw-r--r-- | js/dojo/dojox/editor/plugins/UploadImage.js | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/js/dojo/dojox/editor/plugins/UploadImage.js b/js/dojo/dojox/editor/plugins/UploadImage.js new file mode 100644 index 0000000..73a0578 --- /dev/null +++ b/js/dojo/dojox/editor/plugins/UploadImage.js @@ -0,0 +1,114 @@ +//>>built +define("dojox/editor/plugins/UploadImage", [ + "dojo", + "dijit", + "dojox", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojox/form/FileUploader", + "dijit/_editor/_Plugin" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.UploadImage"); + +dojo.declare("dojox.editor.plugins.UploadImage", + dijit._editor._Plugin, + { + //summary: + // Adds an icon to the Editor toolbar that when clicked, opens a system dialog + // Although the toolbar icon is a tiny "image" the uploader could be used for + // any file type + + tempImageUrl: "", + iconClassPrefix: "editorIcon", + useDefaultCommand: false, + uploadUrl: "", + button:null, + label:"Upload", + + setToolbar: function(toolbar){ + this.button.destroy(); + this.createFileInput(); + toolbar.addChild(this.button); + }, + _initButton: function(){ + this.command = "uploadImage"; + this.editor.commands[this.command] = "Upload Image"; + this.inherited("_initButton", arguments); + delete this.command; + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + createFileInput: function(){ + var node = dojo.create('span', {innerHTML:"."}, document.body) + dojo.style(node, { + width:"40px", + height:"20px", + paddingLeft:"8px", + paddingRight:"8px" + }) + this.button = new dojox.form.FileUploader({ + isDebug:true, + //force:"html", + uploadUrl:this.uploadUrl, + uploadOnChange:true, + selectMultipleFiles:false, + baseClass:"dojoxEditorUploadNorm", + hoverClass:"dojoxEditorUploadHover", + activeClass:"dojoxEditorUploadActive", + disabledClass:"dojoxEditorUploadDisabled" + }, node); + this.connect(this.button, "onChange", "insertTempImage"); + this.connect(this.button, "onComplete", "onComplete"); + }, + + onComplete: function(data,ioArgs,widgetRef){ + data = data[0]; + // Image is ready to insert + var tmpImgNode = dojo.withGlobal(this.editor.window, "byId", dojo, [this.currentImageId]); + var file; + // download path is mainly used so we can access a PHP script + // not relative to this file. The server *should* return a qualified path. + if(this.downloadPath){ + file = this.downloadPath+data.name + }else{ + file = data.file; + } + + tmpImgNode.src = file; + dojo.attr(tmpImgNode,'_djrealurl',file); + + if(data.width){ + tmpImgNode.width = data.width; + tmpImgNode.height = data.height; + } + }, + + insertTempImage: function(){ + // inserting a "busy" image to show something is hapening + // during upload and download of the image. + this.currentImageId = "img_"+(new Date().getTime()); + var iTxt = '<img id="'+this.currentImageId+'" src="'+this.tempImageUrl+'" width="32" height="32"/>'; + this.editor.execCommand('inserthtml', iTxt); + } + + } +); + +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + switch(o.args.name){ + case "uploadImage": + o.plugin = new dojox.editor.plugins.UploadImage({url: o.args.url}); + } +}); + +return dojox.editor.plugins.UploadImage; + +}); |
