X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fplugins%2Ffilebrowser%2Fplugin.js;h=799d68f2be5ba18313c2340ac5df1f5ab2aae2e7;hb=1056598c95187351dc58f4991d331e2258d038b5;hp=3160751085d40e7c4429d6c1352823b045fe9c6d;hpb=941b0a9ba4e673e292510d80a5a86806994b8ea6;p=ckeditor.git diff --git a/_source/plugins/filebrowser/plugin.js b/_source/plugins/filebrowser/plugin.js index 3160751..799d68f 100644 --- a/_source/plugins/filebrowser/plugin.js +++ b/_source/plugins/filebrowser/plugin.js @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ @@ -112,7 +112,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license */ ( function() { - /** + /* * Adds (additional) arguments to given url. * * @param {String} @@ -135,7 +135,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license return url + ( ( url.indexOf( "?" ) != -1 ) ? "&" : "?" ) + queryString.join( "&" ); } - /** + /* * Make a string's first character uppercase. * * @param {String} @@ -148,7 +148,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license return f + str.substr( 1 ); } - /** + /* * The onlick function assigned to the 'Browse Server' button. Opens the * file browser and updates target field when file is selected. * @@ -174,10 +174,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license params.langCode = editor.langCode; var url = addQueryString( this.filebrowser.url, params ); - editor.popup( url, width, height ); + editor.popup( url, width, height, editor.config.fileBrowserWindowFeatures ); } - /** + /* * The onlick function assigned to the 'Upload' button. Makes the final * decision whether form is really submitted and updates target field when * file is uploaded. @@ -202,7 +202,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license return true; } - /** + /* * Setups the file element. * * @param {CKEDITOR.ui.dialog.file} @@ -223,16 +223,16 @@ For licensing, see LICENSE.html or http://ckeditor.com/license fileInput.filebrowser = filebrowser; } - /** + /* * Traverse through the content definition and attach filebrowser to * elements with 'filebrowser' attribute. * * @param String * dialogName Dialog name. - * @param {CKEDITOR.dialog.dialogDefinitionObject} + * @param {CKEDITOR.dialog.definitionObject} * definition Dialog definition. * @param {Array} - * elements Array of {@link CKEDITOR.dialog.contentDefinition} + * elements Array of {@link CKEDITOR.dialog.definition.content} * objects. */ function attachFileBrowser( editor, dialogName, definition, elements ) @@ -261,8 +261,13 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( element.filebrowser.action == 'Browse' ) { - var url = element.filebrowser.url || editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'BrowseUrl' ] - || editor.config.filebrowserBrowseUrl; + var url = element.filebrowser.url; + if ( url === undefined ) + { + url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'BrowseUrl' ]; + if ( url === undefined ) + url = editor.config.filebrowserBrowseUrl; + } if ( url ) { @@ -273,12 +278,28 @@ For licensing, see LICENSE.html or http://ckeditor.com/license } else if ( element.filebrowser.action == 'QuickUpload' && element[ 'for' ] ) { - url = element.filebrowser.url || editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'UploadUrl' ] - || editor.config.filebrowserUploadUrl; + url = element.filebrowser.url; + if ( url === undefined ) + { + url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'UploadUrl' ]; + if ( url === undefined ) + url = editor.config.filebrowserUploadUrl; + } if ( url ) { - element.onClick = uploadFile; + var onClick = element.onClick; + element.onClick = function( evt ) + { + // "element" here means the definition object, so we need to find the correct + // button to scope the event call + var sender = evt.sender; + if ( onClick && onClick.call( sender, evt ) === false ) + return false; + + return uploadFile.call( sender, evt ); + }; + element.filebrowser.url = url; element.hidden = false; setupFileElement( editor, definition.getContents( element[ 'for' ][ 0 ] ).get( element[ 'for' ][ 1 ] ), element.filebrowser ); @@ -287,7 +308,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license } } - /** + /* * Updates the target element with the url of uploaded/selected file. * * @param {String} @@ -312,10 +333,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license } } - /** + /* * Returns true if filebrowser is configured in one of the elements. * - * @param {CKEDITOR.dialog.dialogDefinitionObject} + * @param {CKEDITOR.dialog.definitionObject} * definition Dialog definition. * @param String * tabId The tab id where element(s) can be found. @@ -329,13 +350,14 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var ids = elementId.split( ";" ); for ( var i = 0 ; i < ids.length ; i++ ) { - if ( isConfigured( definition, tabId, ids[i]) ) + if ( isConfigured( definition, tabId, ids[i] ) ) return true; } return false; } - return ( definition.getContents( tabId ).get( elementId ).filebrowser && definition.getContents( tabId ).get( elementId ).filebrowser.url ); + var elementFileBrowser = definition.getContents( tabId ).get( elementId ).filebrowser; + return ( elementFileBrowser && elementFileBrowser.url ); } function setUrl( fileUrl, data ) @@ -347,6 +369,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( targetInput ) dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).reset(); + if ( typeof data == 'function' && data.call( this._.filebrowserSe ) === false ) + return; + if ( onSelect && onSelect.call( this._.filebrowserSe, fileUrl, data ) === false ) return; @@ -363,21 +388,137 @@ For licensing, see LICENSE.html or http://ckeditor.com/license init : function( editor, pluginPath ) { editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor ); + editor.on( 'destroy', function () { CKEDITOR.tools.removeFunction( this._.filebrowserFn ); } ); + } + } ); - CKEDITOR.on( 'dialogDefinition', function( evt ) + CKEDITOR.on( 'dialogDefinition', function( evt ) + { + var definition = evt.data.definition, + element; + // Associate filebrowser to elements with 'filebrowser' attribute. + for ( var i in definition.contents ) + { + if ( ( element = definition.contents[ i ] ) ) { - // Associate filebrowser to elements with 'filebrowser' attribute. - for ( var i in evt.data.definition.contents ) + attachFileBrowser( evt.editor, evt.data.name, definition, element.elements ); + if ( element.hidden && element.filebrowser ) { - attachFileBrowser( evt.editor, evt.data.name, evt.data.definition, evt.data.definition.contents[ i ].elements ); - if ( evt.data.definition.contents[ i ].hidden && evt.data.definition.contents[ i ].filebrowser ) - { - evt.data.definition.contents[ i ].hidden = - !isConfigured( evt.data.definition, evt.data.definition.contents[ i ][ 'id' ], evt.data.definition.contents[ i ].filebrowser ); - } + element.hidden = !isConfigured( definition, element[ 'id' ], element.filebrowser ); } - } ); + } } } ); } )(); + +/** + * The location of an external file browser, that should be launched when "Browse Server" button is pressed. + * If configured, the "Browse Server" button will appear in Link, Image and Flash dialogs. + * @see The File Browser/Uploader documentation. + * @name CKEDITOR.config.filebrowserBrowseUrl + * @since 3.0 + * @type String + * @default '' (empty string = disabled) + * @example + * config.filebrowserBrowseUrl = '/browser/browse.php'; + */ + +/** + * The location of a script that handles file uploads. + * If set, the "Upload" tab will appear in "Link", "Image" and "Flash" dialogs. + * @name CKEDITOR.config.filebrowserUploadUrl + * @see The File Browser/Uploader documentation. + * @since 3.0 + * @type String + * @default '' (empty string = disabled) + * @example + * config.filebrowserUploadUrl = '/uploader/upload.php'; + */ + +/** + * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Image dialog. + * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}. + * @name CKEDITOR.config.filebrowserImageBrowseUrl + * @since 3.0 + * @type String + * @default '' (empty string = disabled) + * @example + * config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images'; + */ + +/** + * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Flash dialog. + * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}. + * @name CKEDITOR.config.filebrowserFlashBrowseUrl + * @since 3.0 + * @type String + * @default '' (empty string = disabled) + * @example + * config.filebrowserFlashBrowseUrl = '/browser/browse.php?type=Flash'; + */ + +/** + * The location of a script that handles file uploads in the Image dialog. + * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}. + * @name CKEDITOR.config.filebrowserImageUploadUrl + * @since 3.0 + * @type String + * @default '' (empty string = disabled) + * @example + * config.filebrowserImageUploadUrl = '/uploader/upload.php?type=Images'; + */ + +/** + * The location of a script that handles file uploads in the Flash dialog. + * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}. + * @name CKEDITOR.config.filebrowserFlashUploadUrl + * @since 3.0 + * @type String + * @default '' (empty string = disabled) + * @example + * config.filebrowserFlashUploadUrl = '/uploader/upload.php?type=Flash'; + */ + +/** + * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Link tab of Image dialog. + * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}. + * @name CKEDITOR.config.filebrowserImageBrowseLinkUrl + * @since 3.2 + * @type String + * @default '' (empty string = disabled) + * @example + * config.filebrowserImageBrowseLinkUrl = '/browser/browse.php'; + */ + +/** + * The "features" to use in the file browser popup window. + * @name CKEDITOR.config.filebrowserWindowFeatures + * @since 3.4.1 + * @type String + * @default 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes' + * @example + * config.filebrowserWindowFeatures = 'resizable=yes,scrollbars=no'; + */ + +/** + * The width of the file browser popup window. It can be a number or a percent string. + * @name CKEDITOR.config.filebrowserWindowWidth + * @type Number|String + * @default '80%' + * @example + * config.filebrowserWindowWidth = 750; + * @example + * config.filebrowserWindowWidth = '50%'; + */ + +/** + * The height of the file browser popup window. It can be a number or a percent string. + * @name CKEDITOR.config.filebrowserWindowHeight + * @type Number|String + * @default '70%' + * @example + * config.filebrowserWindowHeight = 580; + * @example + * config.filebrowserWindowHeight = '50%'; + */