會員註冊 / 登入  |  電腦版  |  Jump to bottom of page

JForum中文社群 JForum Chinese Users Community » 回复:关于开发环境搭建

發表人: 十鼎, 八級學員
2011-07-05 14:48:16
测试中发现投票功能BUG,版本2.3.0,在2.2.1上没有出现。
现象:发起一个投票的主题后,自己或者其他可投票的会员点击“检视结果”,出现异常。投票帖和异常抓图见附件。

[Thumb - 投票检视结果.jpg]
檔案名稱 投票检视结果.jpg
描述 发起的投票主题
檔案大小 38 Kbytes
下載次數 0 次
[Disk] 下載

[Thumb - 投票异常.jpg]
檔案名稱 投票异常.jpg
描述 产生的异常提示
檔案大小 27 Kbytes
下載次數 0 次
[Disk] 下載


發表人: 十鼎, 八級學員
2011-07-05 17:21:58
问题1、现在,在每一个版面显示的版主是在该版面拥有版主权限的用户群组名称。通常在管理后台为每个版面添加一个对应的用户群组,设置为该版面的版主权限。然后再将一些用户设置到该群组,这样他们就是这个版面的版主了。

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

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

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

發表人: 十鼎, 八級學員
2011-07-05 21:47:58
问题4、在使用后台管理的封锁控制功能时,添加新的封锁控制,不管选什么封锁类型,点击“更新”会引起异常。
异常提示信息见附件抓图:

[Thumb - 封锁控制中输入封锁ID值为3.jpg]
檔案名稱 封锁控制中输入封锁ID值为3.jpg
描述 异常提示
檔案大小 132 Kbytes
下載次數 1 次
[Disk] 下載


發表人: andowson, 七段學員
2011-07-06 08:11:02
 
十鼎 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>

發表人: 十鼎, 八級學員
2011-07-07 17:36:28
一个主题的文章列表分页后点击第二页出异常。
情况如下:管理后台设置每页12篇文章,该主题共16个回复,第一页只显示了4篇文章,当点击第二页时出现了异常。异常提示见附件。

如果在后台管理-->系统设置-->缓存设置-->缓存最近 被读取 的主题到内存 将该设置项关闭,然后再重复前面的页面请求,则一切正常。

[Thumb - 一个主题的文章列表分页后点第二页出异常,后台设置每页12篇文章,该主题共16个回复,第一页只显示了4篇文章.jpg]
檔案名稱 一个主题的文章列表分页后点第二页出异常,后台设置每页12篇文章,该主题共16个回复,第一页只显示了4篇文章.jpg
描述 异常界面提示
檔案大小 30 Kbytes
下載次數 1 次
[Disk] 下載


發表人: 十鼎, 八級學員
2011-07-07 23:46:49
大概的原因我找到了,net.jforum.repository.PostRepository类的函数selectAllByTopicByLimit似乎有逻辑上欠缺。

發表人: andowson, 七段學員
2011-07-08 12:06:50
 
十鼎 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}">

發表人: andowson, 七段學員
2011-07-08 12:14:46
 
十鼎 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");
...
}

發表人: 十鼎, 八級學員
2011-07-08 12:44:42
 
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]
檔案名稱 floorNum.jpg
描述 楼层
檔案大小 11 Kbytes
下載次數 0 次
[Disk] 下載

[Thumb - 版主.jpg]
檔案名稱 版主.jpg
描述 为每个版面显示版主的用户名
檔案大小 9 Kbytes
下載次數 0 次
[Disk] 下載


發表人: andowson, 七段學員
2011-07-08 14:40:00
 
十鼎 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}">


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

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

發表人: 十鼎, 八級學員
2011-07-08 15:50:32
显示楼层的实现和楼主的方式大体一致,只是位置不同。
为每个版面显示版主用户名的方法如下:
--------------------------------------
功能实现:
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

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

發表人: 十鼎, 八級學員
2011-07-08 16:01:10
为主题的文章进行缓存功能,我感觉有问题(我的理解),如果我理解有误还请指教。楼主,你的理解如何?

發表人: andowson, 七段學員
2011-07-08 16:35:16
 
十鼎 wrote:为主题的文章进行缓存功能,我感觉有问题(我的理解),如果我理解有误还请指教。楼主,你的理解如何?


應該是有問題沒錯,有可能是我誤改了原來的程式碼
trunk/src/main/java/net/jforum/repository/PostRepository.java的118行:
[code=java; first-line:118]posts = pm.selectAllByTopicByLimit(topicId, start, count);[/code]
將其還原為:
[code=java; first-line:118]posts = pm.selectAllByTopic(topicId);[/code]
再測測看吧!

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

發表人: 十鼎, 八級學員
2011-07-08 16:57:00
 
andowson wrote:
十鼎 wrote:为主题的文章进行缓存功能,我感觉有问题(我的理解),如果我理解有误还请指教。楼主,你的理解如何?


應該是有問題沒錯,有可能是我誤改了原來的程式碼
trunk/src/main/java/net/jforum/repository/PostRepository.java的118行:
[code=java; first-line:118]posts = pm.selectAllByTopicByLimit(topicId, start, count);[/code]
將其還原為:
[code=java; first-line:118]posts = pm.selectAllByTopic(topicId);[/code]
再測測看吧!

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


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

發表人: andowson, 七段學員
2011-07-09 18:38:34
 
十鼎 wrote:
问题2、发表主题时,过长的标题会使得首页的“最后发表”栏自动调整宽度,而不折行,结果会破坏首页布局效果;

請修改forum_list.htm,將下列的程式碼複製貼到<#include "bottom.htm"/>之前即可:
[code=javascript; first-line:188]<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>
[/code]





會員註冊 / 登入  |  電腦版  |  Jump to top of page