轉載於:http://panjiangchuan.javaeye.com/blog/524921
通過設定檔設定fckeditor的配置
一:直接修改fckconfig.js檔案
二:自訂設定檔,自訂項將覆蓋fckconfig.js檔案中的預設設定
(1):建立設定檔【即是普通的js檔案】
例:在項目的根目錄下建立myconfig.js檔案
內容:
FCKConfig.AutoDetectLanguage= true ;
FCKConfig.DefaultLanguage= 'zh-cn' ;
......
(2):讀取設定檔【由於發布項目的不確定性,自訂檔案一般放入fckeditor檔案夾下 FCKConfig.EditorPath代表fckeditor檔案夾下】
1):修改fckconfig.js檔案的FCKConfig.CustomConfigurationsPath = FCKConfig.EditorPath+'myconfig.js' ;
2):調用fckeditor的時候讀取設定檔,建立FCKeditor對象oFCKeditor(推薦使用,對單個的編輯域起作用)
oFCKeditor.config["CustomConfigurationsPath"]=FCKConfig.EditorPath+"myconfig.js";
常見需要修改的配置:
(1):添加常見的中文字型:修改或者自訂設定檔的FontNames屬性
例:FCKConfig.FontNames='宋體;楷體_GB2312;黑體;隸書;Times New Roman;Arial';
(2):設定工具條:修改或者自訂設定檔的ToolbarSets屬性
例:FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
] ;
註:Basic:工具條的名稱(調用時使用) 單引號內部 單詞表示一個功能表項目 -表示一個分隔字元 /表示分行符號【參照fckconfig.js中的ToolbarSets設定工具條】
(3):修改"斷行符號"和"shift+斷行符號"的換行行為:修改或者自訂設定檔的FontNames屬性
例:FCKConfig.EnterMode = 'br' ;
FCKConfig.ShiftEnterMode = 'p' ;
註:EnterMode:斷行符號行為 ShiftEnterMode:shift+斷行符號行為 【他們的取值只能為p div br 三者之一】
(4):修改編輯區樣式檔案:修改或者自訂設定檔的EditorAreaCSS屬性
例:FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ;
註:FCKConfig.BasePath指的是:fckeditor/editor檔案夾。
(5):配置表情圖片:修改或者自訂設定檔的SmileyPath SmileyImages SmileyColumns SmileyWindowWidth SmileyWindowHeight屬性
例:FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;
FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif'] ;
FCKConfig.SmileyColumns = 8 ;
FCKConfig.SmileyWindowWidth = 320 ;
FCKConfig.SmileyWindowHeight = 210 ;
註:SmileyPath:指定表情所在的檔案夾 SmileyImages指定表情圖片的名稱 SmileyColumns指定每行顯示表情的個數 SmileyWindowWidth SmileyWindowHeight表情列表的寬度和高度。修改fckeditor/editor/dialog/fck_smiley.html檔案 注釋掉dialog.SetAutoSize( true ) ;行 使之表情列表按照指定的寬度和高度顯示,修改<body style="overflow: hidden">為<body style="overflow: auto">使表情列表出現捲軸,完全顯示表情。
注意:JSP頁面的BasePath指:fckeditor.js的路徑,設定檔的BasePath指:fckeditor/editor檔案夾 設定檔的EditorPath指:fckeditor檔案夾下。
檔案上傳控制:
(1):檔案類型的控制(分為四種類型 分別為:檔案 映像 flash 媒體)【二者配置必須同步】
1)配置自訂fckeditor設定檔(用戶端配置 媒體沒有用戶端配置)
例:FCKConfig.LinkUploadAllowedExtensions = ".
(7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip)$" ;
FCKConfig.ImageUploadAllowedExtensions = ".(jpg|gif|jpeg|png|bmp)$" ;
FCKConfig.FlashUploadAllowedExtensions = ".(swf|flv)$" ;
2)配置fckeditor.properties資源檔(伺服器端配置),在資源檔中加入:
例:connector.resourceType.file.extensions.allowed =
7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip
connector.resourceType.image.extensions.allowed = bmp|gif|jpeg|jpg|png
connector.resourceType.flash.extensions.allowed = swf|fla
connector.resourceType.media.extensions.allowed=aiff|asf|avi|bmp|fla|flv|gif|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|png|qt|ram|rm|rmi|rmvb|swf|tif|tiff|wav|wma|wmv
(2):檔案大小的控制:同理修改Dispatcher.java檔案
中文亂碼解決方案:
(1):使用最新的fckeditor.java-2.5.bin.zip檔案將不會出現上傳中文檔案名稱檔案出現亂碼。
(2):建立中文目錄時出現亂碼:修改net.fckeditor.connector包下的Dispatcher.class檔案。
1):下載fckeditor-java-2.5-src.zip源檔案。
2):在你的工程目錄下建立net.fckeditor.connector包,複製fckeditor-java-2.5/java-core/src/main/java/net/fckeditor/connector/Dispatcher.java檔案到該包下。【值得注意的是編輯該檔案前一定先將6個jar檔案拷貝到lib目錄下】
3):編輯該檔案 在doGet成員方法下找到:String newFolderNameStr = request.getParameter("NewFolderName");
logger.debug("Parameter NewFolderName: {}",newFolderNameStr);
改為:
String newFolderNameStr = request.getParameter("NewFolderName");
String temp= new String(newFolderNameStr.getBytes("iso8859-1"),"utf-8");
newFolderNameStr = temp;
logger.debug("Parameter NewFolderName: {}",newFolderNameStr);
4):解壓fckeditor-java-core-2.5.jar檔案,並部署你的項目,在部署後的classes檔案夾下找到你編譯好的Dispatcher.class檔案替換 fckeditor-java-core-2.5.jar解壓後的net.fckeditor.connector檔案夾下的Dispatcher.class,並且重新打包該檔案。
5):用改變後的fckeditor-java-core-2.5.jar檔案代替原來的檔案,重新部署。
(3):引用中文名稱的圖片不能正常顯示:
1):修改伺服器配置【不推薦使用,因為會使get傳遞的參數出現亂碼 如:建立中文檔案夾再次出現亂碼】:修改Tomcat 6.0/conf/server.xml檔案中伺服器所對應的連接埠所對應的配置
例:我的tomcat的連接埠是:8080則該段配置則修改為:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"/>
2):修改上傳檔案的檔案名稱【使名稱變為目前時間(也可以使用UUID構造名稱)】避免出現中文:再次修改Dispatcher.java檔案。
找到:doPost方法下的: String fileName = FilenameUtils.getName(uplFile.getName());
logger.debug("Parameter NewFile: {}", fileName);
修改為:
String fileName = FilenameUtils.getName(uplFile.getName());
String suffix = fileName.substring(fileName.lastIndexOf("."));
Calendar cad = Calendar.getInstance();
fileName = String.valueOf(cad.get(Calendar.YEAR))+String.valueOf(cad.get(Calendar.MONTH))+String.valueOf(cad.get(Calendar.DAY_OF_MONTH))+String.valueOf(cad.get(Calendar.HOUR_OF_DAY))+String.valueOf(cad.get(Calendar.MINUTE))+String.valueOf(cad.get(Calendar.SECOND));
fileName = fileName + suffix;
logger.debug("Parameter NewFile: {}", fileName);
3):同上進行編譯和打包。