1 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
2 * Copyright (C) 2003-2007 Frederico Caldeira Knabben
3 *
4 * == BEGIN LICENSE ==
5 *
6 * Licensed under the terms of any of the following licenses at your
7 * choice:
8 *
9 *  - GNU General Public License Version 2 or later (the "GPL")
10 *    http://www.gnu.org/licenses/gpl.html
11 *
12 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
13 *    http://www.gnu.org/licenses/lgpl.html
14 *
15 *  - Mozilla Public License Version 1.1 or later (the "MPL")
16 *    http://www.mozilla.org/MPL/MPL-1.1.html
17 *
18 * == END LICENSE ==
19 *
20 * This is the class definition file for the sample pages.
21 *
22
23 DEFINE CLASS fckeditor AS custom
24	cInstanceName =""
25	BasePath =""
26	cWIDTH =""
27	cHEIGHT =""
28	ToolbarSet =""
29	cValue=""
30	DIMENSION aConfig(10,2)
31
32&& -----------------------------------------------------------------------
33	FUNCTION fckeditor( tcInstanceName )
34		LOCAL lnLoop,lnLoop2
35		THIS.cInstanceName	= tcInstanceName
36		THIS.BasePath	= '../../../FCKeditor/'
37		THIS.cWIDTH		= '100%'
38		THIS.cHEIGHT	= '200'
39		THIS.ToolbarSet	= 'Default'
40		THIS.cValue		= ''
41		FOR lnLoop=1 TO 10
42			FOR lnLoop2=1 TO 2
43				THIS.aConfig(lnLoop,lnLoop2)	= ""
44			NEXT
45		NEXT
46		RETURN
47	ENDFUNC
48
49
50&& -----------------------------------------------------------------------
51	FUNCTION CREATE()
52		RETURN(THIS.CreateHtml())
53	ENDFUNC
54
55&& -----------------------------------------------------------------------
56	FUNCTION CreateHtml()
57		LOCAL html
58		LOCAL lcLink
59
60		HtmlValue = THIS.cValue		&& HTMLSPECIALCHARS()
61
62		html = [<div>]
63		IF THIS.IsCompatible()
64			lcLink = THIS.BasePath+[editor/fckeditor.html?InstanceName=]+THIS.cInstanceName
65
66			IF ( !THIS.ToolbarSet == '' )
67				lcLink = lcLink + [&Toolbar=]+THIS.ToolbarSet
68			ENDIF
69
70&& Render the LINKED HIDDEN FIELD.
71			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[" name="]+THIS.cInstanceName +[" value="]+HtmlValue+[">]
72
73&& Render the configurations HIDDEN FIELD.
74			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[___Config" value="]+THIS.GetConfigFieldString() + [">] +CHR(13)+CHR(10)
75
76&& Render the EDITOR IFRAME.
77			html = html + [<iframe id="]+THIS.cInstanceName +[___Frame" src="]+lcLink+[" width="]+THIS.cWIDTH+[" height="]+THIS.cHEIGHT+[" frameborder="no" scrolling="no"></iframe>]
78		ELSE
79			IF ( AT("%", THIS.cWIDTH)=0 )
80				WidthCSS = THIS.cWIDTH + 'px'
81			ELSE
82				WidthCSS = THIS.cWIDTH
83			ENDIF
84
85			IF ( AT("%",THIS.cHEIGHT)=0  )
86				HeightCSS = THIS.cHEIGHT + 'px'
87			ELSE
88				HeightCSS = THIS.cHEIGHT
89			ENDIF
90
91			html = html + [<textarea name="]+THIS.cInstanceName +[" rows="4" cols="40" style="width: ]+WidthCSS+[ height: ]+HeightCSS+[" wrap="virtual">]+HtmlValue+[</textarea>]
92		ENDIF
93
94		html = html + [</div>]
95
96		RETURN (html)
97	ENDFUNC
98
99
100&& -----------------------------------------------------------------------
101	FUNCTION IsCompatible()
102		LOCAL llRetval
103		LOCAL sAgent
104
105		llRetval=.F.
106
107		sAgent= LOWER(Request.ServerVariables("HTTP_USER_AGENT"))
108
109		IF AT("msie",sAgent) >0 .AND. AT("mac",sAgent)=0 .AND. AT("opera",sAgent)=0
110			iVersion=VAL(SUBSTR(sAgent,AT("msie",sAgent)+5,3))
111			llRetval= iVersion > 5.5
112		ELSE
113			IF AT("gecko",sAgent)>0
114				iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
115				llRetval =iVersion > 20030210
116			ENDIF
117		ENDIF
118		RETURN (llRetval)
119	ENDFUNC
120
121&& -----------------------------------------------------------------------
122	FUNCTION GetConfigFieldString()
123		LOCAL sParams
124		LOCAL bFirst
125		LOCAL sKey
126		sParams = ""
127		bFirst = .T.
128		FOR lnLoop=1 TO 10 && ALEN(this.aconfig)
129			IF !EMPTY(THIS.aConfig(lnLoop,1))
130				IF bFirst = .F.
131					sParams = sParams + "&"
132				ELSE
133					bFirst = .F.
134				ENDIF
135				sParams = sParams +THIS.aConfig(lnLoop,1)+[=]+THIS.aConfig(lnLoop,2)
136			ELSE
137				EXIT
138			ENDIF
139		NEXT
140		RETURN(sParams)
141	ENDFUNC
142&& -----------------------------------------------------------------------
143&& This function removes unwanted characters in URL parameters mostly entered by hackers
144
145	FUNCTION StripAttacks
146		LPARAMETERS tcString
147		IF !EMPTY(tcString)
148			tcString=STRTRAN(tcString,"&","")
149			tcString=STRTRAN(tcString,"?","")
150			tcString=STRTRAN(tcString,";","")
151			tcString=STRTRAN(tcString,"!","")
152			tcString=STRTRAN(tcString,"<%","")
153			tcString=STRTRAN(tcString,"%>","")
154			tcString=STRTRAN(tcString,"<","")
155			tcString=STRTRAN(tcString,">","")
156			tcString=STRTRAN(tcString,"..","")
157			tcString=STRTRAN(tcString,"/","")
158			tcString=STRTRAN(tcString,"\","")
159			tcString=STRTRAN(tcString,":","")
160		ELSE
161			tcString=""
162		ENDIF
163		RETURN (tcString)
164
165ENDDEFINE
166
167