二十四画生的Blog


        ——开始学习Orchard框架
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[DNN扩展]让DNN也用CuteEditor

Posted on 2005-06-29 14:37  二十四画生  阅读(3521)  评论(5编辑  收藏  举报

  前两天看见dudu把编辑器CuteEditor升级到4.5版了ttp://www.cnblogs.com/dudu/archive/2005/06/25/181192.html

  DNN中使用的是编辑器是FreeTextBox(即:ftb),它里面没有将图片上传到服务器的功能纠正一下:FreeTextBox有图片上传功能,只是没有默认给出,需要修改provider。详见:如何开启ftb的图片上传和创建目录功能),其他功能好像也没有CuteEditor丰富。我想DNN既然可以支持ftb,就应该是能够支持CuteEditor的(同是第三方控件)。上CuteEditor的官方网站(http://cutesoft.net/)一看,还真可以支持DNN(在线演示http://dnn3.cutesoft.net/)。

  Go!Down下来试试。我下的是Cute Editor for DotNetNuke 3.0.0 - 3.0.13版,Cute Editor for DotNetNuke 3.1版的安装和它一样。下载下来后解压后查看,有安装说明有相关文档,实在是太好了。

安装安装说明的步骤如下:(原文:在解压后的document文件夹下的DotNetNuke-Integration.htm)
1、将解压后的Providers\HtmlEditorProviders文件夹中的CEHtmlEditorProvider文件夹中的内容全部Copy到DNN程序的Providers\HtmlEditorProviders文件夹下。

2、将以下解压后的bin文件夹下的CuteEditor.dll 、DotNetNuke.CEHtmlEditorProvider.dll 、NetSpell.SpellChecker.dll 、CuteEditor.lic全部Copy到DNN程序的bin文件夹下

3、修改配置文件,在web.config中找到htmlEditor节点,将它里面的内容替换如下。记住将htmlEditor节点的defaultProvider属性修改为CEHtmlEditorProvider。

<htmlEditor defaultProvider="CEHtmlEditorProvider">
  
<providers>
    
<clear/>
        
<add name="CEHtmlEditorProvider" 
        type
="DotNetNuke.HtmlEditor.CEHtmlEditorProvider, DotNetNuke.CEHtmlEditorProvider" 
        providerPath
="~\Providers\HtmlEditorProviders\CEHtmlEditorProvider\CuteSoft_Client\CuteEditor\" 
        UseDNNRootImageDirectory
="true"
        RemoveServerNamesFromUrl
="true"
        EnableStripScriptTags
="true"
        RemoveTBODYTag
="false"
        ShowCodeViewToolBar
="true"
        UseRelativeLinks
="true"             RenderRichDropDown="true"
        UseSimpleAmpersand
="false"
        MaxHTMLLength
="0"
        MaxTextLength
="0"
        CustomCulture
=""
        ThemeType
="Office2003_BlueTheme"
        DisableAutoFormatting
="false"
        DisableClassList
=""
        HelpUrl
=""
        BreakElement
="div"
        EditorBodyStyle
=""
        Admin_AutoConfigure 
= "Full"
        Admin_SecurityPolicyFile 
= "admin.config"
        Admin_DisableItemList 
= ""
        Admin_AllowPasteHtml 
= "true"
        Admin_EditorOnPaste  
= "default"
        Admin_ReadOnly 
= "false"
        Admin_ShowBottomBar 
="true"
        Admin_ShowHtmlMode 
= "true"
        Admin_ShowPreviewMode 
= "true" 
        Registered_AutoConfigure 
= "Simple"
        Registered_SecurityPolicyFile 
= "default.config"
        Registered_DisableItemList 
= ""
        Registered_AllowPasteHtml 
= "true"
        Registered_EditorOnPaste  
= "default"
        Registered_ReadOnly 
= "false"
        Registered_ShowBottomBar 
="true"
        Registered_ShowHtmlMode 
= "true"
        Registered_ShowPreviewMode 
= "true"        
        Guest_AutoConfigure 
= "Full"
        Guest_SecurityPolicyFile 
= "admin.config"
        Guest_DisableItemList 
= "Save"
        Guest_AllowPasteHtml 
= "true"
        Guest_EditorOnPaste  
= "default"
        Guest_ReadOnly 
= "false"
        Guest_ShowBottomBar 
="true"
        Guest_ShowHtmlMode 
= "true"
        Guest_ShowPreviewMode 
= "true"
        
/> 
   
</providers>
</htmlEditor> 

4、OK,如果你的DNN程序时已网站形式发布的到这里就安装完毕了。(应该是好了,我的是以虚拟目录形式发布的所以还要继续往下看)
5、如果你的DNN程序是以虚拟目录形式发布的,那么使用时会报错。如:F:\Inetpub\wwwroot\Portals\0\Admin目录无权访问。这应该是路径问题,将路径前加上"~"表示从根路径起就可以解决这个问题。
6、双击打开Provider.CEHtmlEditorProvider.vbproj项目,会有两个引用错误。分别修改这两个引用DotNetNuk(添加DNN程序Bin文件夹中的DotNetNuk.dll)和CuteEditor(添加CEHtmlEditorProvider\bin中的CuteEditor.dll)。如何添加引用不用多讲吧!
7、打开CEHtmlEditorProvider.vb,修改
RootImageDirectory = _portalSettings.HomeDirectory.Substring(_portalSettings.HomeDirectory.IndexOf("/Portals/"))

RootImageDirectory = "~" & _portalSettings.HomeDirectory.Substring(_portalSettings.HomeDirectory.IndexOf("/Portals/"))
即可。
8、重新编译一下,将编译后的DotNetNuke.CEHtmlEditorProvider.dll复制到DNN程序根目录下的Bin中。
9、再次运行程序,OK。CuteEditor可以用了,界面如下:

10、博客园中,每一个用户上传的文件都在各自同名的文件夹下,要在DNN中实现需将CEHtmlEditorProvider.vb文件中的
If Isadmin Then
    tempfolder = ""
ElseIf Isregistered Then
    tempfolder = "Member"
End If

改为
If Isadmin Then
    tempfolder = ""
ElseIf Isregistered Then
    tempfolder = "Member"
    ' 如果是注册用则将图片或文件上传到与用户名同名的文件夹
    Dim objUserInfo As UserInfo = UserController.GetCurrentUserInfo
    If objUserInfo.UserID <> -1 Then
        tempfolder = tempfolder & "/" & objUserInfo.Username.ToString
    End If
End If
记得要添加引用:Imports DotNetNuke.Entities.Users。重复步骤8即可。

  大家都装着试试,看看还有没有新的问题。dudu肯定是使用CuteEditor的高手,强烈建议他写一篇关于CuteEditor属性、参数和开发使用指南的文章。

初步看来一些关于使用富文本编辑相关的代码。主要涉及以下文件:
controls\TextEditor.ascx
Components\Providers\HTMLEditor
以及Providers\HtmlEditorProviders文件夹中的两个编辑器

从类图上分析,大概是用的策略模式,等完全分析清楚后在写文章说明。


 更多相关内容>>