Upgrade of TinyMCE is in progress.
[citadel.git] / webcit / tiny_mce / plugins / advimage / editor_plugin_src.js
1 /**\r
2  * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
3  *\r
4  * @author Moxiecode\r
5  * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
6  */\r
7 \r
8 /* Import plugin specific language pack */\r
9 tinyMCE.importPluginLanguagePack('advimage');\r
10 \r
11 var TinyMCE_AdvancedImagePlugin = {\r
12         getInfo : function() {\r
13                 return {\r
14                         longname : 'Advanced image',\r
15                         author : 'Moxiecode Systems AB',\r
16                         authorurl : 'http://tinymce.moxiecode.com',\r
17                         infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',\r
18                         version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion\r
19                 };\r
20         },\r
21 \r
22         getControlHTML : function(cn) {\r
23                 switch (cn) {\r
24                         case "image":\r
25                                 return tinyMCE.getButtonHTML(cn, 'lang_image_desc', '{$themeurl}/images/image.gif', 'mceAdvImage');\r
26                 }\r
27 \r
28                 return "";\r
29         },\r
30 \r
31         execCommand : function(editor_id, element, command, user_interface, value) {\r
32                 switch (command) {\r
33                         case "mceAdvImage":\r
34                                 var template = new Array();\r
35 \r
36                                 template['file']   = '../../plugins/advimage/image.htm';\r
37                                 template['width']  = 480;\r
38                                 template['height'] = 380;\r
39 \r
40                                 // Language specific width and height addons\r
41                                 template['width']  += tinyMCE.getLang('lang_advimage_delta_width', 0);\r
42                                 template['height'] += tinyMCE.getLang('lang_advimage_delta_height', 0);\r
43 \r
44                                 var inst = tinyMCE.getInstanceById(editor_id);\r
45                                 var elm = inst.getFocusElement();\r
46 \r
47                                 if (elm != null && tinyMCE.getAttrib(elm, 'class').indexOf('mceItem') != -1)\r
48                                         return true;\r
49 \r
50                                 tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});\r
51 \r
52                                 return true;\r
53                 }\r
54 \r
55                 return false;\r
56         },\r
57 \r
58         cleanup : function(type, content) {\r
59                 switch (type) {\r
60                         case "insert_to_editor_dom":\r
61                                 var imgs = content.getElementsByTagName("img"), src, i;\r
62                                 for (i=0; i<imgs.length; i++) {\r
63                                         var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));\r
64                                         var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));\r
65 \r
66                                         if ((src = this._getImageSrc(onmouseover)) != "") {\r
67                                                 if (tinyMCE.getParam('convert_urls'))\r
68                                                         src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);\r
69 \r
70                                                 imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");\r
71                                         }\r
72 \r
73                                         if ((src = this._getImageSrc(onmouseout)) != "") {\r
74                                                 if (tinyMCE.getParam('convert_urls'))\r
75                                                         src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);\r
76 \r
77                                                 imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");\r
78                                         }\r
79                                 }\r
80                                 break;\r
81 \r
82                         case "get_from_editor_dom":\r
83                                 var imgs = content.getElementsByTagName("img");\r
84                                 for (var i=0; i<imgs.length; i++) {\r
85                                         var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));\r
86                                         var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));\r
87 \r
88                                         if ((src = this._getImageSrc(onmouseover)) != "") {\r
89                                                 if (tinyMCE.getParam('convert_urls'))\r
90                                                         src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");\r
91 \r
92                                                 imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");\r
93                                         }\r
94 \r
95                                         if ((src = this._getImageSrc(onmouseout)) != "") {\r
96                                                 if (tinyMCE.getParam('convert_urls'))\r
97                                                         src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");\r
98 \r
99                                                 imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");\r
100                                         }\r
101                                 }\r
102                                 break;\r
103                 }\r
104 \r
105                 return content;\r
106         },\r
107 \r
108         handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {\r
109                 if (node == null)\r
110                         return;\r
111 \r
112                 do {\r
113                         if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {\r
114                                 tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonSelected');\r
115                                 return true;\r
116                         }\r
117                 } while ((node = node.parentNode));\r
118 \r
119                 tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonNormal');\r
120 \r
121                 return true;\r
122         },\r
123 \r
124         /**\r
125          * Returns the image src from a scripted mouse over image str.\r
126          *\r
127          * @param {string} s String to get real src from.\r
128          * @return Image src from a scripted mouse over image str.\r
129          * @type string\r
130          */\r
131         _getImageSrc : function(s) {\r
132                 var sr, p = -1;\r
133 \r
134                 if (!s)\r
135                         return "";\r
136 \r
137                 if ((p = s.indexOf('this.src=')) != -1) {\r
138                         sr = s.substring(p + 10);\r
139                         sr = sr.substring(0, sr.indexOf('\''));\r
140 \r
141                         return sr;\r
142                 }\r
143 \r
144                 return "";\r
145         }\r
146 };\r
147 \r
148 tinyMCE.addPlugin("advimage", TinyMCE_AdvancedImagePlugin);\r