增加论坛列表显示版主的功能

CS中本身没有专门的版主这个概念。它使用了基于角色的授权机制。我们可以使用这个机制实现版主这个功能。
例如,我有一个板块名为“灌水乐园”,为了实现版主的功能,可以按以下步骤进行:

1.  添加一个角色用于充当这个版块的版主,角色名为“灌水乐意管理员”(这里的角色名是不能随意写的,必须有一定的规范,以后会用到的)。

2.  修改此角色的默认权限,使之与“Everyone”的权限一样。这是因为新建的角色的所有权限都是受限的。

3.  将“灌水乐园管理员”这个角色添加到版块“灌水乐意”的权限映射列表中,并修改其权限,使之足以管理此版块。

4.  如果我希望用户“AA”出任版主,就为“AA”添加角色“灌水乐园管理员”。

设置某个用户为管理员就是这么几个步骤。

下面我们来看,怎么样在论坛列表中显示版主列表。示例请看 牛头网论坛

为了实现此功能,我们需要进行以下几个步骤的工作:
1.  编写版主显示控件(ForumManagersView);
2.  修改Resource.xml 文件,添加需要几个需要用到的字符串资源;
3.  修改View-ForumGroupView.ascx 控件,使之能够显示版主控件;

1. 编写版主显示控件(ForumManagersView)
我的代码如下:
using  System;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.HtmlControls;

using  CommunityServer.Controls;
using  CommunityServer.Components;
namespace  Newtor.CS.Forums.Controls
{
    
///   <summary>
    
///  ForumManagerView 的摘要说明。
    
///   </summary>
     public   class  ForumManagersView : PlaceHolder
    {
        
public  ForumManagersView()
        {
        }

        
protected   override   void  OnInit(EventArgs e)
        {
            
this .PreRender  += new  EventHandler(ForumManagersView_PreRender);
            
base .OnInit (e);
        }


        
#region   ForumName 属性

        
private   string  forumName;

        
///   <summary>  
        
///  
        
///   </summary>  
         public   string  ForumName
        {
            
get
            {
                
return  forumName;
            }
            
set
            {
                forumName 
=  value;
            }
        }

        
#endregion



        
public   void  BindData()
        {
            System.Guid roleID;
            
try
            {
                Role role 
=  Roles.GetRole( this .ForumName + ResourceManager.GetString( " ForumManagersView_RoleName_Postfix " ));
                roleID 
=  role.RoleID;
            }
            
catch ( CSException e )
            {
                
if ( e.ExceptionType  ==  CSExceptionType.RoleNotFound )
                    
return ;
                
else
                    
throw  e;
            }

            UserSet users 
=  Roles.UsersInRole( 0 , 10 ,SortUsersBy.LastActiveDate,SortOrder.Descending,roleID);

            
if  (  ! users.HasResults )  return ;

            HtmlGenericControl div 
=   new  HtmlGenericControl( " div " );
            div.Controls.Clear();
            div.Controls.Add(
new  LiteralControl(ResourceManager.GetString( " ForumManagersView_Prefix " )));

            
foreach  ( User user  in  users.Users )
            {
                HyperLink userLink 
=   new  HyperLink();
                userLink.NavigateUrl 
=  Globals.GetSiteUrls().UserProfile(user.UserID);
                userLink.Text 
=  user.Username;
                div.Controls.Add(userLink);
                div.Controls.Add(
new  LiteralControl(ResourceManager.GetString( " ForumManagersView_ManagersList_Seperator " )));
            }

            
if  ( div.Controls.Count  >   2  )
                div.Controls.RemoveAt(div.Controls.Count 
-   1  );

            
this .Controls.Clear();
            
this .Controls.Add(div);
        }

        
private   void  ForumManagersView_PreRender( object  sender, EventArgs e)
        {
            BindData();
        }
    }
}

代码很简单,这里就不在说了。大家可以根据自己的需要更改版主列表的显示方式,我在这里用的是一个div,横向显示。

2.  修改Resource.xml 文件,添加需要几个需要用到的字符串资源
         < resource  name ="ForumManagersView_Prefix" > 版主:  </ resource >
        
< resource  name ="ForumManagersView_RoleName_Postfix" > 管理员 </ resource >
        
< resource  name ="ForumManagersView_ManagersList_Seperator" >  ,  </ resource >

这里就用到了角色名称后缀,这也就是为什么充当版主的角色的名称不能随便取的原因,当然,这里也可以根据自己的需要更改后缀,或者用更复杂的表达示,不过这也是没有什么必要的。

3.  修改View-ForumGroupView.ascx 控件,使之能够显示版主控件

这里就需要大家自己更加情况添加了,具体方法就不用我说了吧。我是把版主列表放在版块描述信息上面,这里要注意的就是,一定要设置一下ForumManagersView这个控件的ForumName这个参数,不然是找不到角色的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值