一、配置方法
FCKeditor應用在ASP.NET上,需要兩樣東西,一是FCKeditor本身可進入官網下載http://ckeditor.com/(FCKEditor已經改名了),另一個是用於ASP.NET的FCKeditor控制項即FredCK.FCKeditorV2.dll(分為1.1和2.0兩個版本,這裡使用2.0版本)。
1. 將FredCK.FCKeditorV2.dll引用到網站項目中
解壓FCKeditor編輯器,得到檔案夾fckeditor,複製此檔案夾到Web應用的項目下(根目錄即可也可以使子目錄如/Editor/fckeditor)。
2. 在頁面中使用FCKeditor
有兩種方式。
(1)手工編碼
在頁面中加入ASP.NET指令:
<%@ Register Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>
然後在需要的地方加入FCKeditor控制項:
<FCKeditorV2:FCKeditor id="FCKeditor1" runat="server" />
(2)整合到Visual Studio工具箱
開啟一ASP.NET頁面,展開工具列,開啟右鍵菜單,選擇“選擇項 ...”,在出現的“選擇工具箱項”會話框的“.NET Framework 組件”選項卡中選擇“瀏覽”,找到並選中FCKeditor程式集,開啟點擊“確定”,完成控制項匯入。
這時,在Toolbox出現了一個名為FCKeditor的控制項,可以像使用Visual Studio內建控制項一樣使用它。
3. 配置FCKeditor編輯器路徑
在頁面中,使用的是FCKeditor控制項,該控制項需要知道FCKeditor編輯器檔案組的路徑。有兩種配置方法。
(1)配置web.config
在appSettings配置節中加入
<add key="FCKeditor:BasePath" value="~/editors/fckeditor/" />
使用這種配置方法後,對於項目中任何一個頁面中用到的FCKeditor控制項,都不用再配置其BasePath屬性。
(2)直接對用到的FCKeditor控制項進行配置
在頁面代碼中設定FCKeditor的屬性BasePath為FCKeditor編輯器檔案組的路徑,或者在Page_Init事件處理器中設定其BasePath的值。
4. 配置FCKeditor編輯器檔案上傳路徑
在web.config的appSettings配置節中加入
<add key="FCKeditor:UserFilesPath" value="~/files/" />
二、配置FCKeditor
按照FCKeditor的預設配置,可以完成一些常用的HTML可視化編輯工作,但在實際應用中,還需要對其做進一步的配置。FCKeditor控制項的可配置屬性不多,且配置後只能作用於一個單一執行個體。實際上,需要對FCKeditor編輯器檔案組中的通用設定檔/fckconfig.js和 ASP.NET專用檔案上傳管理代碼檔案/editor/filemanager/connectors/aspx/config.ascx進行配置。
1. 配置控制項語言
FCKeditor是自動探測瀏覽器所使用的語言編碼的,其預設語言是英文。修改配置行"FCKConfig.DefaultLanguage = 'en';"為'zh-cn',採用中文為預設語言。
2. 配置控制項應用技術
FCKeditor預設是用於php技術的。修改配置行"var _FileBrowserLanguage = 'php';"和"var _QuickUploadLanguage = 'php';"為'aspx',採用ASP.NET技術。
3. 配置Tab鍵
預設Tab鍵在FCKeditor中不可用,可以修改配置行"FCKConfig.TabSpaces = 0;"為1,啟用Tab鍵。
4. 定製FCKeditor工具列
FCKConfig提供兩種工具列配置。在配置行"FCKConfig.ToolbarSets["Default"] = [ ... ];"中定義了使用全部可用按鈕的配置(作為工具列的預設配置)。在配置行"FCKConfig.ToolbarSets["Basic"] = [ ... ];"中定義了一個精簡按鈕的工具列配置。實際使用時,預設配置按鈕太多,精簡配置按鈕又太少。因此需要定製工具列。
配置值[ ... ]中是形式為[[v, v2, .., vN], '/', [ ... ],...](vN表示要顯示的按鈕名字,'/'表示之後的按鈕組在下一行顯示)的按鈕分組的集合。如果不需要整個分組的按鈕,那麼就刪掉該分組(形式為 [ , , ...]);如果只是不需要分組中的某個按鈕,刪掉該按鈕。
配置多個工具列可以在網站不同位置靈活使用,在普通使用者介面可以使用較為精簡的工具列,在網站管理員後台可以使用較為複雜且功能較多的工具列。調用方法非常簡單,只要在頁面載入時執行this.fckEdit.ToolbarSet = "[工具列名稱]";
5. 定製可用的文本字型
FCKeditor是外國人做的,預設使用的字型當然也是西文字型了。修改配置行"FCKConfig.FontNames = '...';",加入要使用的中文字型名,如宋體,楷體_GB2312等。
FCKConfig預設使用HTML字型關鍵字來表示可選的字型大小,這存在著不同瀏覽器顯示效果不一致的問題。因此,建議修改配置行"FCKConfig.FontSizes = '...';",去掉字型關鍵字值,加入像素值或磅值。(當然,在網頁裡定義了全域樣式表的話,就不需要修改這項設定了,但應該教會終端使用者如何設定字型達到最佳顯示效果。)
6. 啟用檔案上傳
FCKeditor提供了非常強大和易用的檔案上傳功能,但是預設配置裡,檔案上傳功能不可用,這是基於安全的考慮。但我認為訪問安全性控制應該由程式來做,不應由控制項來做。
在檔案config.ascx中,修改CheckAuthentication()的傳回值為true。如果希望上傳具有多副檔名的檔案,修改 SetConfig()中ForceSingleExtension的值為false。FCKeditor預設可以上傳檔案、圖片、Flash和多媒體四種類型的檔案,可以在SetConfig()中對AllowedTypes修改來增減允許的類型(這個類型可以在後面的 TypeConfig["TypeName"]中定義,比如在AllowedExtensions屬性中定製本類型允許的上傳副檔名,在 DeniedExtensions裡定製不允許的上傳副檔名)。
在檔案fckconfig.js中,修改配置行"FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;"為FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=File&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;";修改配置行"FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ;"為"FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=File' ;"。(在這個設定檔裡,看起來似乎Type=File是作為預設參數的,但實際上不加這個參數的話,會出錯。)
7. 其它配置
對於這兩個設定檔中的配置屬性,從名字上很容易知道它們所代表的含義,基本上都可以定製。但要注意,屬性值的格式要正確。
三、將FCKeditor編輯器檔案組ASP.NET化
FCKeditor編輯器檔案組包含了用於它所支援的各種應用技術的檔案,所以,對於ASP.NET應用來說,有很多檔案是不需要的。
根目錄下,只保留檔案夾editor,檔案fckconfig.js、fckeditor.js、fckpackager.xml、fckstyles.xml和fcktemplates.xml。
子目錄editor/filemanager/connectors下,只保留檔案夾aspx。