<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://docs-old.ckeditor.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mosipov</id>
		<title>CKSource Docs - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://docs-old.ckeditor.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mosipov"/>
		<link rel="alternate" type="text/html" href="https://docs-old.ckeditor.com/Special:Contributions/Mosipov"/>
		<updated>2026-04-27T05:32:08Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Server_Side_Integration&amp;diff=2321</id>
		<title>FCKeditor 2.x/Developers Guide/Server Side Integration</title>
		<link rel="alternate" type="text/html" href="https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Server_Side_Integration&amp;diff=2321"/>
				<updated>2008-10-19T13:09:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mosipov: Added encoding.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server Side Integration ==&lt;br /&gt;
&lt;br /&gt;
This document offers some guidelines that must be considered when developing server side integration for FCKeditor (alias Server Side Integration Pack). There are a few points of integration that every server side technology should have to be completely ready for FCKeditor. These are the main features:&lt;br /&gt;
&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#FCKeditor Creator|FCKeditor Creator]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#File Browser Connector|File Browser Connector]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#Quick Uploader|Quick Uploader]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#Samples|Samples]]&lt;br /&gt;
&lt;br /&gt;
This document will present the basic (minimum) features the integration must accomplish to. Any other feature is a welcome surplus. The scope of this document is to provide a generic pattern in the way the editor can have a homogeneous programming style even when being used from different languages.&lt;br /&gt;
&lt;br /&gt;
== FCKeditor Creator ==&lt;br /&gt;
&lt;br /&gt;
This is the main integration feature needed. It makes it possible to create an instance of FCKeditor in a page using the desired server side language. Object oriented programming (OOP) should be used wherever is possible. The Integration Pack should offer this functionality to the end user programmer:&lt;br /&gt;
* Editor Instance Creation&lt;br /&gt;
* Configuration and Settings&lt;br /&gt;
* Automatic Browser Compatibility Detection:&lt;br /&gt;
** Output HTML of the editor IFRAME for compatible browsers.&lt;br /&gt;
** Output HTML of a simple TEXTAREA for not compatible browsers. &lt;br /&gt;
&lt;br /&gt;
Suppose the editor instance is called &amp;quot;MyEditor&amp;quot;. For compatible browsers the Integration Pack should output HTML like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; id=&amp;quot;MyEditor&amp;quot; name=&amp;quot;MyEditor&amp;quot; value=&amp;quot;initial value (HTML encoded) &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; id=&amp;quot;MyEditor___Config&amp;quot; value=&amp;quot;Key1=Value1&amp;amp;Key2=Value2&amp;amp;... (Key/Value:HTML encoded)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;MyEditor___Frame&amp;quot; src=&amp;quot;/FCKeditor/editor/fckeditor.html?InstanceName=MyEditor&amp;amp;Toolbar=Default&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;200&amp;quot; frameborder=&amp;quot;no&amp;quot; scrolling=&amp;quot;no&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
While non compatible browsers should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;textarea name=&amp;quot;MyEditor&amp;quot; rows=&amp;quot;4&amp;quot; cols=&amp;quot;40&amp;quot; style=&amp;quot;WIDTH: 100%; HEIGHT: 200px&amp;quot; wrap=&amp;quot;virtual&amp;quot;&amp;gt;initial value (HTML encoded)&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== FCKeditor Class ===&lt;br /&gt;
&lt;br /&gt;
The Integration pack should usually offer a main class, called &amp;quot;FCKeditor&amp;quot;, in a file called &amp;quot;fckeditor.ext&amp;quot; placed in the root of the editor's distribution package. To be able to use the class the end user should just include a &amp;quot;link&amp;quot; to that file and then easily create an instance of it. Obviously this is the common scenario for scripting languages. Other languages should just reflect this behaviour in the best way possible.&lt;br /&gt;
&lt;br /&gt;
This is the basic structure of the FCKeditor Class:&lt;br /&gt;
* '''Constructor'''&lt;br /&gt;
** FCKeditor( instanceName ) &lt;br /&gt;
* '''Properties'''&lt;br /&gt;
** InstanceName&lt;br /&gt;
** Width&lt;br /&gt;
** Height&lt;br /&gt;
** ToolbarSet&lt;br /&gt;
** Value&lt;br /&gt;
** BasePath &lt;br /&gt;
* '''Collections'''&lt;br /&gt;
** Config (Only if possible to use collections) &lt;br /&gt;
* '''Methods'''&lt;br /&gt;
** Create()&lt;br /&gt;
** CreateHtml() - return the HTML code to generate create the editor (if you don't want to Create it directly)&lt;br /&gt;
** SetConfig( key, value ) (Only when not possible to use collections)&lt;br /&gt;
he implementation should be based on the Javascript implementation (see fckeditor.js file). See &amp;quot;[[FCKeditor 2.x/Developers Guide/Integration/JavaScript|JavaScript Integration]]&amp;quot; for a complete explanation of the class elements.&lt;br /&gt;
&lt;br /&gt;
== File Browser Connector ==&lt;br /&gt;
&lt;br /&gt;
The editor gives the end user the flexibility to create a custom file browser that can be integrated with it. This is a powerful feature, because every case is a different case and so different and specific problems must be solved. In any case, the editor package offers a default implementation of the File Browser so the user has a ready to use software without having to develop anything.&lt;br /&gt;
&lt;br /&gt;
On prior versions, a sample File Browser was available for each server side technology supported by the editor. The problem with that approach was that each sample had a different implementation and worked completely different from each other. And worst, on some of them were really poor.&lt;br /&gt;
&lt;br /&gt;
To solve those problems the current version offers a '''unique interface''' that can be used by all server side languages. The interface was developed completely on Javascript DHTML and the integration is available by '''XML'''. In this way the developer that wants to integrate with it doesn't have to be worried about the presentation layer of it.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
&lt;br /&gt;
The following image shows how the File Browser Integration works:&lt;br /&gt;
&lt;br /&gt;
[[Image:FCKeditor FileBrowserConnector.gif|Image:FCKeditor_FileBrowserConnector.gif]]&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Connector&amp;quot; is the main file to be developed in this case regarding the server side integration with the File Browser. The following tasks must be done by the Connector:&lt;br /&gt;
&lt;br /&gt;
* Receive the File Manager requests.&lt;br /&gt;
* Execute operations in the File System, like folder and files creations and listings.&lt;br /&gt;
* Build the XML response in the right format and syntax.&lt;br /&gt;
* Receive and handle file uploads from the File Browser.&lt;br /&gt;
&lt;br /&gt;
=== File Browser Requests ===&lt;br /&gt;
&lt;br /&gt;
All requests are simply made by the File Browser using the normal HTTP channel. The request info is always passed by QueryString in the URL that uses the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;connector.ext?Command=CommandName&amp;amp;amp;Type=ResourceType&amp;amp;amp;CurrentFolder=FolderPath&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* '''CommandName''' - is the command the Connector must execute. For now there are four commands that must be handled: &amp;quot;GetFolders&amp;quot;, &amp;quot;GetFoldersAndFiles&amp;quot;, &amp;quot;CreateFolder&amp;quot; and &amp;quot;FileUpload&amp;quot;.&lt;br /&gt;
* '''ResourceType''' - the File Browser is used on many parts of the editor, like the Link and Image dialog boxes and in the future Flash and Multimedia dialogs. So to separate each &amp;quot;Resource Type&amp;quot; the following type names are used: &amp;quot;File&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Flash&amp;quot; and &amp;quot;Media&amp;quot;.&lt;br /&gt;
* '''FolderPath''' - represents the path of the current folder visible in the File Browser. This path is not the final URL path for that folder, but it is relative to the Resource Type folder. The final folder is composed by: &amp;quot;Configured User Files Path&amp;quot; + &amp;quot;Resource Type&amp;quot; + &amp;quot;Folder Path&amp;quot;. For example, the Folder Path &amp;quot;/Docs/Test/&amp;quot; of resources type &amp;quot;Image&amp;quot; could correspond to the following URL path: &amp;quot;/UserFiles/Image/Docs/Test/&amp;quot;. &lt;br /&gt;
** The Folder Path must begin and finish with a slash (&amp;quot;/&amp;quot;). If those slashes are missing, the server connector must append them before processing the request.&amp;lt;br&amp;gt;&lt;br /&gt;
** The developer is encouraged to make an easy and secure way to configure the &amp;quot;Server Path&amp;quot; folder available to the end user. For example, for the ASP.NET Connector the user can use the global Web.config file to set which folder to use. The default key for this is &amp;quot;FCKeditor:UserFilesPath&amp;quot;. In case of absent configuration the Connector must use the &amp;quot;/userfiles/&amp;quot; folder. The Connector should also automatically create the folder if it doesn't already exist.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': Please try to let any configuration setting to be done outside the editor package directory. In this way it is easy to the end user to handle future editor updates (just replacing the entire directory with the new version).&lt;br /&gt;
&lt;br /&gt;
=== Connector Responses  ===&lt;br /&gt;
&lt;br /&gt;
All Connector responses have the same base XML structure, like this: &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;amp;nbsp;?&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;Connector command=&amp;quot;RequestedCommandName&amp;quot; resourceType=&amp;quot; RequestedResourceType&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;CurrentFolder path=&amp;quot;CurrentFolderPath&amp;quot; url=&amp;quot;CurrentFolderUrl&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Error number=&amp;quot;ErrorNumber&amp;quot; text=&amp;quot;CustomErrorMessage&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- Here goes all specific command data --&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/Connector&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Some important things must be considered when building the response: &lt;br /&gt;
&lt;br /&gt;
*The response encoding must be set to &amp;quot;application/xml&amp;quot; and UTF-8. &lt;br /&gt;
*The &amp;quot;Cache-Control&amp;quot; HTTP header must be set to &amp;quot;no-cache&amp;quot;. This is needed because the browsers usually cache the requests for XML files and this is not wanted in this case. &lt;br /&gt;
*The Path and the URL must always start and finish with a slash (/).&lt;br /&gt;
&lt;br /&gt;
=== Error Messages ===&lt;br /&gt;
&lt;br /&gt;
The value of the &amp;quot;number&amp;quot; attribute of the &amp;amp;lt;error&amp;amp;gt; tag is always checked when receiving response. The data is processed only if the &amp;quot;ErrorNumber&amp;quot; value is equals to &amp;quot;0&amp;quot; (zero). Any other value will popup an error message box to the user.&lt;br /&gt;
&lt;br /&gt;
Each command may implement its set of default errors based on the number. For example the &amp;quot;CreateFolder&amp;quot; command sends a &amp;quot;101&amp;quot; error if the folder already exists.&lt;br /&gt;
&lt;br /&gt;
The special error number &amp;quot;1&amp;quot; (one) is reserved for &amp;quot;custom error messages&amp;quot;. When processing this error, the File Browser will look for the value of the &amp;quot;text&amp;quot; attribute of the &amp;amp;lt;error&amp;amp;gt; tag and show and alert box with that text.&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommended to the connectors to not be active by default, but to use some configuration system for its activation. In this way we can prevent the use of the connector by others (hackers) on cases were the user doesn't even know that connectors exist. For this, we recommend the connectors implementations to return a custom error message with more information regarding it. Something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;amp;nbsp;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;Connector&amp;amp;gt;&amp;amp;lt;Error number=&amp;quot;1&amp;quot; text=&amp;quot;This connector is disabled. Please check the &amp;quot;editor/filemanager/browser/default/connectors/php/config.php&amp;quot; file&amp;quot; /&amp;amp;gt;&amp;amp;lt;/Connector&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== The Commands ===&lt;br /&gt;
&lt;br /&gt;
The current File Browser version has 3 commands that wait for XML responses and 1 command that waits for HTML.&lt;br /&gt;
&lt;br /&gt;
==== GetFolders (XML) ====&lt;br /&gt;
&lt;br /&gt;
Gets the list of the children folders of a folder.&lt;br /&gt;
&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;connector.ext?Command=GetFolders&amp;amp;amp;Type=File&amp;amp;amp;CurrentFolder=/Samples/Docs/&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Sample response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;amp;nbsp;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;Connector command=&amp;quot;GetFolders&amp;quot; resourceType=&amp;quot;File&amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;CurrentFolder path=&amp;quot;/Samples/Docs/&amp;quot; url=&amp;quot;/UserFiles/File/Samples/Docs/&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;Folders&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Documents&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Files&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Other Files&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Related&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/Folders&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/Connector&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GetFoldersAndFiles (XML) ====&lt;br /&gt;
&lt;br /&gt;
Gets the list of the children folders and files of a folder.&lt;br /&gt;
&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;connector.ext?Command=GetFoldersAndFiles&amp;amp;amp;Type=File&amp;amp;amp;CurrentFolder=/Samples/Docs/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sample response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Connector command=&amp;quot;GetFoldersAndFiles&amp;quot; resourceType=&amp;quot;File&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;CurrentFolder path=&amp;quot;/Samples/Docs/&amp;quot; url=&amp;quot;/UserFiles/File/Samples/Docs/&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Folders&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Documents&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Files&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Other Files&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Related&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Folders&amp;gt;&lt;br /&gt;
    &amp;lt;Files&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;XML Definition.doc&amp;quot; size=&amp;quot;14&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;Samples.txt&amp;quot; size=&amp;quot;5&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;Definition.txt&amp;quot; size=&amp;quot;125&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;External Resources.drw&amp;quot; size=&amp;quot;840&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;Todo.txt&amp;quot; size=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Files&amp;gt;&lt;br /&gt;
&amp;lt;/Connector&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The file size must be expressed as KBytes (KB).&lt;br /&gt;
&lt;br /&gt;
==== CreateFolder (XML)&amp;lt;br&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Creates a child folder.&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
connector.ext?Command=CreateFolder&amp;amp;Type=File&amp;amp;CurrentFolder=/Samples/Docs/&amp;amp;NewFolderName=FolderName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Sample response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Connector command=&amp;quot;CreateFolder&amp;quot; resourceType=&amp;quot;File&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;CurrentFolder path=&amp;quot;/Samples/Docs/&amp;quot; url=&amp;quot;/UserFiles/File/Samples/Docs/&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Error number=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Connector&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Possible Error Numbers are:&lt;br /&gt;
* 0 : No Errors Found. The folder has been created.&lt;br /&gt;
* 101 : Folder already exists.&lt;br /&gt;
* 102 : Invalid folder name.&lt;br /&gt;
* 103 : You have no permissions to create the folder.&lt;br /&gt;
* 110 : Unknown error creating folder.&lt;br /&gt;
&lt;br /&gt;
==== FileUpload (HTML) ====&lt;br /&gt;
&lt;br /&gt;
Adds a file in a folder.&lt;br /&gt;
&lt;br /&gt;
This is a special command that doesn't require a XML response. A common &amp;quot;multipart/form-data&amp;quot; post goes with the request. The posted file is named &amp;quot;'''NewFile'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In the case a file with the same name already exists, the Connector must automatically rename it adding a progressive number suffix. For example, if the posted file is named &amp;quot;Test.doc&amp;quot;, the names to be used, in order, are: &amp;quot;Test(1).doc&amp;quot;, &amp;quot;Test(2).doc&amp;quot;, Test(3).doc&amp;quot;... and so on.&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
connector.ext?Command=FileUpload&amp;amp;Type=File&amp;amp;CurrentFolder=/Samples/Docs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Sample response (simple HTML):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.parent.OnUploadCompleted( 'ErrorNumber', 'FileUrl', 'FileName', 'CustomMessage' ) ;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;quot;OnUploadCompleted&amp;quot; is a JavaScript function that is called to expose the upload result. The possible values are:&lt;br /&gt;
* OnUploadCompleted( 0 ) : no errors found on the upload process.&lt;br /&gt;
* OnUploadCompleted( 1, , , 'Reason' ) : the upload filed because of &amp;quot;Reason&amp;quot;.&lt;br /&gt;
* OnUploadCompleted( 201, ,'FileName(1).ext' ) : the file has been uploaded successfully, but its name has been changed to &amp;quot;FileName(1).ext&amp;quot;.&lt;br /&gt;
* OnUploadCompleted( 202 ) : invalid file.&lt;br /&gt;
&lt;br /&gt;
=== Configuring the Connector ===&lt;br /&gt;
&lt;br /&gt;
All connectors available in the editor package can be found at the following folder: &amp;quot;editor/filemanager/connectors&amp;quot;. Each server side language has its own folder there, with the Connector file inside it. To choose which connector to use, the end-user just edits the configuration file '''fckconfig.js''' or the custom [[FCKeditor 2.x/Developers Guide/Configuration/Configuration File|Configuration File]] and modifies the following key (in this case for the Link Dialog box in PHP):&lt;br /&gt;
&amp;lt;pre&amp;gt;FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=../../connectors/php/connector.php&amp;amp;nbsp;;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
The user can even write his custom Connector and point the LinkBrowserURL to it, like &amp;quot;?Connector=/MyFolder/MyConnector.php&amp;quot; for example. See:&lt;br /&gt;
&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/LinkBrowserURL|LinkBrowserURL]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/ImageBrowserURL|ImageBrowserURL]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/FlashBrowserURL|FlashBrowserURL]]&lt;br /&gt;
&lt;br /&gt;
for further information&lt;br /&gt;
&lt;br /&gt;
== Quick Uploader ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Image Properties&amp;quot;, &amp;quot;Link Properties&amp;quot; and &amp;quot;Flash Properties&amp;quot; dialog windows provide a way to quickly upload a file to the server. This feature works much like the &amp;quot;FileUpload&amp;quot; command of the File Browser Connector.&lt;br /&gt;
&lt;br /&gt;
The implementation must provide a URL where the editor will POST the file to be uploaded. The &amp;quot;Uploader&amp;quot; will them process the file, making the necessary security checks, and return a simple &amp;quot;HTML&amp;quot; with a script that confirms the upload success or failure. The posted file is named &amp;quot;'''NewFile'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Uploader&amp;quot; must return a simple &amp;lt;script&amp;gt; tag with a script that calls the &amp;quot;window.parent.OnUploadCompleted&amp;quot; function. This is the response template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    window.parent.OnUploadCompleted( 'ErrorNumber', 'FileUrl', 'FileName', 'CustomMessage' );&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;quot;OnUploadCompleted&amp;quot; function expects the following parameters:&lt;br /&gt;
* '''ErrorNumber''': indicates the success or failure of the upload processing. The following values are valid:&lt;br /&gt;
** 0: File sucessfuly uploade.&lt;br /&gt;
** 1: Custom error. In this case the &amp;quot;CustomMessage&amp;quot; parameter value is displayed to the user in an alert box.&lt;br /&gt;
** 201: The file has been successfully uploaded, but a file with the same name already exists. So the file has been renamed to the value present in the &amp;quot;FileName&amp;quot; parameter.&lt;br /&gt;
** 202: Invalid file type (usually for security reason).&lt;br /&gt;
** 203: Not enough permission to write in the server.&lt;br /&gt;
* '''FileUrl''': the final URL to load the uploaded file.&lt;br /&gt;
* '''FileName''': see the error number &amp;quot;201&amp;quot;.&lt;br /&gt;
* '''CustomMessage''': see the error number &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Samples ==&lt;br /&gt;
&lt;br /&gt;
The easiest way for the end user to understand how to use the editor is to see it in action. So it's important to make available samples that clearly show how to use it.&lt;br /&gt;
&lt;br /&gt;
The developers are invited to create samples similar to that available for the Javascript Integration Pack. Please take a look at the '''_samples/html''' folder. All files must be put together in a folder under the _samples folder.&lt;br /&gt;
&lt;br /&gt;
All samples should post the posted data to a single page that shows that data. The Javascript integration module uses an ASP file, called '''sampleposteddata.asp''', that does that (just because JavaScript doesn't handle posted data). That file can be used as a reference for a custom implementation. Please use the same file name, like sampleposteddata.ext.&lt;/div&gt;</summary>
		<author><name>Mosipov</name></author>	</entry>

	<entry>
		<id>https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Server_Side_Integration&amp;diff=2320</id>
		<title>FCKeditor 2.x/Developers Guide/Server Side Integration</title>
		<link rel="alternate" type="text/html" href="https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Server_Side_Integration&amp;diff=2320"/>
				<updated>2008-10-19T13:09:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mosipov: text/xml is a deprecated mime type =&amp;gt; application/xml&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Server Side Integration ==&lt;br /&gt;
&lt;br /&gt;
This document offers some guidelines that must be considered when developing server side integration for FCKeditor (alias Server Side Integration Pack). There are a few points of integration that every server side technology should have to be completely ready for FCKeditor. These are the main features:&lt;br /&gt;
&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#FCKeditor Creator|FCKeditor Creator]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#File Browser Connector|File Browser Connector]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#Quick Uploader|Quick Uploader]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Server Side Integration#Samples|Samples]]&lt;br /&gt;
&lt;br /&gt;
This document will present the basic (minimum) features the integration must accomplish to. Any other feature is a welcome surplus. The scope of this document is to provide a generic pattern in the way the editor can have a homogeneous programming style even when being used from different languages.&lt;br /&gt;
&lt;br /&gt;
== FCKeditor Creator ==&lt;br /&gt;
&lt;br /&gt;
This is the main integration feature needed. It makes it possible to create an instance of FCKeditor in a page using the desired server side language. Object oriented programming (OOP) should be used wherever is possible. The Integration Pack should offer this functionality to the end user programmer:&lt;br /&gt;
* Editor Instance Creation&lt;br /&gt;
* Configuration and Settings&lt;br /&gt;
* Automatic Browser Compatibility Detection:&lt;br /&gt;
** Output HTML of the editor IFRAME for compatible browsers.&lt;br /&gt;
** Output HTML of a simple TEXTAREA for not compatible browsers. &lt;br /&gt;
&lt;br /&gt;
Suppose the editor instance is called &amp;quot;MyEditor&amp;quot;. For compatible browsers the Integration Pack should output HTML like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; id=&amp;quot;MyEditor&amp;quot; name=&amp;quot;MyEditor&amp;quot; value=&amp;quot;initial value (HTML encoded) &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; id=&amp;quot;MyEditor___Config&amp;quot; value=&amp;quot;Key1=Value1&amp;amp;Key2=Value2&amp;amp;... (Key/Value:HTML encoded)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe id=&amp;quot;MyEditor___Frame&amp;quot; src=&amp;quot;/FCKeditor/editor/fckeditor.html?InstanceName=MyEditor&amp;amp;Toolbar=Default&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;200&amp;quot; frameborder=&amp;quot;no&amp;quot; scrolling=&amp;quot;no&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
While non compatible browsers should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;textarea name=&amp;quot;MyEditor&amp;quot; rows=&amp;quot;4&amp;quot; cols=&amp;quot;40&amp;quot; style=&amp;quot;WIDTH: 100%; HEIGHT: 200px&amp;quot; wrap=&amp;quot;virtual&amp;quot;&amp;gt;initial value (HTML encoded)&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== FCKeditor Class ===&lt;br /&gt;
&lt;br /&gt;
The Integration pack should usually offer a main class, called &amp;quot;FCKeditor&amp;quot;, in a file called &amp;quot;fckeditor.ext&amp;quot; placed in the root of the editor's distribution package. To be able to use the class the end user should just include a &amp;quot;link&amp;quot; to that file and then easily create an instance of it. Obviously this is the common scenario for scripting languages. Other languages should just reflect this behaviour in the best way possible.&lt;br /&gt;
&lt;br /&gt;
This is the basic structure of the FCKeditor Class:&lt;br /&gt;
* '''Constructor'''&lt;br /&gt;
** FCKeditor( instanceName ) &lt;br /&gt;
* '''Properties'''&lt;br /&gt;
** InstanceName&lt;br /&gt;
** Width&lt;br /&gt;
** Height&lt;br /&gt;
** ToolbarSet&lt;br /&gt;
** Value&lt;br /&gt;
** BasePath &lt;br /&gt;
* '''Collections'''&lt;br /&gt;
** Config (Only if possible to use collections) &lt;br /&gt;
* '''Methods'''&lt;br /&gt;
** Create()&lt;br /&gt;
** CreateHtml() - return the HTML code to generate create the editor (if you don't want to Create it directly)&lt;br /&gt;
** SetConfig( key, value ) (Only when not possible to use collections)&lt;br /&gt;
he implementation should be based on the Javascript implementation (see fckeditor.js file). See &amp;quot;[[FCKeditor 2.x/Developers Guide/Integration/JavaScript|JavaScript Integration]]&amp;quot; for a complete explanation of the class elements.&lt;br /&gt;
&lt;br /&gt;
== File Browser Connector ==&lt;br /&gt;
&lt;br /&gt;
The editor gives the end user the flexibility to create a custom file browser that can be integrated with it. This is a powerful feature, because every case is a different case and so different and specific problems must be solved. In any case, the editor package offers a default implementation of the File Browser so the user has a ready to use software without having to develop anything.&lt;br /&gt;
&lt;br /&gt;
On prior versions, a sample File Browser was available for each server side technology supported by the editor. The problem with that approach was that each sample had a different implementation and worked completely different from each other. And worst, on some of them were really poor.&lt;br /&gt;
&lt;br /&gt;
To solve those problems the current version offers a '''unique interface''' that can be used by all server side languages. The interface was developed completely on Javascript DHTML and the integration is available by '''XML'''. In this way the developer that wants to integrate with it doesn't have to be worried about the presentation layer of it.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
&lt;br /&gt;
The following image shows how the File Browser Integration works:&lt;br /&gt;
&lt;br /&gt;
[[Image:FCKeditor FileBrowserConnector.gif|Image:FCKeditor_FileBrowserConnector.gif]]&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Connector&amp;quot; is the main file to be developed in this case regarding the server side integration with the File Browser. The following tasks must be done by the Connector:&lt;br /&gt;
&lt;br /&gt;
* Receive the File Manager requests.&lt;br /&gt;
* Execute operations in the File System, like folder and files creations and listings.&lt;br /&gt;
* Build the XML response in the right format and syntax.&lt;br /&gt;
* Receive and handle file uploads from the File Browser.&lt;br /&gt;
&lt;br /&gt;
=== File Browser Requests ===&lt;br /&gt;
&lt;br /&gt;
All requests are simply made by the File Browser using the normal HTTP channel. The request info is always passed by QueryString in the URL that uses the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;connector.ext?Command=CommandName&amp;amp;amp;Type=ResourceType&amp;amp;amp;CurrentFolder=FolderPath&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* '''CommandName''' - is the command the Connector must execute. For now there are four commands that must be handled: &amp;quot;GetFolders&amp;quot;, &amp;quot;GetFoldersAndFiles&amp;quot;, &amp;quot;CreateFolder&amp;quot; and &amp;quot;FileUpload&amp;quot;.&lt;br /&gt;
* '''ResourceType''' - the File Browser is used on many parts of the editor, like the Link and Image dialog boxes and in the future Flash and Multimedia dialogs. So to separate each &amp;quot;Resource Type&amp;quot; the following type names are used: &amp;quot;File&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Flash&amp;quot; and &amp;quot;Media&amp;quot;.&lt;br /&gt;
* '''FolderPath''' - represents the path of the current folder visible in the File Browser. This path is not the final URL path for that folder, but it is relative to the Resource Type folder. The final folder is composed by: &amp;quot;Configured User Files Path&amp;quot; + &amp;quot;Resource Type&amp;quot; + &amp;quot;Folder Path&amp;quot;. For example, the Folder Path &amp;quot;/Docs/Test/&amp;quot; of resources type &amp;quot;Image&amp;quot; could correspond to the following URL path: &amp;quot;/UserFiles/Image/Docs/Test/&amp;quot;. &lt;br /&gt;
** The Folder Path must begin and finish with a slash (&amp;quot;/&amp;quot;). If those slashes are missing, the server connector must append them before processing the request.&amp;lt;br&amp;gt;&lt;br /&gt;
** The developer is encouraged to make an easy and secure way to configure the &amp;quot;Server Path&amp;quot; folder available to the end user. For example, for the ASP.NET Connector the user can use the global Web.config file to set which folder to use. The default key for this is &amp;quot;FCKeditor:UserFilesPath&amp;quot;. In case of absent configuration the Connector must use the &amp;quot;/userfiles/&amp;quot; folder. The Connector should also automatically create the folder if it doesn't already exist.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': Please try to let any configuration setting to be done outside the editor package directory. In this way it is easy to the end user to handle future editor updates (just replacing the entire directory with the new version).&lt;br /&gt;
&lt;br /&gt;
=== Connector Responses  ===&lt;br /&gt;
&lt;br /&gt;
All Connector responses have the same base XML structure, like this: &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;amp;nbsp;?&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;Connector command=&amp;quot;RequestedCommandName&amp;quot; resourceType=&amp;quot; RequestedResourceType&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;CurrentFolder path=&amp;quot;CurrentFolderPath&amp;quot; url=&amp;quot;CurrentFolderUrl&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Error number=&amp;quot;ErrorNumber&amp;quot; text=&amp;quot;CustomErrorMessage&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- Here goes all specific command data --&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/Connector&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Some important things must be considered when building the response: &lt;br /&gt;
&lt;br /&gt;
*The response encoding must be set to &amp;quot;application/xml&amp;quot;. &lt;br /&gt;
*The &amp;quot;Cache-Control&amp;quot; HTTP header must be set to &amp;quot;no-cache&amp;quot;. This is needed because the browsers usually cache the requests for XML files and this is not wanted in this case. &lt;br /&gt;
*The Path and the URL must always start and finish with a slash (/).&lt;br /&gt;
&lt;br /&gt;
=== Error Messages ===&lt;br /&gt;
&lt;br /&gt;
The value of the &amp;quot;number&amp;quot; attribute of the &amp;amp;lt;error&amp;amp;gt; tag is always checked when receiving response. The data is processed only if the &amp;quot;ErrorNumber&amp;quot; value is equals to &amp;quot;0&amp;quot; (zero). Any other value will popup an error message box to the user.&lt;br /&gt;
&lt;br /&gt;
Each command may implement its set of default errors based on the number. For example the &amp;quot;CreateFolder&amp;quot; command sends a &amp;quot;101&amp;quot; error if the folder already exists.&lt;br /&gt;
&lt;br /&gt;
The special error number &amp;quot;1&amp;quot; (one) is reserved for &amp;quot;custom error messages&amp;quot;. When processing this error, the File Browser will look for the value of the &amp;quot;text&amp;quot; attribute of the &amp;amp;lt;error&amp;amp;gt; tag and show and alert box with that text.&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommended to the connectors to not be active by default, but to use some configuration system for its activation. In this way we can prevent the use of the connector by others (hackers) on cases were the user doesn't even know that connectors exist. For this, we recommend the connectors implementations to return a custom error message with more information regarding it. Something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;amp;nbsp;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;Connector&amp;amp;gt;&amp;amp;lt;Error number=&amp;quot;1&amp;quot; text=&amp;quot;This connector is disabled. Please check the &amp;quot;editor/filemanager/browser/default/connectors/php/config.php&amp;quot; file&amp;quot; /&amp;amp;gt;&amp;amp;lt;/Connector&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== The Commands ===&lt;br /&gt;
&lt;br /&gt;
The current File Browser version has 3 commands that wait for XML responses and 1 command that waits for HTML.&lt;br /&gt;
&lt;br /&gt;
==== GetFolders (XML) ====&lt;br /&gt;
&lt;br /&gt;
Gets the list of the children folders of a folder.&lt;br /&gt;
&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;connector.ext?Command=GetFolders&amp;amp;amp;Type=File&amp;amp;amp;CurrentFolder=/Samples/Docs/&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Sample response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;amp;nbsp;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;Connector command=&amp;quot;GetFolders&amp;quot; resourceType=&amp;quot;File&amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;CurrentFolder path=&amp;quot;/Samples/Docs/&amp;quot; url=&amp;quot;/UserFiles/File/Samples/Docs/&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;Folders&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Documents&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Files&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Other Files&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;Folder name=&amp;quot;Related&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/Folders&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/Connector&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GetFoldersAndFiles (XML) ====&lt;br /&gt;
&lt;br /&gt;
Gets the list of the children folders and files of a folder.&lt;br /&gt;
&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;connector.ext?Command=GetFoldersAndFiles&amp;amp;amp;Type=File&amp;amp;amp;CurrentFolder=/Samples/Docs/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sample response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Connector command=&amp;quot;GetFoldersAndFiles&amp;quot; resourceType=&amp;quot;File&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;CurrentFolder path=&amp;quot;/Samples/Docs/&amp;quot; url=&amp;quot;/UserFiles/File/Samples/Docs/&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Folders&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Documents&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Files&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Other Files&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Folder name=&amp;quot;Related&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Folders&amp;gt;&lt;br /&gt;
    &amp;lt;Files&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;XML Definition.doc&amp;quot; size=&amp;quot;14&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;Samples.txt&amp;quot; size=&amp;quot;5&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;Definition.txt&amp;quot; size=&amp;quot;125&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;External Resources.drw&amp;quot; size=&amp;quot;840&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;File name=&amp;quot;Todo.txt&amp;quot; size=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Files&amp;gt;&lt;br /&gt;
&amp;lt;/Connector&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The file size must be expressed as KBytes (KB).&lt;br /&gt;
&lt;br /&gt;
==== CreateFolder (XML)&amp;lt;br&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Creates a child folder.&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
connector.ext?Command=CreateFolder&amp;amp;Type=File&amp;amp;CurrentFolder=/Samples/Docs/&amp;amp;NewFolderName=FolderName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Sample response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Connector command=&amp;quot;CreateFolder&amp;quot; resourceType=&amp;quot;File&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;CurrentFolder path=&amp;quot;/Samples/Docs/&amp;quot; url=&amp;quot;/UserFiles/File/Samples/Docs/&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Error number=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Connector&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Possible Error Numbers are:&lt;br /&gt;
* 0 : No Errors Found. The folder has been created.&lt;br /&gt;
* 101 : Folder already exists.&lt;br /&gt;
* 102 : Invalid folder name.&lt;br /&gt;
* 103 : You have no permissions to create the folder.&lt;br /&gt;
* 110 : Unknown error creating folder.&lt;br /&gt;
&lt;br /&gt;
==== FileUpload (HTML) ====&lt;br /&gt;
&lt;br /&gt;
Adds a file in a folder.&lt;br /&gt;
&lt;br /&gt;
This is a special command that doesn't require a XML response. A common &amp;quot;multipart/form-data&amp;quot; post goes with the request. The posted file is named &amp;quot;'''NewFile'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In the case a file with the same name already exists, the Connector must automatically rename it adding a progressive number suffix. For example, if the posted file is named &amp;quot;Test.doc&amp;quot;, the names to be used, in order, are: &amp;quot;Test(1).doc&amp;quot;, &amp;quot;Test(2).doc&amp;quot;, Test(3).doc&amp;quot;... and so on.&lt;br /&gt;
* Sample request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
connector.ext?Command=FileUpload&amp;amp;Type=File&amp;amp;CurrentFolder=/Samples/Docs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Sample response (simple HTML):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.parent.OnUploadCompleted( 'ErrorNumber', 'FileUrl', 'FileName', 'CustomMessage' ) ;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;quot;OnUploadCompleted&amp;quot; is a JavaScript function that is called to expose the upload result. The possible values are:&lt;br /&gt;
* OnUploadCompleted( 0 ) : no errors found on the upload process.&lt;br /&gt;
* OnUploadCompleted( 1, , , 'Reason' ) : the upload filed because of &amp;quot;Reason&amp;quot;.&lt;br /&gt;
* OnUploadCompleted( 201, ,'FileName(1).ext' ) : the file has been uploaded successfully, but its name has been changed to &amp;quot;FileName(1).ext&amp;quot;.&lt;br /&gt;
* OnUploadCompleted( 202 ) : invalid file.&lt;br /&gt;
&lt;br /&gt;
=== Configuring the Connector ===&lt;br /&gt;
&lt;br /&gt;
All connectors available in the editor package can be found at the following folder: &amp;quot;editor/filemanager/connectors&amp;quot;. Each server side language has its own folder there, with the Connector file inside it. To choose which connector to use, the end-user just edits the configuration file '''fckconfig.js''' or the custom [[FCKeditor 2.x/Developers Guide/Configuration/Configuration File|Configuration File]] and modifies the following key (in this case for the Link Dialog box in PHP):&lt;br /&gt;
&amp;lt;pre&amp;gt;FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=../../connectors/php/connector.php&amp;amp;nbsp;;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
The user can even write his custom Connector and point the LinkBrowserURL to it, like &amp;quot;?Connector=/MyFolder/MyConnector.php&amp;quot; for example. See:&lt;br /&gt;
&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/LinkBrowserURL|LinkBrowserURL]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/ImageBrowserURL|ImageBrowserURL]]&lt;br /&gt;
* [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/FlashBrowserURL|FlashBrowserURL]]&lt;br /&gt;
&lt;br /&gt;
for further information&lt;br /&gt;
&lt;br /&gt;
== Quick Uploader ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Image Properties&amp;quot;, &amp;quot;Link Properties&amp;quot; and &amp;quot;Flash Properties&amp;quot; dialog windows provide a way to quickly upload a file to the server. This feature works much like the &amp;quot;FileUpload&amp;quot; command of the File Browser Connector.&lt;br /&gt;
&lt;br /&gt;
The implementation must provide a URL where the editor will POST the file to be uploaded. The &amp;quot;Uploader&amp;quot; will them process the file, making the necessary security checks, and return a simple &amp;quot;HTML&amp;quot; with a script that confirms the upload success or failure. The posted file is named &amp;quot;'''NewFile'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Uploader&amp;quot; must return a simple &amp;lt;script&amp;gt; tag with a script that calls the &amp;quot;window.parent.OnUploadCompleted&amp;quot; function. This is the response template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    window.parent.OnUploadCompleted( 'ErrorNumber', 'FileUrl', 'FileName', 'CustomMessage' );&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;quot;OnUploadCompleted&amp;quot; function expects the following parameters:&lt;br /&gt;
* '''ErrorNumber''': indicates the success or failure of the upload processing. The following values are valid:&lt;br /&gt;
** 0: File sucessfuly uploade.&lt;br /&gt;
** 1: Custom error. In this case the &amp;quot;CustomMessage&amp;quot; parameter value is displayed to the user in an alert box.&lt;br /&gt;
** 201: The file has been successfully uploaded, but a file with the same name already exists. So the file has been renamed to the value present in the &amp;quot;FileName&amp;quot; parameter.&lt;br /&gt;
** 202: Invalid file type (usually for security reason).&lt;br /&gt;
** 203: Not enough permission to write in the server.&lt;br /&gt;
* '''FileUrl''': the final URL to load the uploaded file.&lt;br /&gt;
* '''FileName''': see the error number &amp;quot;201&amp;quot;.&lt;br /&gt;
* '''CustomMessage''': see the error number &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Samples ==&lt;br /&gt;
&lt;br /&gt;
The easiest way for the end user to understand how to use the editor is to see it in action. So it's important to make available samples that clearly show how to use it.&lt;br /&gt;
&lt;br /&gt;
The developers are invited to create samples similar to that available for the Javascript Integration Pack. Please take a look at the '''_samples/html''' folder. All files must be put together in a folder under the _samples folder.&lt;br /&gt;
&lt;br /&gt;
All samples should post the posted data to a single page that shows that data. The Javascript integration module uses an ASP file, called '''sampleposteddata.asp''', that does that (just because JavaScript doesn't handle posted data). That file can be used as a reference for a custom implementation. Please use the same file name, like sampleposteddata.ext.&lt;/div&gt;</summary>
		<author><name>Mosipov</name></author>	</entry>

	<entry>
		<id>https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Integration/Java&amp;diff=2280</id>
		<title>FCKeditor 2.x/Developers Guide/Integration/Java</title>
		<link rel="alternate" type="text/html" href="https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Integration/Java&amp;diff=2280"/>
				<updated>2008-07-05T21:40:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mosipov: Linked to the new Java site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;+1&amp;quot; color=&amp;quot;red&amp;quot;&amp;gt;This site is obsolete and applies to version 2.3 only. Visit [http://java.fckeditor.net/ this] website for the new documentation.&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
It is so easy to use FCKeditor in your Java/JSP web pages. Just download the JSP Integration Pack for using FCKeditor inside a java server page without the complexity of using a Java scriptlets or the JavaScript API. &lt;br /&gt;
&lt;br /&gt;
== Configuring your site&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1  ===&lt;br /&gt;
&lt;br /&gt;
First step you should take in order to integrate FCKeditor with you page is downloading the latest version of the JSP Integration Pack from from our download site.You can find the latest version of the package under this address: &lt;br /&gt;
&lt;br /&gt;
http://www.fckeditor.net/download &lt;br /&gt;
&lt;br /&gt;
'''Note''': The main code is not included in this package, just the JSP Integration Pack. You still need the FCKeditor scripts to be able to run it, so you should download it as well &lt;br /&gt;
&lt;br /&gt;
=== Step 2  ===&lt;br /&gt;
&lt;br /&gt;
*Unpack the Java Integration Library in a directory named &amp;quot;fckeditor&amp;quot;. &lt;br /&gt;
*Unzip the content of the FCKeditor release of your choice inside the &amp;quot;fckeditor\web&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
== Integration  ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1  ===&lt;br /&gt;
&lt;br /&gt;
Create in tomcat (or any servlet container) a new context named &amp;quot;FCKeditor&amp;quot; that points to the previously created &amp;quot;fckeditor\web&amp;quot; folder. &lt;br /&gt;
&lt;br /&gt;
=== Sample code  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;%@ page language=&amp;quot;java&amp;quot; import=&amp;quot;com.fredck.FCKeditor.*&amp;quot;&amp;amp;nbsp;%&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;title&amp;amp;gt;FCKeditor - JSP Sample&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;&lt;br /&gt;
function FCKeditor_OnComplete( editorInstance )&lt;br /&gt;
{&lt;br /&gt;
window.status = editorInstance.Description&amp;amp;nbsp;;&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;form action=&amp;quot;sampleposteddata.jsp&amp;quot; method=&amp;quot;get&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;%&lt;br /&gt;
FCKeditor oFCKeditor&amp;amp;nbsp;;&lt;br /&gt;
oFCKeditor = new FCKeditor( request, &amp;quot;EditorDefault&amp;quot; )&amp;amp;nbsp;;&lt;br /&gt;
oFCKeditor.setBasePath( &amp;quot;/fckeditor/&amp;quot; )&amp;amp;nbsp;;&lt;br /&gt;
oFCKeditor.setValue( &amp;quot;This is some &amp;amp;lt;strong&amp;amp;gt;sample text&amp;amp;lt;/strong&amp;amp;gt;. You are using &amp;amp;lt;a href=\&amp;quot;http://www.fredck.com/fckeditor/\&amp;quot;&amp;amp;gt;FCKeditor&amp;amp;lt;/a&amp;amp;gt;.&amp;quot; );&lt;br /&gt;
out.println( oFCKeditor.create() )&amp;amp;nbsp;;&lt;br /&gt;
%&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Submit&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/form&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
== Additional information  ==&lt;br /&gt;
&lt;br /&gt;
*Point your browser to http://domainName.ext/FCKeditor/_samples/index.jsp for the list of the samples.&lt;/div&gt;</summary>
		<author><name>Mosipov</name></author>	</entry>

	<entry>
		<id>https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Overview&amp;diff=2279</id>
		<title>FCKeditor 2.x/Developers Guide/Overview</title>
		<link rel="alternate" type="text/html" href="https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Overview&amp;diff=2279"/>
				<updated>2008-07-05T21:31:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mosipov: Linked to the new Java site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview  ==&lt;br /&gt;
&lt;br /&gt;
FCKeditor is an HTML text editor which brings to the web much of the power of desktop editors like MS Word. It's lightweight and doesn't require any kind of installation on the client computer. The editor can be used in many different ways and it's usage is completely up to the developers will. It can be fully adjusted to the developers needs. There many ways in which the editor can be used. FCKeditor is usually used in: &lt;br /&gt;
&lt;br /&gt;
*Content Management Systems (CMS) &lt;br /&gt;
*Personal Web Sites &lt;br /&gt;
*Blog Systems &lt;br /&gt;
*Community Sites &lt;br /&gt;
*Forums &lt;br /&gt;
*and much more.&lt;br /&gt;
&lt;br /&gt;
Basically the usage of the editor is only up to developers imagination and it can be placed nearly everywhere. &lt;br /&gt;
&lt;br /&gt;
You should know that FCKeditor comes with '''[[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options|several options]]''' which you may configure due to your needs starting from basic options like the changing toolbar appearance and ending with more advanced ones like setting up the spell checker. You will find that it is very easy to configure them so you can change the editor behavior in a very simple and fast way. FCKeditor also comes with a '''[[FCKeditor 2.x/Developers Guide/Configuration/Built in File Browser|Built in File Browser]]''' so the server files can be easily accessed by the end user. Of course it can be configured due to the developers needs as well. The editor has an extensive server side integration support so you won't have to worry about applying the editor into your web site. FCKeditor supports: &lt;br /&gt;
&lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Integration/JavaScript|JavaScript]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Integration/AFP|AFP]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Integration/ASP|ASP]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Integration/ASP.NET|ASP.NET]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Integration/ColdFusion|ColdFusion]] &lt;br /&gt;
*[http://java.fckeditor.net/ Java] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Integration/PHP|PHP]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Integration/Python|Python]] &lt;br /&gt;
*and [[FCKeditor 2.x/Developers Guide/Integration/Other|Other]] server side languages.&lt;br /&gt;
&lt;br /&gt;
You should also note that FCKeditor is fully compatible with the following browsers: &lt;br /&gt;
&lt;br /&gt;
*Internet Explorer 5.5+ &lt;br /&gt;
*Firefox 1.5+ &lt;br /&gt;
*Safari 3.0+ &lt;br /&gt;
*Opera 9.5+ &lt;br /&gt;
*Netscape 7.1+ &lt;br /&gt;
*Camino 1.0+&lt;br /&gt;
&lt;br /&gt;
For more information about the compatibility see [[FCKeditor 2.x/Users Guide/Compatibility|Compatibility]] section of the users guide.&lt;/div&gt;</summary>
		<author><name>Mosipov</name></author>	</entry>

	<entry>
		<id>https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Configuration/Toolbar&amp;diff=2278</id>
		<title>FCKeditor 2.x/Developers Guide/Configuration/Toolbar</title>
		<link rel="alternate" type="text/html" href="https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide/Configuration/Toolbar&amp;diff=2278"/>
				<updated>2008-07-05T21:28:19Z</updated>
		
		<summary type="html">&lt;p&gt;Mosipov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolbar Configuration ==&lt;br /&gt;
&lt;br /&gt;
It's quite easy to customize the toolbar buttons to your needs. Just edit the configuration file and modify or add new items to the &amp;quot;[[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/ToolbarSets|FCKConfig.ToolbarSets]]&amp;quot; configuration entry or create this entry in your [[FCKeditor 2.x/Developers Guide/Configuration/Configuration File|custom Configuration File]].&lt;br /&gt;
&lt;br /&gt;
Take a look at the fckconfig.js file to see these two sample toolbarsets definitions:&lt;br /&gt;
&amp;lt;pre&amp;gt;FCKConfig.ToolbarSets[&amp;quot;Default&amp;quot;] = [&lt;br /&gt;
['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],&lt;br /&gt;
['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],&lt;br /&gt;
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],&lt;br /&gt;
['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],&lt;br /&gt;
'/',&lt;br /&gt;
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],&lt;br /&gt;
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],&lt;br /&gt;
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],&lt;br /&gt;
['Link','Unlink','Anchor'],&lt;br /&gt;
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],&lt;br /&gt;
'/',&lt;br /&gt;
['Style','FontFormat','FontName','FontSize'],&lt;br /&gt;
['TextColor','BGColor'],&lt;br /&gt;
['FitWindow','ShowBlocks','-','About'] // No comma for the last row.&lt;br /&gt;
]&amp;amp;nbsp;;&lt;br /&gt;
&lt;br /&gt;
FCKConfig.ToolbarSets[&amp;quot;Basic&amp;quot;] = [&lt;br /&gt;
['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']&lt;br /&gt;
]&amp;amp;nbsp;;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== Toolbar Bands ===&lt;br /&gt;
&lt;br /&gt;
Every ToolBarSet is composed of a series of &amp;quot;toolbar bands&amp;quot; that are grouped in the final toolbar layout. The bands items move together on new rows when resizing the editor.&lt;br /&gt;
&lt;br /&gt;
As you can see in the above toolbarsets definitions, every toolbar band is defined as a separated JavaScript array of strings. Every string corresponds to an available toolbar item defined in the editor code or in a plugin. If the toolbar item doesn't exist, a message is displayed when loading the editor.&lt;br /&gt;
&lt;br /&gt;
You can also include a separator in the toolbar band by including the &amp;quot;-&amp;quot; string on it.&lt;br /&gt;
&lt;br /&gt;
=== Forcing Row Break ===&lt;br /&gt;
&lt;br /&gt;
Looking at the &amp;quot;Default&amp;quot; ToolBarSet you will note that in one of the rows you have a &amp;quot;/&amp;quot; string instead of an array. This slash can be used to tell the editor that you want to force the next bands to be rendered in a new row and not following the previous one.&lt;br /&gt;
&lt;br /&gt;
=== Custom ToolBarSets ===&lt;br /&gt;
&lt;br /&gt;
The editor comes with the &amp;quot;Default&amp;quot; and &amp;quot;Basic&amp;quot; ToolBarSets already defined in the fckconfig.js file. You can modify them, but you can also create new customized ones. For example, to create a toolbarset named &amp;quot;MyToolbar&amp;quot;, just include the following in the configuration file or in your [[FCKeditor 2.x/Developers Guide/Configuration/Configuration File|custom Configuration File]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;FCKConfig.ToolbarSets[&amp;quot;MyToolbar&amp;quot;] = [&lt;br /&gt;
['Cut','Copy','Paste','PasteText','PasteWord'],&lt;br /&gt;
['Undo','Redo','-','Bold','Italic','Underline','StrikeThrough'],&lt;br /&gt;
'/',&lt;br /&gt;
['OrderedList','UnorderedList','-','Outdent','Indent'],&lt;br /&gt;
['Link','Unlink','Anchor'],&lt;br /&gt;
'/',&lt;br /&gt;
['Style'],&lt;br /&gt;
['Table','Image','Flash','Rule','SpecialChar'],&lt;br /&gt;
['About']&lt;br /&gt;
]&amp;amp;nbsp;;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Now you just need to set your ToolBarSet when creating an editor instance. Below you will find examples how to do it in different server side languages:&lt;br /&gt;
&lt;br /&gt;
==== JavaScript ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;&lt;br /&gt;
var oFCKeditor = new FCKeditor( 'FCKeditor1' )&amp;amp;nbsp;;&lt;br /&gt;
oFCKeditor.ToolbarSet = 'MyToolbar'&amp;amp;nbsp;;&lt;br /&gt;
oFCKeditor.Create()&amp;amp;nbsp;;&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
==== PHP ====&lt;br /&gt;
&amp;lt;pre&amp;gt;$oFCKeditor-&amp;amp;gt;ToolbarSet = 'MyToolbar';&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
==== JSP (Java)  ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;FCK:editor instanceName=&amp;quot;EditorDefault&amp;quot; toolbarSet=&amp;quot;MyToolbar&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ASP ====&lt;br /&gt;
&amp;lt;pre&amp;gt;oFCKeditor.ToolbarSet = &amp;quot;MyToolbar&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
==== ASP.NET ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;FCKeditorV2:FCKeditor id=&amp;quot;FCKeditor2&amp;quot; ToolbarSet=&amp;quot;MyToolbar&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
==== ColdFusion ====&lt;br /&gt;
&amp;lt;pre&amp;gt;fckEditor.toolbarSet = &amp;quot;MyToolbar&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== Additional information ===&lt;br /&gt;
&lt;br /&gt;
* It's a common mistake when customizing the toolbar, to just remove some elements from the Default toolbar set, including the &amp;quot;About&amp;quot; item, leaving the last row terminating with a comma (&amp;quot;,&amp;quot;). So, remember that the last toolbar band doesn't have a comma after it.&lt;br /&gt;
* Remember to clean up your browser's cache when making changes to the configuration file, otherwise you may not see your changes and will simply not understand why.&lt;br /&gt;
== Toolbar Behavior ==&lt;br /&gt;
&lt;br /&gt;
=== On start behavior ===&lt;br /&gt;
&lt;br /&gt;
You can easily determine how the toolbar will appear when the editor starts runing. The toolbar can appear expanded (in maximized mode) or collapsed (in minimized mode). If you want change the appearance of the toolbar you should look throughout [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/ToolbarStartExpanded|ToolbarStartExpanded]] option or just insert the following code into the configuration file remembering that 'true' sets the toolbar to expanded mode and 'false' sets it to collapsed mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;FCKConfig.ToolbarStartExpanded = true&amp;amp;nbsp;;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== Toolbar Collapsing ===&lt;br /&gt;
&lt;br /&gt;
You can choose whether the user can collapse (minimize) the toolbar, during work with the editor, or not. Just see the [[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options/ToolbarCanCollapse|ToolbarCanCollapse]] option or apply this entry in the configuration file remembering that 'true' gives the permission to collapse the toolbar and 'false' doesn't:&lt;br /&gt;
&amp;lt;pre&amp;gt;FCKConfig.ToolbarCanCollapse = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mosipov</name></author>	</entry>

	<entry>
		<id>https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide&amp;diff=2277</id>
		<title>FCKeditor 2.x/Developers Guide</title>
		<link rel="alternate" type="text/html" href="https://docs-old.ckeditor.com/index.php?title=FCKeditor_2.x/Developers_Guide&amp;diff=2277"/>
				<updated>2008-07-05T21:26:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mosipov: Linked to the new Java site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[FCKeditor 2.x/Developers Guide/Overview|Overview]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/License|License]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Installation|Installation]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Installation/Upgrading|Upgrading]] &lt;br /&gt;
*Integration &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/JavaScript|JavaScript]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/AFP|AFP]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/ASP|ASP]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/ASP.NET|ASP.NET]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/ColdFusion|ColdFusion]] &lt;br /&gt;
**[http://java.fckeditor.net Java] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/PHP|PHP]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/Python|Python]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/AIR|Adobe AIR]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Integration/Other|Other]] &lt;br /&gt;
*Configuration &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Configuration/Configuration File|Configuration File]] &lt;br /&gt;
***[[FCKeditor 2.x/Developers Guide/Configuration/Configuration Options|Configuration Options]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Configuration/Toolbar|Toolbar]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Configuration/Styles|Styles]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Configuration/Templates|Templates]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Configuration/Spell Checker|Spell Checker]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Configuration/Built in File Browser|Built in File Browser]] &lt;br /&gt;
*Customization &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Customization/Plug-ins|Plug-ins]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Customization/Scripts Compression|Scripts Compression]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Customization/Skins|Skins]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Customization/Custom File Browser|Custom File Browser]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Customization/Debugging|Debugging]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Deployment|Deployment]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/SVN|Subversion (SVN) Access]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/JavaScript API|FCKeditor JavaScript API]] &lt;br /&gt;
*Contributing &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Server Side Integration|Server Side Integration]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Localization|Localization]] &lt;br /&gt;
**[[FCKeditor 2.x/Developers Guide/Developer's Web Site|Developer's Web Site]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/FAQ|FAQ - Frequently Asked Questions]] &lt;br /&gt;
*[[FCKeditor 2.x/Developers Guide/Troubleshooting|Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Mosipov</name></author>	</entry>

	</feed>