This commit was manufactured by cvs2svn to create tag 'freeside_1_9_2'.
[freeside.git] / httemplate / elements / fckeditor / editor / dialog / fck_flash / fck_flash.js
1 /*\r
2  * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
3  * Copyright (C) 2003-2007 Frederico Caldeira Knabben\r
4  *\r
5  * == BEGIN LICENSE ==\r
6  *\r
7  * Licensed under the terms of any of the following licenses at your\r
8  * choice:\r
9  *\r
10  *  - GNU General Public License Version 2 or later (the "GPL")\r
11  *    http://www.gnu.org/licenses/gpl.html\r
12  *\r
13  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
14  *    http://www.gnu.org/licenses/lgpl.html\r
15  *\r
16  *  - Mozilla Public License Version 1.1 or later (the "MPL")\r
17  *    http://www.mozilla.org/MPL/MPL-1.1.html\r
18  *\r
19  * == END LICENSE ==\r
20  *\r
21  * Scripts related to the Flash dialog window (see fck_flash.html).\r
22  */\r
23 \r
24 var oEditor             = window.parent.InnerDialogLoaded() ;\r
25 var FCK                 = oEditor.FCK ;\r
26 var FCKLang             = oEditor.FCKLang ;\r
27 var FCKConfig   = oEditor.FCKConfig ;\r
28 \r
29 //#### Dialog Tabs\r
30 \r
31 // Set the dialog tabs.\r
32 window.parent.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;\r
33 \r
34 if ( FCKConfig.FlashUpload )\r
35         window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;\r
36 \r
37 if ( !FCKConfig.FlashDlgHideAdvanced )\r
38         window.parent.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;\r
39 \r
40 // Function called when a dialog tag is selected.\r
41 function OnDialogTabChange( tabCode )\r
42 {\r
43         ShowE('divInfo'         , ( tabCode == 'Info' ) ) ;\r
44         ShowE('divUpload'       , ( tabCode == 'Upload' ) ) ;\r
45         ShowE('divAdvanced'     , ( tabCode == 'Advanced' ) ) ;\r
46 }\r
47 \r
48 // Get the selected flash embed (if available).\r
49 var oFakeImage = FCK.Selection.GetSelectedElement() ;\r
50 var oEmbed ;\r
51 \r
52 if ( oFakeImage )\r
53 {\r
54         if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )\r
55                 oEmbed = FCK.GetRealElement( oFakeImage ) ;\r
56         else\r
57                 oFakeImage = null ;\r
58 }\r
59 \r
60 window.onload = function()\r
61 {\r
62         // Translate the dialog box texts.\r
63         oEditor.FCKLanguageManager.TranslatePage(document) ;\r
64 \r
65         // Load the selected element information (if any).\r
66         LoadSelection() ;\r
67 \r
68         // Show/Hide the "Browse Server" button.\r
69         GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none' ;\r
70 \r
71         // Set the actual uploader URL.\r
72         if ( FCKConfig.FlashUpload )\r
73                 GetE('frmUpload').action = FCKConfig.FlashUploadURL ;\r
74 \r
75         window.parent.SetAutoSize( true ) ;\r
76 \r
77         // Activate the "OK" button.\r
78         window.parent.SetOkButton( true ) ;\r
79 }\r
80 \r
81 function LoadSelection()\r
82 {\r
83         if ( ! oEmbed ) return ;\r
84 \r
85         GetE('txtUrl').value    = GetAttribute( oEmbed, 'src', '' ) ;\r
86         GetE('txtWidth').value  = GetAttribute( oEmbed, 'width', '' ) ;\r
87         GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;\r
88 \r
89         // Get Advances Attributes\r
90         GetE('txtAttId').value          = oEmbed.id ;\r
91         GetE('chkAutoPlay').checked     = GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;\r
92         GetE('chkLoop').checked         = GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;\r
93         GetE('chkMenu').checked         = GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;\r
94         GetE('cmbScale').value          = GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;\r
95 \r
96         GetE('txtAttTitle').value               = oEmbed.title ;\r
97 \r
98         if ( oEditor.FCKBrowserInfo.IsIE )\r
99         {\r
100                 GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;\r
101                 GetE('txtAttStyle').value = oEmbed.style.cssText ;\r
102         }\r
103         else\r
104         {\r
105                 GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;\r
106                 GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ;\r
107         }\r
108 \r
109         UpdatePreview() ;\r
110 }\r
111 \r
112 //#### The OK button was hit.\r
113 function Ok()\r
114 {\r
115         if ( GetE('txtUrl').value.length == 0 )\r
116         {\r
117                 window.parent.SetSelectedTab( 'Info' ) ;\r
118                 GetE('txtUrl').focus() ;\r
119 \r
120                 alert( oEditor.FCKLang.DlgAlertUrl ) ;\r
121 \r
122                 return false ;\r
123         }\r
124 \r
125         if ( !oEmbed )\r
126         {\r
127                 oEmbed          = FCK.EditorDocument.createElement( 'EMBED' ) ;\r
128                 oFakeImage  = null ;\r
129         }\r
130         UpdateEmbed( oEmbed ) ;\r
131 \r
132         if ( !oFakeImage )\r
133         {\r
134                 oFakeImage      = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;\r
135                 oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;\r
136                 oFakeImage      = FCK.InsertElementAndGetIt( oFakeImage ) ;\r
137         }\r
138         else\r
139                 oEditor.FCKUndo.SaveUndoStep() ;\r
140 \r
141         oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oEmbed ) ;\r
142 \r
143         return true ;\r
144 }\r
145 \r
146 function UpdateEmbed( e )\r
147 {\r
148         SetAttribute( e, 'type'                 , 'application/x-shockwave-flash' ) ;\r
149         SetAttribute( e, 'pluginspage'  , 'http://www.macromedia.com/go/getflashplayer' ) ;\r
150 \r
151         SetAttribute( e, 'src', GetE('txtUrl').value ) ;\r
152         SetAttribute( e, "width" , GetE('txtWidth').value ) ;\r
153         SetAttribute( e, "height", GetE('txtHeight').value ) ;\r
154 \r
155         // Advances Attributes\r
156 \r
157         SetAttribute( e, 'id'   , GetE('txtAttId').value ) ;\r
158         SetAttribute( e, 'scale', GetE('cmbScale').value ) ;\r
159 \r
160         SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;\r
161         SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;\r
162         SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;\r
163 \r
164         SetAttribute( e, 'title'        , GetE('txtAttTitle').value ) ;\r
165 \r
166         if ( oEditor.FCKBrowserInfo.IsIE )\r
167         {\r
168                 SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;\r
169                 e.style.cssText = GetE('txtAttStyle').value ;\r
170         }\r
171         else\r
172         {\r
173                 SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;\r
174                 SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;\r
175         }\r
176 }\r
177 \r
178 var ePreview ;\r
179 \r
180 function SetPreviewElement( previewEl )\r
181 {\r
182         ePreview = previewEl ;\r
183 \r
184         if ( GetE('txtUrl').value.length > 0 )\r
185                 UpdatePreview() ;\r
186 }\r
187 \r
188 function UpdatePreview()\r
189 {\r
190         if ( !ePreview )\r
191                 return ;\r
192 \r
193         while ( ePreview.firstChild )\r
194                 ePreview.removeChild( ePreview.firstChild ) ;\r
195 \r
196         if ( GetE('txtUrl').value.length == 0 )\r
197                 ePreview.innerHTML = ' ' ;\r
198         else\r
199         {\r
200                 var oDoc        = ePreview.ownerDocument || ePreview.document ;\r
201                 var e           = oDoc.createElement( 'EMBED' ) ;\r
202 \r
203                 SetAttribute( e, 'src', GetE('txtUrl').value ) ;\r
204                 SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;\r
205                 SetAttribute( e, 'width', '100%' ) ;\r
206                 SetAttribute( e, 'height', '100%' ) ;\r
207 \r
208                 ePreview.appendChild( e ) ;\r
209         }\r
210 }\r
211 \r
212 // <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">\r
213 \r
214 function BrowseServer()\r
215 {\r
216         OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;\r
217 }\r
218 \r
219 function SetUrl( url, width, height )\r
220 {\r
221         GetE('txtUrl').value = url ;\r
222 \r
223         if ( width )\r
224                 GetE('txtWidth').value = width ;\r
225 \r
226         if ( height )\r
227                 GetE('txtHeight').value = height ;\r
228 \r
229         UpdatePreview() ;\r
230 \r
231         window.parent.SetSelectedTab( 'Info' ) ;\r
232 }\r
233 \r
234 function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )\r
235 {\r
236         switch ( errorNumber )\r
237         {\r
238                 case 0 :        // No errors\r
239                         alert( 'Your file has been successfully uploaded' ) ;\r
240                         break ;\r
241                 case 1 :        // Custom error\r
242                         alert( customMsg ) ;\r
243                         return ;\r
244                 case 101 :      // Custom warning\r
245                         alert( customMsg ) ;\r
246                         break ;\r
247                 case 201 :\r
248                         alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;\r
249                         break ;\r
250                 case 202 :\r
251                         alert( 'Invalid file type' ) ;\r
252                         return ;\r
253                 case 203 :\r
254                         alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;\r
255                         return ;\r
256                 default :\r
257                         alert( 'Error on file upload. Error number: ' + errorNumber ) ;\r
258                         return ;\r
259         }\r
260 \r
261         SetUrl( fileUrl ) ;\r
262         GetE('frmUpload').reset() ;\r
263 }\r
264 \r
265 var oUploadAllowedExtRegex      = new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;\r
266 var oUploadDeniedExtRegex       = new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;\r
267 \r
268 function CheckUpload()\r
269 {\r
270         var sFile = GetE('txtUploadFile').value ;\r
271 \r
272         if ( sFile.length == 0 )\r
273         {\r
274                 alert( 'Please select a file to upload' ) ;\r
275                 return false ;\r
276         }\r
277 \r
278         if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||\r
279                 ( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )\r
280         {\r
281                 OnUploadCompleted( 202 ) ;\r
282                 return false ;\r
283         }\r
284 \r
285         return true ;\r
286 }