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

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: fcktools.js
  14.  *  Utility functions.
  15.  * 
  16.  * File Authors:
  17.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  18.  */
  19. var FCKTools = new Object() ;
  20. FCKTools.AppendStyleSheet = function( documentElement, cssFileUrlOrArray )
  21. {
  22. if ( typeof( cssFileUrlOrArray ) == 'string' )
  23. return this._AppendStyleSheet( documentElement, cssFileUrlOrArray ) ;
  24. else
  25. {
  26. for ( var i = 0 ; i < cssFileUrlOrArray.length ; i++ )
  27. this._AppendStyleSheet( documentElement, cssFileUrlOrArray[i] ) ;
  28. }
  29. }
  30. /**
  31.  * Gets the value of the hidden INPUT element that is associated to the editor.
  32.  * This element has its ID set to the editor's instance name so the user refers
  33.  * to the instance name when getting the posted data.
  34.  */
  35. FCKTools.GetLinkedFieldValue = function()
  36. {
  37. return FCK.LinkedField.value ;
  38. }
  39. /**
  40.  * Attachs a function call to the submit event of the linked field form. This
  41.  * function us generally used to update the linked field value before
  42.  * submitting the form.
  43.  */
  44. FCKTools.AttachToLinkedFieldFormSubmit = function( functionPointer )
  45. {
  46. // Gets the linked field form
  47. var oForm = FCK.LinkedField.form ;
  48. // Return now if no form is available
  49. if (!oForm) return ;
  50. // Attaches the functionPointer call to the onsubmit event
  51. if ( FCKBrowserInfo.IsIE )
  52. oForm.attachEvent( "onsubmit", functionPointer ) ;
  53. else
  54. oForm.addEventListener( 'submit', functionPointer, false ) ;
  55. //**
  56. // Attaches the functionPointer call to the submit method 
  57. // This is done because IE doesn't fire onsubmit when the submit method is called
  58. // BEGIN --
  59. // Creates a Array in the form object that will hold all Attached function call
  60. // (in the case there are more than one editor in the same page)
  61. if (! oForm.updateFCKeditor) oForm.updateFCKeditor = new Array() ;
  62. // Adds the function pointer to the array of functions to call when "submit" is called
  63. oForm.updateFCKeditor[oForm.updateFCKeditor.length] = functionPointer ;
  64. // Switches the original submit method with a new one that first call all functions
  65. // on the above array and the call the original submit
  66. // IE sees it oForm.submit function as an 'object'.
  67. if (! oForm.originalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) )
  68. {
  69. // Creates a copy of the original submit
  70. oForm.originalSubmit = oForm.submit ;
  71. // Creates our replacement for the submit
  72. oForm.submit = FCKTools_SubmitReplacer ;
  73. }
  74. // END --
  75. }
  76. function FCKTools_SubmitReplacer()
  77. {
  78. if (this.updateFCKeditor)
  79. {
  80. // Calls all functions in the functions array
  81. for (var i = 0 ; i < this.updateFCKeditor.length ; i++)
  82. this.updateFCKeditor[i]() ;
  83. }
  84. // Calls the original "submit"
  85. this.originalSubmit() ;
  86. }
  87. // Get the window object where the element is placed in.
  88. FCKTools.GetElementWindow = function( element )
  89. {
  90. return this.GetDocumentWindow( this.GetElementDocument( element ) ) ;
  91. }
  92. FCKTools.GetDocumentWindow = function( doc )
  93. {
  94. // With Safari, there is not way to retrieve the window from the document, so we must fix it.
  95. if ( FCKBrowserInfo.IsSafari && !doc.parentWindow )
  96. this.FixDocumentParentWindow( window.top ) ;
  97. return doc.parentWindow || doc.defaultView ;
  98. }
  99. /*
  100. This is a Safari specific function that fix the reference to the parent 
  101. window from the document object.
  102. */
  103. FCKTools.FixDocumentParentWindow = function( targetWindow )
  104. {
  105. targetWindow.document.parentWindow = targetWindow ; 
  106. for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
  107. FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ;
  108. }
  109. FCKTools.GetParentWindow = function( document )
  110. {
  111. return document.contentWindow ? document.contentWindow : document.parentWindow ;
  112. }
  113. FCKTools.HTMLEncode = function( text )
  114. {
  115. if ( !text )
  116. return '' ;
  117. text = text.replace( /&/g, '&amp;' ) ;
  118. text = text.replace( /</g, '&lt;' ) ;
  119. text = text.replace( />/g, '&gt;' ) ;
  120. return text ;
  121. }
  122. /**
  123.  * Adds an option to a SELECT element.
  124.  */
  125. FCKTools.AddSelectOption = function( selectElement, optionText, optionValue )
  126. {
  127. var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ;
  128. oOption.text = optionText ;
  129. oOption.value = optionValue ;
  130. selectElement.options.add(oOption) ;
  131. return oOption ;
  132. }
  133. FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow )
  134. {
  135. if ( func )
  136. this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ;
  137. }
  138. FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow )
  139. {
  140. return ( timerWindow || window ).setTimeout( 
  141. function()
  142. {
  143. if ( paramsArray )
  144. func.apply( thisObject, [].concat( paramsArray ) ) ;
  145. else
  146. func.apply( thisObject ) ;
  147. },
  148. milliseconds ) ;
  149. }
  150. FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow )
  151. {
  152. return ( timerWindow || window ).setInterval( 
  153. function()
  154. {
  155. func.apply( thisObject, paramsArray || [] ) ;
  156. },
  157. milliseconds ) ;
  158. }
  159. FCKTools.ConvertStyleSizeToHtml = function( size )
  160. {
  161. return size.endsWith( '%' ) ? size : parseInt( size ) ;
  162. }
  163. FCKTools.ConvertHtmlSizeToStyle = function( size )
  164. {
  165. return size.endsWith( '%' ) ? size : ( size + 'px' ) ;
  166. }
  167. // START iCM MODIFICATIONS
  168. // Amended to accept a list of one or more ascensor tag names
  169. // Amended to check the element itself before working back up through the parent hierarchy
  170. FCKTools.GetElementAscensor = function( element, ascensorTagNames )
  171. {
  172. // var e = element.parentNode ;
  173. var e = element ;
  174. var lstTags = "," + ascensorTagNames.toUpperCase() + "," ;
  175. while ( e )
  176. {
  177. if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 )
  178. return e ;
  179. e = e.parentNode ;
  180. }
  181. return null ;
  182. }
  183. // END iCM MODIFICATIONS
  184. FCKTools.CreateEventListener = function( func, params )
  185. {
  186. var f = function()
  187. {
  188. var aAllParams = [] ;
  189. for ( var i = 0 ; i < arguments.length ; i++ )
  190. aAllParams.push( arguments[i] ) ;
  191. func.apply( this, aAllParams.concat( params ) ) ;
  192. return f ;
  193. }
  194. FCKTools.GetElementDocument = function ( element )
  195. {
  196. return element.ownerDocument || element.document ;
  197. }