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