在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源ASP.NET论坛EntLib.com/YAF 定制化开发 Part 1
目前,开源ASP.NET论坛EntLib.com/YAF 已经升级到.Net Framework 3.5 平台和Visual Studio 2008。我们将根据各方用户的反馈意见,对论坛进行升级,增加更多的功能,更好地满足用户的实际需求。本开源论坛可以免费使用,同时提供项目源代码下载。
下面针对具体的功能,演示如何进行定制化开发。开发完成后的效果如下:
增加论坛帖子的设置精华(精华贴分为1、2、3个等级,采用不同的标识)、设置推荐功能:
1. 首先修改数据表yaf_topic 结构
增加字段 DigestLevel 和 ApproveStatus ,字段类型为 INT ,默认值0,运行为NULL。
2. 修改存储过程[dbo].[yaf_topic_list]
省略前面的script ......
c.PollID,
ForumFlags = d.Flags,
c.DigestLevel, // 增加DigestLevel 输出
c.ApproveStatus // 增加ApproveStatus 输出
FROM yaf_Topic c
JOIN yaf_User b
ON b.UserID = c.UserID
省略后面的script ......
3. 修改TopicLine.cs 控件,增加显示-精华/推荐的标识。
////////////////////////////////////////////////////////////////////////////////////
// updated by http://www.entlib.com/
// updated date: 2008-08-12
// 显示精华贴的标识
////////////////////////////////////////////////////////////////////////////////////
if ( m_row["DigestLevel"] != System.DBNull.Value && Convert.ToInt32(m_row["DigestLevel"]) > 0)
{
html.AppendFormat(" <img src='images/topics/digest_{0}.gif' alt='精华{0}' align='absbottom' />", m_row["DigestLevel"].ToString().Trim());
}
if (m_row["ApproveStatus"] != System.DBNull.Value && Convert.ToInt32(m_row["ApproveStatus"]) > 0)
{
html.Append(" <img src='images/topics/agree.gif' alt='推荐' align='absbottom' />");
}
////////////////////////////////////////////////////////////////////////////////////
4. 修改后台版主的管理界面 – moderate.ascx 用户控件,增加设置精华、设置推荐等等功能,只有版主才可以进行操作。
<asp:repeater id=topiclist runat=server>
<itemtemplate>
<yaf:TopicLine runat="server" DataRow=<%# Container.DataItem %>>
<td class="postheader" align="left" nowrap>
<asp:linkbutton runat=server onload="Delete_Load" commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID") %>' commandname='delete'>删除话题</asp:linkbutton>
| <asp:linkbutton ID="btnSetDigest" runat=server commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID")%>' CommandName='digest'>设置精华</asp:linkbutton>:<asp:TextBox ID="txtDigestLevel" runat="server" Width="20" Text='<%# DataBinder.Eval(Container.DataItem, "DigestLevel") %>'></asp:TextBox>
| <asp:linkbutton ID="btnRecommend" runat=server commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID")%>' CommandName='recommend' Text='<%# GetRecommendOpt(Eval("ApproveStatus")) %>'></asp:linkbutton>
</td>
</yaf:TopicLine>
</itemtemplate>
</asp:repeater>
具体的后台实现代码可以在EntLib.com 开源ASP.NET项目中获得,新项目版本为v3.5,运行在.Net Framework 3.5平台之上,开发环境为 Visual Studio 2008。版主后台维护界面如下: 原文链接:
论坛演示地址:http://forum.EntLib.com 包括论坛技术问题、安装使用等等交流。
|
请发表评论