⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 managesectionpermissionsadmin.cs

📁 本系统是在asp版《在线文件管理器》的基础上设计制作
💻 CS
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
//     Copyright (c) Telligent Systems Corporation.  All rights reserved.
// </copyright> 
//------------------------------------------------------------------------------

using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;
using CommunityServer.Components;

namespace CommunityServer.Controls
{

    //TODO: Move DM querystring logic to SiteUrls

    /// <summary>
    /// Base class for managing a sections permissions
    /// </summary>
    public abstract class ManageSectionPermissionsAdmin : TemplatedWebControl 
    {

        #region Child Controls

        Repeater GroupRepeater;
        CheckBox displayMode;

        protected DisplayMode PermissionRepeaterDisplayMode
        {
            get
            {
                if(displayMode != null && displayMode.Checked)
                    return DisplayMode.All;

                return DisplayMode.Explicit;
            }
        }

        #endregion

        #region Events

        /// <summary>
        /// Ensures databind is called
        /// </summary>
        /// <param name="e"></param>
        protected override void OnLoad(EventArgs e) 
        {
            if ( !Page.IsPostBack ) 
            {
                this.DataBind();
            }
            base.OnLoad (e);
        }


        /// <summary>
        /// Creates reference to the Group Repeater
        /// </summary>
        protected override void AttachChildControls() 
        {

            GroupRepeater = (Repeater)FindControl( "GroupRepeater" );
            GroupRepeater.ItemCreated += new RepeaterItemEventHandler(SectionGroupRepeater_ItemCreated);

            displayMode = FindControl("DisplayMode") as CheckBox;
            if(displayMode != null)
            {
                displayMode.AutoPostBack = true;
                displayMode.CheckedChanged +=new EventHandler(displayMode_CheckedChanged);

                if(Context.Request.QueryString["DM"] != null)
                {
                    displayMode.Checked = bool.Parse(Context.Request.QueryString["DM"]);
                }

                displayMode.Text = ResourceManager.GetString("Admin_CommonTerms_ShowDefaultPermissions");
            }
        }

        /// <summary>
        /// Binds the Groups to the Repeater
        /// </summary>
        public override void DataBind()
        {
            base.DataBind();

            GroupRepeater.DataSource = GetGroups();
            GroupRepeater.DataBind();
        }
        #endregion

        #region Abstracts

        /// <summary>
        /// Add a new role to a Section
        /// </summary>
        protected abstract void AddRole( Int32 sectionID, Guid roleID ); 

        protected abstract string GetPermissionLink(int sectionID, Guid roleID);

        /// <summary>
        /// Remove a role from a Section
        /// </summary>
        protected abstract void RemoveRole( Int32 sectionID, Guid roleID );

        protected abstract ArrayList GetGroups();

        protected abstract ControlUserMode GetMode
        {
            get;
        }

        protected abstract void SetPermissions(RepeaterItem item);

        #endregion

        #region GroupRepeater Controls DataBinding

        private void SectionGroupRepeater_ItemCreated(object sender, RepeaterItemEventArgs e) 
        {
            SectionRepeater setctionRepeater = e.Item.FindControl( "SectionList" ) as SectionRepeater;
            setctionRepeater.Mode = GetMode;
            setctionRepeater.DataBinding += new EventHandler(sectionRepeater_DataBinding);
            setctionRepeater.ItemCreated += new RepeaterItemEventHandler(sectionRepeater_ItemCreated);
            setctionRepeater.ItemCommand += new RepeaterCommandEventHandler(sectionRepeater_ItemCommand);

            Label groupName = (Label)e.Item.FindControl( "GroupName" );
            groupName.DataBinding += new EventHandler(GroupName_DataBinding);
        }

        private void sectionRepeater_DataBinding(object sender, EventArgs e) 
        {
            SectionRepeater sectionRepeater = sender as SectionRepeater;
            RepeaterItem container = sectionRepeater.NamingContainer as RepeaterItem;
            sectionRepeater.GroupID = Convert.ToInt32( DataBinder.Eval( container.DataItem, "GroupID" ) );
        }

        private void GroupName_DataBinding( Object sender, EventArgs e ) 
        {
            Label groupName = (Label)sender;
            RepeaterItem container = groupName.NamingContainer as RepeaterItem;
            Group g = container.DataItem as Group;
            groupName.Text = g.Name;
        }

        #endregion

        #region SectionRepeater Controls DataBinding

        private void sectionRepeater_ItemCreated(object sender, RepeaterItemEventArgs e) 
        {
            Control sectionName = e.Item.FindControl( "SectionName" );
            sectionName.DataBinding += new EventHandler(SectionName_DataBinding);

            Control AddRole = e.Item.FindControl( "AddRole" );
            AddRole.DataBinding += new EventHandler(AddRole_DataBinding);

            PermissionRepater PermRepeater = (PermissionRepater)e.Item.FindControl( "PermissionRepeater" );
            PermRepeater.DisplayMode = this.PermissionRepeaterDisplayMode;
            PermRepeater.DataBinding += new EventHandler(PermRepeater_DataBinding);
            PermRepeater.ItemCommand += new RepeaterCommandEventHandler(PermRepeater_ItemCommand);
        }

        private void SectionName_DataBinding(object sender, EventArgs e) 
        {
            Label sectionName = (Label)sender;
            RepeaterItem container = sectionName.NamingContainer as RepeaterItem;
            Section section = container.DataItem as Section;
            sectionName.Text = section.Name;
        }

        private void AddRole_DataBinding(object sender, EventArgs e) 
        {
            Button AddRole = (Button)sender;
            RepeaterItem container = AddRole.NamingContainer as RepeaterItem;
            Section section = container.DataItem as Section;
            AddRole.Text = ResourceManager.GetString( "Add" );
            AddRole.CommandName = "Add";
            AddRole.CommandArgument = section.SectionID.ToString();
        }

        private void PermRepeater_DataBinding(object sender, EventArgs e) 
        {
           PermissionRepater PermRepeater = sender as PermissionRepater;
            RepeaterItem container = PermRepeater.NamingContainer as RepeaterItem;
            Section section = container.DataItem as Section;
            PermRepeater.SectionID = section.SectionID; 
            PermRepeater.ItemCreated += new RepeaterItemEventHandler(PermRepeater_ItemCreated);
        }

        #endregion

        #region Perm Repeater Controls DataBinding

        /// <summary>
        /// Sets the X/- indicating which permissions have been set
        /// </summary>
        /// <param name="tf"></param>
        /// <param name="c"></param>
        protected void SetText(bool tf, Control c)
        {
            if(c == null)
                return;

			CheckmarkControl cmc = c as CheckmarkControl;
			cmc.Checked = tf;
        }
        
        private void PermRepeater_ItemCreated(object sender, RepeaterItemEventArgs e) 
        {
            HyperLink EditPermissionLink = (HyperLink)e.Item.FindControl( "EditPermissionLink" );
            EditPermissionLink.DataBinding += new EventHandler(EditPermissionLink_DataBinding);

            Button RemoveRole = (Button)e.Item.FindControl( "RemoveRole" );
            RemoveRole.DataBinding += new EventHandler(RemoveRole_DataBinding);

            if( e.Item.ItemType == ListItemType.Item ||
                e.Item.ItemType == ListItemType.AlternatingItem ) 
            {

                SetPermissions(e.Item);
            }
        }

        private void EditPermissionLink_DataBinding(object sender, EventArgs e) 
        {
            HyperLink EditPermissionLink = (HyperLink)sender;
            RepeaterItem container = EditPermissionLink.NamingContainer as RepeaterItem;
            EditPermissionLink.Text = Convert.ToString( DataBinder.Eval( container.DataItem, "Name") );

            PermissionRepater pr = container.Parent as PermissionRepater;
            PermissionBase pb = container.DataItem as PermissionBase;

            EditPermissionLink.NavigateUrl = GetPermissionLink( pr.SectionID,pb.RoleID )  + (displayMode == null ? string.Empty : string.Format("&DM={0}",displayMode.Checked));

        }

        private void RemoveRole_DataBinding(object sender, EventArgs e) 
        {
            Button RemoveRole = (Button)sender;
            RepeaterItem container = RemoveRole.NamingContainer as RepeaterItem;
            RemoveRole.CommandName = "Remove";

            PermissionRepater pr = container.Parent as PermissionRepater;
            PermissionBase pb = container.DataItem as PermissionBase;

            RemoveRole.CommandArgument = pr.SectionID.ToString() + "," + pb.RoleID.ToString();
            RemoveRole.Text = ResourceManager.GetString("Delete");
        }

        #endregion

        #region Command Handlers

        private void sectionRepeater_ItemCommand(object source, RepeaterCommandEventArgs e) 
        {
            ButtomCommand( source, e );
        }

        private void PermRepeater_ItemCommand(object source, RepeaterCommandEventArgs e) 
        {
            ButtomCommand( source, e );
        }

        private void ButtomCommand( Object source, RepeaterCommandEventArgs e ) 
        {
            Button sender = e.CommandSource as Button;
            if ( sender != null ) 
            {
                switch( e.CommandName ) 
                {
                    case "Add":
                        RoleDropDownList roleSelector = (RoleDropDownList)sender.NamingContainer.FindControl("Roles");
                        Int32 sectionIdToAdd = Convert.ToInt32( sender.CommandArgument );
                        Guid roleIDToAdd = new Guid( roleSelector.SelectedValue );
                        AddRole( sectionIdToAdd, roleIDToAdd );
                        Context.Response.Redirect(GetPermissionLink(sectionIdToAdd,roleIDToAdd), true);
                        break;
                    case "Remove":
                        String[] args = sender.CommandArgument.Split(',');
                        if ( args.Length == 2 ) 
                        {
                            Int32 sectionIdToRemove = Convert.ToInt32( args[ 0 ] );
                            Guid roleIdToRemove = new Guid( args[ 1 ] );
                            RemoveRole( sectionIdToRemove, roleIdToRemove );
                            DataBind();
                        }
                        break;
                }
            }
        }

        #endregion

        private void displayMode_CheckedChanged(object sender, EventArgs e)
        {
            this.DataBind();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -