EntLib.com Forum / YAF 开源论坛集成 FCKEditor v2.6 编辑器
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