練功房推薦書單

  • 黑心建商的告白:買屋前不看會哭的17堂課
  • 黑心房仲的告白:買屋簽約前最後救命的17堂課
  • 黑心投資客炒房告白:搞懂中古屋坑錢陷阱的17堂課
  • 猛虎出閘制霸版:最新OCP Java SE 6 Programmer專業認證(附原始程式碼及範例檔)
关于开发环境搭建  XML
Forum Index » JForum中文社群 JForum Chinese Users Community
Author Message
十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

测试中发现投票功能BUG,版本2.3.0,在2.2.1上没有出现。
现象:发起一个投票的主题后,自己或者其他可投票的会员点击“检视结果”,出现异常。投票帖和异常抓图见附件。
[Thumb - 投票检视结果.jpg]
 Filename 投票检视结果.jpg [Disk] Download
 Description 发起的投票主题
 Filesize 38 Kbytes
 Downloaded:  0 time(s)

[Thumb - 投票异常.jpg]
 Filename 投票异常.jpg [Disk] Download
 Description 产生的异常提示
 Filesize 27 Kbytes
 Downloaded:  0 time(s)

十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

问题1、现在,在每一个版面显示的版主是在该版面拥有版主权限的用户群组名称。通常在管理后台为每个版面添加一个对应的用户群组,设置为该版面的版主权限。然后再将一些用户设置到该群组,这样他们就是这个版面的版主了。

我想,我们的期望是显示属于该用户群组的用户名称。

问题2、发表主题时,过长的标题会使得首页的“最后发表”栏自动调整宽度,而不折行,结果会破坏首页布局效果;

问题3、每个主题里面的回复没有楼层数字(即回复的次数),有楼层数字会得到更直观的信息表达;

This message was edited 2 times. Last update was at 2011-07-05 20:44:57

十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

问题4、在使用后台管理的封锁控制功能时,添加新的封锁控制,不管选什么封锁类型,点击“更新”会引起异常。
异常提示信息见附件抓图:
[Thumb - 封锁控制中输入封锁ID值为3.jpg]
 Filename 封锁控制中输入封锁ID值为3.jpg [Disk] Download
 Description 异常提示
 Filesize 132 Kbytes
 Downloaded:  1 time(s)

andowson

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 662
Location: 台北
Offline

十鼎 wrote:测试中发现投票功能BUG,版本2.3.0,在2.2.1上没有出现。
现象:发起一个投票的主题后,自己或者其他可投票的会员点击“检视结果”,出现异常。投票帖和异常抓图见附件。


請修改一下templates/default/post_show.htm第113行:

<span class="gensmall" style="text-align:center"><a href="${JForumContext.encodeURL("/posts/list/${topic.id}")}?viewResults=true">${I18n.getMessage("PostShow.showPollResults")}</a></span>

分享經驗 累積智慧
[WWW] [MSN]
十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

一个主题的文章列表分页后点击第二页出异常。
情况如下:管理后台设置每页12篇文章,该主题共16个回复,第一页只显示了4篇文章,当点击第二页时出现了异常。异常提示见附件。

如果在后台管理-->系统设置-->缓存设置-->缓存最近 被读取 的主题到内存 将该设置项关闭,然后再重复前面的页面请求,则一切正常。
[Thumb - 一个主题的文章列表分页后点第二页出异常,后台设置每页12篇文章,该主题共16个回复,第一页只显示了4篇文章.jpg]
 Filename 一个主题的文章列表分页后点第二页出异常,后台设置每页12篇文章,该主题共16个回复,第一页只显示了4篇文章.jpg [Disk] Download
 Description 异常界面提示
 Filesize 30 Kbytes
 Downloaded:  1 time(s)

This message was edited 1 time. Last update was at 2011-07-07 22:40:22

十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

大概的原因我找到了,net.jforum.repository.PostRepository类的函数selectAllByTopicByLimit似乎有逻辑上欠缺。
andowson

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 662
Location: 台北
Offline

十鼎 wrote:问题3、每个主题里面的回复没有楼层数字(即回复的次数),有楼层数字会得到更直观的信息表达;

可以修改templates/default/post_show_action_buttons_inc.htm的第4行,於行首加上#${post_index+1+start}成為:
#${post_index+1+start}<a href="${JForumContext.encodeURL("/posts/list/${startStr}${post.topicId}")}#p${post.id}">

This message was edited 1 time. Last update was at 2011-07-08 12:20:45


分享經驗 累積智慧
[WWW] [MSN]
andowson

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 662
Location: 台北
Offline

十鼎 wrote:问题4、在使用后台管理的封锁控制功能时,添加新的封锁控制,不管选什么封锁类型,点击“更新”会引起异常。
异常提示信息见附件抓图:

這個問題跟資料庫有關,由於我使用的是PostgreSQL資料庫,沒有這個問題,但是MySQL之類的資料庫就會有。
修改一下/trunk/src/main/java/net/jforum/dao/generic/GenericBanlistDAO.java的第93-94行:
        public void insert(final Banlist banlist)
        {
                PreparedStatement pstmt = null;
                
                try {
                        pstmt = JForumExecutionContext.getConnection().prepareStatement(
                                SystemGlobals.getSql("BanlistModel.insert"));
                        ...
        }

改為如下:
        public void insert(final Banlist banlist)
        {
                PreparedStatement pstmt = null;
                
                try {
                        pstmt = this.getStatementForAutoKeys("BanlistModel.insert");
                        ...
        }

This message was edited 1 time. Last update was at 2011-07-08 12:22:44


分享經驗 累積智慧
[WWW] [MSN]
十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

andowson wrote:
十鼎 wrote:问题3、每个主题里面的回复没有楼层数字(即回复的次数),有楼层数字会得到更直观的信息表达;

可以修改templates/default/post_show_action_buttons_inc.htm的第4行,於行首加上#${post_index+1+start}成為:
#${post_index+1+start}<a href="${JForumContext.encodeURL("/posts/list/${startStr}${post.topicId}")}#p${post.id}">


嗯,我也已经改好了。
顺便说一下,我在杭州访问你的网站感觉速度有点慢。
[Thumb - floorNum.jpg]
 Filename floorNum.jpg [Disk] Download
 Description 楼层
 Filesize 11 Kbytes
 Downloaded:  0 time(s)

[Thumb - 版主.jpg]
 Filename 版主.jpg [Disk] Download
 Description 为每个版面显示版主的用户名
 Filesize 9 Kbytes
 Downloaded:  0 time(s)

andowson

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 662
Location: 台北
Offline

十鼎 wrote:
andowson wrote:
十鼎 wrote:问题3、每个主题里面的回复没有楼层数字(即回复的次数),有楼层数字会得到更直观的信息表达;

可以修改templates/default/post_show_action_buttons_inc.htm的第4行,於行首加上#${post_index+1+start}成為:
#${post_index+1+start}<a href="${JForumContext.encodeURL("/posts/list/${startStr}${post.topicId}")}#p${post.id}">


嗯,我也已经改好了。
顺便说一下,我在杭州访问你的网站感觉速度有点慢。

可否請您不吝分享您的修正方式,謝謝~
我也感覺到最近有點變慢的樣子,可能是流量上升的關係吧。

分享經驗 累積智慧
[WWW] [MSN]
十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

显示楼层的实现和楼主的方式大体一致,只是位置不同。
为每个版面显示版主用户名的方法如下:
--------------------------------------
功能实现:
1、修改模版文件forum_show.htm
... ...
<td valign="top" align="left">
    <#include "folder_descriptions.htm"/>
</td>

<#assign moderators = forum.getModeratorUsersList()/>
<#if (moderators.size() > 0)>
  <td align="right" class="gensmall">
    ${I18n.getMessage("ForumIndex.forumAdmins")}:
    <b>
         <#list moderators as m>
             <a href="${JForumContext.encodeURL("/user/profile/${m.id}")}">${m.name?html}</a>
         </#list>
    </b>
  </td>
</#if>

2、在代码文件net.jforum.entities.Forum中实现函数:
public List<ModeratorInfo> getModeratorUsersList()
{
    return ForumRepository.getModeratorUsersList(this.id);
}

3、在代码文件 net.jforum.repository.ForumRepository中实现函数:
public static List<ModeratorInfo> getModeratorUsersList(final int forumId)
{
  //TODO... 添加缓存功能
  List<ModeratorInfo> list = null;
  if (list == null) {
    synchronized (MUTEX_FQN_MODERATORS_USERS) {
    try {
    list =DataAccessDriver.getInstance().newForumDAO()
    .getModeratorUserList(forumId);
    }
  catch (Exception e) {
    throw new DatabaseException(e);
    }
  }//end of synchronized 
  }
  return list;
}


4、为ForumDAO添加新的接口getModeratorUserList;
5、为GenericForumDAO 实现接口getModeratorUserList;
/**
* @see net.jforum.dao.ForumDAO#getModeratorUserList(int)
*/
public List<ModeratorInfo> getModeratorUserList(int forumId) {
List<ModeratorInfo> list = new ArrayList<ModeratorInfo>();

PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
pstmt = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("ForumModel.getModeratorUserList"));
pstmt.setInt(1, forumId);

resultSet = pstmt.executeQuery();

while (resultSet.next()) {
ModeratorInfo moderatorInfo = new ModeratorInfo();
moderatorInfo.setId(resultSet.getInt("id"));
moderatorInfo.setName(resultSet.getString("name"));

list.add(moderatorInfo);
}

return list;
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(resultSet, pstmt);
}
}


6、为ForumModel.getModeratorUserList添加mysql语句:
ForumModel.getModeratorUserList = SELECT u.user_id AS id, u.username AS name \
FROM jforum_groups g, jforum_roles r, jforum_role_values rv, jforum_roles r2, jforum_users u, jforum_user_groups ug \
WHERE g.group_id = r.group_id \
AND r.role_id = rv.role_id \
AND r.name = 'perm_moderation_forums' \
AND rv.role_value = ? \
AND r2.name = 'perm_moderation' \
AND r2.group_id = g.group_id \
AND g.group_id = ug.group_id \
AND ug.user_id = u.user_id

---------------------------------------------------

This message was edited 4 times. Last update was at 2011-07-08 16:47:23

十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

为主题的文章进行缓存功能,我感觉有问题(我的理解),如果我理解有误还请指教。楼主,你的理解如何?
andowson

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 662
Location: 台北
Offline

十鼎 wrote:为主题的文章进行缓存功能,我感觉有问题(我的理解),如果我理解有误还请指教。楼主,你的理解如何?


應該是有問題沒錯,有可能是我誤改了原來的程式碼
trunk/src/main/java/net/jforum/repository/PostRepository.java的118行:
posts = pm.selectAllByTopicByLimit(topicId, start, count);

將其還原為:
posts = pm.selectAllByTopic(topicId);

再測測看吧!

另外,您在發表程式碼時可否幫忙加上code的標籤,以便套用原始碼排版?謝謝您!
可參考這篇的說明:
http://www.andowson.com/posts/list/133.page

This message was edited 3 times. Last update was at 2011-07-08 16:50:30


分享經驗 累積智慧
[WWW] [MSN]
十鼎

八級學員

Joined: 2011-07-01 14:17:58
Messages: 27
Location: 中国杭州
Offline

andowson wrote:
十鼎 wrote:为主题的文章进行缓存功能,我感觉有问题(我的理解),如果我理解有误还请指教。楼主,你的理解如何?


應該是有問題沒錯,有可能是我誤改了原來的程式碼
trunk/src/main/java/net/jforum/repository/PostRepository.java的118行:
posts = pm.selectAllByTopicByLimit(topicId, start, count);

將其還原為:
posts = pm.selectAllByTopic(topicId);

再測測看吧!

另外,您在發表程式碼時可否幫忙加上code的標籤,以便套用原始碼排版?謝謝您!
可參考這篇的說明:
http://www.andowson.com/posts/list/133.page


看了你的才知道原来code标签可以这么用的。 smilie
调用selectAllByTopic函数是对的,在为主题获取某页文章的时候就将全部文章列表都放入缓存了,然后再取sublist。就是费内存呀。
andowson

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 662
Location: 台北
Offline

十鼎 wrote:
问题2、发表主题时,过长的标题会使得首页的“最后发表”栏自动调整宽度,而不折行,结果会破坏首页布局效果;

請修改forum_list.htm,將下列的程式碼複製貼到<#include "bottom.htm"/>之前即可:
<script type="text/javascript"> 
/* <![CDATA[ */
function limitTitleSize()
{
    $(".last_title").each(function () {
        var value = $(this).text();
        
        if (value.length > 30) {
            $(this).text(value.substring(0, 30) + "...");
        }
    });
}

$(document).ready(function() {
	limitTitleSize();
 
});
/* ]]> */
</script>


This message was edited 1 time. Last update was at 2011-07-09 18:40:50


分享經驗 累積智慧
[WWW] [MSN]
 
Forum Index » JForum中文社群 JForum Chinese Users Community
Go to: