您的位置:首页 > 编程语言 > ASP

开源ASP.NET论坛EntLib.com/YAF 定制化开发 Part 1

2008-08-23 15:15 316 查看
[align=center]开源ASP.NET论坛EntLib.com/YAF 定制化开发 Part 1[/align]

目前,开源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 ......
[align=left]c.PollID,[/align]
[align=left]ForumFlags = d.Flags,[/align]
[align=left]c.DigestLevel, // 增加DigestLevel 输出[/align]
[align=left]c.ApproveStatus // 增加ApproveStatus 输出[/align]
[align=left]FROM yaf_Topic c[/align]
[align=left]JOIN yaf_User b[/align]
ON b.UserID = c.UserID
省略后面的script ......

3. 修改TopicLine.cs 控件,增加显示-精华/推荐的标识。

[align=left] ////////////////////////////////////////////////////////////////////////////////////[/align]
[align=left] // updated by http://www.entlib.com/[/align]
[align=left] // updated date: 2008-08-12[/align]
[align=left] // 显示精华贴的标识[/align]
[align=left] ////////////////////////////////////////////////////////////////////////////////////[/align]
[align=left] if ( m_row["DigestLevel"] != System.DBNull.Value && Convert.ToInt32(m_row["DigestLevel"]) > 0)[/align]
[align=left] {[/align]
[align=left] html.AppendFormat(" <img src='images/topics/digest_{0}.gif' alt='精华{0}' align='absbottom' />", m_row["DigestLevel"].ToString().Trim());[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] if (m_row["ApproveStatus"] != System.DBNull.Value && Convert.ToInt32(m_row["ApproveStatus"]) > 0)[/align]
[align=left] {[/align]
[align=left] html.Append(" <img src='images/topics/agree.gif' alt='推荐' align='absbottom' />");[/align]
[align=left] }[/align]
[align=left] ////////////////////////////////////////////////////////////////////////////////////
[/align]

4. 修改后台版主的管理界面 – moderate.ascx 用户控件,增加设置精华、设置推荐等等功能,只有版主才可以进行操作。

[align=left]<asp:repeater id=topiclist runat=server>[/align]
[align=left]<itemtemplate>[/align]
[align=left] <yaf:TopicLine runat="server" DataRow=<%# Container.DataItem %>>[/align]
[align=left] <td class="postheader" align="left" nowrap>[/align]
[align=left] <asp:linkbutton runat=server onload="Delete_Load" commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID") %>' commandname='delete'>删除话题</asp:linkbutton>[/align]
[align=left] | <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> [/align]
[align=left] | <asp:linkbutton ID="btnRecommend" runat=server commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID")%>' CommandName='recommend' Text='<%# GetRecommendOpt(Eval("ApproveStatus")) %>'></asp:linkbutton>[/align]
[align=left] </td>[/align]
[align=left] </yaf:TopicLine>[/align]
[align=left]</itemtemplate>[/align]
</asp:repeater>

具体的后台实现代码可以在EntLib.com 开源ASP.NET项目中获得,新项目版本为v3.5,运行在.Net Framework 3.5平台之上,开发环境为 Visual Studio 2008。版主后台维护界面如下:

原文链接:
http://forum.entlib.com/Default.aspx?g=posts&t=165

论坛演示地址:http://forum.EntLib.com 包括论坛技术问题、安装使用等等交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息