PageRenderTime 21ms CodeModel.GetById 12ms app.highlight 5ms RepoModel.GetById 2ms app.codeStats 0ms

/pigeoncms/Plugins/fckeditor/fckeditor.asp

http://pigeoncms.googlecode.com/
ASP | 235 lines | 168 code | 55 blank | 12 comment | 4 complexity | 5e246b62cfe77e12a4162139e5e49bc1 MD5 | raw file
  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<%
 27Class 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 + "&amp;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 & "&amp;"
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
185End 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.
190Function 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
219End 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.
225Private 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
233End Function
234
235%>