|
1 <cfsetting enablecfoutputonly="Yes"> |
|
2 <!--- |
|
3 * FCKeditor - The text editor for Internet - http://www.fckeditor.net |
|
4 * Copyright (C) 2003-2009 Frederico Caldeira Knabben |
|
5 * |
|
6 * == BEGIN LICENSE == |
|
7 * |
|
8 * Licensed under the terms of any of the following licenses at your |
|
9 * choice: |
|
10 * |
|
11 * - GNU General Public License Version 2 or later (the "GPL") |
|
12 * http://www.gnu.org/licenses/gpl.html |
|
13 * |
|
14 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
|
15 * http://www.gnu.org/licenses/lgpl.html |
|
16 * |
|
17 * - Mozilla Public License Version 1.1 or later (the "MPL") |
|
18 * http://www.mozilla.org/MPL/MPL-1.1.html |
|
19 * |
|
20 * == END LICENSE == |
|
21 * |
|
22 * ColdFusion integration. |
|
23 * Note this module is created for use with Coldfusion 4.52 and above. |
|
24 * For a cfc version for coldfusion mx check the fckeditor.cfc. |
|
25 * |
|
26 * Syntax: |
|
27 * |
|
28 * <cfmodule name="path/to/cfc/fckeditor" |
|
29 * instanceName="myEditor" |
|
30 * toolbarSet="..." |
|
31 * width="..." |
|
32 * height="..:" |
|
33 * value="..." |
|
34 * config="..." |
|
35 * > |
|
36 ---> |
|
37 <!--- :: |
|
38 * Attribute validation |
|
39 :: ---> |
|
40 <cfparam name="attributes.instanceName" type="string"> |
|
41 <cfparam name="attributes.width" type="string" default="100%"> |
|
42 <cfparam name="attributes.height" type="string" default="200"> |
|
43 <cfparam name="attributes.toolbarSet" type="string" default="Default"> |
|
44 <cfparam name="attributes.value" type="string" default=""> |
|
45 <cfparam name="attributes.basePath" type="string" default="/fckeditor/"> |
|
46 <cfparam name="attributes.checkBrowser" type="boolean" default="true"> |
|
47 <cfparam name="attributes.config" type="struct" default="#structNew()#"> |
|
48 <cfinclude template="fckutils.cfm"> |
|
49 |
|
50 <!--- :: |
|
51 * check browser compatibility via HTTP_USER_AGENT, if checkBrowser is true |
|
52 :: ---> |
|
53 |
|
54 <cfscript> |
|
55 if( attributes.checkBrowser ) |
|
56 { |
|
57 isCompatibleBrowser = FCKeditor_IsCompatibleBrowser(); |
|
58 } |
|
59 else |
|
60 { |
|
61 // If we should not check browser compatibility, assume true |
|
62 isCompatibleBrowser = true; |
|
63 } |
|
64 </cfscript> |
|
65 |
|
66 <cfif isCompatibleBrowser> |
|
67 |
|
68 <!--- :: |
|
69 * show html editor area for compatible browser |
|
70 :: ---> |
|
71 |
|
72 <cfscript> |
|
73 // try to fix the basePath, if ending slash is missing |
|
74 if( len( attributes.basePath) and right( attributes.basePath, 1 ) is not "/" ) |
|
75 attributes.basePath = attributes.basePath & "/"; |
|
76 |
|
77 // construct the url |
|
78 sURL = attributes.basePath & "editor/fckeditor.html?InstanceName=" & attributes.instanceName; |
|
79 |
|
80 // append toolbarset name to the url |
|
81 if( len( attributes.toolbarSet ) ) |
|
82 sURL = sURL & "&Toolbar=" & attributes.toolbarSet; |
|
83 |
|
84 // create configuration string: Key1=Value1&Key2=Value2&... (Key/Value:HTML encoded) |
|
85 |
|
86 /** |
|
87 * CFML doesn't store casesensitive names for structure keys, but the configuration names must be casesensitive for js. |
|
88 * So we need to find out the correct case for the configuration keys. |
|
89 * We "fix" this by comparing the caseless configuration keys to a list of all available configuration options in the correct case. |
|
90 * changed 20041206 hk@lwd.de (improvements are welcome!) |
|
91 */ |
|
92 lConfigKeys = ""; |
|
93 lConfigKeys = lConfigKeys & "CustomConfigurationsPath,EditorAreaCSS,ToolbarComboPreviewCSS,DocType"; |
|
94 lConfigKeys = lConfigKeys & ",BaseHref,FullPage,Debug,AllowQueryStringDebug,SkinPath"; |
|
95 lConfigKeys = lConfigKeys & ",PreloadImages,PluginsPath,AutoDetectLanguage,DefaultLanguage,ContentLangDirection"; |
|
96 lConfigKeys = lConfigKeys & ",ProcessHTMLEntities,IncludeLatinEntities,IncludeGreekEntities,ProcessNumericEntities,AdditionalNumericEntities"; |
|
97 lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator"; |
|
98 lConfigKeys = lConfigKeys & ",StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand"; |
|
99 lConfigKeys = lConfigKeys & ",TabSpaces,ShowBorders,SourcePopup,ToolbarStartExpanded,ToolbarCanCollapse"; |
|
100 lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox"; |
|
101 lConfigKeys = lConfigKeys & ",ToolbarLocation,ToolbarSets,EnterMode,ShiftEnterMode,Keystrokes"; |
|
102 lConfigKeys = lConfigKeys & ",ContextMenu,BrowserContextMenuOnCtrl,FontColors,FontNames,FontSizes"; |
|
103 lConfigKeys = lConfigKeys & ",FontFormats,StylesXmlPath,TemplatesXmlPath,SpellChecker,IeSpellDownloadUrl"; |
|
104 lConfigKeys = lConfigKeys & ",SpellerPagesServerScript,FirefoxSpellChecker,MaxUndoLevels,DisableObjectResizing,DisableFFTableHandles"; |
|
105 lConfigKeys = lConfigKeys & ",LinkDlgHideTarget ,LinkDlgHideAdvanced,ImageDlgHideLink ,ImageDlgHideAdvanced,FlashDlgHideAdvanced"; |
|
106 lConfigKeys = lConfigKeys & ",ProtectedTags,BodyId,BodyClass,DefaultLinkTarget,CleanWordKeepsStructure"; |
|
107 lConfigKeys = lConfigKeys & ",LinkBrowser,LinkBrowserURL,LinkBrowserWindowWidth,LinkBrowserWindowHeight,ImageBrowser"; |
|
108 lConfigKeys = lConfigKeys & ",ImageBrowserURL,ImageBrowserWindowWidth,ImageBrowserWindowHeight,FlashBrowser,FlashBrowserURL"; |
|
109 lConfigKeys = lConfigKeys & ",FlashBrowserWindowWidth ,FlashBrowserWindowHeight,LinkUpload,LinkUploadURL,LinkUploadWindowWidth"; |
|
110 lConfigKeys = lConfigKeys & ",LinkUploadWindowHeight,LinkUploadAllowedExtensions,LinkUploadDeniedExtensions,ImageUpload,ImageUploadURL"; |
|
111 lConfigKeys = lConfigKeys & ",ImageUploadAllowedExtensions,ImageUploadDeniedExtensions,FlashUpload,FlashUploadURL,FlashUploadAllowedExtensions"; |
|
112 lConfigKeys = lConfigKeys & ",FlashUploadDeniedExtensions,SmileyPath,SmileyImages,SmileyColumns,SmileyWindowWidth,SmileyWindowHeight"; |
|
113 |
|
114 sConfig = ""; |
|
115 |
|
116 for( key in attributes.config ) |
|
117 { |
|
118 iPos = listFindNoCase( lConfigKeys, key ); |
|
119 if( iPos GT 0 ) |
|
120 { |
|
121 if( len( sConfig ) ) |
|
122 sConfig = sConfig & "&"; |
|
123 |
|
124 fieldValue = attributes.config[key]; |
|
125 fieldName = listGetAt( lConfigKeys, iPos ); |
|
126 |
|
127 sConfig = sConfig & urlEncodedFormat( fieldName ) & '=' & urlEncodedFormat( fieldValue ); |
|
128 } |
|
129 } |
|
130 </cfscript> |
|
131 |
|
132 <cfoutput> |
|
133 <input type="hidden" id="#attributes.instanceName#" name="#attributes.instanceName#" value="#HTMLEditFormat(attributes.value)#" style="display:none" /> |
|
134 <input type="hidden" id="#attributes.instanceName#___Config" value="#sConfig#" style="display:none" /> |
|
135 <iframe id="#attributes.instanceName#___Frame" src="#sURL#" width="#attributes.width#" height="#attributes.height#" frameborder="0" scrolling="no"></iframe> |
|
136 </cfoutput> |
|
137 |
|
138 <cfelse> |
|
139 |
|
140 <!--- :: |
|
141 * show plain textarea for non compatible browser |
|
142 :: ---> |
|
143 |
|
144 <cfscript> |
|
145 // append unit "px" for numeric width and/or height values |
|
146 if( isNumeric( attributes.width ) ) |
|
147 attributes.width = attributes.width & "px"; |
|
148 if( isNumeric( attributes.height ) ) |
|
149 attributes.height = attributes.height & "px"; |
|
150 </cfscript> |
|
151 |
|
152 <!--- Fixed Bug ##1075166. hk@lwd.de 20041206 ---> |
|
153 <cfoutput> |
|
154 <textarea name="#attributes.instanceName#" rows="4" cols="40" style="WIDTH: #attributes.width#; HEIGHT: #attributes.height#">#HTMLEditFormat(attributes.value)#</textarea> |
|
155 </cfoutput> |
|
156 |
|
157 </cfif> |
|
158 |
|
159 <cfsetting enablecfoutputonly="No"><cfexit method="exittag"> |