Ticket #3673: 3673_6.patch
File 3673_6.patch, 31.0 KB (added by , 14 years ago) |
---|
-
_samples/replacebycode.html
24 24 25 25 // Replace the <textarea id="editor"> with an CKEditor 26 26 // instance, using default configurations. 27 CKEDITOR.replace( 'editor1' ); 27 CKEDITOR.replace( 'editor1', 28 { 29 filebrowserBrowseUrl : '/external_ckfinder/ckfinder.html', 30 filebrowserImageBrowseUrl : '/external_ckfinder/ckfinder.html?Type=Images', 31 filebrowserFlashBrowseUrl : '/external_ckfinder/ckfinder.html?Type=Flash', 32 filebrowserUploadUrl : '/external_ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files', 33 filebrowserImageUploadUrl : '/external_ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images', 34 filebrowserFlashUploadUrl : '/external_ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash' 35 } 36 ); 28 37 29 38 //]]> 30 39 </script> … … 42 51 43 52 // Replace the <textarea id="editor"> with an CKEditor 44 53 // instance, using default configurations. 45 CKEDITOR.replace( 'editor2' ); 54 CKEDITOR.replace( 'editor2', 55 { 56 /* 57 filebrowserBrowseUrl : '/external_ckfinder/ckfinder.html', 58 filebrowserUploadUrl : '/external_ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files', 59 */ 60 } 61 ); 46 62 47 63 //]]> 48 64 </script> -
_source/core/config.js
149 149 * @example 150 150 * config.plugins = 'basicstyles,button,htmldataprocessor,toolbar,wysiwygarea'; 151 151 */ 152 153 plugins : 'about,basicstyles,blockquote,button,clipboard,colorbutton,contextmenu,elementspath,enterkey,entities,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,resize,save,scayt,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc', 154 152 plugins : 'about,basicstyles,blockquote,button,clipboard,colorbutton,contextmenu,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,save,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc', 155 153 /** 156 154 * List of additional plugins to be loaded. This is a tool setting which 157 155 * makes it easier to add new plugins, whithout having to touch and -
_source/plugins/dialog/plugin.js
756 756 '<a class="cke_dialog_tab"', 757 757 ( this._.pageCount > 0 ? ' cke_last' : 'cke_first' ), 758 758 titleHtml, 759 ( !!contents.hidden ? ' style="display:none"' : '' ), 759 760 ' id="', contents.id + '_', CKEDITOR.tools.getNextNumber(), '"' + 760 761 ' href="javascript:void(0)"', 761 762 ' hidefocus="true">', … … 859 860 }, 860 861 861 862 /** 863 * Returns boolean variable indicating whether page was initially hidden. 864 * @param {String} id The page's Id. 865 * @returns {Boolean} true if hidden, false if not. 866 * @example 867 * dialog.isInitiallyHidden( 'upload' ); 868 */ 869 isInitiallyHidden : function( id ) 870 { 871 return !!this.definition.getContents( id ).hidden; 872 }, 873 874 /** 862 875 * Gets the root DOM element of the dialog. 863 876 * @returns {CKEDITOR.dom.element} The <span> element containing this dialog. 864 877 * @example … … 871 884 }, 872 885 873 886 /** 887 * Gets the name of the dialog. 888 * @returns {String} The name of this dialog. 889 * @example 890 * var dialogName = dialogObj.getName(); 891 */ 892 getName : function() 893 { 894 return this._.name; 895 }, 896 897 /** 874 898 * Gets a dialog UI element object from a dialog page. 875 899 * @param {String} pageId id of dialog page. 876 900 * @param {String} elementId id of UI element. … … 1786 1810 * generate the final widget.</li> 1787 1811 * <li><strong>title</strong> (Optional) The popup tooltip for the UI 1788 1812 * element.</li> 1813 * <li><strong>hidden</strong> (Optional) A flag that tells if the element 1814 * should be initially visible.</li> 1789 1815 * <li><strong>className</strong> (Optional) Additional CSS class names 1790 1816 * to add to the UI element. Separated by space.</li> 1791 1817 * <li><strong>style</strong> (Optional) Additional CSS inline styles … … 1859 1885 var styleStr = ( elementDefinition.style || '' ).split( ';' ); 1860 1886 for ( i in styles ) 1861 1887 styleStr.push( i + ':' + styles[i] ); 1888 if ( elementDefinition.hidden ) 1889 styleStr.push( 'display:none' ); 1862 1890 for ( i = styleStr.length - 1 ; i >= 0 ; i-- ) 1863 1891 { 1864 1892 if ( styleStr[i] === '' ) 1865 1893 styleStr.splice( i, 1 ); 1866 1894 } 1867 1895 if ( styleStr.length > 0 ) 1868 attributes.style = ( attributes.style ||'' ) + styleStr.join( '; ' );1896 attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' ); 1869 1897 1870 1898 // Write the attributes. 1871 1899 for ( i in attributes ) … … 2183 2211 }, 2184 2212 2185 2213 /** 2214 * Gets the name of the parent tab of this element. 2215 * @returns {String} The name of selected tab. 2216 * @example 2217 * focus : function() 2218 * { 2219 * this.getParentTab(); 2220 * // do something else. 2221 * } 2222 */ 2223 getParentTab : function() 2224 { 2225 var element = this.getInputElement(), 2226 cursor = element, 2227 tabId; 2228 while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 ) 2229 { /*jsl:pass*/ } 2230 2231 tabId = cursor.getAttribute( 'name' ); 2232 2233 return tabId; 2234 }, 2235 2236 /** 2186 2237 * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page. 2187 2238 * @returns {CKEDITOR.dialog.uiElement} The current UI element. 2188 2239 * @example -
_source/plugins/dialogui/plugin.js
654 654 this.validate = elementDefinition.validate; 655 655 656 656 var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); 657 var onClick = myDefinition.onClick; 657 658 myDefinition.className = ( myDefinition.className ? myDefinition.className + ' ' : '' ) + 'cke_dialog_ui_button'; 658 659 myDefinition.onClick = function( evt ) 659 660 { 660 661 var target = elementDefinition[ 'for' ]; // [ pageId, elementId ] 661 dialog.getContentElement( target[0], target[1] ).submit(); 662 this.disable(); 662 if ( !onClick || onClick.call( this, evt ) !== false ) 663 { 664 dialog.getContentElement( target[0], target[1] ).submit(); 665 this.disable(); 666 } 663 667 }; 664 668 665 669 dialog.on( 'load', function() … … 1197 1201 }, 1198 1202 1199 1203 /** 1204 * Get the action assigned to the form. 1205 * @returns {String} The value of the action. 1206 * @example 1207 */ 1208 getAction : function( action ) 1209 { 1210 return this.getInputElement().getParent().$.action; 1211 }, 1212 1213 /** 1200 1214 * Redraws the file input and resets the file path in the file input. 1201 1215 * The redraw logic is necessary because non-IE browsers tend to clear 1202 1216 * the <iframe> containing the file input after closing the dialog. 1203 1217 * @example 1204 1218 */ 1205 reset : function( )1219 reset : function( action ) 1206 1220 { 1207 1221 var frameElement = CKEDITOR.document.getById( this._.frameId ), 1208 1222 frameDocument = frameElement.getFrameDocument(), … … 1219 1233 1220 1234 frameDocument.$.write( [ '<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">', 1221 1235 '<form enctype="multipart/form-data" method="POST" action="', 1222 CKEDITOR.tools.htmlEncode( elementDefinition.action ),1236 CKEDITOR.tools.htmlEncode( action || elementDefinition.action ), 1223 1237 '">', 1224 1238 '<input type="file" name="', 1225 1239 CKEDITOR.tools.htmlEncode( elementDefinition.id || 'cke_upload' ), -
_source/plugins/filebrowser/plugin.js
1 /* 2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 6 /** 7 * @fileOverview The "filebrowser" plugin, it adds support for file uploads and 8 * browsing. 9 * 10 * When file is selected inside of the file browser or uploaded, its url is 11 * inserted automatically to a field, which is described in the 'filebrowser' 12 * attribute. To specify field that should be updated, pass the tab id and 13 * element id, separated with a colon. 14 * 15 * Example 1: (Browse) 16 * 17 * <pre> 18 * { 19 * type : 'button', 20 * id : 'browse', 21 * filebrowser : 'tabId:elementId', 22 * label : editor.lang.common.browseServer 23 * } 24 * </pre> 25 * 26 * If you set the 'filebrowser' attribute on any element other than 27 * 'fileButton', the 'Browse' action will be triggered. 28 * 29 * Example 2: (Quick Upload) 30 * 31 * <pre> 32 * { 33 * type : 'fileButton', 34 * id : 'uploadButton', 35 * filebrowser : 'tabId:elementId', 36 * label : editor.lang.common.uploadSubmit, 37 * 'for' : [ 'upload', 'upload' ] 38 * } 39 * </pre> 40 * 41 * If you set the 'filebrowser' attribute on a fileButton element, the 42 * 'QuickUpload' action will be executed. 43 * 44 * Filebrowser plugin also supports more advanced configuration (through 45 * javascript object). 46 * 47 * The following settings are supported: 48 * 49 * <pre> 50 * [action] - Browse or QuickUpload 51 * [target] - field to update, tabId:elementId 52 * [params] - additional arguments to be passed to the server connector (optional) 53 * [onSelect] - function to execute when file is selected/uploaded (optional) 54 * [url] - the URL to be called (optional) 55 * </pre> 56 * 57 * Example 3: (Quick Upload) 58 * 59 * <pre> 60 * { 61 * type : 'fileButton', 62 * label : editor.lang.common.uploadSubmit, 63 * id : 'buttonId', 64 * filebrowser : 65 * { 66 * action : 'QuickUpload', //required 67 * target : 'tab1:elementId', //required 68 * params : //optional 69 * { 70 * type : 'Files', 71 * currentFolder : '/folder/' 72 * }, 73 * onSelect : function( fileUrl, errorMessage ) //optional 74 * { 75 * // Do not call the built-in selectFuntion 76 * // return false; 77 * } 78 * }, 79 * 'for' : [ 'tab1', 'myFile' ] 80 * } 81 * </pre> 82 * 83 * Suppose we have a file element with id 'myFile', text field with id 84 * 'elementId' and a fileButton. If filebowser.url is not specified explicitly, 85 * form action will be set to 'filebrowser[DialogName]UploadUrl' or, if not 86 * specified, to 'filebrowserUploadUrl'. Additional parameters from 'params' 87 * object will be added to the query string. It is possible to create your own 88 * uploadHandler and cancel the built-in updateTargetElement command. 89 * 90 * Example 4: (Browse) 91 * 92 * <pre> 93 * { 94 * type : 'button', 95 * id : 'buttonId', 96 * label : editor.lang.common.browseServer, 97 * filebrowser : 98 * { 99 * action : 'Browse', 100 * url : '/ckfinder/ckfinder.html&type=Images', 101 * target : 'tab1:elementId' 102 * } 103 * } 104 * </pre> 105 * 106 * In this example, after pressing a button, file browser will be opened in a 107 * popup. If we don't specify filebrowser.url attribute, 108 * 'filebrowser[DialogName]BrowseUrl' or 'filebrowserBrowseUrl' will be used. 109 * After selecting a file in a file browser, an element with id 'elementId' will 110 * be updated. Just like in the third example, a custom 'onSelect' function may be 111 * defined. 112 */ 113 ( function() 114 { 115 /** 116 * Adds (additional) arguments to given url. 117 * 118 * @param {String} 119 * url The url. 120 * @param {Object} 121 * params Additional parameters. 122 */ 123 function addQueryString( url, params ) 124 { 125 var queryString = []; 126 127 if ( !params ) 128 return url; 129 else 130 { 131 for ( var i in params ) 132 queryString.push( i + "=" + encodeURIComponent( params[ i ] ) ); 133 } 134 135 return url + ( ( url.indexOf( "?" ) != -1 ) ? "&" : "?" ) + queryString.join( "&" ); 136 } 137 138 /** 139 * Make a string's first character uppercase. 140 * 141 * @param {String} 142 * str String. 143 */ 144 function ucFirst( str ) 145 { 146 str += ''; 147 var f = str.charAt( 0 ).toUpperCase(); 148 return f + str.substr( 1 ); 149 } 150 151 /** 152 * The onlick function assigned to the 'Browse Server' button. Opens the 153 * file browser and updates target field when file is selected. 154 * 155 * @param {CKEDITOR.event} 156 * evt The event object. 157 */ 158 function browseServer( evt ) 159 { 160 var dialog = this.getDialog(); 161 var editor = dialog.getParentEditor(); 162 163 editor._.filebrowserSe = this; 164 165 var width = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowWidth' ] 166 || editor.config.filebrowserWindowWidth || '80%'; 167 var height = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowHeight' ] 168 || editor.config.filebrowserWindowHeight || '70%'; 169 var url = this.filebrowser.url || editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'BrowseUrl' ] 170 || editor.config.filebrowserBrowseUrl; 171 172 var params = this.filebrowser.params || {}; 173 params.CKEditor = editor.name; 174 params.CKEditorFuncNum = editor._.filebrowserFn; 175 if ( !params.langCode ) 176 params.langCode = editor.langCode; 177 178 url = addQueryString( url, params ); 179 editor.popup( url, width, height ); 180 } 181 182 /** 183 * The onlick function assigned to the 'Upload' button. Makes the final 184 * decision whether form is really submitted and updates target field when 185 * file is uploaded. 186 * 187 * @param {CKEDITOR.event} 188 * evt The event object. 189 */ 190 function uploadFile( evt ) 191 { 192 var dialog = this.getDialog(); 193 var editor = dialog.getParentEditor(); 194 alert(this.id); 195 alert(editor.name); 196 editor._.filebrowserSe = this; 197 198 // If user didn't select the file, stop the upload. 199 if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getInputElement().$.value ) 200 return false; 201 202 if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getAction() ) 203 return false; 204 205 return true; 206 } 207 208 /** 209 * Setups the file element. 210 * 211 * @param {CKEDITOR.ui.dialog.file} 212 * fileInput The file element used during file upload. 213 * @param {Object} 214 * filebrowser Object containing filebrowser settings assigned to 215 * the fileButton associated with this file element. 216 */ 217 function setupFileElement( editor, fileInput, filebrowser ) 218 { 219 var params = filebrowser.params || {}; 220 params.CKEditor = editor.name; 221 params.CKEditorFuncNum = editor._.filebrowserFn; 222 if ( !params.langCode ) 223 params.langCode = editor.langCode; 224 225 fileInput.action = addQueryString( filebrowser.url, params ); 226 fileInput.filebrowser = filebrowser; 227 } 228 229 /** 230 * Traverse through the content definition and attach filebrowser to 231 * elements with 'filebrowser' attribute. 232 * 233 * @param String 234 * dialogName Dialog name. 235 * @param {CKEDITOR.dialog.dialogDefinitionObject} 236 * definition Dialog definition. 237 * @param {Array} 238 * elements Array of {@link CKEDITOR.dialog.contentDefinition} 239 * objects. 240 */ 241 function attachFileBrowser( editor, dialogName, definition, elements ) 242 { 243 var element, fileInput; 244 245 for ( var i in elements ) 246 { 247 element = elements[ i ]; 248 249 if ( element.type == 'hbox' || element.type == 'vbox' ) 250 attachFileBrowser( editor, dialogName, definition, element.children ); 251 252 if ( !element.filebrowser ) 253 continue; 254 255 if ( typeof element.filebrowser == 'string' ) 256 { 257 var fb = 258 { 259 action : ( element.type == 'fileButton' ) ? 'QuickUpload' : 'Browse', 260 target : element.filebrowser 261 }; 262 element.filebrowser = fb; 263 } 264 265 if ( element.filebrowser.action == 'Browse' ) 266 { 267 var url = element.filebrowser.url || editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'BrowseUrl' ] 268 || editor.config.filebrowserBrowseUrl; 269 270 alert(1); 271 //editor. 272 /* 273 if ( url ) 274 { 275 element.onClick = browseServer; 276 element.hidden = false; 277 } 278 */ 279 } 280 else if ( element.filebrowser.action == 'QuickUpload' && element[ 'for' ] ) 281 { 282 var url = element.filebrowser.url || editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'UploadUrl' ] 283 || editor.config.filebrowserUploadUrl; 284 285 if ( url ) 286 { 287 element.onClick = uploadFile; 288 element.filebrowser.url = url; 289 element.hidden = false; 290 setupFileElement( editor, definition.getContents( element[ 'for' ][ 0 ] ).get( element[ 'for' ][ 1 ] ), element.filebrowser ); 291 } 292 } 293 } 294 } 295 296 /** 297 * Updates the target element with the url of uploaded/selected file. 298 * 299 * @param {String} 300 * url The url of a file. 301 */ 302 function updateTargetElement( url, sourceElement ) 303 { 304 var dialog = sourceElement.getDialog(); 305 var targetElement = sourceElement.filebrowser.target || null; 306 url = url.replace( /#/g, '%23' ); 307 308 // If there is a reference to targetElement, update it. 309 if ( targetElement ) 310 { 311 if ( targetElement === true ) 312 targetElement = 'url'; 313 314 if ( targetElement.indexOf( ':' ) == -1 ) 315 { 316 dialog.foreach( function( element ) 317 { 318 if ( element.id == targetElement ) 319 { 320 element.setValue( url ); 321 dialog.selectPage( element.getParentTab() ); 322 } 323 } ); 324 } 325 else 326 { 327 var target = targetElement.split( ':' ); 328 var element = dialog.getContentElement( target[ 0 ], target[ 1 ] ); 329 if ( element ) 330 { 331 element.setValue( url ); 332 dialog.selectPage( target[ 0 ] ); 333 } 334 } 335 } 336 } 337 338 /** 339 * Returns true if filebrowser is configured in one of the elements. 340 * 341 * @param {CKEDITOR.dialog.dialogDefinitionObject} 342 * definition Dialog definition. 343 * @param String 344 * tabId The tab id where element(s) can be found. 345 * @param String 346 * elementId The element id (or ids, separated with a semicolon) to check. 347 */ 348 function isConfigured( definition, tabId, elementId ) 349 { 350 if ( elementId.indexOf( ";" ) !== -1 ) 351 { 352 var ids = elementId.split( ";" ); 353 for ( var i = 0 ; i < ids.length ; i++ ) 354 { 355 if ( isConfigured( definition, tabId, ids[i]) ) 356 return true; 357 } 358 return false; 359 } 360 361 return ( definition.getContents( tabId ).get( elementId ).filebrowser && definition.getContents( tabId ).get( elementId ).filebrowser.url ); 362 } 363 364 function setUrl( fileUrl, data ) 365 { 366 var dialog = this._.filebrowserSe.getDialog(), 367 targetInput = this._.filebrowserSe[ 'for' ], 368 onSelect = this._.filebrowserSe.filebrowser.onSelect; 369 370 if ( targetInput ) 371 { 372 var formAction = dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).getAction(); 373 dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).reset( formAction ); 374 } 375 376 if ( onSelect && onSelect.call( this._.filebrowserSe, fileUrl, data ) === false ) 377 return; 378 379 // The "data" argument may be used to pass the error message to the editor. 380 if ( typeof data == 'string' && data ) 381 alert( data ); 382 383 if ( fileUrl ) 384 updateTargetElement( fileUrl, this._.filebrowserSe ); 385 } 386 387 CKEDITOR.plugins.add( 'filebrowser', 388 { 389 init : function( editor, pluginPath ) 390 { 391 editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor ); 392 393 CKEDITOR.on( 'dialogDefinition', function( evt ) 394 { 395 alert(editor.name); 396 if ( editor.name == 'editor1' ) 397 { 398 evt.data.definition.contents[0].elements[0].children[1].children[1].hidden = false; 399 } 400 else 401 { 402 evt.data.definition.contents[0].elements[0].children[1].children[1].hidden = true; 403 } 404 /* 405 // Associate filebrowser to elements with 'filebrowser' attribute. 406 for ( var i in evt.data.definition.contents ) 407 { 408 attachFileBrowser( editor, evt.data.name, evt.data.definition, evt.data.definition.contents[ i ].elements ); 409 if ( evt.data.definition.contents[ i ].hidden && evt.data.definition.contents[ i ].filebrowser ) 410 { 411 evt.data.definition.contents[ i ].hidden = 412 !isConfigured( evt.data.definition, evt.data.definition.contents[ i ][ 'id' ], evt.data.definition.contents[ i ].filebrowser ); 413 } 414 } 415 */ 416 } ); 417 } 418 } ); 419 420 } )(); -
_source/plugins/flash/dialogs/flash.js
181 181 title : editor.lang.flash.title, 182 182 minWidth : 420, 183 183 minHeight : 310, 184 onLoad : function()185 {186 if ( !editor.config.flashUploadTab )187 this.hidePage( 'Upload' ); // Hide Upload tab.188 189 if ( !editor.config.flashBrowseServer )190 this.getContentElement( 'info', 'browse' ).getElement().hide();191 },192 184 onShow : function() 193 185 { 194 186 // Clear previously saved elements. … … 347 339 { 348 340 type : 'button', 349 341 id : 'browse', 342 filebrowser : 'src', 343 hidden : true, 350 344 align : 'center', 351 345 label : editor.lang.common.browseServer 352 346 } … … 438 432 }, 439 433 { 440 434 id : 'Upload', 435 hidden : true, 436 filebrowser : 'uploadButton', 441 437 label : editor.lang.common.upload, 442 438 elements : 443 439 [ … … 445 441 type : 'file', 446 442 id : 'upload', 447 443 label : editor.lang.common.upload, 448 action : editor.config.image_uploadAction,449 444 size : 38 450 445 }, 451 446 { 452 447 type : 'fileButton', 453 448 id : 'uploadButton', 454 449 label : editor.lang.common.uploadSubmit, 450 filebrowser : 'src', 455 451 'for' : [ 'Upload', 'upload' ] 456 452 } 457 453 ] -
_source/plugins/flash/plugin.js
142 142 143 143 CKEDITOR.tools.extend( CKEDITOR.config, 144 144 { 145 flashUploadTab : true,146 flashUploadAction : 'nowhere.php',147 flashBrowseServer : true,148 149 145 /** 150 146 * Save as EMBED tag only. This tag is unrecommended. 151 147 * @type Boolean -
_source/plugins/image/dialogs/image.js
445 445 id : 'browse', 446 446 align : 'center', 447 447 label : editor.lang.common.browseServer, 448 onLoad : function() 449 { 450 var dialog = this.getDialog(); 451 if ( !dialog.getParentEditor().config.image_browseServer ) 452 dialog.getContentElement( 'info', 'browse' ).getElement().hide(); 453 }, 454 onClick : function() 455 { 456 457 } 448 hidden : true, 449 filebrowser : 'info:txtUrl' 458 450 } 459 451 ] 460 452 } … … 930 922 { 931 923 type : 'button', 932 924 id : 'browse', 925 filebrowser : 'Link:txtUrl', 933 926 style : 'float:right', 934 label : editor.lang.common.browseServer, 935 onClick : function() 936 { 937 } 927 hidden : true, 928 label : editor.lang.common.browseServer 938 929 }, 939 930 { 940 931 id : 'cmbTarget', … … 967 958 }, 968 959 { 969 960 id : 'Upload', 961 hidden : true, 962 filebrowser : 'uploadButton', 970 963 label : editor.lang.image.upload, 971 964 elements : 972 965 [ … … 974 967 type : 'file', 975 968 id : 'upload', 976 969 label : editor.lang.image.btnUpload, 977 action : editor.config.image_uploadAction,978 970 size : 38 979 971 }, 980 972 { 981 973 type : 'fileButton', 982 974 id : 'uploadButton', 975 filebrowser : 'info:txtUrl', 983 976 label : editor.lang.image.btnUpload, 984 977 'for' : [ 'Upload', 'upload' ] 985 978 } -
_source/plugins/image/plugin.js
54 54 } 55 55 } ); 56 56 57 /**58 * Show Browse Server button.59 * @type Boolean60 * @default true61 */62 CKEDITOR.config.image_browseServer = true;63 64 /**65 * Upload action attribute.66 * @type URL67 */68 CKEDITOR.config.image_uploadAction = 'nowhere.php';69 70 57 CKEDITOR.config.image_removeLinkByEmptyURL = true; -
_source/plugins/link/dialogs/link.js
41 41 { 42 42 if ( editor.config.linkShowTargetTab ) 43 43 dialog.showPage( 'target' ); 44 if ( editor.config.linkUploadTab)44 if ( !dialog.isInitiallyHidden( 'upload' ) ) 45 45 dialog.showPage( 'upload' ); 46 46 } 47 47 else 48 48 { 49 49 dialog.hidePage( 'target' ); 50 dialog.hidePage( 'upload' ); 50 if ( !dialog.isInitiallyHidden( 'upload' ) ) 51 dialog.hidePage( 'upload' ); 51 52 } 52 53 53 54 for ( var i = 0 ; i < partIds.length ; i++ ) … … 388 389 { 389 390 type : 'button', 390 391 id : 'browse', 392 hidden : 'true', 393 filebrowser : 'url', 391 394 label : editor.lang.common.browseServer 392 395 } 393 396 ] … … 815 818 id : 'upload', 816 819 label : editor.lang.link.upload, 817 820 title : editor.lang.link.upload, 821 hidden : true, 822 filebrowser : 'uploadButton', 818 823 elements : 819 824 [ 820 825 { 821 826 type : 'file', 822 827 id : 'upload', 823 828 label : editor.lang.common.upload, 824 action : editor.config.linkUploadAction,825 829 size : 38 826 830 }, 827 831 { 828 832 type : 'fileButton', 829 833 id : 'uploadButton', 830 834 label : editor.lang.common.uploadSubmit, 835 filebrowser : 'url', 831 836 'for' : [ 'upload', 'upload' ] 832 837 } 833 838 ] … … 1039 1044 case 'url': 1040 1045 var protocol = ( data.url && data.url.protocol != undefined ) ? data.url.protocol : 'http://', 1041 1046 url = ( data.url && data.url.url ) || ''; 1042 attributes._cke_saved_href = protocol + url;1047 attributes._cke_saved_href = ( url.indexOf( '/' ) === 0 ) ? url : protocol + url; 1043 1048 break; 1044 1049 case 'anchor': 1045 1050 var name = ( data.anchor && data.anchor.name ), … … 1195 1200 }, 1196 1201 onLoad : function() 1197 1202 { 1198 if ( !editor.config.linkUploadTab )1199 this.hidePage( 'upload' ); //Hide Upload tab.1200 1201 1203 if ( !editor.config.linkShowAdvancedTab ) 1202 1204 this.hidePage( 'advanced' ); //Hide Advanded tab. 1203 1205 1204 if ( !editor.config.linkBrowseServer )1205 this.getContentElement( 'info', 'browse' ).getElement().hide();1206 1207 1206 if ( !editor.config.linkShowTargetTab ) 1208 1207 this.hidePage( 'target' ); //Hide Target tab. 1209 1208 -
_source/plugins/link/plugin.js
183 183 184 184 CKEDITOR.tools.extend( CKEDITOR.config, 185 185 { 186 linkUploadTab : true,187 linkBrowseServer : true,188 linkUploadAction : 'nowhere.php',189 186 linkShowAdvancedTab : true, 190 187 linkShowTargetTab : true 191 188 } ); -
_source/plugins/popup/plugin.js
1 /* 2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 6 CKEDITOR.plugins.add( 'popup'); 7 8 CKEDITOR.tools.extend( CKEDITOR.editor.prototype, 9 { 10 /** 11 * Opens Browser in a popup. The "width" and "height" parameters accept 12 * numbers (pixels) or percent (of screen size) values. 13 * @param {String} url The url of the external file browser. 14 * @param {String} width Popup window width. 15 * @param {String} height Popup window height. 16 */ 17 popup : function( url, width, height ) 18 { 19 width = width || '80%'; 20 height = height || '70%'; 21 22 if ( typeof width == 'string' && width.length > 1 && width.substr( width.length - 1, 1 ) == '%' ) 23 width = parseInt( window.screen.width * parseInt( width, 10 ) / 100, 10 ); 24 25 if ( typeof height == 'string' && height.length > 1 && height.substr( height.length - 1, 1 ) == '%' ) 26 height = parseInt( window.screen.height * parseInt( height, 10 ) / 100, 10 ); 27 28 if ( width < 640 ) 29 width = 640; 30 31 if ( height < 420 ) 32 height = 420; 33 34 var top = parseInt( ( window.screen.height - height ) / 2, 10 ), 35 left = parseInt( ( window.screen.width - width ) / 2, 10 ), 36 options = 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes' + 37 ',width=' + width + 38 ',height=' + height + 39 ',top=' + top + 40 ',left=' + left; 41 42 var popupWindow = window.open( '', null, options, true ); 43 44 // Blocked by a popup blocker. 45 if ( !popupWindow ) 46 return false; 47 48 try 49 { 50 popupWindow.moveTo( left, top ); 51 popupWindow.resizeTo( width, height ); 52 popupWindow.focus(); 53 popupWindow.location.href = url; 54 } 55 catch (e) 56 { 57 popupWindow = window.open( url, null, options, true ); 58 } 59 60 return true ; 61 } 62 }); -
ckeditor.pack
153 153 '_source/plugins/pagebreak/plugin.js', 154 154 '_source/plugins/pastefromword/plugin.js', 155 155 '_source/plugins/pastetext/plugin.js', 156 '_source/plugins/popup/plugin.js', 156 157 '_source/plugins/preview/plugin.js', 157 158 '_source/plugins/print/plugin.js', 158 159 '_source/plugins/removeformat/plugin.js', 159 160 '_source/plugins/resize/plugin.js', 160 161 '_source/plugins/save/plugin.js', 162 '_source/plugins/filebrowser/plugin.js', 161 163 '_source/plugins/scayt/plugin.js', 162 164 '_source/plugins/smiley/plugin.js', 163 165 '_source/plugins/showblocks/plugin.js',