115 lines
3.1 KiB
JavaScript
115 lines
3.1 KiB
JavaScript
//>>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;
|
|
|
|
});
|