fck_1.js
上传用户:wlfwy2004
上传日期:2016-12-12
资源大小:33978k
文件大小:11k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /*
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2005 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.  * File Name: fck_1.js
  12.  *  This is the first part of the "FCK" object creation. This is the main
  13.  *  object that represents an editor instance.
  14.  * 
  15.  * File Authors:
  16.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  17.  */
  18. FCK.Events = new FCKEvents( FCK ) ;
  19. FCK.Toolbar = null ;
  20. FCK.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="' + FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '' ;
  21. FCK.StartEditor = function()
  22. {
  23. // Get the editor's window and document (DOM)
  24. this.EditorWindow = window.frames[ 'eEditorArea' ] ;
  25. this.EditorDocument = this.EditorWindow.document ;
  26. // TODO: Wait stable version and remove the following commented lines.
  27. // The Base Path of the editor is saved to rebuild relative URL (IE issue).
  28. // this.BaseUrl = this.EditorDocument.location.protocol + '//' + this.EditorDocument.location.host ;
  29. if ( FCKBrowserInfo.IsGecko )
  30. this.MakeEditable() ;
  31. // Set the editor's startup contents
  32. this.SetHTML( FCKTools.GetLinkedFieldValue() ) ;
  33. // Attach the editor to the form onsubmit event
  34. FCKTools.AttachToLinkedFieldFormSubmit( this.UpdateLinkedField ) ;
  35. FCKUndo.SaveUndoStep() ;
  36. this.SetStatus( FCK_STATUS_ACTIVE ) ;
  37. }
  38. function Window_OnFocus()
  39. {
  40. FCK.Focus() ;
  41. }
  42. FCK.SetStatus = function( newStatus )
  43. {
  44. this.Status = newStatus ;
  45. if ( newStatus == FCK_STATUS_ACTIVE )
  46. {
  47. // Force the focus in the window to go to the editor.
  48. window.onfocus = window.document.body.onfocus = Window_OnFocus ;
  49. // Force the focus in the editor.
  50. if ( FCKConfig.StartupFocus )
  51. FCK.Focus() ;
  52. // @Packager.Compactor.Remove.Start
  53. var sBrowserSuffix = FCKBrowserInfo.IsIE ? "ie" : "gecko" ;
  54. FCKScriptLoader.AddScript( '_source/internals/fck_2.js' ) ;
  55. FCKScriptLoader.AddScript( '_source/internals/fck_2_' + sBrowserSuffix + '.js' ) ;
  56. FCKScriptLoader.AddScript( '_source/internals/fckselection.js' ) ;
  57. FCKScriptLoader.AddScript( '_source/internals/fckselection_' + sBrowserSuffix + '.js' ) ;
  58. FCKScriptLoader.AddScript( '_source/classes/fckpanel_' + sBrowserSuffix + '.js' ) ;
  59. FCKScriptLoader.AddScript( '_source/internals/fcktablehandler.js' ) ;
  60. FCKScriptLoader.AddScript( '_source/internals/fcktablehandler_' + sBrowserSuffix + '.js' ) ;
  61. FCKScriptLoader.AddScript( '_source/classes/fckxml_' + sBrowserSuffix + '.js' ) ;
  62. FCKScriptLoader.AddScript( '_source/classes/fckstyledef.js' ) ;
  63. FCKScriptLoader.AddScript( '_source/classes/fckstyledef_' + sBrowserSuffix + '.js' ) ;
  64. FCKScriptLoader.AddScript( '_source/classes/fckstylesloader.js' ) ;
  65. FCKScriptLoader.AddScript( '_source/commandclasses/fcknamedcommand.js' ) ;
  66. FCKScriptLoader.AddScript( '_source/commandclasses/fck_othercommands.js' ) ;
  67. FCKScriptLoader.AddScript( '_source/commandclasses/fckspellcheckcommand_' + sBrowserSuffix + '.js' ) ;
  68. FCKScriptLoader.AddScript( '_source/commandclasses/fcktextcolorcommand.js' ) ;
  69. FCKScriptLoader.AddScript( '_source/commandclasses/fckpasteplaintextcommand.js' ) ;
  70. FCKScriptLoader.AddScript( '_source/commandclasses/fckpastewordcommand.js' ) ;
  71. FCKScriptLoader.AddScript( '_source/commandclasses/fcktablecommand.js' ) ;
  72. FCKScriptLoader.AddScript( '_source/commandclasses/fckstylecommand.js' ) ;
  73. FCKScriptLoader.AddScript( '_source/internals/fckcommands.js' ) ;
  74. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarbutton.js' ) ;
  75. FCKScriptLoader.AddScript( '_source/classes/fckspecialcombo.js' ) ;
  76. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarspecialcombo.js' ) ;
  77. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarfontscombo.js' ) ;
  78. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarfontsizecombo.js' ) ;
  79. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarfontformatcombo.js' ) ;
  80. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarstylecombo.js' ) ;
  81. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarpanelbutton.js' ) ;
  82. FCKScriptLoader.AddScript( '_source/internals/fcktoolbaritems.js' ) ;
  83. FCKScriptLoader.AddScript( '_source/classes/fcktoolbar.js' ) ;
  84. FCKScriptLoader.AddScript( '_source/classes/fcktoolbarbreak_' + sBrowserSuffix + '.js' ) ;
  85. FCKScriptLoader.AddScript( '_source/internals/fcktoolbarset.js' ) ;
  86. FCKScriptLoader.AddScript( '_source/internals/fckdialog.js' ) ;
  87. FCKScriptLoader.AddScript( '_source/internals/fckdialog_' + sBrowserSuffix + '.js' ) ;
  88. FCKScriptLoader.AddScript( '_source/classes/fckcontextmenuitem.js' ) ;
  89. FCKScriptLoader.AddScript( '_source/classes/fckcontextmenuseparator.js' ) ;
  90. FCKScriptLoader.AddScript( '_source/classes/fckcontextmenugroup.js' ) ;
  91. FCKScriptLoader.AddScript( '_source/internals/fckcontextmenu.js' ) ;
  92. FCKScriptLoader.AddScript( '_source/internals/fckcontextmenu_' + sBrowserSuffix + '.js' ) ;
  93. FCKScriptLoader.AddScript( '_source/classes/fckplugin.js' ) ;
  94. FCKScriptLoader.AddScript( '_source/internals/fckplugins.js' ) ;
  95. FCKScriptLoader.AddScript( '_source/internals/fck_last.js' ) ;
  96. // @Packager.Compactor.Remove.End
  97. /* @Packager.Compactor.RemoveLine
  98. if ( FCKBrowserInfo.IsIE )
  99. FCKScriptLoader.AddScript( 'js/fckeditorcode_ie_2.js' ) ;
  100. else
  101. FCKScriptLoader.AddScript( 'js/fckeditorcode_gecko_2.js' ) ;
  102. @Packager.Compactor.RemoveLine */
  103. }
  104. this.Events.FireEvent( 'OnStatusChange', newStatus ) ;
  105. }
  106. FCK.GetHTML = function( format )
  107. {
  108. var sHTML ;
  109. if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
  110. {
  111. // TODO: Wait stable version and remove the following commented lines.
  112. // if ( FCKBrowserInfo.IsIE )
  113. // FCK.CheckRelativeLinks() ;
  114. if ( FCKBrowserInfo.IsIE )
  115. sHTML = this.EditorDocument.body.innerHTML.replace( FCKRegexLib.ToReplace, '$1' ) ;
  116. else
  117. sHTML = this.EditorDocument.body.innerHTML ;
  118. }
  119. else
  120. sHTML = document.getElementById('eSourceField').value ;
  121. if ( format )
  122. return FCKCodeFormatter.Format( sHTML ) ;
  123. else
  124. return sHTML ;
  125. }
  126. FCK.GetXHTML = function( format )
  127. {
  128. var bSource = ( FCK.EditMode == FCK_EDITMODE_SOURCE ) ;
  129. if ( bSource )
  130. this.SwitchEditMode() ;
  131. // TODO: Wait stable version and remove the following commented lines.
  132. // if ( FCKBrowserInfo.IsIE )
  133. // FCK.CheckRelativeLinks() ;
  134. if ( FCKConfig.FullPage )
  135. var sXHTML = FCKXHtml.GetXHTML( this.EditorDocument.getElementsByTagName( 'html' )[0], true, format ) ;
  136. else
  137. {
  138. if ( FCKConfig.IgnoreEmptyParagraphValue && this.EditorDocument.body.innerHTML == '<P>&nbsp;</P>' )
  139. var sXHTML = '' ;
  140. else
  141. var sXHTML = FCKXHtml.GetXHTML( this.EditorDocument.body, false, format ) ;
  142. }
  143. if ( bSource )
  144. this.SwitchEditMode() ;
  145. if ( FCKBrowserInfo.IsIE )
  146. sXHTML = sXHTML.replace( FCKRegexLib.ToReplace, '$1' ) ;
  147. if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
  148. sXHTML = FCK.DocTypeDeclaration + 'n' + sXHTML ;
  149. if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 )
  150. sXHTML = FCK.XmlDeclaration + 'n' + sXHTML ;
  151. return sXHTML ;
  152. }
  153. FCK.UpdateLinkedField = function()
  154. {
  155. if ( FCKConfig.EnableXHTML )
  156. FCKTools.SetLinkedFieldValue( FCK.GetXHTML( FCKConfig.FormatOutput ) ) ;
  157. else
  158. FCKTools.SetLinkedFieldValue( FCK.GetHTML( FCKConfig.FormatOutput ) ) ;
  159. }
  160. FCK.ShowContextMenu = function( x, y )
  161. {
  162. if ( this.Status != FCK_STATUS_COMPLETE )
  163. return ;
  164. FCKContextMenu.Show( x, y ) ;
  165. this.Events.FireEvent( "OnContextMenu" ) ;
  166. }
  167. FCK.RegisteredDoubleClickHandlers = new Object() ;
  168. FCK.OnDoubleClick = function( element )
  169. {
  170. var oHandler = FCK.RegisteredDoubleClickHandlers[ element.tagName ] ;
  171. if ( oHandler )
  172. oHandler( element ) ;
  173. }
  174. // Register objects that can handle double click operations.
  175. FCK.RegisterDoubleClickHandler = function( handlerFunction, tag )
  176. {
  177. FCK.RegisteredDoubleClickHandlers[ tag.toUpperCase() ] = handlerFunction ;
  178. }
  179. FCK.OnAfterSetHTML = function()
  180. {
  181. var oProcessor, i = 0 ;
  182. while( oProcessor = FCKDocumentProcessors[i++] )
  183. oProcessor.ProcessDocument( FCK.EditorDocument ) ;
  184. this.Events.FireEvent( 'OnAfterSetHTML' ) ;
  185. }
  186. // Advanced document processors.
  187. var FCKDocumentProcessors = new Array() ;
  188. var FCKDocumentProcessors_CreateFakeImage = function( fakeClass, realElement )
  189. {
  190. var oImg = FCK.EditorDocument.createElement( 'IMG' ) ;
  191. oImg.className = fakeClass ;
  192. oImg.src = FCKConfig.FullBasePath + 'images/spacer.gif' ;
  193. oImg.setAttribute( '_fckfakelement', 'true', 0 ) ;
  194. oImg.setAttribute( '_fckrealelement', FCKTempBin.AddElement( realElement ), 0 ) ;
  195. return oImg ;
  196. }
  197. // Link Anchors
  198. var FCKAnchorsProcessor = new Object() ;
  199. FCKAnchorsProcessor.ProcessDocument = function( document )
  200. {
  201. var aLinks = document.getElementsByTagName( 'A' ) ;
  202. var oLink ;
  203. var i = aLinks.length - 1 ;
  204. while ( i >= 0 && ( oLink = aLinks[i--] ) )
  205. {
  206. // If it is anchor.
  207. if ( oLink.name.length > 0 && ( !oLink.getAttribute('href') || oLink.getAttribute('href').length == 0 ) )
  208. {
  209. var oImg = FCKDocumentProcessors_CreateFakeImage( 'FCK__Anchor', oLink.cloneNode(true) ) ;
  210. oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
  211. oLink.parentNode.insertBefore( oImg, oLink ) ;
  212. oLink.parentNode.removeChild( oLink ) ;
  213. }
  214. }
  215. }
  216. FCKDocumentProcessors.addItem( FCKAnchorsProcessor ) ;
  217. // Flash Embeds.
  218. var FCKFlashProcessor = new Object() ;
  219. FCKFlashProcessor.ProcessDocument = function( document )
  220. {
  221. /*
  222. Sample code:
  223. This is some <embed src="/UserFiles/Flash/Yellow_Runners.swf"></embed><strong>sample text</strong>. You are&nbsp;<a name="fred"></a> using <a href="http://www.fckeditor.net/">FCKeditor</a>.
  224. */
  225. var aEmbeds = document.getElementsByTagName( 'EMBED' ) ;
  226. var oEmbed ;
  227. var i = aEmbeds.length - 1 ;
  228. while ( i >= 0 && ( oEmbed = aEmbeds[i--] ) )
  229. {
  230. if ( oEmbed.src.endsWith( '.swf', true ) )
  231. {
  232. var oImg = FCKDocumentProcessors_CreateFakeImage( 'FCK__Flash', oEmbed.cloneNode(true) ) ;
  233. oImg.setAttribute( '_fckflash', 'true', 0 ) ;
  234. FCKFlashProcessor.RefreshView( oImg, oEmbed ) ;
  235. oEmbed.parentNode.insertBefore( oImg, oEmbed ) ;
  236. oEmbed.parentNode.removeChild( oEmbed ) ;
  237. // oEmbed.setAttribute( '_fckdelete', 'true', 0) ;
  238. // oEmbed.style.display = 'none' ;
  239. // oEmbed.hidden = true ;
  240. }
  241. }
  242. }
  243. FCKFlashProcessor.RefreshView = function( placholderImage, originalEmbed )
  244. {
  245. if ( originalEmbed.width > 0 )
  246. placholderImage.style.width = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.width ) ;
  247. if ( originalEmbed.height > 0 )
  248. placholderImage.style.height = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.height ) ;
  249. }
  250. FCKDocumentProcessors.addItem( FCKFlashProcessor ) ;
  251. FCK.GetRealElement = function( fakeElement )
  252. {
  253. var e = FCKTempBin.Elements[ fakeElement.getAttribute('_fckrealelement') ] ;
  254. if ( fakeElement.getAttribute('_fckflash') )
  255. {
  256. if ( fakeElement.style.width.length > 0 )
  257. e.width = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.width ) ;
  258. if ( fakeElement.style.height.length > 0 )
  259. e.height = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.height ) ;
  260. }
  261. return e ;
  262. }