source: Dev/trunk/src/client/dojox/editor/plugins/UploadImage.js

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 3.0 KB
Line 
1define([
2        "dojo",
3        "dijit",
4        "dojox",
5        "dijit/_editor/_Plugin",
6        "dojo/_base/connect",
7        "dojo/_base/declare",
8        "dojox/form/FileUploader",
9        "dijit/_editor/_Plugin"
10], function(dojo, dijit, dojox, _Plugin) {
11
12        dojo.experimental("dojox.editor.plugins.UploadImage");
13
14        var UploadImage = dojo.declare("dojox.editor.plugins.UploadImage", _Plugin, {
15                // summary:
16                //              Adds an icon to the Editor toolbar that when clicked, opens a system dialog
17                //              Although the toolbar icon is a tiny "image" the uploader could be used for
18                //              any file type
19               
20                tempImageUrl: "",
21                iconClassPrefix: "editorIcon",
22                useDefaultCommand: false,
23                uploadUrl: "",
24                button:null,
25                label:"Upload",
26               
27                setToolbar: function(toolbar){
28                        this.button.destroy();
29                        this.createFileInput();
30                        toolbar.addChild(this.button);
31                },
32                _initButton: function(){
33                        this.command = "uploadImage";
34                        this.editor.commands[this.command] = "Upload Image";
35                        this.inherited("_initButton", arguments);
36                        delete this.command;
37                },
38               
39                updateState: function(){
40                        // summary:
41                        //              Over-ride for button state control for disabled to work.
42                        this.button.set("disabled", this.get("disabled"));
43                },
44               
45                createFileInput: function(){
46                        var node = dojo.create('span', {innerHTML:"."}, document.body)
47                        dojo.style(node, {
48                                width:"40px",
49                                height:"20px",
50                                paddingLeft:"8px",
51                                paddingRight:"8px"
52                        });
53                        this.button = new dojox.form.FileUploader({
54                                isDebug:true,
55                                //force:"html",
56                                uploadUrl:this.uploadUrl,
57                                uploadOnChange:true,
58                                selectMultipleFiles:false,
59                                baseClass:"dojoxEditorUploadNorm",
60                                hoverClass:"dojoxEditorUploadHover",
61                                activeClass:"dojoxEditorUploadActive",
62                                disabledClass:"dojoxEditorUploadDisabled"
63                        }, node);
64                        this.connect(this.button, "onChange", "insertTempImage");
65                        this.connect(this.button, "onComplete", "onComplete");
66                },
67               
68                onComplete: function(data,ioArgs,widgetRef){
69                        data = data[0];
70                        // Image is ready to insert
71                        var tmpImgNode = dojo.byId(this.currentImageId, this.editor.document);
72                        var file;
73                        // download path is mainly used so we can access a PHP script
74                        // not relative to this file. The server *should* return a qualified path.
75                        if(this.downloadPath){
76                                file = this.downloadPath+data.name
77                        }else{
78                                file = data.file;
79                        }
80                       
81                        tmpImgNode.src = file;
82                        dojo.attr(tmpImgNode,'_djrealurl',file);
83
84                        if(data.width){
85                                tmpImgNode.width = data.width;
86                                tmpImgNode.height = data.height;
87                        }
88                },
89               
90                insertTempImage: function(){
91                        // summary:
92                        //              inserting a "busy" image to show something is hapening
93                        //              during upload and download of the image.
94                        this.currentImageId = "img_"+(new Date().getTime());
95                        var iTxt = '<img id="'+this.currentImageId+'" src="'+this.tempImageUrl+'" width="32" height="32"/>';
96                        this.editor.execCommand('inserthtml', iTxt);
97                }
98        });
99
100        dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
101                if(o.plugin){ return; }
102                switch(o.args.name){
103                case "uploadImage":
104                        o.plugin = new UploadImage({url: o.args.url});
105                }
106        });
107
108        return UploadImage;
109});
Note: See TracBrowser for help on using the repository browser.