开源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 [url]http://www.entlib.com/[/url]
// 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. 修改后台版主的管理界面 �C 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
。版主后台维护界面如下:
原文链接:
[url]http://forum.entlib.com/Default.aspx?g=posts&t=165[/url]
论坛演示地址: [url]http://forum.EntLib.com[/url] 包括论坛技术问题、安装使用等等交流。