Home directory for Malawi's wwwroot
Duncan Ewan
2021-02-19 3e758c29e0fde36fc088efcfc88f9a3014432b64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<cfcomponent output="false" displayname="FCKeditor" hint="Create an instance of the FCKeditor.">
 
<!---
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 * Copyright (C) 2003-2009 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 ==
 *
 * ColdFusion MX integration.
 * Note this CFC is created for use only with Coldfusion MX and above.
 * For older version, check the fckeditor.cfm.
 *
 * Syntax:
 *
 * <cfscript>
 *         fckEditor = createObject("component", "fckeditor.fckeditor");
 *         fckEditor.instanceName="myEditor";
 *         fckEditor.basePath="/fckeditor/";
 *         fckEditor.value="<p>This is my <strong>initial</strong> html text.</p>";
 *         fckEditor.width="100%";
 *         fckEditor.height="200";
 *          // ... additional parameters ...
 *         fckEditor.create(); // create instance now.
 * </cfscript>
 *
 * See your macromedia coldfusion mx documentation for more info.
 *
 * *** Note:
 * Do not use path names with a "." (dot) in the name. This is a coldfusion
 * limitation with the cfc invocation.
--->
 
<cfinclude template="fckutils.cfm">
 
<cffunction
    name="Create"
    access="public"
    output="true"
    returntype="void"
    hint="Outputs the editor HTML in the place where the function is called"
>
    <cfoutput>#CreateHtml()#</cfoutput>
</cffunction>
 
<cffunction
    name="CreateHtml"
    access="public"
    output="false"
    returntype="string"
    hint="Retrieves the editor HTML"
>
 
    <cfparam name="this.instanceName" type="string" />
    <cfparam name="this.width" type="string" default="100%" />
    <cfparam name="this.height" type="string" default="200" />
    <cfparam name="this.toolbarSet" type="string" default="Default" />
    <cfparam name="this.value" type="string" default="" />
    <cfparam name="this.basePath" type="string" default="/fckeditor/" />
    <cfparam name="this.checkBrowser" type="boolean" default="true" />
    <cfparam name="this.config" type="struct" default="#structNew()#" />
 
    <cfscript>
    // display the html editor or a plain textarea?
    if( isCompatible() )
        return getHtmlEditor();
    else
        return getTextArea();
    </cfscript>
 
</cffunction>
 
<cffunction
    name="isCompatible"
    access="private"
    output="false"
    returnType="boolean"
    hint="Check browser compatibility via HTTP_USER_AGENT, if checkBrowser is true"
>
 
    <cfscript>
    var sAgent = lCase( cgi.HTTP_USER_AGENT );
    var stResult = "";
    var sBrowserVersion = "";
 
    // do not check if argument "checkBrowser" is false
    if( not this.checkBrowser )
        return true;
 
    return FCKeditor_IsCompatibleBrowser();
    </cfscript>
</cffunction>
 
<cffunction
    name="getTextArea"
    access="private"
    output="false"
    returnType="string"
    hint="Create a textarea field for non-compatible browsers."
>
    <cfset var result = "" />
    <cfset var sWidthCSS = "" />
    <cfset var sHeightCSS = "" />
 
    <cfscript>
    if( Find( "%", this.width ) gt 0)
        sWidthCSS = this.width;
    else
        sWidthCSS = this.width & "px";
 
    if( Find( "%", this.width ) gt 0)
        sHeightCSS = this.height;
    else
        sHeightCSS = this.height & "px";
 
    result = "<textarea name=""#this.instanceName#"" rows=""4"" cols=""40"" style=""width: #sWidthCSS#; height: #sHeightCSS#"">#HTMLEditFormat(this.value)#</textarea>" & chr(13) & chr(10);
    </cfscript>
    <cfreturn result />
</cffunction>
 
<cffunction
    name="getHtmlEditor"
    access="private"
    output="false"
    returnType="string"
    hint="Create the html editor instance for compatible browsers."
>
    <cfset var sURL = "" />
    <cfset var result = "" />
 
    <cfscript>
    // try to fix the basePath, if ending slash is missing
    if( len( this.basePath) and right( this.basePath, 1 ) is not "/" )
        this.basePath = this.basePath & "/";
 
    // construct the url
    sURL = this.basePath & "editor/fckeditor.html?InstanceName=" & this.instanceName;
 
    // append toolbarset name to the url
    if( len( this.toolbarSet ) )
        sURL = sURL & "&amp;Toolbar=" & this.toolbarSet;
    </cfscript>
 
    <cfscript>
    result = result & "<input type=""hidden"" id=""#this.instanceName#"" name=""#this.instanceName#"" value=""#HTMLEditFormat(this.value)#"" style=""display:none"" />" & chr(13) & chr(10);
    result = result & "<input type=""hidden"" id=""#this.instanceName#___Config"" value=""#GetConfigFieldString()#"" style=""display:none"" />" & chr(13) & chr(10);
    result = result & "<iframe id=""#this.instanceName#___Frame"" src=""#sURL#"" width=""#this.width#"" height=""#this.height#"" frameborder=""0"" scrolling=""no""></iframe>" & chr(13) & chr(10);
    </cfscript>
    <cfreturn result />
</cffunction>
 
<cffunction
    name="GetConfigFieldString"
    access="private"
    output="false"
    returnType="string"
    hint="Create configuration string: Key1=Value1&Key2=Value2&... (Key/Value:HTML encoded)"
>
    <cfset var sParams = "" />
    <cfset var key = "" />
    <cfset var fieldValue = "" />
    <cfset var fieldLabel = "" />
    <cfset var lConfigKeys = "" />
    <cfset var iPos = "" />
 
    <cfscript>
    /**
     * CFML doesn't store casesensitive names for structure keys, but the configuration names must be casesensitive for js.
     * So we need to find out the correct case for the configuration keys.
     * We "fix" this by comparing the caseless configuration keys to a list of all available configuration options in the correct case.
     * changed 20041206 hk@lwd.de (improvements are welcome!)
     */
    lConfigKeys = lConfigKeys & "CustomConfigurationsPath,EditorAreaCSS,ToolbarComboPreviewCSS,DocType";
    lConfigKeys = lConfigKeys & ",BaseHref,FullPage,Debug,AllowQueryStringDebug,SkinPath";
    lConfigKeys = lConfigKeys & ",PreloadImages,PluginsPath,AutoDetectLanguage,DefaultLanguage,ContentLangDirection";
    lConfigKeys = lConfigKeys & ",ProcessHTMLEntities,IncludeLatinEntities,IncludeGreekEntities,ProcessNumericEntities,AdditionalNumericEntities";
    lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator";
    lConfigKeys = lConfigKeys & ",StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand";
    lConfigKeys = lConfigKeys & ",TabSpaces,ShowBorders,SourcePopup,ToolbarStartExpanded,ToolbarCanCollapse";
    lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox";
    lConfigKeys = lConfigKeys & ",ToolbarLocation,ToolbarSets,EnterMode,ShiftEnterMode,Keystrokes";
    lConfigKeys = lConfigKeys & ",ContextMenu,BrowserContextMenuOnCtrl,FontColors,FontNames,FontSizes";
    lConfigKeys = lConfigKeys & ",FontFormats,StylesXmlPath,TemplatesXmlPath,SpellChecker,IeSpellDownloadUrl";
    lConfigKeys = lConfigKeys & ",SpellerPagesServerScript,FirefoxSpellChecker,MaxUndoLevels,DisableObjectResizing,DisableFFTableHandles";
    lConfigKeys = lConfigKeys & ",LinkDlgHideTarget,LinkDlgHideAdvanced,ImageDlgHideLink,ImageDlgHideAdvanced,FlashDlgHideAdvanced";
    lConfigKeys = lConfigKeys & ",ProtectedTags,BodyId,BodyClass,DefaultLinkTarget,CleanWordKeepsStructure";
    lConfigKeys = lConfigKeys & ",LinkBrowser,LinkBrowserURL,LinkBrowserWindowWidth,LinkBrowserWindowHeight,ImageBrowser";
    lConfigKeys = lConfigKeys & ",ImageBrowserURL,ImageBrowserWindowWidth,ImageBrowserWindowHeight,FlashBrowser,FlashBrowserURL";
    lConfigKeys = lConfigKeys & ",FlashBrowserWindowWidth,FlashBrowserWindowHeight,LinkUpload,LinkUploadURL,LinkUploadWindowWidth";
    lConfigKeys = lConfigKeys & ",LinkUploadWindowHeight,LinkUploadAllowedExtensions,LinkUploadDeniedExtensions,ImageUpload,ImageUploadURL";
    lConfigKeys = lConfigKeys & ",ImageUploadAllowedExtensions,ImageUploadDeniedExtensions,FlashUpload,FlashUploadURL,FlashUploadAllowedExtensions";
    lConfigKeys = lConfigKeys & ",FlashUploadDeniedExtensions,SmileyPath,SmileyImages,SmileyColumns,SmileyWindowWidth,SmileyWindowHeight";
 
    for( key in this.config )
    {
        iPos = listFindNoCase( lConfigKeys, key );
        if( iPos GT 0 )
        {
            if( len( sParams ) )
                sParams = sParams & "&amp;";
 
            fieldValue = this.config[key];
            fieldName = listGetAt( lConfigKeys, iPos );
 
            // set all boolean possibilities in CFML to true/false values
            if( isBoolean( fieldValue) and fieldValue )
                fieldValue = "true";
            else if( isBoolean( fieldValue) )
                fieldValue = "false";
 
            sParams = sParams & HTMLEditFormat( fieldName ) & '=' & HTMLEditFormat( fieldValue );
        }
    }
    return sParams;
    </cfscript>
 
</cffunction>
 
</cfcomponent>