2007-12-17 18:58:19 +01:00
|
|
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
2008-04-15 14:15:22 +02:00
|
|
|
* Copyright (C) 2003-2008 Frederico Caldeira Knabben
|
2007-12-17 18:58:19 +01:00
|
|
|
*
|
|
|
|
* == 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 class definition file for the sample pages.
|
|
|
|
*
|
|
|
|
|
|
|
|
DEFINE CLASS fckeditor AS custom
|
|
|
|
cInstanceName =""
|
|
|
|
BasePath =""
|
|
|
|
cWIDTH =""
|
|
|
|
cHEIGHT =""
|
|
|
|
ToolbarSet =""
|
|
|
|
cValue=""
|
|
|
|
DIMENSION aConfig(10,2)
|
|
|
|
|
|
|
|
&& -----------------------------------------------------------------------
|
|
|
|
FUNCTION fckeditor( tcInstanceName )
|
|
|
|
LOCAL lnLoop,lnLoop2
|
|
|
|
THIS.cInstanceName = tcInstanceName
|
|
|
|
THIS.BasePath = '../../../FCKeditor/'
|
|
|
|
THIS.cWIDTH = '100%'
|
|
|
|
THIS.cHEIGHT = '200'
|
|
|
|
THIS.ToolbarSet = 'Default'
|
|
|
|
THIS.cValue = ''
|
|
|
|
FOR lnLoop=1 TO 10
|
|
|
|
FOR lnLoop2=1 TO 2
|
|
|
|
THIS.aConfig(lnLoop,lnLoop2) = ""
|
|
|
|
NEXT
|
|
|
|
NEXT
|
|
|
|
RETURN
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
|
|
&& -----------------------------------------------------------------------
|
|
|
|
FUNCTION CREATE()
|
|
|
|
RETURN(THIS.CreateHtml())
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
&& -----------------------------------------------------------------------
|
|
|
|
FUNCTION CreateHtml()
|
|
|
|
LOCAL html
|
|
|
|
LOCAL lcLink
|
|
|
|
|
|
|
|
HtmlValue = THIS.cValue && HTMLSPECIALCHARS()
|
|
|
|
|
|
|
|
html = [<div>]
|
|
|
|
IF THIS.IsCompatible()
|
|
|
|
lcLink = THIS.BasePath+[editor/fckeditor.html?InstanceName=]+THIS.cInstanceName
|
|
|
|
|
|
|
|
IF ( !THIS.ToolbarSet == '' )
|
|
|
|
lcLink = lcLink + [&Toolbar=]+THIS.ToolbarSet
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
&& Render the LINKED HIDDEN FIELD.
|
|
|
|
html = html + [<input type="hidden" id="]+THIS.cInstanceName +[" name="]+THIS.cInstanceName +[" value="]+HtmlValue+[">]
|
|
|
|
|
|
|
|
&& Render the configurations HIDDEN FIELD.
|
|
|
|
html = html + [<input type="hidden" id="]+THIS.cInstanceName +[___Config" value="]+THIS.GetConfigFieldString() + [">] +CHR(13)+CHR(10)
|
|
|
|
|
|
|
|
&& Render the EDITOR IFRAME.
|
|
|
|
html = html + [<iframe id="]+THIS.cInstanceName +[___Frame" src="]+lcLink+[" width="]+THIS.cWIDTH+[" height="]+THIS.cHEIGHT+[" frameborder="no" scrolling="no"></iframe>]
|
|
|
|
ELSE
|
|
|
|
IF ( AT("%", THIS.cWIDTH)=0 )
|
|
|
|
WidthCSS = THIS.cWIDTH + 'px'
|
|
|
|
ELSE
|
|
|
|
WidthCSS = THIS.cWIDTH
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ( AT("%",THIS.cHEIGHT)=0 )
|
|
|
|
HeightCSS = THIS.cHEIGHT + 'px'
|
|
|
|
ELSE
|
|
|
|
HeightCSS = THIS.cHEIGHT
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
html = html + [<textarea name="]+THIS.cInstanceName +[" rows="4" cols="40" style="width: ]+WidthCSS+[ height: ]+HeightCSS+[" wrap="virtual">]+HtmlValue+[</textarea>]
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
html = html + [</div>]
|
|
|
|
|
|
|
|
RETURN (html)
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
|
|
&& -----------------------------------------------------------------------
|
|
|
|
FUNCTION IsCompatible()
|
|
|
|
LOCAL llRetval
|
|
|
|
LOCAL sAgent
|
|
|
|
|
|
|
|
llRetval=.F.
|
|
|
|
|
|
|
|
sAgent= LOWER(Request.ServerVariables("HTTP_USER_AGENT"))
|
|
|
|
|
|
|
|
IF AT("msie",sAgent) >0 .AND. AT("mac",sAgent)=0 .AND. AT("opera",sAgent)=0
|
|
|
|
iVersion=VAL(SUBSTR(sAgent,AT("msie",sAgent)+5,3))
|
|
|
|
llRetval= iVersion > 5.5
|
|
|
|
ELSE
|
|
|
|
IF AT("gecko",sAgent)>0
|
|
|
|
iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
|
|
|
|
llRetval =iVersion > 20030210
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
RETURN (llRetval)
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
&& -----------------------------------------------------------------------
|
|
|
|
FUNCTION GetConfigFieldString()
|
|
|
|
LOCAL sParams
|
|
|
|
LOCAL bFirst
|
|
|
|
LOCAL sKey
|
|
|
|
sParams = ""
|
|
|
|
bFirst = .T.
|
|
|
|
FOR lnLoop=1 TO 10 && ALEN(this.aconfig)
|
|
|
|
IF !EMPTY(THIS.aConfig(lnLoop,1))
|
|
|
|
IF bFirst = .F.
|
|
|
|
sParams = sParams + "&"
|
|
|
|
ELSE
|
|
|
|
bFirst = .F.
|
|
|
|
ENDIF
|
|
|
|
sParams = sParams +THIS.aConfig(lnLoop,1)+[=]+THIS.aConfig(lnLoop,2)
|
|
|
|
ELSE
|
|
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
NEXT
|
|
|
|
RETURN(sParams)
|
|
|
|
ENDFUNC
|
|
|
|
&& -----------------------------------------------------------------------
|
|
|
|
&& This function removes unwanted characters in URL parameters mostly entered by hackers
|
|
|
|
|
|
|
|
FUNCTION StripAttacks
|
|
|
|
LPARAMETERS tcString
|
|
|
|
IF !EMPTY(tcString)
|
|
|
|
tcString=STRTRAN(tcString,"&","")
|
|
|
|
tcString=STRTRAN(tcString,"?","")
|
|
|
|
tcString=STRTRAN(tcString,";","")
|
|
|
|
tcString=STRTRAN(tcString,"!","")
|
|
|
|
tcString=STRTRAN(tcString,"<%","")
|
|
|
|
tcString=STRTRAN(tcString,"%>","")
|
|
|
|
tcString=STRTRAN(tcString,"<","")
|
|
|
|
tcString=STRTRAN(tcString,">","")
|
|
|
|
tcString=STRTRAN(tcString,"..","")
|
|
|
|
tcString=STRTRAN(tcString,"/","")
|
|
|
|
tcString=STRTRAN(tcString,"\","")
|
|
|
|
tcString=STRTRAN(tcString,":","")
|
|
|
|
ELSE
|
|
|
|
tcString=""
|
|
|
|
ENDIF
|
|
|
|
RETURN (tcString)
|
|
|
|
|
|
|
|
ENDDEFINE
|