fckeditor.asp
上传用户:dbstep
上传日期:2022-08-06
资源大小:2803k
文件大小:6k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

ASP/ASPX

  1. <!--
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2009 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.  * This is the integration file for ASP.
  22.  *
  23.  * It defines the FCKeditor class that can be used to create editor
  24.  * instances in ASP pages on server side.
  25. -->
  26. <%
  27. Class FCKeditor
  28. private sBasePath
  29. private sInstanceName
  30. private sWidth
  31. private sHeight
  32. private sToolbarSet
  33. private sValue
  34. private oConfig
  35. Private Sub Class_Initialize()
  36. sBasePath = "/fckeditor/"
  37. sWidth = "100%"
  38. sHeight = "200"
  39. sValue = ""
  40. Set oConfig = CreateObject("Scripting.Dictionary")
  41. End Sub
  42. Public Property Let BasePath( basePathValue )
  43. sBasePath = basePathValue
  44. End Property
  45. Public Property Let InstanceName( instanceNameValue )
  46. sInstanceName = instanceNameValue
  47. End Property
  48. Public Property Let Width( widthValue )
  49. sWidth = widthValue
  50. End Property
  51. Public Property Let Height( heightValue )
  52. sHeight = heightValue
  53. End Property
  54. Public Property Let ToolbarSet( toolbarSetValue )
  55. sToolbarSet = toolbarSetValue
  56. End Property
  57. Public Property Let Value( newValue )
  58. If ( IsNull( newValue ) OR IsEmpty( newValue ) ) Then
  59. sValue = ""
  60. Else
  61. sValue = newValue
  62. End If
  63. End Property
  64. Public Property Let Config( configKey, configValue )
  65. oConfig.Add configKey, configValue
  66. End Property
  67. ' Generates the instace of the editor in the HTML output of the page.
  68. Public Sub Create( instanceName )
  69. response.write CreateHtml( instanceName )
  70. end Sub
  71. ' Returns the html code that must be used to generate an instance of FCKeditor.
  72. Public Function CreateHtml( instanceName )
  73. dim html
  74. If IsCompatible() Then
  75. Dim sFile, sLink
  76. If Request.QueryString( "fcksource" ) = "true" Then
  77. sFile = "fckeditor.original.html"
  78. Else
  79. sFile = "fckeditor.html"
  80. End If
  81. sLink = sBasePath & "editor/" & sFile & "?InstanceName=" + instanceName
  82. If (sToolbarSet & "") <> "" Then
  83. sLink = sLink + "&amp;Toolbar=" & sToolbarSet
  84. End If
  85. html = ""
  86. ' Render the linked hidden field.
  87. html = html & "<input type=""hidden"" id=""" & instanceName & """ name=""" & instanceName & """ value=""" & Server.HTMLEncode( sValue ) & """ style=""display:none"" />"
  88. ' Render the configurations hidden field.
  89. html = html & "<input type=""hidden"" id=""" & instanceName & "___Config"" value=""" & GetConfigFieldString() & """ style=""display:none"" />"
  90. ' Render the editor IFRAME.
  91. html = html & "<iframe id=""" & instanceName & "___Frame"" src=""" & sLink & """ width=""" & sWidth & """ height=""" & sHeight & """ frameborder=""0"" scrolling=""no""></iframe>"
  92. Else
  93. Dim sWidthCSS, sHeightCSS
  94. If InStr( sWidth, "%" ) > 0  Then
  95. sWidthCSS = sWidth
  96. Else
  97. sWidthCSS = sWidth & "px"
  98. End If
  99. If InStr( sHeight, "%" ) > 0  Then
  100. sHeightCSS = sHeight
  101. Else
  102. sHeightCSS = sHeight & "px"
  103. End If
  104. html = "<textarea name=""" & instanceName & """ rows=""4"" cols=""40"" style=""width: " & sWidthCSS & "; height: " & sHeightCSS & """>" & Server.HTMLEncode( sValue ) & "</textarea>"
  105. End If
  106. CreateHtml = html
  107. End Function
  108. Private Function IsCompatible()
  109. IsCompatible = FCKeditor_IsCompatibleBrowser()
  110. End Function
  111. Private Function GetConfigFieldString()
  112. Dim sParams
  113. Dim bFirst
  114. bFirst = True
  115. Dim sKey
  116. For Each sKey in oConfig
  117. If bFirst = False Then
  118. sParams = sParams & "&amp;"
  119. Else
  120. bFirst = False
  121. End If
  122. sParams = sParams & EncodeConfig( sKey ) & "=" & EncodeConfig( oConfig(sKey) )
  123. Next
  124. GetConfigFieldString = sParams
  125. End Function
  126. Private Function EncodeConfig( valueToEncode )
  127. ' The locale of the asp server makes the conversion of a boolean to string different to "true" or "false"
  128. ' so we must do it manually
  129.     If vartype(valueToEncode) = vbBoolean then
  130. If valueToEncode=True Then
  131. EncodeConfig="True"
  132. Else
  133. EncodeConfig="False"
  134. End If
  135. Else
  136. EncodeConfig = Replace( valueToEncode, "&", "%26" )
  137. EncodeConfig = Replace( EncodeConfig , "=", "%3D" )
  138. EncodeConfig = Replace( EncodeConfig , """", "%22" )
  139. End if
  140. End Function
  141. End Class
  142. ' A function that can be used to check if the current browser is compatible with FCKeditor
  143. ' without the need to create an instance of the class.
  144. Function FCKeditor_IsCompatibleBrowser()
  145. Dim sAgent
  146. sAgent = Request.ServerVariables("HTTP_USER_AGENT")
  147. Dim iVersion
  148. Dim re, Matches
  149. If InStr(sAgent, "MSIE") > 0 AND InStr(sAgent, "mac") <= 0  AND InStr(sAgent, "Opera") <= 0 Then
  150. iVersion = CInt( FCKeditor_ToNumericFormat( Mid(sAgent, InStr(sAgent, "MSIE") + 5, 3) ) )
  151. FCKeditor_IsCompatibleBrowser = ( iVersion >= 5.5 )
  152. ElseIf InStr(sAgent, "Gecko/") > 0 Then
  153. iVersion = CLng( Mid( sAgent, InStr( sAgent, "Gecko/" ) + 6, 8 ) )
  154. FCKeditor_IsCompatibleBrowser = ( iVersion >= 20030210 )
  155. ElseIf InStr(sAgent, "Opera/") > 0 Then
  156. iVersion = CSng( FCKeditor_ToNumericFormat( Mid( sAgent, InStr( sAgent, "Opera/" ) + 6, 4 ) ) )
  157. FCKeditor_IsCompatibleBrowser = ( iVersion >= 9.5 )
  158. ElseIf InStr(sAgent, "AppleWebKit/") > 0 Then
  159. Set re = new RegExp
  160. re.IgnoreCase = true
  161. re.global = false
  162. re.Pattern = "AppleWebKit/(d+)"
  163. Set Matches = re.Execute(sAgent)
  164. FCKeditor_IsCompatibleBrowser = ( re.Replace(Matches.Item(0).Value, "$1") >= 522 )
  165. Else
  166. FCKeditor_IsCompatibleBrowser = False
  167. End If
  168. End Function
  169. ' By Agrotic
  170. ' On ASP, when converting string to numbers, the number decimal separator is localized
  171. ' so 5.5 will not work on systems were the separator is "," and vice versa.
  172. Private Function FCKeditor_ToNumericFormat( numberStr )
  173. If IsNumeric( "5.5" ) Then
  174. FCKeditor_ToNumericFormat = Replace( numberStr, ",", ".")
  175. Else
  176. FCKeditor_ToNumericFormat = Replace( numberStr, ".", ",")
  177. End If
  178. End Function
  179. %>