FCKeditor configuration manual Chinese tutorial details)

Source: Internet
Author: User

Performance
First, FCKeditor has excellent performance. Users can load files required by FCKeditor in a short time. for other online editors, this is almost difficult to solve, because too many files need to be loaded when the editor is enabled. for example, although cuteeditor is more powerful than FCKeditor, it is also huge enough. As for freetextbox, there is still a gap between its ease of use and FCKeditor, FCKeditor is an ingenious online editor that integrates the author's advanced object-oriented JavaScript capabilities and integrates ease of use and powerful functions.

All images, scripts, and call pages related to the editor
. Language file
. Editor skin file
. Tool-like textures, etc.
This will generate a considerable amount of traffic between the server and the client. If many files are called, even if each file is small, it will make users wait impatiently.
Loading Sequence
Starting from version 2.0, the editor loads resources by following these steps:
. Basic page (that is, the page where the editor is located) and JS script for loading the editor
. Used to create the editor script
The language and skin of the editor.
. Create an editor.
. Load the preset editing document content.
From now on, you can read and edit the document. However, drag-and-drop support and toolbar are unavailable.
. Load the editor engine script
. Create a toolbar and use it.
From now on, all the functions of the editor have been complete.
. Load toolbar icon

Script Compression
When any new version is packaged, the editor's Js script is preprocessed. The preprocessing steps are as follows:
. Remove all code comments
. Remove all useless white space characters.
. Merge the script into several files.
Using the above method, we can compress the script file to 50% of the original size.
After compression, the original code still exists in a folder named _ source.

How to pack?
Then, copy it to the FCKeditor root folder and run it to automatically package and compress the JS script.
Note that this program is a. Net program and must be installed with. NET Framework.

Want to obtain support?
If you donate 15000 euros, you can get one year of free technical support (more expensive, equivalent to 0.15 million yuan, but the cost of Western Europe is quite amazing)

How to install?
1. download the latest FCKeditor version.
2. decompress the package to the FCKeditor folder in the root folder of your site (the name must be FCKeditor because the FCKeditor location has been identified in the configuration file)
3. Now, the editor can be used. To view the demo, you can access it as follows:
Http: // <your-site>/FCKeditor/_ samples/default.html
Note: You can place FCKeditor in any folder. By default, it is the easiest way to put FCKeditor in the folder. if the folder you put uses another name, modify the basepath parameter in the configuration folder, as shown below:
Ofckeditor. basepath = "/components/FCKeditor /";
In addition, all the folders and files starting with the following line in the FCKeditor folder are optional and can be safely deleted from your release. They are not required when the editor is running.

How can I integrate FCKeditor into my page?
Currently, FCKeditor only provides JavaScript-based integration, so here we only show how to apply JavaScript to integrate FCKeditor into the site. Of course, the integration of other languages, you can refer to the example in the _ samples folder to complete
1. If the editor has been installed in the/FCKeditor/folder of your site. so, the first step we need to do is to add the script tag in the header segment of the page to introduce the Javascript integration module. for example:
<SCRIPT type = "text/JavaScript" src = "/FCKeditor. js"> </SCRIPT>
The path is changeable.
2. Now, the FCKeditor class can be used. There are two ways to create a FCKeditor editor on the page:
Method 1: inline (recommended): Insert the following code to the place where the editor needs to be inserted in the form tag of the page:
Script Type = "text/JavaScript">
VaR ofckeditor = new FCKeditor ('fckeditor1 ');
Ofckeditor. Create ();
</SCRIPT>
Method 2: textarea tag replacement method (not recommended): In the onload event on the page, add the following code to replace an existing textarea tag.
<HTML>
<Head>
<SCRIPT type = "text/JavaScript">
Window. onload = function ()
{
VaR ofckeditor = new FCKeditor ('mytextarea ');
Ofckeditor. replacetextarea ();
}
</SCRIPT>
</Head>
<Body>
<Textarea id = "mytextarea" name = "mytextarea"> This is <B> the </B> initial value. </textarea>
</Body>
</Html>
3. Now, the editor can be used.

FCKeditor class reference:
The following describes the FCKeditor class used to create an editor on the page.

Constructor:
FCKeditor (InstanceName [, width, height, toolbarset, value])
InstanceName: Unique name of the Editor (equivalent to ID)
Width: width
Height: Height
Toolbarset: name of the toolbar set
Value: the initialization content of the editor.

Attribute:
InstanceName: Editor Instance name
Width: width. The default value is 100%.
Height: height. The default value is 200.
Toolbarset: tool set name. For details, refer to fckconfig. js. The default value is default.
Value: Initialize the HTML code of the editor. The default value is null.
Basepath: The base path of the editor. The default path is/FCKeditor/folder. Be sure not to use the relative path. It is best to use the Representation Method Relative to the root path of the site and end /.
Checkbrowser: whether to check the browser compatibility before the editor is displayed. The default value is true.
Displayerrors: Indicates whether an error is displayed. The default value is true;

Set:
Config [Key] = value;
This set is used to change the value of a configuration item, as shown in figure
Ofckeditor. config ["defaultlanguage"] = "Pt-Br ";

Method:
Create ()
Create and output an editor

Repacetextarea (textareaname)
Replace the text box with the editor

How to configure FCKeditor?
FCKeditor provides a set of settings for customizing its appearance, characteristics, and behavior. The main configuration file name is fckconfig. js.
You can edit the main configuration file or define a separate configuration file. The configuration file uses the Javascript syntax.

After modification, you can use the following syntax when creating an Editor:
VaR ofckeditor = new FCKeditor ('fckeditor1 ');
Ofckeditor. config ['customconfigurationspath'] = '/myconfig. js ';
Ofckeditor. Create ();

Reminder: After you modify the configuration, clear the browser cache to view the effect.

Configuration Options:
Autodetectlanguage = true/false automatic language Detection
Basehref = "" _ fcksavedurl = ": The base address of the Relative Link
Contentlangdirection = "LTR/RTL" default text direction
Contextmenu = string array, right-click the menu content
Customconfigurationspath = "" custom configuration file path and name
DEBUG = true/false whether to enable debugging. In this way, when fckdebug. Output () is called, the content is output in the debugging window.
Defaultlanguage = "" default language
Editorareacss = "" style table file in the editing area
When enablesourcexhtml = true/false is true, when the code page is switched from the visual interface to the code page, the HTML is processed as XHTML.
Enablexhtml = true/false: Can I use XHTML to replace HTML?
Fillemptyblocks = true/false use this function to replace empty block-level elements with spaces.
Fontcolors = "" sets the text color list when the color picker is displayed
Fontformats = "" set the name displayed in the text format list
Fontnames = "" fontnames
Fontsizes = "" font size in the font size list
Forcepasteasplaintext = true/false force paste to plain text
Forcesimpleampersand = true/false do not convert & symbol to XML Entity
Formatindentator = "" specifies the characters used to indent the code in the source code format.
Formatoutput = true/false: whether to automatically format the code when output content
Formatsource = true/false whether to automatically format the code when switching to the Code view
Fullpage = true/false: whether to allow editing of the entire HTML file or only the content between the bodies
Geckousespan = true/false: whether to allow the span flag to replace the B, I, u flag
Iespelldownloadurl = "" download the spelling checker URL
Imagebrowser = true/false: whether to allow browsing of server functions
Imagebrowserurl = "" the URL that runs when browsing the server
Imagebrowserwindowheight = "" image browser window height
Imagebrowser1_wwidth = "" image browser window width
Linkbrowser = true/false: whether to allow browsing the server when a link is inserted
Linkbrowserurl = "" browsing the server URL when inserting a link
Linkbrowserwindowheight = "" link target browser window height
Linkbrowserdomainwwidth = "" link target browser window width
Plugins = Object Registration plug-in
Pluginspath = "" plug-in folder
Showborders = true/false merge border
Skinpath = "" skin folder location
Smileycolumns = 12 Number of columns in the graphic operator window
Smileyimages = String Array array of image file names in the graphic character window
Smileypath = "" folder path
Smileywindowheight tumbler window height
Smiley1_wwidth tumbler window width
Spellchecker = "iespell/spellerpages" set the spelling checker
When startupfocus = true/false is enabled, focus to the editor.
Stylesxmlpath = "" set the location of the XML file that defines the CSS style list
Tabspaces = 4 Number of space characters generated by the tab key
Toolbarcancollapse = true/false: whether to enable or disable the toolbar.
Toolbarsets = the toolbar set can be used for objects.
Toolbarstartexpanded = true/false enable indicates whether to expand a toolbar.
Usebroncarriagereturn = true/false when you press enter, whether to generate a br mark or a P or Div mark

How do I customize the style list?
The FCKeditor style toolbar provides predefined styles defined by the XML file. The default XML style file exists in the fckstyls. xml file in the FCKeditor root folder.
The structure of the XML file is analyzed as follows:
<? XML version = "1.0" encoding = "UTF-8"?>
<Styles>
<Style name = "my image" element = "IMG">
<Attribute name = "style" value = "padding: 5px"/>
<Attribute name = "border" value = "2"/>
</Style>
<Style name = "italic" element = "em"/>
<Style name = "title" element = "span">
<Attribute name = "class" value = "title"/>
</Style>
<Style name = "title H3" element = "H3"/>
</Styles>

Each STYLE tag defines a style. Name is the style name displayed in the drop-down list. The element attribute specifies the objects applicable to this style, because the style in FCKeditor is context sensitive, that is, select different objects. Only the styles defined for these objects are displayed.

Spelling check
FCKeditor comes with two spell checking tools, iespell, which is used by default. This method requires the customer to download and install the small software iespell. In addition, spellpager is also provided for spelling checks. However, since spellpager is a server-side script compiled by PHP, your web server must support the PHP script language.
For more information about how to change the spelling checker, see the configuration file.

Compression script
To improve the efficiency of Script Loading, FCKeditor uses the following methods to compress the script as much as possible to reduce the script size:
1. Remove the comments from the script.
2. Remove the meaningless blank in the script.
In addition, FCKeditor provides a tool specifically used to compress scripts so that you can reduce the file size during release,
You can copy fckeditor.packager.exe in the _packagerfolder to the FCKeditor root folder to run and compress the script.

Localized FCKeditor
If FCKeditor does not provide all the languages you need (actually all of them are available), you can create a new language by yourself.
, You only need to copy the en. JS. in addition, the language name and the corresponding script file name must follow the RFC 3066 standard, but must be in lower case. For example, the script file name corresponding to Portuguess language must be PT. JS
If you want to target a certain country, you can add a horizontal line and a country abbreviation after the abbreviation.

During use, the system automatically detects the client language and country and uses the appropriate interface language.

After creating a new language, you must create an entry for it in "Edit/lang/fcklanguagemanager. js", as shown below:
Fck1_agemanager. availablelanguages =
{

En: 'English ',
PT: 'portranges'
}

Note that the file must be saved in UTF-8 format

How can I interact with server scripts?
Please check the example to get the relevant content

In addition, use the following steps in ASP. NET:
1. Add FCKeditor to the toolbox
2. Drag the FCKeditor Control to the page
3. Specify a name for it
4. all attributes of the FCKeditor class can be used not only in code, but also directly as attributes of the FCKeditor Control. For example, to change the skin, you can specify skinpath = "/FCKeditor/Editor/skins/office2003" on the UI page. net version can be better, you can find FCKeditor ASP. net 2.1 source file, then modify the control design, expose more useful properties for it, and re-compile it.
5. Use the Value Attribute of the FCKeditor Control to obtain the PostBack data.
6. due to the default status, Asp. net does not allow the submission of HTML and JavaScript content. Therefore, you must set validaterequest to false for pages using FCKeditor. (<% @ page validterequest = "false" %>)

 

Appendix:
I. How to set the language for uploading files

In the fckconfig. js file under the root directory of FCKeditor

VaR _ filebrowserlanguage = 'asp '; // ASP | aspx | CFM | lasso | Perl | PHP | py
VaR _ quickuploadlanguage = 'asp '; // ASP | aspx | CFM | lasso | PHP

The two lines are changed to the editor language you need to call. If Asp.net is used, it is changed to aspx;

2. Solve Chinese problems:
Add the following to Web. config:
<Globalization requestencoding = "gb2312" responseencoding = "gb2312"/>
In this way, Chinese files can be displayed, but the URL address is also Chinese;
If the server does not parse the Chinese address properly, the image may not be browsed;
So modify: Editor \ filemanager \ browser \ Default \ frmresourceslist.html
In openfile function
Window. Top. opener. seturl (fileurl );
To:
Window. Top. opener. seturl (escape (fileurl ));

3. Set the upload directory:
1: Set in Web. config:
<Deleetask>
<Add key = "FCKeditor: userfilespath" value = "/fck/upload/"/>
</Appsettings>

2: Set in session:
Add the following code to editor \ filemanager \ browser \ Default \ connectors \ aspx \ connector. aspx:
<SCRIPT runat = "server" Language = "C #">
Protected override void oninit (eventargs E)
{
Session ["FCKeditor: userfilespath"] = "/fck/upload1 /";
}
</SCRIPT>

In Asp.net, how does one dynamically set the path for uploading images?

1. Modify the value of fckconfig. imagebrowserurl in Javascript as follows:
Fckconfig. imagebrowserurl + = "? Path = path of the file to be uploaded ";
For example, to upload a file to the uploadfile folder in the root directory of the site, set it:
Fckconfig. imagebrowserurl + = "? Path =/uploadfile ";
2. Add the following program to the end of the "editor \ filemanager \ browser \ Default \ connectors \ aspx \ connector. aspx" file:
<SCRIPT runat = "server" Language = "C #">
Protected override void oninit (eventargs E)
{
If (request. querystring ["path"] = NULL ){
Session ["FCKeditor: userfilespath"] = "/uploadfiles/"; // set the default value
} Else {
Session ["FCKeditor: userfilespath"] = request. querystring ["path"];
}
}
</SCRIPT>

--------------------------------------------------------------------------------
Configuration and usage skills in multiple Environments
--------------------------------------------------------------------------------

Add right-click menu in FCKeditor
I am going to introduce how to configure FCKeditor on the Internet. There are many examples of how to streamline it. If you need it, You can Google it. I don't need to go into details here. Now we will introduce how to customize this editor, including how to add items on the toolbar, generate responses, and right-click the menu. It seems very easy!

The book is back to the beginning.
1. Custom right-click menu:
1. First, add the name of the toolbar item you want to add in Editor/lang/zh-cn.js, this file defines a fcklang variable, written in the format of the inside, such as: first: "1", note that if it is not in the penultimate line (the penultimate line is "}"), the comma at the end must exist. Otherwise, no editor will appear on the webpage, I have made such a low-level mistake. After waking up, I would like to say hello to a quiet mouth. We are Chinese, and naturally correspond to Chinese after the colon, this is what will be displayed on the web page in the future.
2. In the editor/_ source/internals/fckcommands. create a new command in JS: Case 'first': ocommand = new fckfirstcommand ('first', fcklang. first); does break pay attention to the fckfirstcommand in the red font? This is a custom command. We will discuss it later.
3. Then, add a context menu in Editor/_ source/internals/fckcontextmenu. js. In case 'generic ': Add the following: ogroup. add (New fckcontextmenuitem (this, 'first', fcklang. first, true). If the fourth Boolean parameter is set to true, the menu has an icon, and vice versa. Here, I specify that my custom menu has a graphic icon, so I should put the icon under the editor \ skins \ XXX \ toolbar directory, among them, XXX is the skin of the editor you selected in your configuration file, but our icon name is learned and must be renewed. OK, so the right-click menu is added. Run your webpage to see if FCKeditor works? If it does not work, you need to refer to this article again ^_^.
4. Then, the most critical step is to upload the file!
5. Now we will discuss the fckfirstcommand in step 2. After the menu is added, what functions do you have to have? Well, create this class in Editor/_ source/commandclasses/fck_othercommands.js:
Four FCKeditor practical application skills

After a class is created, two static functions are created: XXX. Prototype. Execute, XXX. Prototype. getstate. The former is an event processing function, that is, all the functions to be executed by right-clicking the menu are written in this function, and the latter returns the menu status (available? Unavailable ?). To demonstrate this, we implement the simplest function: fckpagecommand. Prototype. Execute = function () {window. Alert ("It works! ");} Is simple enough, but a prompt box is displayed. Of course, here we can also use the fckfirstcommand defined by FCKeditor, for example, fckdialogcommand, which is also defined in fck_othercommands.js. Of course, if so, A dialog box is displayed. Run the webpage again, right-click, and click your custom menu. Is a prompt box displayed?

FCKeditor has now reached version 2.3.1. For Web developers in China, it has basically been "How much is known", and many people have integrated it into their own projects, many other large websites have benefited from this. Starting today, I will give a little introduction to some of the techniques I have summarized during the use of FCKeditor. Of course, these are actually what fck originally has, but they are not found when many people use fck.

1. Open the editor in due time

Most of the time, you do not need to open the editor directly when opening the page, but only open it when you use it. This gives you a good user experience, on the other hand, it can eliminate the impact of fck on the page opening speed during loading,

 

Click "Open Editor" to open the Editor interface.

 

 

Implementation principle: Use the Javascript fck to create a hidden textarea domain during page loading (without enabling fck, the name and ID of this textarea must be the same as the name of the created fck instance. When you click the "open Editor" button, you can call a function to create FCKeditor using the replacetextarea () method of fck, the Code is as follows:

<SCRIPT type = "text/JavaScript">
<! --
Function showfck (){
VaR ofckeditor = new FCKeditor ('fbcontent ');
Ofckeditor. basepath = '/FCKeditor /';
Ofckeditor. toolbarset = 'basic ';
Ofckeditor. width = '000000 ';
Ofckeditor. Height = '20140901 ';
Ofckeditor. replacetextarea ();
}
// -->
</SCRIPT>
<Textarea name = "fbcontent" id = "fbcontent"> <textarea>

2. Use the FCKeditor API

The FCKeditor Editor provides a rich set of APIs to implement many customized functions for end users, such as basic data verification, the fck API provides the getlength () method to determine whether content exists in the current editor area by using JS when submitting the file;

For example, how to insert content to fck through a script and use inserthtml;

Also, when you customize features, the intermediate steps may need to execute some nested fck operations, so use the executecommand () method.

For a detailed list of APIS, see the FCKeditor wiki. For common APIs, see _ samples/html/sample08.html in the fck compressed package. No code is pasted here.

3. external editing bar (multiple editing fields share one editing bar)

This feature is provided only in Version 2.3. If FCKeditor of the previous version uses multiple editors on the same page, it must be created one by one. Now, this external function is available, you don't have to worry about it. You just need to place the toolbar in a proper position, and then you can create and edit domains without restrictions,

 

To implement this function, you must first define the container of a toolbar in the page: <divid = "xtoolbar"> </div>, and then set it based on the container ID attribute.

ASP implementation code: <Div id = "fcktoolbar"> </div>
<%
Dim ofckeditor
Set ofckeditor = new FCKeditor
With ofckeditor
. Basepath = fckpath
. Config ("toolbarlocation") = "Out: fcktoolbar"

. Toolbarset = "Basic"
. Width = "100%"
. Height = "200"

. Value = ""
. Create "jcontent"

. Height = "150"
. Value = ""
. Create "jreach"
End
%>

Javascript implementation code: <Div id = "xtoolbar"> </div>
FCKeditor 1:
<SCRIPT type = "text/JavaScript">
<! --
// Automatically calculates the editor base path based on the _ samples directory.
// This is usefull only for these samples. A real application shoshould use something like this:
// Ofckeditor. basepath = '/FCKeditor/'; // '/FCKeditor/' is the default value.
VaR sbasepath = Document. Location. pathname. substring (0, document. Location. pathname. lastindexof ('_ samples '));

VaR ofckeditor = new FCKeditor ('fckeditor _ 1 ');
Ofckeditor. basepath = sbasepath;
Ofckeditor. Height = 100;
Ofckeditor. config ['toolbarlocation'] = 'out: parent (xtoolbar )';
Ofckeditor. value = 'this is some <strong> sample text </strong>. You are using FCKeditor .';
Ofckeditor. Create ();
// -->
</SCRIPT>
<Br/>
FCKeditor 2:
<SCRIPT type = "text/JavaScript">
<! --
Ofckeditor = new FCKeditor ('fckeditor _ 2 ');
Ofckeditor. basepath = sbasepath;
Ofckeditor. Height = 100;
Ofckeditor. config ['toolbarlocation'] = 'out: parent (xtoolbar )';
Ofckeditor. value = 'this is some <strong> sample text </strong>. You are using FCKeditor .';
Ofckeditor. Create ();
// -->
</SCRIPT>

For detailed demos in this section, refer:
_ Samples/html/sample11.html
_ Samples/html/sample11_frame.html

4. File Management and file upload Permissions

The security of file management in FCKeditor is worth noting, but many people have not noticed it, although FCKeditor has always been used to filter the types of uploaded files in each release version, she has not considered another question: Who can upload files? Who can browse server files?

I encountered this problem when I first started using FCKeditor. Fortunately, netrube (author of The FCKeditor culture and FCKeditor asp upload program) promptly reminded me, the method is to modify the fck upload program, perform permission judgment in it, and then in fckconfig. remove some functions from Js. However, with the constant upgrade of the fck version, the configuration program fckconfig. js needs to be changed once every upgrade. I find bored, so there is no way to better control this configuration? Actually, there is.

In fckconfig. JS, there are settings about whether to enable the upload and browsing server. When creating FCKeditor, you can use a program to determine whether to create an editor with the upload and browsing function. First, I first set all the upload and browsing settings to false in fckconfig. js. Then I use the following code:

ASP version: <%
Dim ofckeditor
Set ofckeditor = new FCKeditor
With ofckeditor
. Basepath = fckpath
. Config ("toolbarlocation") = "Out: fcktoolbar"
If request. Cookies (site_sn) ("issuper") = "yes" then
. Config ("linkbrowser") = "true"
. Config ("imagebrowser") = "true"
. Config ("flashbrowser") = "true"
. Config ("linkupload") = "true"
. Config ("imageupload") = "true"
. Config ("flashupload") = "true"
End if
. Toolbarset = "Basic"
. Width = "100%"
. Height = "200"
. Value = ""
. Create "jcontent"
%>

Javascript version: var ofckeditor = new FCKeditor ('fbcontent ');
<% IF power = powercode then %>
Ofckeditor. config ['linkbrowser '] = true;
Ofckeditor. config ['imagebrowser '] = true;
Ofckeditor. config ['flashbroath'] = true;
Ofckeditor. config ['linkupload'] = true;
Ofckeditor. config ['imageupload'] = true;
Ofckeditor. config ['flashupload'] = true;
<% End if %>
Ofckeditor. toolbarset = 'basic ';
Ofckeditor. width = '000000 ';
Ofckeditor. Height = '20140901 ';
Ofckeditor. value = '';
Ofckeditor. Create ();

 

Fckpagecommand. Prototype. Execute = function ()
{
Window. Alert ("It works! ");
}

 

Configure and use FCKeditor in ASP environment

Let's talk about my testing environment: xpsp2, iis5.1, fckeditor2.0

Create a new site on IIS. I directly named it FCKeditor.
Create a site in DW. The test Server is a local machine and supports VBScript.
Download fckeditor2.0, which is open-source and can be found in many places on the Internet ......

The downloaded package should be a compressed package. decompress the package to the root directory of the FCKeditor site and call the package without any changes. When you get there, you will find it easy to die!

Create an index. asp page under the root directory of the site, and add the following code in the <body> section (call the editor ):

<%
Dim ofckeditor
Set ofckeditor = new FCKeditor
Ofckeditor. basepath = "/FCKeditor/" // set the editor path, which is a directory under the root directory of my site
Ofckeditor. toolbarset = "default"
Ofckeditor. width = "100%"
Ofckeditor. Height = "600"

Ofckeditor. value = "" // This is the initial value for the editor.
Ofckeditor. Create "logbody" // the content in the later editor is obtained by this logbody, And the name is determined by you.

%>

After adding this section, do not forget to add the second line before index. asp

<! -- # Include file = "FCKeditor/FCKeditor. asp" -->

Include FCKeditor. asp. Remember!

That's easy!

Now you only need to use this editor as a control to extract its data: Request ("logbody ")

Now let's relax. The test is successful.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.