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

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_2.js
  12.  *  This is the second 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. // This collection is used by the browser specific implementations to tell
  19. // wich named commands must be handled separately.
  20. FCK.RedirectNamedCommands = new Object() ;
  21. FCK.ExecuteNamedCommand = function( commandName, commandParameter )
  22. {
  23. FCKUndo.SaveUndoStep() ;
  24. if ( FCK.RedirectNamedCommands[ commandName ] != null )
  25. FCK.ExecuteRedirectedNamedCommand( commandName, commandParameter ) ;
  26. else
  27. {
  28. FCK.Focus() ;
  29. FCK.EditorDocument.execCommand( commandName, false, commandParameter ) ; 
  30. FCK.Events.FireEvent( 'OnSelectionChange' ) ;
  31. }
  32. }
  33. FCK.GetNamedCommandState = function( commandName )
  34. {
  35. try
  36. {
  37. if ( !FCK.EditorDocument.queryCommandEnabled( commandName ) )
  38. return FCK_TRISTATE_DISABLED ;
  39. else
  40. return FCK.EditorDocument.queryCommandState( commandName ) ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
  41. }
  42. catch ( e )
  43. {
  44. return FCK_TRISTATE_OFF ;
  45. }
  46. }
  47. FCK.GetNamedCommandValue = function( commandName )
  48. {
  49. var sValue = '' ;
  50. var eState = FCK.GetNamedCommandState( commandName ) ;
  51. if ( eState == FCK_TRISTATE_DISABLED ) 
  52. return null ;
  53. try
  54. {
  55. sValue = this.EditorDocument.queryCommandValue( commandName ) ;
  56. }
  57. catch(e) {}
  58. return sValue ? sValue : '' ;
  59. }
  60. FCK.PasteFromWord = function()
  61. {
  62. FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
  63. }
  64. // TODO: Wait Stable and remove this block.
  65. //FCK.CleanAndPaste = function( html )
  66. //{
  67. // Remove all SPAN tags
  68. // html = html.replace(/</?SPAN[^>]*>/gi, "" );
  69. // html = html.replace(/<o:p>&nbsp;</o:p>/g, "") ;
  70. // html = html.replace(/<o:p></o:p>/g, "") ;
  71. // Remove mso-xxx styles.
  72. // html = html.replace( /mso-.[^:]:.[^;"]/g, "" ) ;
  73. // Remove Class attributes
  74. // html = html.replace(/<(w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
  75. // Remove Style attributes
  76. // html = html.replace(/<(w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3") ;
  77. // Remove Lang attributes
  78. // html = html.replace(/<(w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
  79. // Remove XML elements and declarations
  80. // html = html.replace(/<\??xml[^>]*>/gi, "") ;
  81. // Remove Tags with XML namespace declarations: <o:p></o:p>
  82. // html = html.replace(/</?w+:[^>]*>/gi, "") ;
  83. // Replace the &nbsp;
  84. // html = html.replace(/&nbsp;/, " " );
  85. // Replace the &nbsp; from the beggining.
  86. // html = html.replace(/^&nbsp;[srn]*/, ""); 
  87. // Transform <P> to <DIV>
  88. // var re = new RegExp("(<P)([^>]*>.*?)(</P>)","gi") ; // Different because of a IE 5.0 error
  89. // html = html.replace( re, "<div$2</div>" ) ;
  90. // FCK.InsertHtml( html ) ;
  91. //}
  92. FCK.Preview = function()
  93. {
  94. var iWidth = screen.width * 0.8 ;
  95. var iHeight = screen.height * 0.7 ;
  96. var iLeft = ( screen.width - iWidth ) / 2 ;
  97. var oWindow = window.open( '', null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ;
  98. var sHTML ;
  99. if ( FCKConfig.FullPage )
  100. {
  101. if ( FCK.TempBaseTag.length > 0 )
  102. sHTML = FCK.GetXHTML().replace( FCKRegexLib.HeadCloser, FCK.TempBaseTag + '</head>' ) ;
  103. else
  104. sHTML = FCK.GetXHTML() ;
  105. }
  106. else
  107. {
  108. sHTML = 
  109. FCKConfig.DocType +
  110. '<html dir="' + FCKConfig.ContentLangDirection + '">' +
  111. '<head><title>' + FCKLang.Preview + '</title>' +
  112. '<link href="' + FCKConfig.EditorAreaCSS + '" rel="stylesheet" type="text/css" />' +
  113. FCK.TempBaseTag +
  114. '</head><body>' + 
  115. FCK.GetXHTML() + 
  116. '</body></html>' ;
  117. }
  118. oWindow.document.write( sHTML );
  119. oWindow.document.close();
  120. }
  121. FCK.SwitchEditMode = function()
  122. {
  123. // Check if the actual mode is WYSIWYG.
  124. var bWYSIWYG = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ;
  125. // Display/Hide the TRs.
  126. document.getElementById('eWysiwyg').style.display = bWYSIWYG ? 'none' : '' ;
  127. document.getElementById('eSource').style.display = bWYSIWYG ? '' : 'none' ;
  128. // Update the HTML in the view output to show.
  129. if ( bWYSIWYG )
  130. {
  131. if ( FCKBrowserInfo.IsIE )
  132. FCKUndo.SaveUndoStep() ;
  133. document.getElementById('eSourceField').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
  134. }
  135. else
  136. FCK.SetHTML( FCK.GetHTML(), true ) ;
  137. // Updates the actual mode status.
  138. FCK.EditMode = bWYSIWYG ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ;
  139. // Update the toolbar.
  140. FCKToolbarSet.RefreshModeState() ;
  141. // Set the Focus.
  142. FCK.Focus() ;
  143. }
  144. FCK.CreateElement = function( tag )
  145. {
  146. var e = FCK.EditorDocument.createElement( tag ) ;
  147. return FCK.InsertElementAndGetIt( e ) ;
  148. }
  149. FCK.InsertElementAndGetIt = function( e )
  150. {
  151. e.setAttribute( '__FCKTempLabel', 1 ) ;
  152. this.InsertElement( e ) ;
  153. var aEls = FCK.EditorDocument.getElementsByTagName( e.tagName ) ;
  154. for ( var i = 0 ; i < aEls.length ; i++ )
  155. {
  156. if ( aEls[i].getAttribute( '__FCKTempLabel' ) )
  157. {
  158. aEls[i].removeAttribute( '__FCKTempLabel' ) ;
  159. return aEls[i] ;
  160. }
  161. }
  162. }