Ticket #2125: fck_file.js

File fck_file.js, 5.1 KB (added by Alfonso Martínez de Lizarrondo, 16 years ago)

fixed version of the plugin

Line 
1/*
2 * File Authors:
3 *              Alfonso Martínez de Lizarrondo
4 *
5 * Based on fck_link.js
6 *
7 */
8
9function Import(aSrc) {
10   document.write('<scr'+'ipt type="text/javascript" src="' + aSrc + '"></sc' + 'ript>');
11}
12
13var oEditor             = window.parent.InnerDialogLoaded() ;
14var FCK                 = oEditor.FCK ;
15var FCKLang             = oEditor.FCKLang ;
16var FCKConfig   = oEditor.FCKConfig ;
17
18Import(FCKConfig.FullBasePath + 'dialog/common/fck_dialog_common.js');
19
20
21//#### Initialization Code
22
23// oLink: The actual selected link in the editor.
24var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
25if ( oLink )
26        FCK.Selection.SelectNode( oLink ) ;
27
28window.onload = function()
29{
30        // Translate the dialog box texts.
31        oEditor.FCKLanguageManager.TranslatePage(document) ;
32
33        // Load the selected link information (if any).
34        LoadSelection() ;
35
36
37        GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
38
39        // Activate the "OK" button.
40        window.parent.SetOkButton( true ) ;
41}
42
43
44function LoadSelection()
45{
46        if ( !oLink ) {
47                //set the focus on the file selector
48                GetE("txtUploadFile").focus();
49                return ;
50        }
51       
52        // Get the actual Link href.
53        var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
54        if ( !sHRef || sHRef.length == 0 )
55                sHRef = oLink.getAttribute( 'href' , 2 ) + '' ;
56       
57
58        GetE('txtUrl').value = sHRef ;
59
60        GetE('txtAttTitle').value               = oLink.title ;
61}
62
63
64//#### The OK button was hit.
65function Ok()
66{
67        var sUri, sInnerHtml ;
68
69        //check if the user has selected a file to upload (we're overiding the default behaviour of the link dialog)
70        var sFile = GetE('txtUploadFile').value ;
71        if (sFile.length > 0) 
72        {
73                //upload the file
74                if ( CheckUpload() )
75                        GetE('frmUpload').submit();
76
77                return false ; // We'll finish once the file is at the server
78        }
79
80        sUri = GetE('txtUrl').value ;
81        if ( sUri.length == 0 )
82        {
83                // If the url is empty check to see if they have already selected a file
84                CheckUpload();
85                return false ; 
86        }
87
88        // Workaround to make IE happy
89        window.focus();
90        oEditor.FCKUndo.SaveUndoStep() ;
91
92        // If no link is selected, create a new one (it may result in more than one link creation - #220).
93        var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ;
94       
95        // If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
96        var aHasSelection = ( aLinks.length > 0 ) ;
97        if ( !aHasSelection )
98        {
99                sInnerHtml = sUri;
100
101                // Try to built better text for empty link
102                // Adjusted to get only the file name and exclude the path:
103                var oLinkPathRegEx = new RegExp("(^.*\\/|^)([^\\/]*?)(\\?.*$|$)");
104                var asLinkPath = oLinkPathRegEx.exec( sUri );
105                if (asLinkPath != null)
106                        sInnerHtml = asLinkPath[2];  // use matched path
107
108                // Create a new (empty) anchor.
109                aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
110        }
111       
112//      sUri = encodeURI( sUri ).replace( '#', '%23' );
113        for ( var i = 0 ; i < aLinks.length ; i++ )
114        {
115                oLink = aLinks[i] ;
116       
117                if ( aHasSelection )
118                        sInnerHtml = oLink.innerHTML ;          // Save the innerHTML (IE changes it if it is like an URL).
119
120                oLink.href = sUri ;
121                SetAttribute( oLink, '_fcksavedurl', sUri ) ;
122
123                // Target
124                SetAttribute( oLink, 'target', '_blank' ) ;
125
126                // Advances Attributes
127                SetAttribute( oLink, 'title', GetE('txtAttTitle').value ) ;
128
129                oLink.innerHTML = sInnerHtml ;          // Set (or restore) the innerHTML
130        }
131
132        // Select the (first) link.
133        oEditor.FCKSelection.SelectNode( aLinks[0] );
134       
135        return true ;
136}
137
138
139function SetUrl( url )
140{
141        document.getElementById('txtUrl').value = url ;
142}
143
144function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
145{
146
147        switch ( errorNumber )
148        {
149                case 0 :        // No errors
150//                      alert( 'Your file has been successfully uploaded' ) ;
151                        break ;
152                case 1 :        // Custom error
153                        alert( customMsg ) ;
154                        return ;
155                case 101 :      // Custom warning
156                        alert( customMsg ) ;
157                        break ;
158                case 201 :
159//                      alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
160                        break ;
161                case 202 :
162                        alert( 'Invalid file type' ) ;
163                        return ;
164                case 203 :
165                        alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
166                        return ;
167                default :
168                        alert( 'Error on file upload. Error number: ' + errorNumber ) ;
169                        return ;
170        }
171
172        SetUrl( fileUrl ) ;
173        GetE('frmUpload').reset() ;
174
175        // Press the Ok button if we had only a warning or it was succesful
176        if (errorNumber == 0 || errorNumber == 101  || errorNumber == 201 )
177                window.parent.Ok();
178}
179
180var oUploadAllowedExtRegex      = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
181var oUploadDeniedExtRegex       = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
182
183function CheckUpload()
184{
185        var sFile = GetE('txtUploadFile').value ;
186       
187        if ( sFile.length == 0 )
188        {
189                alert( 'Please select a file to upload' ) ;
190                return false ;
191        }
192       
193        if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
194                ( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
195        {
196                OnUploadCompleted( 202 ) ;
197                return false ;
198        }
199       
200        return true ;
201}
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy