web/drupal/modules/fckeditor/fckeditor/fckeditor.cfm
branchdrupal
changeset 74 0ff3ba646492
equal deleted inserted replaced
73:fcf75e232c5b 74:0ff3ba646492
       
     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 & "&amp;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 & "&amp;";
       
   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">