fckconfig.js
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:6k
源码类别:

OA系统

开发平台:

C#

  1. /*
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  4.  * 
  5.  * Licensed under the terms of the GNU Lesser General Public License:
  6.  *  http://www.opensource.org/licenses/lgpl-license.php
  7.  * 
  8.  * For further information visit:
  9.  *  http://www.fckeditor.net/
  10.  * 
  11.  * "Support Open Source software. What about a donation today?"
  12.  * 
  13.  * File Name: fckconfig.js
  14.  *  Creates and initializes the FCKConfig object.
  15.  * 
  16.  * File Authors:
  17.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  18.  */
  19. var FCKConfig = FCK.Config = new Object() ;
  20. /*
  21. For the next major version (probably 3.0) we should move all this stuff to
  22. another dedicated object and leave FCKConfig as a holder object for settings only).
  23. */
  24. // Editor Base Path
  25. if ( document.location.protocol == 'file:' )
  26. {
  27. FCKConfig.BasePath = unescape( document.location.pathname.substr(1) ) ;
  28. FCKConfig.BasePath = FCKConfig.BasePath.replace( /\/gi, '/' ) ;
  29. FCKConfig.BasePath = 'file://' + FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1) ;
  30. FCKConfig.FullBasePath = FCKConfig.BasePath ;
  31. }
  32. else
  33. {
  34. FCKConfig.BasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1) ;
  35. FCKConfig.FullBasePath = document.location.protocol + '//' + document.location.host + FCKConfig.BasePath ;
  36. }
  37. FCKConfig.EditorPath = FCKConfig.BasePath.replace( /editor/$/, '' ) ;
  38. // There is a bug in Gecko. If the editor is hidden on startup, an error is 
  39. // thrown when trying to get the screen dimentions.
  40. try
  41. {
  42. FCKConfig.ScreenWidth = screen.width ;
  43. FCKConfig.ScreenHeight = screen.height ;
  44. }
  45. catch (e) 
  46. {
  47. FCKConfig.ScreenWidth = 800 ;
  48. FCKConfig.ScreenHeight = 600 ;
  49. }
  50. // Override the actual configuration values with the values passed throw the 
  51. // hidden field "<InstanceName>___Config".
  52. FCKConfig.ProcessHiddenField = function()
  53. {
  54. this.PageConfig = new Object() ;
  55. // Get the hidden field.
  56. var oConfigField = window.parent.document.getElementById( FCK.Name + '___Config' ) ;
  57. // Do nothing if the config field was not defined.
  58. if ( ! oConfigField ) return ;
  59. var aCouples = oConfigField.value.split('&') ;
  60. for ( var i = 0 ; i < aCouples.length ; i++ )
  61. {
  62. if ( aCouples[i].length == 0 )
  63. continue ;
  64. var aConfig = aCouples[i].split( '=' ) ;
  65. var sKey = unescape( aConfig[0] ) ;
  66. var sVal = unescape( aConfig[1] ) ;
  67. if ( sKey == 'CustomConfigurationsPath' ) // The Custom Config File path must be loaded immediately.
  68. FCKConfig[ sKey ] = sVal ;
  69. else if ( sVal.toLowerCase() == "true" ) // If it is a boolean TRUE.
  70. this.PageConfig[ sKey ] = true ;
  71. else if ( sVal.toLowerCase() == "false" ) // If it is a boolean FALSE.
  72. this.PageConfig[ sKey ] = false ;
  73. else if ( sVal.length > 0 && !isNaN( sVal ) ) // If it is a number.
  74. this.PageConfig[ sKey ] = parseInt( sVal ) ;
  75. else // In any other case it is a string.
  76. this.PageConfig[ sKey ] = sVal ;
  77. }
  78. }
  79. function FCKConfig_LoadPageConfig()
  80. {
  81. var oPageConfig = FCKConfig.PageConfig ;
  82. for ( var sKey in oPageConfig )
  83. FCKConfig[ sKey ] = oPageConfig[ sKey ] ;
  84. }
  85. function FCKConfig_PreProcess()
  86. {
  87. var oConfig = FCKConfig ;
  88. // Force debug mode if fckdebug=true in the QueryString (main page).
  89. if ( oConfig.AllowQueryStringDebug )
  90. {
  91. try
  92. {
  93. if ( (/fckdebug=true/i).test( window.top.location.search ) )
  94. oConfig.Debug = true ;
  95. }
  96. catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
  97. }
  98. // Certifies that the "PluginsPath" configuration ends with a slash.
  99. if ( !oConfig.PluginsPath.endsWith('/') )
  100. oConfig.PluginsPath += '/' ;
  101. // EditorAreaCSS accepts an array of paths or a single path (as string).
  102. // In the last case, transform it in an array.
  103. if ( typeof( oConfig.EditorAreaCSS ) == 'string' )
  104. oConfig.EditorAreaCSS = [ oConfig.EditorAreaCSS ] ;
  105. var sComboPreviewCSS = oConfig.ToolbarComboPreviewCSS ;
  106. if ( !sComboPreviewCSS || sComboPreviewCSS.length == 0 )
  107. oConfig.ToolbarComboPreviewCSS = oConfig.EditorAreaCSS ;
  108. else if ( typeof( sComboPreviewCSS ) == 'string' )
  109. oConfig.ToolbarComboPreviewCSS = [ sComboPreviewCSS ] ;
  110. }
  111. // Define toolbar sets collection.
  112. FCKConfig.ToolbarSets = new Object() ;
  113. // Defines the plugins collection.
  114. FCKConfig.Plugins = new Object() ;
  115. FCKConfig.Plugins.Items = new Array() ;
  116. FCKConfig.Plugins.Add = function( name, langs, path )
  117. {
  118. FCKConfig.Plugins.Items.AddItem( [name, langs, path] ) ;
  119. }
  120. // FCKConfig.ProtectedSource: object that holds a collection of Regular 
  121. // Expressions that defined parts of the raw HTML that must remain untouched
  122. // like custom tags, scripts, server side code, etc...
  123. FCKConfig.ProtectedSource = new Object() ;
  124. // Initialize the regex array with the default ones.
  125. FCKConfig.ProtectedSource.RegexEntries = [
  126. // First of any other protection, we must protect all comments to avoid 
  127. // loosing them (of course, IE related).
  128. /<!--[sS]*?-->/g ,
  129. // Script tags will also be forced to be protected, otherwise IE will execute them.
  130. /<script[sS]*?</script>/gi,
  131. // <noscript> tags (get lost in IE and messed up in FF).
  132. /<noscript[sS]*?</noscript>/gi
  133. ] ;
  134. FCKConfig.ProtectedSource.Add = function( regexPattern )
  135. {
  136. this.RegexEntries.AddItem( regexPattern ) ;
  137. }
  138. FCKConfig.ProtectedSource.Protect = function( html )
  139. {
  140. function _Replace( protectedSource )
  141. {
  142. var index = FCKTempBin.AddElement( protectedSource ) ;
  143. return '<!--{PS..' + index + '}-->' ;
  144. }
  145. for ( var i = 0 ; i < this.RegexEntries.length ; i++ )
  146. {
  147. html = html.replace( this.RegexEntries[i], _Replace ) ;
  148. }
  149. return html ;
  150. }
  151. FCKConfig.ProtectedSource.Revert = function( html, clearBin )
  152. {
  153. function _Replace( m, opener, index )
  154. {
  155. var protectedValue = clearBin ? FCKTempBin.RemoveElement( index ) : FCKTempBin.Elements[ index ] ;
  156. // There could be protected source inside another one.
  157. return FCKConfig.ProtectedSource.Revert( protectedValue, clearBin ) ;
  158. }
  159. return html.replace( /(<|&lt;)!--{PS..(d+)}--(>|&gt;)/g, _Replace ) ;
  160. }