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