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

📄 folderpermissionsgrid.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 FolderPermissionsGrid : PermissionsGrid
	{
		
		private ArrayList roles;
		private ArrayList permissions;
		private ArrayList folderPermissions;
		
		private string folderPath;
		
		public FolderPermissionsGrid()
		{
			this.folderPath = "";
		}

		public string FolderPath
		{
			get
			{
				if (this.folderPath == null || folderPath.Length == 0)
				{
					this.folderPath = ViewState["FolderPath"] as string;
				}
				return this.folderPath;
			}
			set
			{
				this.folderPath = value;
				ViewState["FolderPath"] = value;
			}
		}
		
		public FolderPermissionCollection Permissions
		{
			get
			{
				PortalSettings portalSettings = PortalController.GetCurrentPortalSettings();
				FolderPermissionCollection arrFolderPermissions = new FolderPermissionCollection();
				RoleController roleController = new RoleController();
				
				FolderPermissionInfo folderPermission;
				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)
						{
							folderPermission = new FolderPermissionInfo();
							CheckBox checkbox = ((CheckBox) gridItem.Cells[i].Controls[0]);
							if (checkbox.Checked)
							{
								string[] settings = checkbox.ID.Split('|');
								folderPermission.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 DotNetNuke.Security.Roles.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;
								}
								
								folderPermission.RoleID = roleInfo.RoleID;
								//If cb.Checked Then
								folderPermission.AllowAccess = true;
								//Else
								//objTabPermission.AllowAccess = False
								//End If
								
								if (settings[2] == "")
								{
									folderPermission.FolderPermissionID = - 1;
								}
								else
								{
									folderPermission.FolderPermissionID = Convert.ToInt32(settings[2]);
								}
								folderPermission.FolderPath = folderPath;
								arrFolderPermissions.Add(folderPermission);
							}
						}
					}
				}
				return arrFolderPermissions;
			}
		}
		
		public override void GenerateDataGrid ()
		{
			Columns.Clear();
			if (folderPath == null || folderPath.Length == 0)
			{
				folderPath = ViewState["FolderPath"] as string;
			}
			SetPermissions();
			
			BoundColumn textCol = new BoundColumn();
			textCol.HeaderText = "";
			textCol.DataField = "Roles";
			Columns.Add(textCol);
			
			Controls.CheckBoxColumn checkCol;

			foreach (PermissionInfo permissionInfo in 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;
			try
			{
				col = new DataColumn("Roles");
				dt.Columns.Add(col);
				foreach (PermissionInfo permissionInfo in this.permissions)
				{
					col = new DataColumn(permissionInfo.PermissionName);
					dt.Columns.Add(col);
				}
			}
			catch (Exception exception)
			{
				//TODO @SV useless
				string s = exception.Message;
				s = s;
			}
			
			DataRow row;
			row = dt.NewRow();
			
			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";
					FolderPermissionInfo folderPermission = FolderHasPermission(permissionInfo.PermissionID, folderPermissions, roleInfo.RoleName);
					if (folderPermission != null)
					{
						if (roleInfo.RoleID == PortalController.GetCurrentPortalSettings().AdministratorRoleId)
						{
							checkBoxEnabled = "N";
						}
						key = "|" + Convert.ToString(permissionInfo.PermissionID) + "|" + Convert.ToString(folderPermission.FolderPermissionID) + "|" + roleInfo.RoleName + "|" + roleInfo.RoleID.ToString() + "|" + checkBoxEnabled;
						if (folderPermission.AllowAccess || checkBoxEnabled == "N")
						{
							row[j + 1] = "True" + key;
						}
						else
						{
							row[j + 1] = "False" + key;
						}
					}
					else
					{
						if (roleInfo.RoleID == PortalController.GetCurrentPortalSettings().AdministratorRoleId)
						{
							checkBoxEnabled = "N";
						}
						key = "|" + Convert.ToString(permissionInfo.PermissionID) + "||" + roleInfo.RoleName + "|" + roleInfo.RoleID.ToString() + "|" + checkBoxEnabled;
						row[j + 1] = "False" + key;
					}
				}
				dt.Rows.Add(row);
				j++;
			}
			return dt;
		}
		
		private FolderPermissionInfo FolderHasPermission(int permissionID, ArrayList folderPermissions, string roleName)
		{
			foreach (FolderPermissionInfo folderPermissionInfo in folderPermissions)
			{
				if (folderPermissionInfo.RoleName == roleName && permissionID == folderPermissionInfo.PermissionID)
				{
					return folderPermissionInfo;
				}
			}
			return null;
		}
		
		private void SetPermissions ()
		{
			// Obtain PortalSettings from Current Context
			PortalSettings portalSettings = PortalController.GetCurrentPortalSettings();
			RoleController roleController = new RoleController();
			this.roles = roleController.GetPortalRoles(portalSettings.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());
			
			FolderPermissionController folderPermissionController = new FolderPermissionController();
			int portalID;
			if (portalSettings.ActiveTab.ParentId == portalSettings.SuperTabId) //if we are in host filemanager then we need to pass a null portal id
			{
				portalID = Null.NullInteger;
			}
			else
			{
				portalID = portalSettings.PortalId;
			}
			folderPermissions = folderPermissionController.GetFolderPermissionsByFolder(portalID, this.FolderPath);
			PermissionController permissionController = new PermissionController();
			permissions = permissionController.GetPermissionsByFolder(portalID, this.FolderPath);
		}
		
	}
	
	
}

⌨️ 快捷键说明

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