fckdataprocessor.js
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:4k
源码类别:

数据库编程

开发平台:

Visual C++

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2007 Frederico Caldeira Knabben
  4.  *
  5.  * == BEGIN LICENSE ==
  6.  *
  7.  * Licensed under the terms of any of the following licenses at your
  8.  * choice:
  9.  *
  10.  *  - GNU General Public License Version 2 or later (the "GPL")
  11.  *    http://www.gnu.org/licenses/gpl.html
  12.  *
  13.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  14.  *    http://www.gnu.org/licenses/lgpl.html
  15.  *
  16.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  17.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  18.  *
  19.  * == END LICENSE ==
  20.  *
  21.  * The Data Processor is responsible for transforming the input and output data
  22.  * in the editor. For more info:
  23.  * http://dev.fckeditor.net/wiki/Components/DataProcessor
  24.  *
  25.  * The default implementation offers the base XHTML compatibility features of
  26.  * FCKeditor. Further Data Processors may be implemented for other purposes.
  27.  *
  28.  */
  29. var FCKDataProcessor = function()
  30. {}
  31. FCKDataProcessor.prototype =
  32. {
  33. /*
  34.  * Returns a string representing the HTML format of "data". The returned
  35.  * value will be loaded in the editor.
  36.  * The HTML must be from <html> to </html>, including <head>, <body> and
  37.  * eventually the DOCTYPE.
  38.  * Note: HTML comments may already be part of the data because of the
  39.  * pre-processing made with ProtectedSource.
  40.  *     @param {String} data The data to be converted in the
  41.  *            DataProcessor specific format.
  42.  */
  43. ConvertToHtml : function( data )
  44. {
  45. // The default data processor must handle two different cases depending
  46. // on the FullPage setting. Custom Data Processors will not be
  47. // compatible with FullPage, much probably.
  48. if ( FCKConfig.FullPage )
  49. {
  50. // Save the DOCTYPE.
  51. FCK.DocTypeDeclaration = data.match( FCKRegexLib.DocTypeTag ) ;
  52. // Check if the <body> tag is available.
  53. if ( !FCKRegexLib.HasBodyTag.test( data ) )
  54. data = '<body>' + data + '</body>' ;
  55. // Check if the <html> tag is available.
  56. if ( !FCKRegexLib.HtmlOpener.test( data ) )
  57. data = '<html dir="' + FCKConfig.ContentLangDirection + '">' + data + '</html>' ;
  58. // Check if the <head> tag is available.
  59. if ( !FCKRegexLib.HeadOpener.test( data ) )
  60. data = data.replace( FCKRegexLib.HtmlOpener, '$&<head><title></title></head>' ) ;
  61. return data ;
  62. }
  63. else
  64. {
  65. var html =
  66. FCKConfig.DocType +
  67. '<html dir="' + FCKConfig.ContentLangDirection + '"' ;
  68. // On IE, if you are using a DOCTYPE different of HTML 4 (like
  69. // XHTML), you must force the vertical scroll to show, otherwise
  70. // the horizontal one may appear when the page needs vertical scrolling.
  71. // TODO : Check it with IE7 and make it IE6- if it is the case.
  72. if ( FCKBrowserInfo.IsIE && FCKConfig.DocType.length > 0 && !FCKRegexLib.Html4DocType.test( FCKConfig.DocType ) )
  73. html += ' style="overflow-y: scroll"' ;
  74. html += '><head><title></title></head>' +
  75. '<body' + FCKConfig.GetBodyAttributes() + '>' +
  76. data +
  77. '</body></html>' ;
  78. return html ;
  79. }
  80. },
  81. /*
  82.  * Converts a DOM (sub-)tree to a string in the data format.
  83.  *     @param {Object} rootNode The node that contains the DOM tree to be
  84.  *            converted to the data format.
  85.  *     @param {Boolean} excludeRoot Indicates that the root node must not
  86.  *            be included in the conversion, only its children.
  87.  *     @param {Boolean} format Indicates that the data must be formatted
  88.  *            for human reading. Not all Data Processors may provide it.
  89.  */
  90. ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format )
  91. {
  92. var data = FCKXHtml.GetXHTML( rootNode, !excludeRoot, format ) ;
  93. if ( ignoreIfEmptyParagraph && FCKRegexLib.EmptyOutParagraph.test( data ) )
  94. return '' ;
  95. return data ;
  96. },
  97. /*
  98.  * Makes any necessary changes to a piece of HTML for insertion in the
  99.  * editor selection position.
  100.  *     @param {String} html The HTML to be fixed.
  101.  */
  102. FixHtml : function( html )
  103. {
  104. return html ;
  105. }
  106. } ;