fckeditor.asp
235 lines
| 6.4 KiB
| text/plain
|
TextLexer
|
r0 | <!-- | ||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net | ||||
* Copyright (C) 2003-2008 Frederico Caldeira Knabben | ||||
* | ||||
* == BEGIN LICENSE == | ||||
* | ||||
* Licensed under the terms of any of the following licenses at your | ||||
* choice: | ||||
* | ||||
* - GNU General Public License Version 2 or later (the "GPL") | ||||
* http://www.gnu.org/licenses/gpl.html | ||||
* | ||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") | ||||
* http://www.gnu.org/licenses/lgpl.html | ||||
* | ||||
* - Mozilla Public License Version 1.1 or later (the "MPL") | ||||
* http://www.mozilla.org/MPL/MPL-1.1.html | ||||
* | ||||
* == END LICENSE == | ||||
* | ||||
* This is the integration file for ASP. | ||||
* | ||||
* It defines the FCKeditor class that can be used to create editor | ||||
* instances in ASP pages on server side. | ||||
--> | ||||
<% | ||||
Class FCKeditor | ||||
private sBasePath | ||||
private sInstanceName | ||||
private sWidth | ||||
private sHeight | ||||
private sToolbarSet | ||||
private sValue | ||||
private oConfig | ||||
Private Sub Class_Initialize() | ||||
sBasePath = "/fckeditor/" | ||||
sWidth = "100%" | ||||
sHeight = "200" | ||||
sToolbarSet = "Default" | ||||
sValue = "" | ||||
Set oConfig = CreateObject("Scripting.Dictionary") | ||||
End Sub | ||||
Public Property Let BasePath( basePathValue ) | ||||
sBasePath = basePathValue | ||||
End Property | ||||
Public Property Let InstanceName( instanceNameValue ) | ||||
sInstanceName = instanceNameValue | ||||
End Property | ||||
Public Property Let Width( widthValue ) | ||||
sWidth = widthValue | ||||
End Property | ||||
Public Property Let Height( heightValue ) | ||||
sHeight = heightValue | ||||
End Property | ||||
Public Property Let ToolbarSet( toolbarSetValue ) | ||||
sToolbarSet = toolbarSetValue | ||||
End Property | ||||
Public Property Let Value( newValue ) | ||||
If ( IsNull( newValue ) OR IsEmpty( newValue ) ) Then | ||||
sValue = "" | ||||
Else | ||||
sValue = newValue | ||||
End If | ||||
End Property | ||||
Public Property Let Config( configKey, configValue ) | ||||
oConfig.Add configKey, configValue | ||||
End Property | ||||
' Generates the instace of the editor in the HTML output of the page. | ||||
Public Sub Create( instanceName ) | ||||
response.write CreateHtml( instanceName ) | ||||
end Sub | ||||
' Returns the html code that must be used to generate an instance of FCKeditor. | ||||
Public Function CreateHtml( instanceName ) | ||||
dim html | ||||
If IsCompatible() Then | ||||
Dim sFile, sLink | ||||
If Request.QueryString( "fcksource" ) = "true" Then | ||||
sFile = "fckeditor.original.html" | ||||
Else | ||||
sFile = "fckeditor.html" | ||||
End If | ||||
sLink = sBasePath & "editor/" & sFile & "?InstanceName=" + instanceName | ||||
If (sToolbarSet & "") <> "" Then | ||||
sLink = sLink + "&Toolbar=" & sToolbarSet | ||||
End If | ||||
html = "" | ||||
' Render the linked hidden field. | ||||
html = html & "<input type=""hidden"" id=""" & instanceName & """ name=""" & instanceName & """ value=""" & Server.HTMLEncode( sValue ) & """ style=""display:none"" />" | ||||
' Render the configurations hidden field. | ||||
html = html & "<input type=""hidden"" id=""" & instanceName & "___Config"" value=""" & GetConfigFieldString() & """ style=""display:none"" />" | ||||
' Render the editor IFRAME. | ||||
html = html & "<iframe id=""" & instanceName & "___Frame"" src=""" & sLink & """ width=""" & sWidth & """ height=""" & sHeight & """ frameborder=""0"" scrolling=""no""></iframe>" | ||||
Else | ||||
Dim sWidthCSS, sHeightCSS | ||||
If InStr( sWidth, "%" ) > 0 Then | ||||
sWidthCSS = sWidth | ||||
Else | ||||
sWidthCSS = sWidth & "px" | ||||
End If | ||||
If InStr( sHeight, "%" ) > 0 Then | ||||
sHeightCSS = sHeight | ||||
Else | ||||
sHeightCSS = sHeight & "px" | ||||
End If | ||||
html = "<textarea name=""" & instanceName & """ rows=""4"" cols=""40"" style=""width: " & sWidthCSS & "; height: " & sHeightCSS & """>" & Server.HTMLEncode( sValue ) & "</textarea>" | ||||
End If | ||||
CreateHtml = html | ||||
End Function | ||||
Private Function IsCompatible() | ||||
IsCompatible = FCKeditor_IsCompatibleBrowser() | ||||
End Function | ||||
Private Function GetConfigFieldString() | ||||
Dim sParams | ||||
Dim bFirst | ||||
bFirst = True | ||||
Dim sKey | ||||
For Each sKey in oConfig | ||||
If bFirst = False Then | ||||
sParams = sParams & "&" | ||||
Else | ||||
bFirst = False | ||||
End If | ||||
sParams = sParams & EncodeConfig( sKey ) & "=" & EncodeConfig( oConfig(sKey) ) | ||||
Next | ||||
GetConfigFieldString = sParams | ||||
End Function | ||||
Private Function EncodeConfig( valueToEncode ) | ||||
' The locale of the asp server makes the conversion of a boolean to string different to "true" or "false" | ||||
' so we must do it manually | ||||
If vartype(valueToEncode) = vbBoolean then | ||||
If valueToEncode=True Then | ||||
EncodeConfig="True" | ||||
Else | ||||
EncodeConfig="False" | ||||
End If | ||||
Else | ||||
EncodeConfig = Replace( valueToEncode, "&", "%26" ) | ||||
EncodeConfig = Replace( EncodeConfig , "=", "%3D" ) | ||||
EncodeConfig = Replace( EncodeConfig , """", "%22" ) | ||||
End if | ||||
End Function | ||||
End Class | ||||
' A function that can be used to check if the current browser is compatible with FCKeditor | ||||
' without the need to create an instance of the class. | ||||
Function FCKeditor_IsCompatibleBrowser() | ||||
Dim sAgent | ||||
sAgent = Request.ServerVariables("HTTP_USER_AGENT") | ||||
Dim iVersion | ||||
Dim re, Matches | ||||
If InStr(sAgent, "MSIE") > 0 AND InStr(sAgent, "mac") <= 0 AND InStr(sAgent, "Opera") <= 0 Then | ||||
iVersion = CInt( FCKeditor_ToNumericFormat( Mid(sAgent, InStr(sAgent, "MSIE") + 5, 3) ) ) | ||||
FCKeditor_IsCompatibleBrowser = ( iVersion >= 5.5 ) | ||||
ElseIf InStr(sAgent, "Gecko/") > 0 Then | ||||
iVersion = CLng( Mid( sAgent, InStr( sAgent, "Gecko/" ) + 6, 8 ) ) | ||||
FCKeditor_IsCompatibleBrowser = ( iVersion >= 20030210 ) | ||||
ElseIf InStr(sAgent, "Opera/") > 0 Then | ||||
iVersion = CSng( FCKeditor_ToNumericFormat( Mid( sAgent, InStr( sAgent, "Opera/" ) + 6, 4 ) ) ) | ||||
FCKeditor_IsCompatibleBrowser = ( iVersion >= 9.5 ) | ||||
ElseIf InStr(sAgent, "AppleWebKit/") > 0 Then | ||||
Set re = new RegExp | ||||
re.IgnoreCase = true | ||||
re.global = false | ||||
re.Pattern = "AppleWebKit/(\d+)" | ||||
Set Matches = re.Execute(sAgent) | ||||
FCKeditor_IsCompatibleBrowser = ( re.Replace(Matches.Item(0).Value, "$1") >= 522 ) | ||||
Else | ||||
FCKeditor_IsCompatibleBrowser = False | ||||
End If | ||||
End Function | ||||
' By Agrotic | ||||
' On ASP, when converting string to numbers, the number decimal separator is localized | ||||
' so 5.5 will not work on systems were the separator is "," and vice versa. | ||||
Private Function FCKeditor_ToNumericFormat( numberStr ) | ||||
If IsNumeric( "5.5" ) Then | ||||
FCKeditor_ToNumericFormat = Replace( numberStr, ",", ".") | ||||
Else | ||||
FCKeditor_ToNumericFormat = Replace( numberStr, ".", ",") | ||||
End If | ||||
End Function | ||||
%> | ||||