in

搜趣堡 - 中心街区

沈阳人的网上综合社区

半冬眠的壳儿

岁月需要回忆朋友要相聚,缘分需要偶遇生命要延续;该来就来该去就去,无所谓歌舞升平无所谓灯红酒绿;只为人生更加美丽!

三月 2008 - Posts

  • CommunityServer 2007 升级日志三 - 内容编辑功能的改进

    (三) 内容编辑功能的改进

    1. 整合 CuteSoft WYSIWYG 编辑器
    以前在 Community Server 2.1 版本的时候就做过同样的事,前一阵子也对 Cute Editor for .NET 6.0 做了一些了解,不过实际操作的话还是要仔细一点,毕竟版本的提升带来了一些变化。
    {1} 将 Cute Editor 的 dll 文件、证书文件以及拼写检查字典文件复制到 ~/bin 下。
    {2} 复制 CuteSoft_Client 到 ~ 下的某个文件夹,并在 web.config 的 <appSettings> 区域添加 <add key="CuteEditorDefaultFilesPath" value="~/xxx/CuteSoft_Client/CuteEditor" />
    {3} 对 CuteEditor 进行包装
    [1] 新建类库工程生成 dll 文件至 ~/bin 下,新建继承自 CuteEditor.Editor 并实现 CommunityServer.Controls.ITextEditor 接口的类 oEditor 。

  • CommunityServer 2007 升级日志二

    (二)

    1. 汉化
    只需在 /communityserver.config 文件中的 defaultLanguage 属性设置成 "zh-CN",同时在 /Languages/languages.xml 文件中开启 <language name="Chinese Simplified" key="zh-CN" />,然后把汉化资源文件复制到 /Languages/zh-CN 文件夹下即可。

    2. 虽然对 communityserver 2007 没有深入了解,但是感觉母版机制好像和以前有一点区别。修改 /Themes/default/Common/UserWelcome.aspx 和 /ControlPanel/Masters/ControlPanelMaster.ascx 文件中的相关代码部分去掉社区页面顶部的 help 链接。

    3. 国内论坛的使用习惯是在主题列表项前的小图标单击可以在新窗口中打开,但是 CommunityServer 确始终是在当前窗口打开帖子,为了实现这个小功能,需要做点改动。
    /Themes/default/Forums/threadlist.aspx 中 ID 为 FilteredThreadList 的 CSForum:ThreadList 是通常情况下显示的列表,图片的显示代码是:ForumFormatter.StatusIcon( (Thread) Container.DataItem ),所以需要修改 CommunityServer.Discussions.Components 的 static string threadStatusIcon 值为 "<a href=\"{2}\" target=\"_blank\"><img title=\"{0}\" alt=\"{0}\" src=\"{1}\" border=\"0\" /></a>",同时需要在 StatusIcon(Thread) 方法中将 Globals.GetSiteUrls().Post(thread.PostID) 的值附加到其中。

    4. UrlRewrite
    CommunityServer 2007.1 的默认首页已经是一个完全空白的占位了,直接被重写到 /Themes/default/Common/home.aspx 这是和 2.X 版本不同的地方。当默认的 CommunityServer.Urls.UrlReWriteProvider.GetRewrittenUrl 执行重写过程时检测当前的 url 是否是 /Themes 或 /controlpanel 中的一个,这意味着新版本的 WEB 文件的物理位置就是在这两个位置之中。
    通过 SiteUrls.config 也可以了解一般的匹配规则并且可以做一些社区 URL 的定制修改。

    5. 搜索
    如果不是使用 windows 服务来运行索引等任务,直接修改 communityserver_override.config 中的配置项来适应自己的环境,同时把 dll 文件复制到 /WEB/BIN 文件夹下再清理一下数据库的索引选项就可以了,详细说明可以参看官方指引。

    6. 就在我觉得应该进一步改善下社区的编辑功能的时候,我发现有的博客通过 TAG 或是日期来筛选的结果不存在了,我还以为是在升级的时候出了什么问题,但是在官方网站的一个帖子看到在 CommunityServer 2007 中,如果没有在写博客的时候选择 "Publish to my aggregate list(发布到我的博客首页)" 选项的时候是不显示的,这是在使用习惯上和 2.X 版本有很大区别的地方。
    测试在新开博客中发帖,发现从帖子提交到在博客首页和个人首页上显示中间的间隔比较长,跟踪代码就可以知道博客帖子提交后是直接插入到数据库表的,但是帖子的读取确优先读取缓存,而同步数据库和缓存是有一定的时间间隔的,如果在 communityserver.config 中 cacheFactor 设置为默认值 5,这个间隔可能会达到 10 分钟以上,这种缓存机制对于一些博客比较少的站点来说有点过于缓慢,可以适当调整,cacheFator 在这项功能上每单位大约为 2 分钟。(相关的代码可以参看:
    CommunityServer.Blogs.Controls.WeblogPostList.DataSource;
    CommunityServer.Blogs.Components.WeblogPosts.Add;
    CommunityServer.Blogs.Components.WeblogPosts.GetBlogThreads;
    CommunityServer.Data.GetBlogThreads)
    题外话:communityserver wiki add-on 讨论帖插件总结博客帖