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

📄 modulepermissionsgrid.cs

📁 SharpNuke源代码
💻 CS
字号:
using System;
using System.Collections;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;

using DotNetNuke.Common;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Services.Localization;
using DotNetNuke.Security.Roles;

//
// DotNetNuke -  http://www.dotnetnuke.com
// Copyright (c) 2002-2005
// by Shaun Walker ( sales@perpetualmotion.ca ) of Perpetual Motion Interactive Systems Inc. ( http://www.perpetualmotion.ca )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
// to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions
// of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//


namespace DotNetNuke.Security.Permissions.Controls
{
	
	public class ModulePermissionsGrid : PermissionsGrid
	{
		private ArrayList roles;
		private ArrayList permissions;
		private ModulePermissionCollection modulePermissions;
		private bool inheritViewPermissionsFromTab;
		private int viewColumnIndex;
		
		private int moduleID;
		
		public ModulePermissionsGrid()
		{
			this.inheritViewPermissionsFromTab = false;
			this.moduleID = - 1;
		}

		public int ModuleID
		{
			get 
			{
				if (this.moduleID == - 1)
				{
					this.moduleID = Convert.ToInt32(ViewState["ModuleID"]);
				}
				return this.moduleID;
			}
			set
			{
				this.moduleID = value;
				this.ViewState["ModuleID"] = value;
			}
		}
		
		public bool InheritViewPermissionsFromTab
		{
			get{
				if (ViewState["InheritViewPermissionsFromTab"] != null)
				{
					return Convert.ToBoolean(ViewState["InheritViewPermissionsFromTab"]);
				}
				else
				{
					return this.inheritViewPermissionsFromTab;
				}
			}
			set
			{
				this.inheritViewPermissionsFromTab = value;
				ViewState["InheritViewPermissionsFromTab"] = value;
				if (value)
				{
					for (int i = 0; i <= Items.Count - 1; i++)
					{
						CheckBox chk = ((CheckBox) this.Items[i].Cells[viewColumnIndex].Controls[0]);
						//If chk.ID.tolower.IndexOf("administrators") > 0 Then
						//    chk.Checked = False
						//End If
						chk.Checked = false;
						chk.Enabled = false;
					}
				}
				else
				{
					int administratorRoleId = PortalController.GetCurrentPortalSettings().AdministratorRoleId;
					for (int i = 0; i <= Items.Count - 1; i++)
					{
						CheckBox chk = ((CheckBox) this.Items[i].Cells[viewColumnIndex].Controls[0]);
						string[] Settings = chk.ID.Split('|');
						if (int.Parse(Settings[4]) == administratorRoleId)
						{
							chk.Checked = true;
						}
						else
						{
							chk.Enabled = true;
						}
					}
				}
			}
		}
		
		public ModulePermissionCollection Permissions
		{
			get
			{
				PortalSettings portalSettings = PortalController.GetCurrentPortalSettings();
				ModulePermissionCollection arrModulePermissions = new ModulePermissionCollection();
				RoleController roleController = new RoleController();
				
				ModulePermissionController modulePermissionController = new ModulePermissionController();
				
				ModulePermissionInfo modulePermission;
				foreach (DataGridItem gridItem in Items)
				{
					for (int i = 1; i <= gridItem.Cells.Count - 1; i++)
					{
						//all except first cell which is role names
						if (gridItem.Cells[i].Controls.Count > 0)
						{
							CheckBox cb = ((CheckBox) gridItem.Cells[i].Controls[0]);
							if (cb.Checked)
							{
								string[] settings = cb.ID.Split('|');
								
								if (settings[2] == "")
								{
									modulePermission = new ModulePermissionInfo();
									modulePermission.ModulePermissionID = - 1;
								}
								else
								{
									modulePermission = modulePermissionController.GetModulePermission(Convert.ToInt32(settings[2]));
								}
								modulePermission.PermissionID = Convert.ToInt32(settings[1]);
								RoleInfo roleInfo;
								switch (settings[3])
								{
									case Globals.glbRoleAllUsersName:
										roleInfo = new RoleInfo();
										roleInfo.RoleID = Convert.ToInt32(Globals.glbRoleAllUsers);
										roleInfo.RoleName = Globals.glbRoleAllUsersName;
										roleInfo.PortalID = portalSettings.PortalId;
										break;
									case Globals.glbRoleUnauthUserName:
										roleInfo = new RoleInfo();
										roleInfo.RoleID = Convert.ToInt32(Globals.glbRoleUnauthUser);
										roleInfo.RoleName = Globals.glbRoleUnauthUserName;
										roleInfo.PortalID = portalSettings.PortalId;
										break;
									default:
										roleInfo = roleController.GetRoleByName(portalSettings.PortalId, settings[3]);
										break;
								}
								
								modulePermission.RoleID = roleInfo.RoleID;
								//If cb.Checked Then
								modulePermission.AllowAccess = true;
								//Else
								//modulePermission.AllowAccess = False
								//End If
								
								modulePermission.ModuleID = ModuleID;
								arrModulePermissions.Add(modulePermission);
							}
						}
					}
				}
				return arrModulePermissions;
			}
		}
		
		public override void GenerateDataGrid ()
		{
			if (this.moduleID == - 1)
			{
				this.moduleID = Convert.ToInt32(ViewState["ModuleID"]);
			}
			SetPermissions();
			
			BoundColumn textCol = new BoundColumn();
			textCol.HeaderText = "";
			textCol.DataField = "Roles";
			Columns.Add(textCol);
			
			Controls.CheckBoxColumn checkCol;
			foreach (PermissionInfo permissionInfo in this.permissions)
			{
				checkCol = new Controls.CheckBoxColumn();
				string locName = Localization.GetString(permissionInfo.PermissionName + ".Permission", Localization.GlobalResourceFile);
				checkCol.HeaderText = (locName != null && locName.Length > 0) ? locName : permissionInfo.PermissionName;
				checkCol.DataField = permissionInfo.PermissionName;
				Columns.Add(checkCol);
			}
			DataSource = GetPermissionsDataTable();
			DataBind();
			this.DynamicColumnAdded = true;
		}
		
		private DataTable GetPermissionsDataTable()
		{
			DataTable dt = new DataTable();
			DataColumn col;
			
			col = new DataColumn("Roles");
			dt.Columns.Add(col);
			int i = 0;
			foreach(PermissionInfo permissionInfo in this.permissions)
			{
				col = new DataColumn(permissionInfo.PermissionName);
				if (permissionInfo.PermissionKey == "VIEW")
				{
					viewColumnIndex = i + 1;
				}
				dt.Columns.Add(col);
				i++;
			}
			
			DataRow row;
			row = dt.NewRow();
			
			int administratorRoleId = PortalController.GetCurrentPortalSettings().AdministratorRoleId;
			foreach (RoleInfo roleInfo in this.roles)
			{
				row = dt.NewRow();
				row[0] = Localization.LocalizeRole(roleInfo.RoleName);
				
				int j = 0;
				foreach (PermissionInfo permissionInfo in this.permissions)
				{
					string key;
					string checkBoxEnabled = "Y";
					ModulePermissionInfo modulePermission = ModuleHasPermission(permissionInfo.PermissionID, modulePermissions, roleInfo.RoleName);
					if (modulePermission != null)
					{
						if (roleInfo.RoleID == administratorRoleId)
						{
							checkBoxEnabled = "N";
						}
						key = "|" + Convert.ToString(permissionInfo.PermissionID) + "|" + Convert.ToString(modulePermission.ModulePermissionID) + "|" + roleInfo.RoleName + "|" + roleInfo.RoleID.ToString() + "|" + checkBoxEnabled;
						if (modulePermission.AllowAccess || checkBoxEnabled == "N")
						{
							row[j + 1] = "True" + key;
						}
						else
						{
							row[j + 1] = "False" + key;
						}
					}
					else
					{
						if (roleInfo.RoleID == administratorRoleId)
						{
							checkBoxEnabled = "N";
						}
						key = "|" + Convert.ToString(permissionInfo.PermissionID) + "||" + roleInfo.RoleName + "|" + roleInfo.RoleID.ToString() + "|" + checkBoxEnabled;
						row[j + 1] = "False" + key;
					}
					j++;
				}
				dt.Rows.Add(row);
			}
			return dt;
		}
		
		private ModulePermissionInfo ModuleHasPermission(int permissionID, ModulePermissionCollection modulePermissions, string roleName)
		{
			foreach( ModulePermissionInfo modulePermissionInfo in modulePermissions)
			{
				if (modulePermissionInfo.RoleName == roleName && permissionID == modulePermissionInfo.PermissionID)
				{
					return modulePermissionInfo;
				}
			}
			return null;
		}
		
		private void SetPermissions ()
		{
			RoleController roleController = new RoleController();
			roles = roleController.GetPortalRoles(PortalController.GetCurrentPortalSettings().PortalId);
			
			RoleInfo roleInfo = new RoleInfo();
			roleInfo.RoleID = int.Parse(Globals.glbRoleUnauthUser);
			roleInfo.RoleName = Globals.glbRoleUnauthUserName;
			roles.Add(roleInfo);
			roleInfo = new RoleInfo();
			roleInfo.RoleID = int.Parse(Globals.glbRoleAllUsers);
			roleInfo.RoleName = Globals.glbRoleAllUsersName;
			roles.Add(roleInfo);
			roles.Reverse();
			roles.Sort(new RoleComparer());
			
			ModulePermissionController modulePermissionController = new ModulePermissionController();
			modulePermissions = modulePermissionController.GetModulePermissionsCollectionByModuleID(this.ModuleID);
			PermissionController permissionController = new PermissionController();
			permissions = permissionController.GetPermissionsByModuleID(this.ModuleID);
		}
		
	}
	
	
}

⌨️ 快捷键说明

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