EntLib.com Forum / YAF 开源论坛集成 FCKEditor v2.6 编辑器
YAF 开源论坛系统自带的编辑器BBCode Editor功能比较简单,界面如下:
因此,考虑集成功能强大的FCKEditor 免费开源编辑器,可以到官方网站下载该编辑器:
这个HTML文本编辑器可以让web程序拥有如MS Word这样强大的编辑功能.FCKeditor支持当前流行的浏览器。
如下是集成在 EntLib.com Forum / YAF 论坛系统的 FCKEditor 编辑器:
在EntLib.com Forum / YAF 开源论坛系统集成 FCKEditor v2.6(当前为最新版本)的基本步骤如下:
1. 下载FCKeditor 2.6 基本文件(Main Code)。
将解压缩的文件复制到EntLibForum/YAF项目的editors/FCKEditorV2 目录下。
2. 下载 FCKeditor.Net / ASP.NET 控件,复制FredCK.FCKeditorV2.dll 文件到 EntLibForum/YAF项目的bin目录。
这样就基本可以FCKEditor v2.6 超强的编辑器了,当然还需要在Host Settings中设置 EntLibForum/YAF 论坛默认的编辑器。
关于 FCKEditor 的一些基本配置信息,请参考如下的文章:
如需要使用文件上传功能,还需要修改代码FCKEditorV2/editor/filemanager/connectors/config.ascx(以ASPX代码为例)。这里限制只有登录的用户才可以使用文件上传功能,并且上传的文件只能上传到用户自己的目录。根据每个用户名自动创建对应的文件上传目录。
connectors/config.ascx 更新后的代码如下:
1
<
script runat
=
"
server
"
>
2
3 /* *
4 * This function must check the user session to be sure that he/she is
5 * authorized to upload and access files in the File Browser.
6 */
7 private string m_userName;
8 private int m_userID;
9 private int m_boardID;
10 private bool m_isAuthenticated;
11
12 private bool CheckAuthentication()
13 {
14 // WARNING : DO NOT simply return "true". By doing so, you are allowing
15 // "anyone" to upload and list the files in your server. You must implement
16 // some kind of session validation here. Even something very simple as
17 //
18 // return ( Session[ "IsAuthorized" ] != null && (bool)Session[ "IsAuthorized" ] == true );
19 //
20 // where Session[ "IsAuthorized" ] is set to "true" as soon as the
21 // user logs in your system.
22
23 string userName = HttpContext.Current.User.Identity.Name;
24
25 try
26 {
27 if (HttpContext.Current.User.Identity.IsAuthenticated)
28 {
29 string [] parts = userName.Split( ' ; ' );
30 if (parts.Length == 3 )
31 {
32 m_userID = int .Parse(parts[ 0 ]);
33 m_boardID = int .Parse(parts[ 1 ]);
34 m_userName = parts[ 2 ];
35 m_isAuthenticated = true ;
36 }
37 }
38 }
39 catch (Exception)
40 {
41 m_userName = "" ;
42 m_userID = 0 ;
43 m_boardID = 0 ;
44 m_isAuthenticated = false ;
45 }
46
47 return m_isAuthenticated;
48 }
49
50 public override void SetConfig()
51 {
52 // SECURITY: You must explicitly enable this "connector". (Set it to "true").
53 Enabled = CheckAuthentication();
54
55 // URL path to user files.
56 UserFilesPath = " /userfiles/ " ;
57
58 // The connector tries to resolve the above UserFilesPath automatically.
59 // Use the following setting it you prefer to explicitely specify the
60 // absolute path. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
61 // Attention: The above 'UserFilesPath' URL must point to the same directory.
62 UserFilesAbsolutePath = "" ;
63
64 // Due to security issues with Apache modules, it is recommended to leave the
65 // following setting enabled.
66 ForceSingleExtension = true ;
67
68 // Allowed Resource Types
69 AllowedTypes = new string [] { " File " , " Image " , " Flash " , " Media " };
70
71 // For security, HTML is allowed in the first Kb of data for files having the
72 // following extensions only.
73 HtmlExtensions = new string [] { " html " , " htm " , " xml " , " xsd " , " txt " , " js " };
74
75 TypeConfig[ " File " ].AllowedExtensions = new string [] { " 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 " };
76 TypeConfig[ " File " ].DeniedExtensions = new string [] { };
77 string filepath = " %UserFilesPath% " + m_userName + " /file/ " ;
78 TypeConfig[ " File " ].FilesPath = filepath;
79 TypeConfig[ " File " ].FilesAbsolutePath = (UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%file/ " );
80 TypeConfig[ " File " ].QuickUploadPath = filepath; // "%UserFilesPath%" + m_userName + "/";
81 TypeConfig[ " File " ].QuickUploadAbsolutePath = filepath; // (UserFilesAbsolutePath == "" ? "" : "%UserFilesAbsolutePath%");
82
83 TypeConfig[ " Image " ].AllowedExtensions = new string [] { " bmp " , " gif " , " jpeg " , " jpg " , " png " };
84 TypeConfig[ " Image " ].DeniedExtensions = new string [] { };
85 string imagepath = " %UserFilesPath% " + m_userName + " /image/ " ;
86 TypeConfig[ " Image " ].FilesPath = imagepath;
87 TypeConfig[ " Image " ].FilesAbsolutePath = (UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%image/ " );
88 TypeConfig[ " Image " ].QuickUploadPath = imagepath; // "%UserFilesPath%" + m_userName + "/";
89 TypeConfig[ " Image " ].QuickUploadAbsolutePath = (UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath% " );
90
91 TypeConfig[ " Flash " ].AllowedExtensions = new string [] { " swf " , " flv " };
92 TypeConfig[ " Flash " ].DeniedExtensions = new string [] { };
93 TypeConfig[ " Flash " ].FilesPath = " %UserFilesPath%flash/ " ;
94 TypeConfig[ " Flash " ].FilesAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%flash/ " );
95 TypeConfig[ " Flash " ].QuickUploadPath = " %UserFilesPath% " ;
96 TypeConfig[ " Flash " ].QuickUploadAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath% " );
97
98 TypeConfig[ " Media " ].AllowedExtensions = new string [] { " 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 " };
99 TypeConfig[ " Media " ].DeniedExtensions = new string [] { };
100 TypeConfig[ " Media " ].FilesPath = " %UserFilesPath%media/ " ;
101 TypeConfig[ " Media " ].FilesAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%media/ " );
102 TypeConfig[ " Media " ].QuickUploadPath = " %UserFilesPath% " ;
103 TypeConfig[ " Media " ].QuickUploadAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath% " );
104 }
105
106 </ script >
107
2
3 /* *
4 * This function must check the user session to be sure that he/she is
5 * authorized to upload and access files in the File Browser.
6 */
7 private string m_userName;
8 private int m_userID;
9 private int m_boardID;
10 private bool m_isAuthenticated;
11
12 private bool CheckAuthentication()
13 {
14 // WARNING : DO NOT simply return "true". By doing so, you are allowing
15 // "anyone" to upload and list the files in your server. You must implement
16 // some kind of session validation here. Even something very simple as
17 //
18 // return ( Session[ "IsAuthorized" ] != null && (bool)Session[ "IsAuthorized" ] == true );
19 //
20 // where Session[ "IsAuthorized" ] is set to "true" as soon as the
21 // user logs in your system.
22
23 string userName = HttpContext.Current.User.Identity.Name;
24
25 try
26 {
27 if (HttpContext.Current.User.Identity.IsAuthenticated)
28 {
29 string [] parts = userName.Split( ' ; ' );
30 if (parts.Length == 3 )
31 {
32 m_userID = int .Parse(parts[ 0 ]);
33 m_boardID = int .Parse(parts[ 1 ]);
34 m_userName = parts[ 2 ];
35 m_isAuthenticated = true ;
36 }
37 }
38 }
39 catch (Exception)
40 {
41 m_userName = "" ;
42 m_userID = 0 ;
43 m_boardID = 0 ;
44 m_isAuthenticated = false ;
45 }
46
47 return m_isAuthenticated;
48 }
49
50 public override void SetConfig()
51 {
52 // SECURITY: You must explicitly enable this "connector". (Set it to "true").
53 Enabled = CheckAuthentication();
54
55 // URL path to user files.
56 UserFilesPath = " /userfiles/ " ;
57
58 // The connector tries to resolve the above UserFilesPath automatically.
59 // Use the following setting it you prefer to explicitely specify the
60 // absolute path. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
61 // Attention: The above 'UserFilesPath' URL must point to the same directory.
62 UserFilesAbsolutePath = "" ;
63
64 // Due to security issues with Apache modules, it is recommended to leave the
65 // following setting enabled.
66 ForceSingleExtension = true ;
67
68 // Allowed Resource Types
69 AllowedTypes = new string [] { " File " , " Image " , " Flash " , " Media " };
70
71 // For security, HTML is allowed in the first Kb of data for files having the
72 // following extensions only.
73 HtmlExtensions = new string [] { " html " , " htm " , " xml " , " xsd " , " txt " , " js " };
74
75 TypeConfig[ " File " ].AllowedExtensions = new string [] { " 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 " };
76 TypeConfig[ " File " ].DeniedExtensions = new string [] { };
77 string filepath = " %UserFilesPath% " + m_userName + " /file/ " ;
78 TypeConfig[ " File " ].FilesPath = filepath;
79 TypeConfig[ " File " ].FilesAbsolutePath = (UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%file/ " );
80 TypeConfig[ " File " ].QuickUploadPath = filepath; // "%UserFilesPath%" + m_userName + "/";
81 TypeConfig[ " File " ].QuickUploadAbsolutePath = filepath; // (UserFilesAbsolutePath == "" ? "" : "%UserFilesAbsolutePath%");
82
83 TypeConfig[ " Image " ].AllowedExtensions = new string [] { " bmp " , " gif " , " jpeg " , " jpg " , " png " };
84 TypeConfig[ " Image " ].DeniedExtensions = new string [] { };
85 string imagepath = " %UserFilesPath% " + m_userName + " /image/ " ;
86 TypeConfig[ " Image " ].FilesPath = imagepath;
87 TypeConfig[ " Image " ].FilesAbsolutePath = (UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%image/ " );
88 TypeConfig[ " Image " ].QuickUploadPath = imagepath; // "%UserFilesPath%" + m_userName + "/";
89 TypeConfig[ " Image " ].QuickUploadAbsolutePath = (UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath% " );
90
91 TypeConfig[ " Flash " ].AllowedExtensions = new string [] { " swf " , " flv " };
92 TypeConfig[ " Flash " ].DeniedExtensions = new string [] { };
93 TypeConfig[ " Flash " ].FilesPath = " %UserFilesPath%flash/ " ;
94 TypeConfig[ " Flash " ].FilesAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%flash/ " );
95 TypeConfig[ " Flash " ].QuickUploadPath = " %UserFilesPath% " ;
96 TypeConfig[ " Flash " ].QuickUploadAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath% " );
97
98 TypeConfig[ " Media " ].AllowedExtensions = new string [] { " 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 " };
99 TypeConfig[ " Media " ].DeniedExtensions = new string [] { };
100 TypeConfig[ " Media " ].FilesPath = " %UserFilesPath%media/ " ;
101 TypeConfig[ " Media " ].FilesAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath%media/ " );
102 TypeConfig[ " Media " ].QuickUploadPath = " %UserFilesPath% " ;
103 TypeConfig[ " Media " ].QuickUploadAbsolutePath = ( UserFilesAbsolutePath == "" ? "" : " %UserFilesAbsolutePath% " );
104 }
105
106 </ script >
107