Compare commits
	
		
			10 Commits
		
	
	
		
			B2025-054
			...
			F2025-028_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ca38ecb1cf | |||
| 5dfa70dc10 | |||
| ff3daff15a | |||
| 7b7f235354 | |||
| 779c6247cd | |||
| fcaffa8c5f | |||
| d2ffcc903a | |||
| 1d12c97e30 | |||
| 3bcaeb214e | |||
| 85995040a8 | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -28,328 +28,416 @@ namespace VEPROMS | |||||||
| 		/// </summary> | 		/// </summary> | ||||||
| 		private void InitializeComponent() | 		private void InitializeComponent() | ||||||
| 		{ | 		{ | ||||||
| 			this.components = new System.ComponentModel.Container(); |             this.components = new System.ComponentModel.Container(); | ||||||
| 			this.tcSecurity = new System.Windows.Forms.TabControl(); |             this.tcSecurity = new System.Windows.Forms.TabControl(); | ||||||
| 			this.tpGroupUsers = new System.Windows.Forms.TabPage(); |             this.tpManageFolders = new System.Windows.Forms.TabPage(); | ||||||
| 			this.pnlMembers = new System.Windows.Forms.Panel(); |             this.label6 = new System.Windows.Forms.Label(); | ||||||
| 			this.lstMembers = new System.Windows.Forms.ListBox(); |             this.tvFolders = new System.Windows.Forms.TreeView(); | ||||||
| 			this.lblMembers = new System.Windows.Forms.Label(); |             this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components); | ||||||
| 			this.label6 = new System.Windows.Forms.Label(); |             this.createSetAdministratorGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.tvFolders = new System.Windows.Forms.TreeView(); |             this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components); |             this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.createSetAdministratorGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.tpManageGroups = new System.Windows.Forms.TabPage(); | ||||||
| 			this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.btnAddMember = new System.Windows.Forms.Button(); | ||||||
| 			this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.btnRemoveMember = new System.Windows.Forms.Button(); | ||||||
| 			this.lstUsers = new System.Windows.Forms.ListBox(); |             this.label1 = new System.Windows.Forms.Label(); | ||||||
| 			this.label5 = new System.Windows.Forms.Label(); |             this.lbNonMembers = new System.Windows.Forms.Label(); | ||||||
| 			this.label3 = new System.Windows.Forms.Label(); |             this.btnDeleteGroup = new System.Windows.Forms.Button(); | ||||||
| 			this.lstGroups = new System.Windows.Forms.ListBox(); |             this.cbGroupSelection = new System.Windows.Forms.ComboBox(); | ||||||
| 			this.tpDefault = new System.Windows.Forms.TabPage(); |             this.lstNonMembers = new System.Windows.Forms.ListBox(); | ||||||
| 			this.label8 = new System.Windows.Forms.Label(); |             this.pnlMembers = new System.Windows.Forms.Panel(); | ||||||
| 			this.pnlGroups = new System.Windows.Forms.Panel(); |             this.lstMembers = new System.Windows.Forms.ListBox(); | ||||||
| 			this.cmMembers = new System.Windows.Forms.ContextMenuStrip(this.components); |             this.lblMembers = new System.Windows.Forms.Label(); | ||||||
| 			this.removeMemberToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.label3 = new System.Windows.Forms.Label(); | ||||||
| 			this.cmUsers = new System.Windows.Forms.ContextMenuStrip(this.components); |             this.tpManageUsers = new System.Windows.Forms.TabPage(); | ||||||
| 			this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.lblUserGroups = new System.Windows.Forms.Label(); | ||||||
| 			this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.lstGroups = new System.Windows.Forms.ListBox(); | ||||||
| 			this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.lstUsers = new System.Windows.Forms.ListBox(); | ||||||
| 			this.addMemberToolStripMenuItemUser = new System.Windows.Forms.ToolStripMenuItem(); |             this.lblUsers = new System.Windows.Forms.Label(); | ||||||
| 			this.cmGroups = new System.Windows.Forms.ContextMenuStrip(this.components); |             this.tpDefault = new System.Windows.Forms.TabPage(); | ||||||
| 			this.deleteGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |             this.label8 = new System.Windows.Forms.Label(); | ||||||
| 			this.addMemberToolStripMenuItemGroup = new System.Windows.Forms.ToolStripMenuItem(); |             this.pnlGroups = new System.Windows.Forms.Panel(); | ||||||
| 			this.tcSecurity.SuspendLayout(); |             this.cmMembers = new System.Windows.Forms.ContextMenuStrip(this.components); | ||||||
| 			this.tpGroupUsers.SuspendLayout(); |             this.removeMemberToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.pnlMembers.SuspendLayout(); |             this.cmUsers = new System.Windows.Forms.ContextMenuStrip(this.components); | ||||||
| 			this.cmFolders.SuspendLayout(); |             this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.tpDefault.SuspendLayout(); |             this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.cmMembers.SuspendLayout(); |             this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | ||||||
| 			this.cmUsers.SuspendLayout(); |             this.tt = new System.Windows.Forms.ToolTip(this.components); | ||||||
| 			this.cmGroups.SuspendLayout(); |             this.tcSecurity.SuspendLayout(); | ||||||
| 			this.SuspendLayout(); |             this.tpManageFolders.SuspendLayout(); | ||||||
| 			//  |             this.cmFolders.SuspendLayout(); | ||||||
| 			// tcSecurity |             this.tpManageGroups.SuspendLayout(); | ||||||
| 			//  |             this.pnlMembers.SuspendLayout(); | ||||||
| 			this.tcSecurity.Controls.Add(this.tpGroupUsers); |             this.tpManageUsers.SuspendLayout(); | ||||||
| 			this.tcSecurity.Controls.Add(this.tpDefault); |             this.tpDefault.SuspendLayout(); | ||||||
| 			this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill; |             this.cmUsers.SuspendLayout(); | ||||||
| 			this.tcSecurity.Location = new System.Drawing.Point(0, 0); |             this.SuspendLayout(); | ||||||
| 			this.tcSecurity.Name = "tcSecurity"; |             //  | ||||||
| 			this.tcSecurity.SelectedIndex = 0; |             // tcSecurity | ||||||
| 			this.tcSecurity.Size = new System.Drawing.Size(784, 564); |             //  | ||||||
| 			this.tcSecurity.TabIndex = 0; |             this.tcSecurity.Controls.Add(this.tpManageFolders); | ||||||
| 			//  |             this.tcSecurity.Controls.Add(this.tpManageGroups); | ||||||
| 			// tpGroupUsers |             this.tcSecurity.Controls.Add(this.tpManageUsers); | ||||||
| 			//  |             this.tcSecurity.Controls.Add(this.tpDefault); | ||||||
| 			this.tpGroupUsers.BackColor = System.Drawing.SystemColors.ButtonFace; |             this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill; | ||||||
| 			this.tpGroupUsers.Controls.Add(this.pnlMembers); |             this.tcSecurity.Location = new System.Drawing.Point(0, 0); | ||||||
| 			this.tpGroupUsers.Controls.Add(this.label6); |             this.tcSecurity.Name = "tcSecurity"; | ||||||
| 			this.tpGroupUsers.Controls.Add(this.tvFolders); |             this.tcSecurity.SelectedIndex = 0; | ||||||
| 			this.tpGroupUsers.Controls.Add(this.lstUsers); |             this.tcSecurity.Size = new System.Drawing.Size(784, 564); | ||||||
| 			this.tpGroupUsers.Controls.Add(this.label5); |             this.tcSecurity.TabIndex = 0; | ||||||
| 			this.tpGroupUsers.Controls.Add(this.label3); |             this.tcSecurity.SelectedIndexChanged += new System.EventHandler(this.changedTab); | ||||||
| 			this.tpGroupUsers.Controls.Add(this.lstGroups); |             //  | ||||||
| 			this.tpGroupUsers.Location = new System.Drawing.Point(4, 22); |             // tpManageFolders | ||||||
| 			this.tpGroupUsers.Name = "tpGroupUsers"; |             //  | ||||||
| 			this.tpGroupUsers.Padding = new System.Windows.Forms.Padding(3); |             this.tpManageFolders.BackColor = System.Drawing.SystemColors.ButtonFace; | ||||||
| 			this.tpGroupUsers.Size = new System.Drawing.Size(776, 538); |             this.tpManageFolders.Controls.Add(this.label6); | ||||||
| 			this.tpGroupUsers.TabIndex = 2; |             this.tpManageFolders.Controls.Add(this.tvFolders); | ||||||
| 			this.tpGroupUsers.Text = "Folders, Groups and Users"; |             this.tpManageFolders.Location = new System.Drawing.Point(4, 22); | ||||||
| 			//  |             this.tpManageFolders.Name = "tpManageFolders"; | ||||||
| 			// pnlMembers |             this.tpManageFolders.Padding = new System.Windows.Forms.Padding(3); | ||||||
| 			//  |             this.tpManageFolders.Size = new System.Drawing.Size(776, 538); | ||||||
| 			this.pnlMembers.Controls.Add(this.lstMembers); |             this.tpManageFolders.TabIndex = 2; | ||||||
| 			this.pnlMembers.Controls.Add(this.lblMembers); |             this.tpManageFolders.Text = "Manage Folders / Add Groups"; | ||||||
| 			this.pnlMembers.Location = new System.Drawing.Point(384, 304); |             //  | ||||||
| 			this.pnlMembers.Name = "pnlMembers"; |             // label6 | ||||||
| 			this.pnlMembers.Size = new System.Drawing.Size(386, 232); |             //  | ||||||
| 			this.pnlMembers.TabIndex = 12; |             this.label6.AutoSize = true; | ||||||
| 			//  |             this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); | ||||||
| 			// lstMembers |             this.label6.Location = new System.Drawing.Point(8, 5); | ||||||
| 			//  |             this.label6.Name = "label6"; | ||||||
| 			this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill; |             this.label6.Size = new System.Drawing.Size(55, 15); | ||||||
| 			this.lstMembers.FormattingEnabled = true; |             this.label6.TabIndex = 7; | ||||||
| 			this.lstMembers.Location = new System.Drawing.Point(0, 19); |             this.label6.Text = "Folders"; | ||||||
| 			this.lstMembers.Name = "lstMembers"; |             //  | ||||||
| 			this.lstMembers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; |             // tvFolders | ||||||
| 			this.lstMembers.Size = new System.Drawing.Size(386, 212); |             //  | ||||||
| 			this.lstMembers.TabIndex = 10; |             this.tvFolders.ContextMenuStrip = this.cmFolders; | ||||||
| 			this.lstMembers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstMembers_MouseUp); |             this.tvFolders.Dock = System.Windows.Forms.DockStyle.Bottom; | ||||||
| 			//  |             this.tvFolders.HideSelection = false; | ||||||
| 			// lblMembers |             this.tvFolders.Location = new System.Drawing.Point(3, 32); | ||||||
| 			//  |             this.tvFolders.Name = "tvFolders"; | ||||||
| 			this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top; |             this.tvFolders.Size = new System.Drawing.Size(770, 503); | ||||||
| 			this.lblMembers.Location = new System.Drawing.Point(0, 0); |             this.tvFolders.TabIndex = 6; | ||||||
| 			this.lblMembers.Name = "lblMembers"; |             this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick); | ||||||
| 			this.lblMembers.Size = new System.Drawing.Size(386, 19); |             //  | ||||||
| 			this.lblMembers.TabIndex = 2; |             // cmFolders | ||||||
| 			this.lblMembers.Text = "Members"; |             //  | ||||||
| 			//  |             this.cmFolders.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | ||||||
| 			// label6 |  | ||||||
| 			//  |  | ||||||
| 			this.label6.AutoSize = true; |  | ||||||
| 			this.label6.Location = new System.Drawing.Point(8, 5); |  | ||||||
| 			this.label6.Name = "label6"; |  | ||||||
| 			this.label6.Size = new System.Drawing.Size(41, 13); |  | ||||||
| 			this.label6.TabIndex = 7; |  | ||||||
| 			this.label6.Text = "Folders"; |  | ||||||
| 			//  |  | ||||||
| 			// tvFolders |  | ||||||
| 			//  |  | ||||||
| 			this.tvFolders.ContextMenuStrip = this.cmFolders; |  | ||||||
| 			this.tvFolders.HideSelection = false; |  | ||||||
| 			this.tvFolders.Location = new System.Drawing.Point(8, 21); |  | ||||||
| 			this.tvFolders.Name = "tvFolders"; |  | ||||||
| 			this.tvFolders.Size = new System.Drawing.Size(370, 511); |  | ||||||
| 			this.tvFolders.TabIndex = 6; |  | ||||||
| 			this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick); |  | ||||||
| 			//  |  | ||||||
| 			// cmFolders |  | ||||||
| 			//  |  | ||||||
| 			this.cmFolders.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { |  | ||||||
|             this.createSetAdministratorGroupToolStripMenuItem, |             this.createSetAdministratorGroupToolStripMenuItem, | ||||||
|             this.createWriterGroupToolStripMenuItem, |             this.createWriterGroupToolStripMenuItem, | ||||||
|             this.createROEToolStripMenuItem, |             this.createROEToolStripMenuItem, | ||||||
|             this.createReviewerGroupToolStripMenuItem}); |             this.createReviewerGroupToolStripMenuItem}); | ||||||
| 			this.cmFolders.Name = "cmFolders"; |             this.cmFolders.Name = "cmFolders"; | ||||||
| 			this.cmFolders.Size = new System.Drawing.Size(249, 92); |             this.cmFolders.Size = new System.Drawing.Size(249, 92); | ||||||
| 			//  |             //  | ||||||
| 			// createSetAdministratorGroupToolStripMenuItem |             // createSetAdministratorGroupToolStripMenuItem | ||||||
| 			//  |             //  | ||||||
| 			this.createSetAdministratorGroupToolStripMenuItem.Name = "createSetAdministratorGroupToolStripMenuItem"; |             this.createSetAdministratorGroupToolStripMenuItem.Name = "createSetAdministratorGroupToolStripMenuItem"; | ||||||
| 			this.createSetAdministratorGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); |             this.createSetAdministratorGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); | ||||||
| 			this.createSetAdministratorGroupToolStripMenuItem.Text = "Create a Set Administrator Group"; |             this.createSetAdministratorGroupToolStripMenuItem.Text = "Create a Set Administrator Group"; | ||||||
| 			this.createSetAdministratorGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); |             this.createSetAdministratorGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); | ||||||
| 			//  |             //  | ||||||
| 			// createWriterGroupToolStripMenuItem |             // createWriterGroupToolStripMenuItem | ||||||
| 			//  |             //  | ||||||
| 			this.createWriterGroupToolStripMenuItem.Name = "createWriterGroupToolStripMenuItem"; |             this.createWriterGroupToolStripMenuItem.Name = "createWriterGroupToolStripMenuItem"; | ||||||
| 			this.createWriterGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); |             this.createWriterGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); | ||||||
| 			this.createWriterGroupToolStripMenuItem.Text = "Create a Writer Group"; |             this.createWriterGroupToolStripMenuItem.Text = "Create a Writer Group"; | ||||||
| 			this.createWriterGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); |             this.createWriterGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); | ||||||
| 			//  |             //  | ||||||
| 			// createROEToolStripMenuItem |             // createROEToolStripMenuItem | ||||||
| 			//  |             //  | ||||||
| 			this.createROEToolStripMenuItem.Name = "createROEToolStripMenuItem"; |             this.createROEToolStripMenuItem.Name = "createROEToolStripMenuItem"; | ||||||
| 			this.createROEToolStripMenuItem.Size = new System.Drawing.Size(248, 22); |             this.createROEToolStripMenuItem.Size = new System.Drawing.Size(248, 22); | ||||||
| 			this.createROEToolStripMenuItem.Text = "Create a RO Editor Group"; |             this.createROEToolStripMenuItem.Text = "Create a RO Editor Group"; | ||||||
| 			this.createROEToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); |             this.createROEToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); | ||||||
| 			//  |             //  | ||||||
| 			// createReviewerGroupToolStripMenuItem |             // createReviewerGroupToolStripMenuItem | ||||||
| 			//  |             //  | ||||||
| 			this.createReviewerGroupToolStripMenuItem.Name = "createReviewerGroupToolStripMenuItem"; |             this.createReviewerGroupToolStripMenuItem.Name = "createReviewerGroupToolStripMenuItem"; | ||||||
| 			this.createReviewerGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); |             this.createReviewerGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); | ||||||
| 			this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group"; |             this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group"; | ||||||
| 			this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); |             this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); | ||||||
| 			//  |             //  | ||||||
| 			// lstUsers |             // tpManageGroups | ||||||
| 			//  |             //  | ||||||
| 			this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |             this.tpManageGroups.Controls.Add(this.btnAddMember); | ||||||
| 									| System.Windows.Forms.AnchorStyles.Left))); |             this.tpManageGroups.Controls.Add(this.btnRemoveMember); | ||||||
| 			this.lstUsers.FormattingEnabled = true; |             this.tpManageGroups.Controls.Add(this.label1); | ||||||
| 			this.lstUsers.Location = new System.Drawing.Point(630, 21); |             this.tpManageGroups.Controls.Add(this.lbNonMembers); | ||||||
| 			this.lstUsers.Name = "lstUsers"; |             this.tpManageGroups.Controls.Add(this.btnDeleteGroup); | ||||||
| 			this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; |             this.tpManageGroups.Controls.Add(this.cbGroupSelection); | ||||||
| 			this.lstUsers.Size = new System.Drawing.Size(140, 277); |             this.tpManageGroups.Controls.Add(this.lstNonMembers); | ||||||
| 			this.lstUsers.TabIndex = 5; |             this.tpManageGroups.Controls.Add(this.pnlMembers); | ||||||
| 			this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp); |             this.tpManageGroups.Controls.Add(this.label3); | ||||||
| 			this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged); |             this.tpManageGroups.Location = new System.Drawing.Point(4, 22); | ||||||
| 			//  |             this.tpManageGroups.Name = "tpManageGroups"; | ||||||
| 			// label5 |             this.tpManageGroups.Padding = new System.Windows.Forms.Padding(3); | ||||||
| 			//  |             this.tpManageGroups.Size = new System.Drawing.Size(776, 538); | ||||||
| 			this.label5.AutoSize = true; |             this.tpManageGroups.TabIndex = 3; | ||||||
| 			this.label5.Location = new System.Drawing.Point(630, 6); |             this.tpManageGroups.Text = "Manage Groups"; | ||||||
| 			this.label5.Name = "label5"; |             this.tpManageGroups.UseVisualStyleBackColor = true; | ||||||
| 			this.label5.Size = new System.Drawing.Size(34, 13); |             //  | ||||||
| 			this.label5.TabIndex = 4; |             // btnAddMember | ||||||
| 			this.label5.Text = "Users"; |             //  | ||||||
| 			//  |             this.btnAddMember.Location = new System.Drawing.Point(337, 190); | ||||||
| 			// label3 |             this.btnAddMember.Name = "btnAddMember"; | ||||||
| 			//  |             this.btnAddMember.Size = new System.Drawing.Size(36, 29); | ||||||
| 			this.label3.AutoSize = true; |             this.btnAddMember.TabIndex = 19; | ||||||
| 			this.label3.Location = new System.Drawing.Point(381, 6); |             this.btnAddMember.Text = "<<"; | ||||||
| 			this.label3.Name = "label3"; |             this.tt.SetToolTip(this.btnAddMember, "Add User as Members of Group"); | ||||||
| 			this.label3.Size = new System.Drawing.Size(41, 13); |             this.btnAddMember.UseVisualStyleBackColor = true; | ||||||
| 			this.label3.TabIndex = 1; |             this.btnAddMember.Click += new System.EventHandler(this.addMember_Click); | ||||||
| 			this.label3.Text = "Groups"; |             //  | ||||||
| 			//  |             // btnRemoveMember | ||||||
| 			// lstGroups |             //  | ||||||
| 			//  |             this.btnRemoveMember.Location = new System.Drawing.Point(337, 254); | ||||||
| 			this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |             this.btnRemoveMember.Name = "btnRemoveMember"; | ||||||
| 									| System.Windows.Forms.AnchorStyles.Left))); |             this.btnRemoveMember.Size = new System.Drawing.Size(36, 29); | ||||||
| 			this.lstGroups.FormattingEnabled = true; |             this.btnRemoveMember.TabIndex = 18; | ||||||
| 			this.lstGroups.Location = new System.Drawing.Point(384, 21); |             this.btnRemoveMember.Text = ">>"; | ||||||
| 			this.lstGroups.Name = "lstGroups"; |             this.tt.SetToolTip(this.btnRemoveMember, "Remove User From Group"); | ||||||
| 			this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; |             this.btnRemoveMember.UseVisualStyleBackColor = true; | ||||||
| 			this.lstGroups.Size = new System.Drawing.Size(240, 277); |             this.btnRemoveMember.Click += new System.EventHandler(this.removeMember_Click); | ||||||
| 			this.lstGroups.TabIndex = 0; |             //  | ||||||
| 			this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp); |             // label1 | ||||||
| 			this.lstGroups.SelectedIndexChanged += new System.EventHandler(this.lstGroups_SelectedIndexChanged); |             //  | ||||||
| 			//  |             this.label1.AutoSize = true; | ||||||
| 			// tpDefault |             this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); | ||||||
| 			//  |             this.label1.Location = new System.Drawing.Point(386, 42); | ||||||
| 			this.tpDefault.BackColor = System.Drawing.SystemColors.ButtonFace; |             this.label1.Name = "label1"; | ||||||
| 			this.tpDefault.Controls.Add(this.label8); |             this.label1.Size = new System.Drawing.Size(97, 15); | ||||||
| 			this.tpDefault.Controls.Add(this.pnlGroups); |             this.label1.TabIndex = 17; | ||||||
| 			this.tpDefault.Location = new System.Drawing.Point(4, 22); |             this.label1.Text = "Non Members"; | ||||||
| 			this.tpDefault.Name = "tpDefault"; |             //  | ||||||
| 			this.tpDefault.Padding = new System.Windows.Forms.Padding(3); |             // lbNonMembers | ||||||
| 			this.tpDefault.Size = new System.Drawing.Size(776, 538); |             //  | ||||||
| 			this.tpDefault.TabIndex = 0; |             this.lbNonMembers.AutoSize = true; | ||||||
| 			this.tpDefault.Text = "Default Group"; |             this.lbNonMembers.Location = new System.Drawing.Point(386, 42); | ||||||
| 			//  |             this.lbNonMembers.Name = "lbNonMembers"; | ||||||
| 			// label8 |             this.lbNonMembers.Size = new System.Drawing.Size(73, 13); | ||||||
| 			//  |             this.lbNonMembers.TabIndex = 17; | ||||||
| 			this.label8.Location = new System.Drawing.Point(308, 6); |             this.lbNonMembers.Text = "Non Members"; | ||||||
| 			this.label8.Name = "label8"; |             //  | ||||||
| 			this.label8.Size = new System.Drawing.Size(460, 172); |             // btnDeleteGroup | ||||||
| 			this.label8.TabIndex = 5; |             //  | ||||||
| 			this.label8.Text = "label8"; |             this.btnDeleteGroup.ForeColor = System.Drawing.Color.Red; | ||||||
| 			//  |             this.btnDeleteGroup.Location = new System.Drawing.Point(668, 12); | ||||||
| 			// pnlGroups |             this.btnDeleteGroup.Name = "btnDeleteGroup"; | ||||||
| 			//  |             this.btnDeleteGroup.Size = new System.Drawing.Size(89, 23); | ||||||
| 			this.pnlGroups.AutoScroll = true; |             this.btnDeleteGroup.TabIndex = 16; | ||||||
| 			this.pnlGroups.Location = new System.Drawing.Point(3, 6); |             this.btnDeleteGroup.Text = "Delete Group"; | ||||||
| 			this.pnlGroups.Name = "pnlGroups"; |             this.btnDeleteGroup.UseVisualStyleBackColor = true; | ||||||
| 			this.pnlGroups.Size = new System.Drawing.Size(299, 526); |             this.btnDeleteGroup.Click += new System.EventHandler(this.deleteGroup_Click); | ||||||
| 			this.pnlGroups.TabIndex = 4; |             //  | ||||||
| 			//  |             // cbGroupSelection | ||||||
| 			// cmMembers |             //  | ||||||
| 			//  |             this.cbGroupSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; | ||||||
| 			this.cmMembers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { |             this.cbGroupSelection.FormattingEnabled = true; | ||||||
|             this.removeMemberToolStripMenuItem}); |             this.cbGroupSelection.Location = new System.Drawing.Point(50, 9); | ||||||
| 			this.cmMembers.Name = "cmGroupMembers"; |             this.cbGroupSelection.Name = "cbGroupSelection"; | ||||||
| 			this.cmMembers.Size = new System.Drawing.Size(166, 26); |             this.cbGroupSelection.Size = new System.Drawing.Size(272, 21); | ||||||
| 			//  |             this.cbGroupSelection.TabIndex = 15; | ||||||
| 			// removeMemberToolStripMenuItem |             this.cbGroupSelection.SelectedIndexChanged += new System.EventHandler(this.cbGroupSelection_SelectedIndexChanged); | ||||||
| 			//  |             //  | ||||||
| 			this.removeMemberToolStripMenuItem.Name = "removeMemberToolStripMenuItem"; |             // lstNonMembers | ||||||
| 			this.removeMemberToolStripMenuItem.Size = new System.Drawing.Size(165, 22); |             //  | ||||||
| 			this.removeMemberToolStripMenuItem.Text = "Remove Member"; |             this.lstNonMembers.FormattingEnabled = true; | ||||||
| 			this.removeMemberToolStripMenuItem.Click += new System.EventHandler(this.removeMemberToolStripMenuItem_Click); |             this.lstNonMembers.Location = new System.Drawing.Point(389, 61); | ||||||
| 			//  |             this.lstNonMembers.Name = "lstNonMembers"; | ||||||
| 			// cmUsers |             this.lstNonMembers.Size = new System.Drawing.Size(316, 472); | ||||||
| 			//  |             this.lstNonMembers.TabIndex = 14; | ||||||
| 			this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { |             //  | ||||||
|  |             // pnlMembers | ||||||
|  |             //  | ||||||
|  |             this.pnlMembers.Controls.Add(this.lstMembers); | ||||||
|  |             this.pnlMembers.Controls.Add(this.lblMembers); | ||||||
|  |             this.pnlMembers.Location = new System.Drawing.Point(6, 42); | ||||||
|  |             this.pnlMembers.Name = "pnlMembers"; | ||||||
|  |             this.pnlMembers.Size = new System.Drawing.Size(316, 493); | ||||||
|  |             this.pnlMembers.TabIndex = 13; | ||||||
|  |             //  | ||||||
|  |             // lstMembers | ||||||
|  |             //  | ||||||
|  |             this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill; | ||||||
|  |             this.lstMembers.FormattingEnabled = true; | ||||||
|  |             this.lstMembers.Location = new System.Drawing.Point(0, 19); | ||||||
|  |             this.lstMembers.Name = "lstMembers"; | ||||||
|  |             this.lstMembers.Size = new System.Drawing.Size(316, 474); | ||||||
|  |             this.lstMembers.TabIndex = 10; | ||||||
|  |             //  | ||||||
|  |             // lblMembers | ||||||
|  |             //  | ||||||
|  |             this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top; | ||||||
|  |             this.lblMembers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); | ||||||
|  |             this.lblMembers.Location = new System.Drawing.Point(0, 0); | ||||||
|  |             this.lblMembers.Name = "lblMembers"; | ||||||
|  |             this.lblMembers.Size = new System.Drawing.Size(316, 19); | ||||||
|  |             this.lblMembers.TabIndex = 2; | ||||||
|  |             this.lblMembers.Text = "Selected Group Users"; | ||||||
|  |             //  | ||||||
|  |             // label3 | ||||||
|  |             //  | ||||||
|  |             this.label3.AutoSize = true; | ||||||
|  |             this.label3.Location = new System.Drawing.Point(3, 12); | ||||||
|  |             this.label3.Name = "label3"; | ||||||
|  |             this.label3.Size = new System.Drawing.Size(39, 13); | ||||||
|  |             this.label3.TabIndex = 3; | ||||||
|  |             this.label3.Text = "Group:"; | ||||||
|  |             //  | ||||||
|  |             // tpManageUsers | ||||||
|  |             //  | ||||||
|  |             this.tpManageUsers.Controls.Add(this.lblUserGroups); | ||||||
|  |             this.tpManageUsers.Controls.Add(this.lstGroups); | ||||||
|  |             this.tpManageUsers.Controls.Add(this.lstUsers); | ||||||
|  |             this.tpManageUsers.Controls.Add(this.lblUsers); | ||||||
|  |             this.tpManageUsers.Location = new System.Drawing.Point(4, 22); | ||||||
|  |             this.tpManageUsers.Name = "tpManageUsers"; | ||||||
|  |             this.tpManageUsers.Size = new System.Drawing.Size(776, 538); | ||||||
|  |             this.tpManageUsers.TabIndex = 4; | ||||||
|  |             this.tpManageUsers.Text = "Manage Users"; | ||||||
|  |             this.tpManageUsers.UseVisualStyleBackColor = true; | ||||||
|  |             //  | ||||||
|  |             // lblUserGroups | ||||||
|  |             //  | ||||||
|  |             this.lblUserGroups.AutoSize = true; | ||||||
|  |             this.lblUserGroups.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); | ||||||
|  |             this.lblUserGroups.Location = new System.Drawing.Point(268, 11); | ||||||
|  |             this.lblUserGroups.Name = "lblUserGroups"; | ||||||
|  |             this.lblUserGroups.Size = new System.Drawing.Size(225, 15); | ||||||
|  |             this.lblUserGroups.TabIndex = 9; | ||||||
|  |             this.lblUserGroups.Text = "Groups That User Is a Member Of:"; | ||||||
|  |             //  | ||||||
|  |             // lstGroups | ||||||
|  |             //  | ||||||
|  |             this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)  | ||||||
|  |             | System.Windows.Forms.AnchorStyles.Left))); | ||||||
|  |             this.lstGroups.FormattingEnabled = true; | ||||||
|  |             this.lstGroups.Location = new System.Drawing.Point(271, 36); | ||||||
|  |             this.lstGroups.Name = "lstGroups"; | ||||||
|  |             this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; | ||||||
|  |             this.lstGroups.Size = new System.Drawing.Size(502, 498); | ||||||
|  |             this.lstGroups.TabIndex = 8; | ||||||
|  |             this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp); | ||||||
|  |             //  | ||||||
|  |             // lstUsers | ||||||
|  |             //  | ||||||
|  |             this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)  | ||||||
|  |             | System.Windows.Forms.AnchorStyles.Left))); | ||||||
|  |             this.lstUsers.FormattingEnabled = true; | ||||||
|  |             this.lstUsers.Location = new System.Drawing.Point(8, 36); | ||||||
|  |             this.lstUsers.Name = "lstUsers"; | ||||||
|  |             this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; | ||||||
|  |             this.lstUsers.Size = new System.Drawing.Size(217, 498); | ||||||
|  |             this.lstUsers.TabIndex = 7; | ||||||
|  |             this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged); | ||||||
|  |             this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp); | ||||||
|  |             //  | ||||||
|  |             // lblUsers | ||||||
|  |             //  | ||||||
|  |             this.lblUsers.AutoSize = true; | ||||||
|  |             this.lblUsers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); | ||||||
|  |             this.lblUsers.Location = new System.Drawing.Point(8, 11); | ||||||
|  |             this.lblUsers.Name = "lblUsers"; | ||||||
|  |             this.lblUsers.Size = new System.Drawing.Size(44, 15); | ||||||
|  |             this.lblUsers.TabIndex = 6; | ||||||
|  |             this.lblUsers.Text = "Users"; | ||||||
|  |             //  | ||||||
|  |             // tpDefault | ||||||
|  |             //  | ||||||
|  |             this.tpDefault.BackColor = System.Drawing.SystemColors.ButtonFace; | ||||||
|  |             this.tpDefault.Controls.Add(this.label8); | ||||||
|  |             this.tpDefault.Controls.Add(this.pnlGroups); | ||||||
|  |             this.tpDefault.Location = new System.Drawing.Point(4, 22); | ||||||
|  |             this.tpDefault.Name = "tpDefault"; | ||||||
|  |             this.tpDefault.Padding = new System.Windows.Forms.Padding(3); | ||||||
|  |             this.tpDefault.Size = new System.Drawing.Size(776, 538); | ||||||
|  |             this.tpDefault.TabIndex = 0; | ||||||
|  |             this.tpDefault.Text = "Default Group"; | ||||||
|  |             //  | ||||||
|  |             // label8 | ||||||
|  |             //  | ||||||
|  |             this.label8.Location = new System.Drawing.Point(308, 6); | ||||||
|  |             this.label8.Name = "label8"; | ||||||
|  |             this.label8.Size = new System.Drawing.Size(460, 172); | ||||||
|  |             this.label8.TabIndex = 5; | ||||||
|  |             this.label8.Text = "label8"; | ||||||
|  |             //  | ||||||
|  |             // pnlGroups | ||||||
|  |             //  | ||||||
|  |             this.pnlGroups.AutoScroll = true; | ||||||
|  |             this.pnlGroups.Location = new System.Drawing.Point(3, 6); | ||||||
|  |             this.pnlGroups.Name = "pnlGroups"; | ||||||
|  |             this.pnlGroups.Size = new System.Drawing.Size(299, 526); | ||||||
|  |             this.pnlGroups.TabIndex = 4; | ||||||
|  |             //  | ||||||
|  |             // cmMembers | ||||||
|  |             //  | ||||||
|  |             this.cmMembers.Name = "cmGroupMembers"; | ||||||
|  |             this.cmMembers.Size = new System.Drawing.Size(61, 4); | ||||||
|  |             //  | ||||||
|  |             // removeMemberToolStripMenuItem | ||||||
|  |             //  | ||||||
|  |             this.removeMemberToolStripMenuItem.Name = "removeMemberToolStripMenuItem"; | ||||||
|  |             this.removeMemberToolStripMenuItem.Size = new System.Drawing.Size(165, 22); | ||||||
|  |             this.removeMemberToolStripMenuItem.Text = "Remove Member"; | ||||||
|  |             this.removeMemberToolStripMenuItem.Click += new System.EventHandler(this.removeMemberToolStripMenuItem_Click); | ||||||
|  |             //  | ||||||
|  |             // cmUsers | ||||||
|  |             //  | ||||||
|  |             this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | ||||||
|             this.addUserToolStripMenuItem, |             this.addUserToolStripMenuItem, | ||||||
|             this.editUserToolStripMenuItem, |             this.editUserToolStripMenuItem, | ||||||
|             this.deleteUserToolStripMenuItem, |             this.deleteUserToolStripMenuItem}); | ||||||
|             this.addMemberToolStripMenuItemUser}); |             this.cmUsers.Name = "cmUsers"; | ||||||
| 			this.cmUsers.Name = "cmUsers"; |             this.cmUsers.Size = new System.Drawing.Size(145, 92); | ||||||
| 			this.cmUsers.Size = new System.Drawing.Size(153, 114); |             //  | ||||||
| 			//  |             // addUserToolStripMenuItem | ||||||
| 			// addUserToolStripMenuItem |             //  | ||||||
| 			//  |             this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem"; | ||||||
| 			this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem"; |             this.addUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22); | ||||||
| 			this.addUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); |             this.addUserToolStripMenuItem.Text = "Add User"; | ||||||
| 			this.addUserToolStripMenuItem.Text = "Add User"; |             this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click); | ||||||
| 			this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click); |             //  | ||||||
| 			//  |             // editUserToolStripMenuItem | ||||||
| 			// editUserToolStripMenuItem |             //  | ||||||
| 			//  |             this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem"; | ||||||
| 			this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem"; |             this.editUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22); | ||||||
| 			this.editUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); |             this.editUserToolStripMenuItem.Text = "Edit User"; | ||||||
| 			this.editUserToolStripMenuItem.Text = "Edit User"; |             this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click); | ||||||
| 			this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click); |             //  | ||||||
| 			//  |             // deleteUserToolStripMenuItem | ||||||
| 			// deleteUserToolStripMenuItem |             //  | ||||||
| 			//  |             this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem"; | ||||||
| 			this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem"; |             this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22); | ||||||
| 			this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); |             this.deleteUserToolStripMenuItem.Text = "Delete User"; | ||||||
| 			this.deleteUserToolStripMenuItem.Text = "Delete User"; |             this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click); | ||||||
| 			this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click); |             //  | ||||||
| 			//  |             // dlgManageSecurity | ||||||
| 			// addMemberToolStripMenuItemUser |             //  | ||||||
| 			//  |             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; | ||||||
| 			this.addMemberToolStripMenuItemUser.Name = "addMemberToolStripMenuItemUser"; |             this.ClientSize = new System.Drawing.Size(784, 564); | ||||||
| 			this.addMemberToolStripMenuItemUser.Size = new System.Drawing.Size(152, 22); |             this.Controls.Add(this.tcSecurity); | ||||||
| 			this.addMemberToolStripMenuItemUser.Text = "Add Member"; |             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; | ||||||
| 			this.addMemberToolStripMenuItemUser.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click); |             this.MaximizeBox = false; | ||||||
| 			//  |             this.MinimizeBox = false; | ||||||
| 			// cmGroups |             this.Name = "dlgManageSecurity"; | ||||||
| 			//  |             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; | ||||||
| 			this.cmGroups.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { |             this.Text = "Manage Security"; | ||||||
|             this.deleteGroupToolStripMenuItem, |             this.Load += new System.EventHandler(this.dlgManageSecurity_Load); | ||||||
|             this.addMemberToolStripMenuItemGroup}); |             this.tcSecurity.ResumeLayout(false); | ||||||
| 			this.cmGroups.Name = "cmGroups"; |             this.tpManageFolders.ResumeLayout(false); | ||||||
| 			this.cmGroups.Size = new System.Drawing.Size(145, 48); |             this.tpManageFolders.PerformLayout(); | ||||||
| 			//  |             this.cmFolders.ResumeLayout(false); | ||||||
| 			// deleteGroupToolStripMenuItem |             this.tpManageGroups.ResumeLayout(false); | ||||||
| 			//  |             this.tpManageGroups.PerformLayout(); | ||||||
| 			this.deleteGroupToolStripMenuItem.Name = "deleteGroupToolStripMenuItem"; |             this.pnlMembers.ResumeLayout(false); | ||||||
| 			this.deleteGroupToolStripMenuItem.Size = new System.Drawing.Size(144, 22); |             this.tpManageUsers.ResumeLayout(false); | ||||||
| 			this.deleteGroupToolStripMenuItem.Text = "Delete Group"; |             this.tpManageUsers.PerformLayout(); | ||||||
| 			this.deleteGroupToolStripMenuItem.Click += new System.EventHandler(this.deleteGroupToolStripMenuItem_Click); |             this.tpDefault.ResumeLayout(false); | ||||||
| 			//  |             this.cmUsers.ResumeLayout(false); | ||||||
| 			// addMemberToolStripMenuItemGroup |             this.ResumeLayout(false); | ||||||
| 			//  |  | ||||||
| 			this.addMemberToolStripMenuItemGroup.Name = "addMemberToolStripMenuItemGroup"; |  | ||||||
| 			this.addMemberToolStripMenuItemGroup.Size = new System.Drawing.Size(144, 22); |  | ||||||
| 			this.addMemberToolStripMenuItemGroup.Text = "Add Member"; |  | ||||||
| 			this.addMemberToolStripMenuItemGroup.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click); |  | ||||||
| 			//  |  | ||||||
| 			// dlgManageSecurity |  | ||||||
| 			//  |  | ||||||
| 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; |  | ||||||
| 			this.ClientSize = new System.Drawing.Size(784, 564); |  | ||||||
| 			this.Controls.Add(this.tcSecurity); |  | ||||||
| 			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; |  | ||||||
| 			this.MaximizeBox = false; |  | ||||||
| 			this.MinimizeBox = false; |  | ||||||
| 			this.Name = "dlgManageSecurity"; |  | ||||||
| 			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; |  | ||||||
| 			this.Text = "Manage Security"; |  | ||||||
| 			this.Load += new System.EventHandler(this.dlgManageSecurity_Load); |  | ||||||
| 			this.tcSecurity.ResumeLayout(false); |  | ||||||
| 			this.tpGroupUsers.ResumeLayout(false); |  | ||||||
| 			this.tpGroupUsers.PerformLayout(); |  | ||||||
| 			this.pnlMembers.ResumeLayout(false); |  | ||||||
| 			this.cmFolders.ResumeLayout(false); |  | ||||||
| 			this.tpDefault.ResumeLayout(false); |  | ||||||
| 			this.cmMembers.ResumeLayout(false); |  | ||||||
| 			this.cmUsers.ResumeLayout(false); |  | ||||||
| 			this.cmGroups.ResumeLayout(false); |  | ||||||
| 			this.ResumeLayout(false); |  | ||||||
|  |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -357,20 +445,14 @@ namespace VEPROMS | |||||||
|  |  | ||||||
| 		private System.Windows.Forms.TabControl tcSecurity; | 		private System.Windows.Forms.TabControl tcSecurity; | ||||||
| 		private System.Windows.Forms.TabPage tpDefault; | 		private System.Windows.Forms.TabPage tpDefault; | ||||||
| 		private System.Windows.Forms.TabPage tpGroupUsers; | 		private System.Windows.Forms.TabPage tpManageFolders; | ||||||
| 		private System.Windows.Forms.ListBox lstGroups; |  | ||||||
| 		private System.Windows.Forms.Label lblMembers; |  | ||||||
| 		private System.Windows.Forms.Label label3; |  | ||||||
| 		private System.Windows.Forms.ContextMenuStrip cmGroups; |  | ||||||
| 		private System.Windows.Forms.ListBox lstUsers; |  | ||||||
| 		private System.Windows.Forms.Label label5; |  | ||||||
| 		private System.Windows.Forms.ContextMenuStrip cmUsers; | 		private System.Windows.Forms.ContextMenuStrip cmUsers; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem addUserToolStripMenuItem; | 		private System.Windows.Forms.ToolStripMenuItem addUserToolStripMenuItem; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem editUserToolStripMenuItem; | 		private System.Windows.Forms.ToolStripMenuItem editUserToolStripMenuItem; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem deleteUserToolStripMenuItem; | 		private System.Windows.Forms.ToolStripMenuItem deleteUserToolStripMenuItem; | ||||||
| 		private System.Windows.Forms.ContextMenuStrip cmMembers; |         private System.Windows.Forms.ContextMenuStrip cmMembers; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem removeMemberToolStripMenuItem; |         private System.Windows.Forms.ToolStripMenuItem removeMemberToolStripMenuItem; | ||||||
| 		private System.Windows.Forms.Label label6; |         private System.Windows.Forms.Label label6; | ||||||
| 		private System.Windows.Forms.TreeView tvFolders; | 		private System.Windows.Forms.TreeView tvFolders; | ||||||
| 		private System.Windows.Forms.ContextMenuStrip cmFolders; | 		private System.Windows.Forms.ContextMenuStrip cmFolders; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem createSetAdministratorGroupToolStripMenuItem; | 		private System.Windows.Forms.ToolStripMenuItem createSetAdministratorGroupToolStripMenuItem; | ||||||
| @@ -379,10 +461,23 @@ namespace VEPROMS | |||||||
| 		private System.Windows.Forms.ToolStripMenuItem createReviewerGroupToolStripMenuItem; | 		private System.Windows.Forms.ToolStripMenuItem createReviewerGroupToolStripMenuItem; | ||||||
| 		private System.Windows.Forms.Panel pnlGroups; | 		private System.Windows.Forms.Panel pnlGroups; | ||||||
| 		private System.Windows.Forms.Label label8; | 		private System.Windows.Forms.Label label8; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem deleteGroupToolStripMenuItem; |         private System.Windows.Forms.TabPage tpManageGroups; | ||||||
| 		private System.Windows.Forms.Panel pnlMembers; |         private System.Windows.Forms.TabPage tpManageUsers; | ||||||
| 		private System.Windows.Forms.ListBox lstMembers; |         private System.Windows.Forms.Panel pnlMembers; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemUser; |         private System.Windows.Forms.ListBox lstMembers; | ||||||
| 		private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemGroup; |         private System.Windows.Forms.Label lblMembers; | ||||||
| 	} |         private System.Windows.Forms.ListBox lstUsers; | ||||||
|  |         private System.Windows.Forms.Label lblUsers; | ||||||
|  |         private System.Windows.Forms.Label label3; | ||||||
|  |         private System.Windows.Forms.ComboBox cbGroupSelection; | ||||||
|  |         private System.Windows.Forms.ListBox lstNonMembers; | ||||||
|  |         private System.Windows.Forms.Button btnDeleteGroup; | ||||||
|  |         private System.Windows.Forms.Label lbNonMembers; | ||||||
|  |         private System.Windows.Forms.ListBox lstGroups; | ||||||
|  |         private System.Windows.Forms.Button btnAddMember; | ||||||
|  |         private System.Windows.Forms.Button btnRemoveMember; | ||||||
|  |         private System.Windows.Forms.ToolTip tt; | ||||||
|  |         private System.Windows.Forms.Label label1; | ||||||
|  |         private System.Windows.Forms.Label lblUserGroups; | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -7,30 +7,491 @@ using System.Text; | |||||||
| using System.Windows.Forms; | using System.Windows.Forms; | ||||||
| using VEPROMS.CSLA.Library; | using VEPROMS.CSLA.Library; | ||||||
| using Volian.Base.Library; | using Volian.Base.Library; | ||||||
|  | using Volian.Controls.Library; | ||||||
|  | using System.Linq; | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace VEPROMS | namespace VEPROMS | ||||||
| { | { | ||||||
|  | 	//C2024-047 Redesign PROMS Security Dialog | ||||||
| 	public partial class dlgManageSecurity : Form | 	public partial class dlgManageSecurity : Form | ||||||
| 	{ | 	{ | ||||||
| 		#region Log4Net | 		#region Log4Net | ||||||
| 		private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | 		private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | ||||||
| 		#endregion | 		#endregion | ||||||
|  |  | ||||||
|  | 		#region Main Form / Shared Code | ||||||
| 		private GroupInfoList myGroupInfoList; | 		private GroupInfoList myGroupInfoList; | ||||||
| 		private UserInfoList myUserInfoList; | 		private UserInfoList myUserInfoList; | ||||||
| 		private List<MembershipInfo> myMembershipInfoList; | 		private List<MembershipInfo> myMembershipInfoList; | ||||||
| 		private Folder myFolder; | 		private Folder myFolder; | ||||||
|  |  | ||||||
| 		public dlgManageSecurity() | 		public dlgManageSecurity() | ||||||
| 		{ | 		{ | ||||||
| 			InitializeComponent(); | 			InitializeComponent(); | ||||||
| 		} | 		} | ||||||
| 		private void dlgManageSecurity_Load(object sender, EventArgs e) | 		private void dlgManageSecurity_Load(object sender, EventArgs e) | ||||||
| 		{ | 		{ | ||||||
|  | 			//load all folders | ||||||
| 			myFolder = Folder.Get(1); | 			myFolder = Folder.Get(1); | ||||||
| 			SetupSecurity(); |  | ||||||
| 			SetupGroups(); | 			//Default to Users Tab | ||||||
|  | 			tcSecurity.SelectedIndex = 2; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		//This is called when the Index Changes for main tab Control | ||||||
|  | 		//it loads info for the current tab | ||||||
|  | 		private void changedTab(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			LoadRefreshGroupUsers(); | ||||||
|  |  | ||||||
|  | 			switch (tcSecurity.SelectedIndex) | ||||||
|  | 			{ | ||||||
|  | 				//Manage Folders | ||||||
|  | 				case 0: | ||||||
|  | 					SetupFolderOptions(); | ||||||
|  | 					break; | ||||||
|  | 				//Manage Groups | ||||||
|  | 				case 1: | ||||||
|  | 					SetupGroups(); | ||||||
|  | 					break; | ||||||
|  | 				//Manage Users (note that this is the default) | ||||||
|  | 				case 2: | ||||||
|  | 					SetupUserOptions(); | ||||||
|  | 					break; | ||||||
|  |                 //Default Options tab | ||||||
|  | 				case 3: | ||||||
|  | 					SetupDefaultGroupOptions(); | ||||||
|  | 					break; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		//Loads a refreshed list of Groups and Users | ||||||
|  | 		private void LoadRefreshGroupUsers() | ||||||
|  | 		{ | ||||||
|  | 			GroupInfoList.Reset(); | ||||||
|  | 			myGroupInfoList = GroupInfoList.Get(); | ||||||
|  | 			UserInfoList.Reset(); | ||||||
|  | 			myUserInfoList = UserInfoList.Get(); | ||||||
|  | 		} | ||||||
|  | 		#endregion | ||||||
|  |  | ||||||
|  | 		#region Manage Folders | ||||||
|  | 		//Sets up Folders | ||||||
|  | 		private void SetupFolderOptions() | ||||||
|  | 		{ | ||||||
|  | 			if (tvFolders.Nodes.Count == 0) | ||||||
|  | 			{ | ||||||
|  | 				FolderInfo fi = FolderInfo.Get(1); | ||||||
|  | 				LoadChildFolders(fi, null); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		//loads child folders in tree view | ||||||
|  | 		private void LoadChildFolders(FolderInfo fi, TreeNode tn) | ||||||
|  | 		{ | ||||||
|  | 			if (tn == null) | ||||||
|  | 			{ | ||||||
|  | 				tn = tvFolders.Nodes.Add(fi.Name); | ||||||
|  | 				tn.Tag = fi; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				tn = tn.Nodes.Add(fi.Name); | ||||||
|  | 				tn.Tag = fi; | ||||||
|  | 			} | ||||||
|  | 			if (fi.ChildFolderCount > 0) | ||||||
|  | 			{ | ||||||
|  | 				foreach (FolderInfo fic in fi.SortedChildFolders) | ||||||
|  | 				{ | ||||||
|  | 					LoadChildFolders(fic, tn); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		//Handles Creating a New Group | ||||||
|  | 		private void createGroupMenuItem(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			try | ||||||
|  | 			{ | ||||||
|  | 				ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem; | ||||||
|  | 				TreeNode tn = tvFolders.SelectedNode; | ||||||
|  | 				FolderInfo fi = tn.Tag as FolderInfo; | ||||||
|  | 				AddNewGroup(tsddi.Text, fi); | ||||||
|  | 			} | ||||||
|  | 			catch (Exception ex) | ||||||
|  | 			{ | ||||||
|  | 				_MyLog.Warn("createGroupMenuItem", ex); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		private void AddNewGroup(string txt, FolderInfo fi) | ||||||
|  | 		{ | ||||||
|  | 			txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim(); | ||||||
|  | 			RoleInfoList ril = RoleInfoList.Get(); | ||||||
|  | 			// B2022-080: cannot add a new group in Proms security.  if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator, | ||||||
|  | 			//   Writer, Reviewer, RO Editor, the Adding of new groups won't work.  Databases should have this loaded by default. | ||||||
|  | 			//   Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles) | ||||||
|  | 			if (ril == null || ril.Count < 2) | ||||||
|  | 			{ | ||||||
|  | 				MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  |             foreach (var ri in ril.Where(ri => ri.Name == txt)) | ||||||
|  |             { | ||||||
|  |                 string gin = string.Format("{0}s - {1}", ri.Name, fi.Name); | ||||||
|  |                 if (!myGroupInfoList.Any(gi => gi.GroupName == gin)) | ||||||
|  |                 { | ||||||
|  |                     Group group = Group.MakeGroup(gin, null, null); | ||||||
|  |                     Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             LoadRefreshGroupUsers(); | ||||||
|  | 		} | ||||||
|  | 		private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			tvFolders.SelectedNode = e.Node; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		#endregion | ||||||
|  |  | ||||||
|  | 		#region Manage Groups | ||||||
|  | 		//Sets up Group Options | ||||||
| 		private void SetupGroups() | 		private void SetupGroups() | ||||||
|  | 		{ | ||||||
|  | 			cbGroupSelection.Items.Clear(); | ||||||
|  | 			foreach (GroupInfo gi in myGroupInfoList) | ||||||
|  | 				cbGroupSelection.Items.Add(gi.GroupName); | ||||||
|  | 			cbGroupSelection.SelectedIndex = 0; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		private void cbGroupSelection_SelectedIndexChanged(object sender, EventArgs e) => updateMembershipLists(); | ||||||
|  |  | ||||||
|  | 		//Updates the lists of members / nonMembers | ||||||
|  | 		private void updateMembershipLists() | ||||||
|  | 		{ | ||||||
|  | 			myMembershipInfoList = new List<MembershipInfo>(); | ||||||
|  | 			if (cbGroupSelection.SelectedIndex > -1) | ||||||
|  | 			{ | ||||||
|  | 				GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex]; | ||||||
|  | 				gi.RefreshGroupMemberships(); | ||||||
|  | 				if (gi.GroupMembershipCount > 0) | ||||||
|  | 					myMembershipInfoList.AddRange(gi.GroupMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty).OrderBy(x => x.MyUserUserID)); | ||||||
|  | 			} | ||||||
|  | 			lstMembers.DataSource = myMembershipInfoList; | ||||||
|  | 			lstMembers.ValueMember = "UID"; | ||||||
|  | 			lstMembers.DisplayMember = "MyUserUserID"; | ||||||
|  |  | ||||||
|  | 			//set NonMembers to Users that are not in Members | ||||||
|  | 			lstNonMembers.DataSource = myUserInfoList.Select(x => x.UserID).Except(myMembershipInfoList.Select(x => x.MyUser.UserID)).ToList(); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Add a Member to a Group | ||||||
|  | 		private void addMember_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			int groupIndex = cbGroupSelection.SelectedIndex; | ||||||
|  | 			string selectedUserID = lstNonMembers.SelectedValue.ToString(); | ||||||
|  | 			int selectedUID = UserInfo.GetByUserID(selectedUserID).UID; | ||||||
|  | 			GroupInfo gi = myGroupInfoList[groupIndex]; | ||||||
|  | 			User selectedUser = User.Get(selectedUID); | ||||||
|  |  | ||||||
|  | 			Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, ""); | ||||||
|  | 			updateMembershipLists(); | ||||||
|  | 			lstNonMembers.SelectedIndex = -1; | ||||||
|  |  | ||||||
|  | 			int index = lstMembers.FindString(selectedUserID); | ||||||
|  | 			lstMembers.SetSelected(index, true); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Remove a Member From a Group | ||||||
|  | 		private void removeMember_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			if (lstMembers.SelectedIndex > -1) | ||||||
|  | 			{ | ||||||
|  | 				MembershipInfo mi = (MembershipInfo)lstMembers.SelectedItem; | ||||||
|  | 				string selectedUserID = mi.MyUserUserID; | ||||||
|  | 				string msg = "Are you sure you want to remove this Group Member?"; | ||||||
|  | 				if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) | ||||||
|  | 				{ | ||||||
|  | 					if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1) | ||||||
|  | 					{ | ||||||
|  | 						MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 						return; | ||||||
|  | 					} | ||||||
|  | 					Membership m = Membership.Get(mi.UGID); | ||||||
|  | 					m.EndDate = DateTime.Now.ToShortDateString(); | ||||||
|  | 					m.Save(); | ||||||
|  | 					updateMembershipLists(); | ||||||
|  | 					lstMembers.SelectedIndex = -1; | ||||||
|  | 					lstNonMembers.SelectedItem = selectedUserID; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Deletes the Currently Selected Group | ||||||
|  | 		private void deleteGroup_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			if (cbGroupSelection.SelectedIndex < 0) | ||||||
|  | 			{ | ||||||
|  | 				MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex]; | ||||||
|  | 			if(myFolder.FolderConfig.Security_Group == gi.GID) | ||||||
|  | 			{ | ||||||
|  | 				MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			bool deleteOK = true; | ||||||
|  |             if (gi.GroupMembershipCount > 0 && gi.GroupMemberships.Any(mi => mi.EndDate == null || mi.EndDate == string.Empty)) | ||||||
|  |                 deleteOK = false; | ||||||
|  |             if (!deleteOK) | ||||||
|  | 			{ | ||||||
|  | 				MessageBox.Show("There are still users who are members of this group.  You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) | ||||||
|  | 			{ | ||||||
|  | 				Group.Delete(gi.GID); | ||||||
|  | 				LoadRefreshGroupUsers(); | ||||||
|  | 				SetupGroups(); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		#endregion | ||||||
|  |  | ||||||
|  | 		#region Manage Users | ||||||
|  |  | ||||||
|  | 		//Sets up UserOptions | ||||||
|  | 		private void SetupUserOptions() | ||||||
|  | 		{ | ||||||
|  | 			lstUsers.Items.Clear(); | ||||||
|  | 			foreach (UserInfo ui in myUserInfoList) | ||||||
|  | 				lstUsers.Items.Add(ui.UserID); | ||||||
|  | 			lstUsers.SelectedIndex = -1; | ||||||
|  | 			lstGroups.DataSource = null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		#region Manage Users - User Options | ||||||
|  |  | ||||||
|  | 		//Build Membership list based on selected user | ||||||
|  | 		private void lstUsers_SelectedIndexChanged(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			myMembershipInfoList = new List<MembershipInfo>(); | ||||||
|  | 			if (lstUsers.SelectedIndex > -1) | ||||||
|  | 			{ | ||||||
|  | 				UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; | ||||||
|  | 				if (ui.UserMembershipCount > 0) | ||||||
|  | 				{ | ||||||
|  | 					myMembershipInfoList.AddRange(ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty)); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			lstGroups.DataSource = myMembershipInfoList; | ||||||
|  | 			lstGroups.ValueMember = "UGID"; | ||||||
|  | 			lstGroups.DisplayMember = "MyGroupName"; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Select User and set up Mouse Click Menus based on | ||||||
|  | 		//where click in User Box | ||||||
|  | 		private void lstUsers_MouseUp(object sender, MouseEventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			if (e.Button == MouseButtons.Right) | ||||||
|  | 			{ | ||||||
|  | 				int k = lstUsers.IndexFromPoint(e.Location); | ||||||
|  | 				if (k >= 0) | ||||||
|  | 				{ | ||||||
|  | 					lstUsers.SelectedIndex = k; | ||||||
|  | 					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true; | ||||||
|  | 				} | ||||||
|  | 				else | ||||||
|  | 				{ | ||||||
|  | 					addUserToolStripMenuItem.Visible = true; | ||||||
|  | 					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = false; | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				cmUsers.Show(lstUsers, e.Location); | ||||||
|  | 			} | ||||||
|  | 			else if (e.Button == MouseButtons.Left) | ||||||
|  | 			{ | ||||||
|  | 				int k = lstUsers.IndexFromPoint(e.Location); | ||||||
|  | 				if (k >= 0) | ||||||
|  | 				{ | ||||||
|  | 					lstUsers.SelectedIndex = k; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Adds a new User | ||||||
|  | 		private void addUserToolStripMenuItem_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, ""); | ||||||
|  | 			frmManageUser frm = new frmManageUser("add"); | ||||||
|  | 			frm.MyUser = u; | ||||||
|  | 			if (frm.ShowDialog(this) == DialogResult.OK) | ||||||
|  | 			{ | ||||||
|  | 				u = frm.MyUser; | ||||||
|  | 				u.Save(); | ||||||
|  | 				Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", ""); | ||||||
|  |  | ||||||
|  | 				//Update the User list to reflect the added user | ||||||
|  | 				LoadRefreshGroupUsers(); | ||||||
|  | 				SetupUserOptions(); | ||||||
|  | 				lstUsers.SelectedItem = u.UserID; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				u.Delete(); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Edit a User's details | ||||||
|  | 		private void editUserToolStripMenuItem_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			if (lstUsers.SelectedIndex == -1) | ||||||
|  | 			{ | ||||||
|  | 				MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; | ||||||
|  | 			using (User u = User.Get(ui.UID)) | ||||||
|  | 			{ | ||||||
|  | 				frmManageUser frm = new frmManageUser("edit"); | ||||||
|  | 				frm.MyUser = u; | ||||||
|  | 				if (frm.ShowDialog(this) == DialogResult.OK) | ||||||
|  | 				{ | ||||||
|  | 					frm.MyUser.Save(); | ||||||
|  |  | ||||||
|  | 					//Update the User list to reflect the edited user | ||||||
|  | 					//this is done in case the UserID is updated so the list updates to reflect that | ||||||
|  | 					LoadRefreshGroupUsers(); | ||||||
|  | 					SetupUserOptions(); | ||||||
|  | 					lstUsers.SelectedItem = u.UserID; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Delete a User | ||||||
|  | 		private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			if (lstUsers.SelectedIndex == -1) | ||||||
|  | 			{ | ||||||
|  | 				MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; | ||||||
|  | 			SessionInfoList sil = SessionInfoList.Get(); | ||||||
|  | 			foreach (SessionInfo si in sil) | ||||||
|  | 			{ | ||||||
|  | 				if (si.UserID == ui.UserID && (si.DTSEnd == null)) | ||||||
|  | 				{ | ||||||
|  | 					MessageBox.Show("The user selected has an active session.  You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  | 					return; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			int nummemberships = ui.UserMemberships.Count(mi => mi.EndDate == null || mi.EndDate == string.Empty); | ||||||
|  | 			string mem_text = nummemberships > 0 ? "\r\nNote that this will remove all memberships that this user has." : ""; | ||||||
|  | 			if (MessageBox.Show($"Are you sure you want to delete this user?{mem_text}", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) | ||||||
|  | 			{ | ||||||
|  | 				foreach (MembershipInfo minfo in ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty)) | ||||||
|  |                 { | ||||||
|  | 					Membership m = Membership.Get(minfo.UGID); | ||||||
|  | 					m.EndDate = DateTime.Now.ToShortDateString(); | ||||||
|  | 					m.Save(); | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				User.Delete(ui.UID); | ||||||
|  |  | ||||||
|  | 				//Update the User list to reflect the deleted user | ||||||
|  | 				LoadRefreshGroupUsers(); | ||||||
|  | 				SetupUserOptions(); | ||||||
|  | 				lstUsers.SelectedIndex = -1; | ||||||
|  | 				lstGroups.DataSource = null; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		#endregion | ||||||
|  |  | ||||||
|  | 		#region Manage Users - Member Options | ||||||
|  |  | ||||||
|  | 		//Adds Context Menu for when a Group is selected | ||||||
|  | 		private void lstGroups_MouseUp(object sender, MouseEventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			cmMembers.Items.Clear(); | ||||||
|  | 			lstGroups.SelectedIndex = -1; | ||||||
|  |  | ||||||
|  | 			if (e.Button == MouseButtons.Right) | ||||||
|  | 			{ | ||||||
|  | 				int k = lstGroups.IndexFromPoint(e.Location); | ||||||
|  | 				if (k >= 0) | ||||||
|  | 				{ | ||||||
|  | 					lstGroups.SelectedIndex = k; | ||||||
|  | 					cmMembers.Items.Add(this.removeMemberToolStripMenuItem); | ||||||
|  |  | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				var groupsCanAddTo = myGroupInfoList.Select(x => new { x.GroupName, x.GID }).Except(myMembershipInfoList.Select(x => new { x.MyGroup.GroupName, x.GID })); | ||||||
|  | 				foreach (var possiblegroup in groupsCanAddTo) | ||||||
|  | 				{ | ||||||
|  | 					ToolStripMenuItemwithValue AddToMenuItem = new ToolStripMenuItemwithValue($"Add as Member to Group: {possiblegroup.GroupName}", possiblegroup.GID); | ||||||
|  | 					AddToMenuItem.Click += addMemberToolStripMenuItem_Click; | ||||||
|  | 					cmMembers.Items.Add(AddToMenuItem); | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				cmMembers.Show(lstGroups, e.Location); | ||||||
|  |  | ||||||
|  | 			} | ||||||
|  | 			else if (e.Button == MouseButtons.Left) | ||||||
|  | 			{ | ||||||
|  | 				int k = lstGroups.IndexFromPoint(e.Location); | ||||||
|  | 				if (k >= 0) | ||||||
|  | 				{ | ||||||
|  | 					lstGroups.SelectedIndex = k; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Adds a User to a Group | ||||||
|  | 		private void addMemberToolStripMenuItem_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			ToolStripMenuItemwithValue item = (ToolStripMenuItemwithValue)sender; | ||||||
|  | 			int userIndex = lstUsers.SelectedIndex; | ||||||
|  | 			UserInfo ui = myUserInfoList[userIndex]; | ||||||
|  |  | ||||||
|  | 			Membership.MakeMembership(User.Get(ui.UID), Group.Get((int) item.Value), null, ""); | ||||||
|  |  | ||||||
|  | 			//Update the Group list to reflect the added group | ||||||
|  | 			LoadRefreshGroupUsers(); | ||||||
|  | 			lstUsers_SelectedIndexChanged(sender, e); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//Removes a User from a Group | ||||||
|  | 		private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e) | ||||||
|  | 		{ | ||||||
|  | 			MembershipInfo mi = (MembershipInfo)lstGroups.SelectedItem; | ||||||
|  | 			string msg = "Are you sure you want to remove this Group Member?"; | ||||||
|  | 			if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) | ||||||
|  | 			{ | ||||||
|  |                 if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1) | ||||||
|  |                 { | ||||||
|  |                     MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning); | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  |                 Membership m = Membership.Get(mi.UGID); | ||||||
|  | 				m.EndDate = DateTime.Now.ToShortDateString(); | ||||||
|  | 				m.Save(); | ||||||
|  |  | ||||||
|  | 				//Update the Group list to reflect the removed group | ||||||
|  | 				LoadRefreshGroupUsers(); | ||||||
|  | 				lstUsers_SelectedIndexChanged(sender, e); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		#endregion | ||||||
|  |  | ||||||
|  | 		#endregion | ||||||
|  |  | ||||||
|  | 		#region Default Options | ||||||
|  | 		//Sets up Default Group options for Default Tab | ||||||
|  | 		private void SetupDefaultGroupOptions() | ||||||
| 		{ | 		{ | ||||||
| 			pnlGroups.Controls.Clear(); | 			pnlGroups.Controls.Clear(); | ||||||
| 			foreach (GroupInfo gi in myGroupInfoList) | 			foreach (GroupInfo gi in myGroupInfoList) | ||||||
| @@ -56,6 +517,7 @@ namespace VEPROMS | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 		//Handles changing the default group | ||||||
| 		private void rb_CheckedChanged(object sender, EventArgs e) | 		private void rb_CheckedChanged(object sender, EventArgs e) | ||||||
| 		{ | 		{ | ||||||
| 			RadioButton rb = sender as RadioButton; | 			RadioButton rb = sender as RadioButton; | ||||||
| @@ -64,446 +526,7 @@ namespace VEPROMS | |||||||
| 			myFolder.FolderConfig.Security_Group = gi.GID; | 			myFolder.FolderConfig.Security_Group = gi.GID; | ||||||
| 			myFolder.Save(); | 			myFolder.Save(); | ||||||
| 		} | 		} | ||||||
| 		private void SetupSecurity() | 		#endregion | ||||||
| 		{ |  | ||||||
| 			if (tvFolders.Nodes.Count == 0) |  | ||||||
| 			{ |  | ||||||
| 				FolderInfo fi = FolderInfo.Get(1); |  | ||||||
| 				LoadChildFolders(fi, null); |  | ||||||
| 			} |  | ||||||
| 			lstMembers.Items.Clear(); |  | ||||||
| 			lstUsers.Items.Clear(); |  | ||||||
| 			lstGroups.Items.Clear(); |  | ||||||
| 			GroupInfoList.Reset(); |  | ||||||
| 			UserInfoList.Reset(); |  | ||||||
| 			myGroupInfoList = GroupInfoList.Get(); |  | ||||||
| 			myUserInfoList = UserInfoList.Get(); |  | ||||||
| 			foreach (GroupInfo gi in myGroupInfoList) |  | ||||||
| 				lstGroups.Items.Add(gi.GroupName); |  | ||||||
| 			lstGroups.SelectedIndex = 0; |  | ||||||
| 			foreach (UserInfo ui in myUserInfoList) |  | ||||||
| 				lstUsers.Items.Add(ui.UserID); |  | ||||||
| 			lstGroups.SelectedIndex = -1; |  | ||||||
| 			lstUsers.SelectedIndex = -1; |  | ||||||
| 		} |  | ||||||
| 		private void LoadChildFolders(FolderInfo fi, TreeNode tn) |  | ||||||
| 		{ |  | ||||||
| 			if (tn == null) |  | ||||||
| 			{ |  | ||||||
| 				tn = tvFolders.Nodes.Add(fi.Name); |  | ||||||
| 				tn.Tag = fi; |  | ||||||
| 			} |  | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				tn = tn.Nodes.Add(fi.Name); |  | ||||||
| 				tn.Tag = fi; |  | ||||||
| 			} |  | ||||||
| 			if (fi.ChildFolderCount > 0) |  | ||||||
| 			{ |  | ||||||
| 				foreach (FolderInfo fic in fi.SortedChildFolders) |  | ||||||
| 				{ |  | ||||||
| 					LoadChildFolders(fic, tn); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void lstGroups_SelectedIndexChanged(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			lblMembers.Text = "Selected Group Users"; |  | ||||||
| 			myMembershipInfoList = new List<MembershipInfo>(); |  | ||||||
| 			lstMembers.Items.Clear(); |  | ||||||
| 			if (lstGroups.SelectedIndex > -1) |  | ||||||
| 			{ |  | ||||||
| 				GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; |  | ||||||
| 				if (gi.GroupMembershipCount > 0) |  | ||||||
| 					foreach (MembershipInfo mi in gi.GroupMemberships) |  | ||||||
| 					{ |  | ||||||
| 						if (mi.EndDate == null || mi.EndDate == string.Empty) |  | ||||||
| 						{ |  | ||||||
| 							myMembershipInfoList.Add(mi); |  | ||||||
| 							lstMembers.Items.Add(mi.MyUser.UserID); |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void addMemberToolStripMenuItem_Click(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			int groupIndex = lstGroups.SelectedIndex; |  | ||||||
| 			int userIndex = lstUsers.SelectedIndex; |  | ||||||
| 			GroupInfo gi = myGroupInfoList[groupIndex]; |  | ||||||
| 			UserInfo ui = myUserInfoList[userIndex]; |  | ||||||
| 			Membership.MakeMembership(User.Get(ui.UID), Group.Get(gi.GID), null, ""); |  | ||||||
| 			SetupSecurity(); |  | ||||||
| 			if ((sender as ToolStripMenuItem).Name.EndsWith("Group")) |  | ||||||
| 			{ |  | ||||||
| 				lstUsers.SelectedIndex = userIndex; |  | ||||||
| 				lstGroups.SelectedIndex = groupIndex; |  | ||||||
| 			} |  | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				lstGroups.SelectedIndex = groupIndex; |  | ||||||
| 				lstUsers.SelectedIndex = userIndex; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			MembershipInfo mi = myMembershipInfoList[lstMembers.SelectedIndex]; |  | ||||||
| 			string msg = "Are you sure you want to remove this Group Member?"; |  | ||||||
| 			if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) |  | ||||||
| 			{ |  | ||||||
| 				int groupIndex = lstGroups.SelectedIndex; |  | ||||||
| 				int userIndex = lstUsers.SelectedIndex; |  | ||||||
| 				if (mi.MyGroup.GroupName == "Administrators") |  | ||||||
| 				{ |  | ||||||
| 					int k = 0; |  | ||||||
| 					foreach(MembershipInfo mm in mi.MyGroup.GroupMemberships) |  | ||||||
| 						if(mm.EndDate == null || mm.EndDate == string.Empty) |  | ||||||
| 							k++; |  | ||||||
| 					if (k == 1) |  | ||||||
| 					{ |  | ||||||
| 						MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 						return; |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 				Membership m = Membership.Get(mi.UGID); |  | ||||||
| 				m.EndDate = DateTime.Now.ToShortDateString(); |  | ||||||
| 				m.Save(); |  | ||||||
| 				SetupSecurity(); |  | ||||||
| 				lstGroups.SelectedIndex = groupIndex; |  | ||||||
| 				lstUsers.SelectedIndex = userIndex; |  | ||||||
| 			} |  | ||||||
| 			//  foreach (int gg in lstGroups.SelectedIndices) |  | ||||||
| 			//  { |  | ||||||
| 			//    GroupInfo gi = myGroupInfoList[gg]; |  | ||||||
| 			//    if (gi.GroupName == "Administrators" && gi.GroupMembershipCount == 1) |  | ||||||
| 			//    { |  | ||||||
| 			//      MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "Can Not Delete User", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 			//      return; |  | ||||||
| 			//    } |  | ||||||
| 			//    foreach (MembershipInfo mi in gi.GroupMemberships) |  | ||||||
| 			//    { |  | ||||||
| 			//      foreach (int mm in lstGroupUsers.SelectedIndices) |  | ||||||
| 			//      { |  | ||||||
| 			//        MembershipInfo mig = myMembershipInfoList[mm]; |  | ||||||
| 			//        if (mi.MyUser.UID == mig.MyUser.UID) |  | ||||||
| 			//        { |  | ||||||
| 			//          Membership m = Membership.Get(mi.UGID); |  | ||||||
| 			//          m.EndDate = DateTime.Now.ToShortDateString(); |  | ||||||
| 			//          m.Save(); |  | ||||||
| 			//        } |  | ||||||
| 			//      } |  | ||||||
| 			//    } |  | ||||||
| 			//  } |  | ||||||
| 			//  SetupSecurity(); |  | ||||||
| 			//} |  | ||||||
| 		} |  | ||||||
| 		private void addUserToolStripMenuItem_Click(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			User u = User.MakeUser("[Enter New UserID]","", "", "", "", "", "", "", "", "", "",DateTime.Now,""); |  | ||||||
| 			frmManageUser frm = new frmManageUser("add"); |  | ||||||
| 			frm.MyUser = u; |  | ||||||
| 			if (frm.ShowDialog(this) == DialogResult.OK) |  | ||||||
| 			{ |  | ||||||
| 				u = frm.MyUser; |  | ||||||
| 				u.Save(); |  | ||||||
| 				Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", ""); |  | ||||||
| 				SetupSecurity(); |  | ||||||
| 			} |  | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				u.Delete(); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void editUserToolStripMenuItem_Click(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			if (lstUsers.SelectedIndex == -1) |  | ||||||
| 			{ |  | ||||||
| 				MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; |  | ||||||
| 			using (User u = User.Get(ui.UID)) |  | ||||||
| 			{ |  | ||||||
| 				frmManageUser frm = new frmManageUser("edit"); |  | ||||||
| 				frm.MyUser = u; |  | ||||||
| 				if (frm.ShowDialog(this) == DialogResult.OK) |  | ||||||
| 				{ |  | ||||||
| 					frm.MyUser.Save(); |  | ||||||
|           SetupSecurity(); |  | ||||||
|         } |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			if (lstUsers.SelectedIndex == -1) |  | ||||||
| 			{ |  | ||||||
| 				MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; |  | ||||||
| 			SessionInfoList sil = SessionInfoList.Get(); |  | ||||||
| 			foreach (SessionInfo si in sil) |  | ||||||
| 			{ |  | ||||||
| 				if (si.UserID == ui.UserID && (si.DTSEnd == null)) |  | ||||||
| 				{ |  | ||||||
| 					MessageBox.Show("The user selected has an active session.  You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 					return; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			int k = 0; |  | ||||||
| 			if (ui.UserMembershipCount > 0) |  | ||||||
| 			{ |  | ||||||
| 				foreach (MembershipInfo mi in ui.UserMemberships) |  | ||||||
| 				{ |  | ||||||
| 					if (mi.EndDate == null || mi.EndDate == string.Empty) |  | ||||||
| 						k++; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			if (k > 0) |  | ||||||
| 			{ |  | ||||||
| 				MessageBox.Show("You must remove user from all groups that user is a member of in order to delete user", "User Has Memberships", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			if (MessageBox.Show("Are you sure you want to delete this user?", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) |  | ||||||
| 			{ |  | ||||||
| 				User.Delete(ui.UID); |  | ||||||
| 				SetupSecurity(); |  | ||||||
| 			} |  | ||||||
| 			//to do delete user |  | ||||||
| 			//end date user memberships |  | ||||||
| 			//delete user |  | ||||||
| 		} |  | ||||||
| 		private void createGroupMenuItem(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			try |  | ||||||
| 			{ |  | ||||||
| 				ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem; |  | ||||||
| 				TreeNode tn = tvFolders.SelectedNode; |  | ||||||
| 				FolderInfo fi = tn.Tag as FolderInfo; |  | ||||||
| 				AddNewGroup(tsddi.Text, fi); |  | ||||||
| 				SetupSecurity(); |  | ||||||
| 			} |  | ||||||
| 			catch (Exception ex) |  | ||||||
| 			{ |  | ||||||
| 				_MyLog.Warn("createGroupMenuItem", ex); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void AddNewGroup(string txt, FolderInfo fi) |  | ||||||
| 		{ |  | ||||||
| 			txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim(); |  | ||||||
| 			RoleInfoList ril = RoleInfoList.Get(); |  | ||||||
| 			// B2022-080: cannot add a new group in Proms security.  if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator, |  | ||||||
| 			//   Writer, Reviewer, RO Editor, the Adding of new groups won't work.  Databases should have this loaded by default. |  | ||||||
| 			//   Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles) |  | ||||||
| 			if (ril == null || ril.Count < 2) |  | ||||||
| 			{ |  | ||||||
| 				MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			foreach(RoleInfo ri in ril) |  | ||||||
| 			{ |  | ||||||
| 				if (ri.Name == txt) |  | ||||||
| 				{ |  | ||||||
| 					string gin = string.Format("{0}s - {1}", ri.Name, fi.Name); |  | ||||||
| 					bool addOK = true; |  | ||||||
| 					foreach (GroupInfo gi in myGroupInfoList) |  | ||||||
| 					{ |  | ||||||
| 						if (gin == gi.GroupName) |  | ||||||
| 						{ |  | ||||||
| 							addOK = false; |  | ||||||
| 							break; |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 					if (addOK) |  | ||||||
| 					{ |  | ||||||
| 						Group group = Group.MakeGroup(gin, null, null); |  | ||||||
| 						Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null); |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			GroupInfoList.Reset(); |  | ||||||
| 			myGroupInfoList = GroupInfoList.Get(); |  | ||||||
| 			SetupGroups(); |  | ||||||
| 		} |  | ||||||
| 		private void lstUsers_SelectedIndexChanged(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			lblMembers.Text = "Selected User Groups"; |  | ||||||
| 			myMembershipInfoList = new List<MembershipInfo>(); |  | ||||||
| 			lstMembers.Items.Clear(); |  | ||||||
| 			if (lstUsers.SelectedIndex > -1) |  | ||||||
| 			{ |  | ||||||
| 				UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; |  | ||||||
| 				if (ui.UserMembershipCount > 0) |  | ||||||
| 				{ |  | ||||||
| 					foreach (MembershipInfo mi in ui.UserMemberships) |  | ||||||
| 					{ |  | ||||||
| 						if (mi.EndDate == null || mi.EndDate == string.Empty) |  | ||||||
| 						{ |  | ||||||
| 							myMembershipInfoList.Add(mi); |  | ||||||
| 							lstMembers.Items.Add(mi.MyGroup.GroupName); |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			tvFolders.SelectedNode = e.Node; |  | ||||||
| 		} |  | ||||||
| 		private void deleteGroupToolStripMenuItem_Click(object sender, EventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			if (lstGroups.SelectedIndex < 0) |  | ||||||
| 			{ |  | ||||||
| 				MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; |  | ||||||
| 			if(myFolder.FolderConfig.Security_Group == gi.GID) |  | ||||||
| 			{ |  | ||||||
| 				MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			bool deleteOK = true; |  | ||||||
| 			if(gi.GroupMembershipCount > 0) |  | ||||||
| 			{ |  | ||||||
| 				foreach (MembershipInfo mi in gi.GroupMemberships) |  | ||||||
| 				{ |  | ||||||
| 					if (mi.EndDate == null || mi.EndDate == string.Empty) |  | ||||||
| 					{ |  | ||||||
| 						deleteOK = false; |  | ||||||
| 						break; |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			if (!deleteOK) |  | ||||||
| 			{ |  | ||||||
| 				MessageBox.Show("There are still users who are members of this group.  You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) |  | ||||||
| 			{ |  | ||||||
| 				Group.Delete(gi.GID); |  | ||||||
| 				GroupInfoList.Reset(); |  | ||||||
| 				myGroupInfoList = GroupInfoList.Get(); |  | ||||||
| 				SetupGroups(); |  | ||||||
| 				SetupSecurity(); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void lstGroups_MouseUp(object sender, MouseEventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			lstGroups.SelectedIndex = -1; |  | ||||||
| 			if (e.Button == MouseButtons.Right) |  | ||||||
| 			{ |  | ||||||
| 				int k = lstGroups.IndexFromPoint(e.Location); |  | ||||||
| 				if (k >= 0) |  | ||||||
| 				{ |  | ||||||
| 					lstGroups.SelectedIndex = k; |  | ||||||
| 					if (lstUsers.SelectedIndex >= 0) |  | ||||||
| 					{ |  | ||||||
| 						GroupInfo gi = myGroupInfoList[k]; |  | ||||||
| 						if (gi.GroupMembershipCount > 0) |  | ||||||
| 						{ |  | ||||||
| 							addMemberToolStripMenuItemGroup.Visible = true; |  | ||||||
| 							UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; |  | ||||||
| 							foreach (MembershipInfo mi in gi.GroupMemberships) |  | ||||||
| 							{ |  | ||||||
| 								if (mi.MyUser.UserID == ui.UserID && (mi.EndDate == null || mi.EndDate == string.Empty)) |  | ||||||
| 								{ |  | ||||||
| 									addMemberToolStripMenuItemGroup.Visible = false; |  | ||||||
| 									break; |  | ||||||
| 								} |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 					else |  | ||||||
| 						addMemberToolStripMenuItemGroup.Visible = false; |  | ||||||
| 					cmGroups.Show(lstGroups, e.Location); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			else if (e.Button == MouseButtons.Left) |  | ||||||
| 			{ |  | ||||||
| 				int k = lstGroups.IndexFromPoint(e.Location); |  | ||||||
| 				if (k >= 0) |  | ||||||
| 				{ |  | ||||||
| 					lstGroups.SelectedIndex = k; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void lstUsers_MouseUp(object sender, MouseEventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			lstUsers.SelectedIndex = -1; |  | ||||||
| 			if (e.Button == MouseButtons.Right) |  | ||||||
| 			{ |  | ||||||
| 				int k = lstUsers.IndexFromPoint(e.Location); |  | ||||||
| 				if (k >= 0) |  | ||||||
| 				{ |  | ||||||
| 					lstUsers.SelectedIndex = k; |  | ||||||
|           //addUserToolStripMenuItem.Visible = false; |  | ||||||
| 					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true; |  | ||||||
| 					if (lstGroups.SelectedIndex >= 0) |  | ||||||
| 					{ |  | ||||||
| 						UserInfo ui = myUserInfoList[k]; |  | ||||||
| 						if(ui.UserMembershipCount > 0) |  | ||||||
| 						{ |  | ||||||
| 							addMemberToolStripMenuItemUser.Visible = true; |  | ||||||
| 							GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; |  | ||||||
| 							foreach(MembershipInfo mi in ui.UserMemberships) |  | ||||||
| 							{ |  | ||||||
| 								if (mi.MyGroup.GroupName == gi.GroupName && (mi.EndDate == null || mi.EndDate == string.Empty)) |  | ||||||
| 								{ |  | ||||||
| 									addMemberToolStripMenuItemUser.Visible = false; |  | ||||||
| 									break; |  | ||||||
| 								} |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 					else |  | ||||||
| 						addMemberToolStripMenuItemUser.Visible = false; |  | ||||||
| 					cmUsers.Show(lstUsers, e.Location); |  | ||||||
| 				} |  | ||||||
| 				else |  | ||||||
| 				{ |  | ||||||
| 					addUserToolStripMenuItem.Visible = true; |  | ||||||
| 					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = addMemberToolStripMenuItemUser.Visible = false; |  | ||||||
| 					cmUsers.Show(lstUsers, e.Location); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			else if (e.Button == MouseButtons.Left) |  | ||||||
| 			{ |  | ||||||
| 				int k = lstUsers.IndexFromPoint(e.Location); |  | ||||||
| 				if (k >= 0) |  | ||||||
| 				{ |  | ||||||
| 					lstUsers.SelectedIndex = k; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		private void lstMembers_MouseUp(object sender, MouseEventArgs e) |  | ||||||
| 		{ |  | ||||||
| 			lstMembers.SelectedIndex = -1; |  | ||||||
| 			if (e.Button == MouseButtons.Right) |  | ||||||
| 			{ |  | ||||||
| 				int k = lstMembers.IndexFromPoint(e.Location); |  | ||||||
| 				if (k >= 0) |  | ||||||
| 				{ |  | ||||||
| 					lstMembers.SelectedIndex = k; |  | ||||||
| 					addMemberToolStripMenuItemUser.Visible = false; |  | ||||||
| 					removeMemberToolStripMenuItem.Visible = true; |  | ||||||
| 					cmMembers.Show(lstMembers, e.Location); |  | ||||||
| 				} |  | ||||||
| 				else |  | ||||||
| 				{ |  | ||||||
| 					addMemberToolStripMenuItemUser.Visible = true; |  | ||||||
| 					removeMemberToolStripMenuItem.Visible = false; |  | ||||||
| 					cmMembers.Show(lstMembers, e.Location); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			else if (e.Button == MouseButtons.Left) |  | ||||||
| 			{ |  | ||||||
| 				int k = lstMembers.IndexFromPoint(e.Location); |  | ||||||
| 				if (k >= 0) |  | ||||||
| 				{ |  | ||||||
| 					lstMembers.SelectedIndex = k; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @@ -112,21 +112,27 @@ | |||||||
|     <value>2.0</value> |     <value>2.0</value> | ||||||
|   </resheader> |   </resheader> | ||||||
|   <resheader name="reader"> |   <resheader name="reader"> | ||||||
|     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|   </resheader> |   </resheader> | ||||||
|   <resheader name="writer"> |   <resheader name="writer"> | ||||||
|     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|   </resheader> |   </resheader> | ||||||
|   <metadata name="cmFolders.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |   <metadata name="cmFolders.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | ||||||
|  |     <value>234, 17</value> | ||||||
|  |   </metadata> | ||||||
|  |   <metadata name="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | ||||||
|     <value>341, 17</value> |     <value>341, 17</value> | ||||||
|   </metadata> |   </metadata> | ||||||
|   <metadata name="cmMembers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |   <metadata name="cmMembers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | ||||||
|     <value>17, 17</value> |     <value>17, 17</value> | ||||||
|   </metadata> |   </metadata> | ||||||
|   <metadata name="cmUsers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |   <metadata name="cmUsers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | ||||||
|     <value>243, 17</value> |  | ||||||
|   </metadata> |  | ||||||
|   <metadata name="cmGroups.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |  | ||||||
|     <value>136, 17</value> |     <value>136, 17</value> | ||||||
|   </metadata> |   </metadata> | ||||||
|  |   <metadata name="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | ||||||
|  |     <value>341, 17</value> | ||||||
|  |   </metadata> | ||||||
|  |   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | ||||||
|  |     <value>58</value> | ||||||
|  |   </metadata> | ||||||
| </root> | </root> | ||||||
| @@ -1638,7 +1638,7 @@ namespace VEPROMS.CSLA.Library | |||||||
| 						// get the first enhanced section, there may be non-linked sections before first linked section: | 						// get the first enhanced section, there may be non-linked sections before first linked section: | ||||||
| 						SectionConfig firstEnhSectionConfig = pastedEnhancedProc.Sections == null ? null : pastedEnhancedProc.Sections[0].MyConfig as SectionConfig; | 						SectionConfig firstEnhSectionConfig = pastedEnhancedProc.Sections == null ? null : pastedEnhancedProc.Sections[0].MyConfig as SectionConfig; | ||||||
| 						ItemInfo pastedEnhancedCurrentSection = null; | 						ItemInfo pastedEnhancedCurrentSection = null; | ||||||
| 						if (firstEnhSectionConfig.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0]; | 						if (firstEnhSectionConfig?.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0]; | ||||||
| 						else pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedProc.Sections[0]); | 						else pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedProc.Sections[0]); | ||||||
|  |  | ||||||
| 						// newly pasted procedure has sections/steps, need to adjust 'MyEnhancedDocuments' config items to point to correct | 						// newly pasted procedure has sections/steps, need to adjust 'MyEnhancedDocuments' config items to point to correct | ||||||
| @@ -1647,7 +1647,7 @@ namespace VEPROMS.CSLA.Library | |||||||
| 							foreach (ItemInfo sourceSect in Sections) | 							foreach (ItemInfo sourceSect in Sections) | ||||||
| 							{ | 							{ | ||||||
| 								SectionConfig srcCfg = sourceSect.MyConfig as SectionConfig; | 								SectionConfig srcCfg = sourceSect.MyConfig as SectionConfig; | ||||||
| 								if (srcCfg != null && (srcCfg.Section_LnkEnh=="Y" || srcCfg.Section_LnkEnh=="T") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0) | 								if (srcCfg != null && (srcCfg.Section_LnkEnh != "N") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0) | ||||||
| 								{ | 								{ | ||||||
| 									// use pastedEnhancedCurrentSection to link to: | 									// use pastedEnhancedCurrentSection to link to: | ||||||
| 									foreach (EnhancedDocument ed in srcCfg.MyEnhancedDocuments) | 									foreach (EnhancedDocument ed in srcCfg.MyEnhancedDocuments) | ||||||
| @@ -1664,7 +1664,7 @@ namespace VEPROMS.CSLA.Library | |||||||
| 									enhSectCfg.MyEnhancedDocuments[0].ItemID = sourceSect.ItemID; | 									enhSectCfg.MyEnhancedDocuments[0].ItemID = sourceSect.ItemID; | ||||||
| 									enhSectCfg.SaveEnhancedDocuments(); | 									enhSectCfg.SaveEnhancedDocuments(); | ||||||
| 									pastedEnhancedCurrentSection.SaveConfig(enhSectCfg.ToString()); | 									pastedEnhancedCurrentSection.SaveConfig(enhSectCfg.ToString()); | ||||||
| 									if (srcCfg.Section_LnkEnh == "Y") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type | 									if (srcCfg.Section_LnkEnh != "T") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type | ||||||
| 									pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedCurrentSection); | 									pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedCurrentSection); | ||||||
| 								} | 								} | ||||||
| 							} | 							} | ||||||
|   | |||||||
| @@ -119,6 +119,15 @@ namespace VEPROMS.CSLA.Library | |||||||
|                 return _MyUser; |                 return _MyUser; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |         public string MyUserUserID | ||||||
|  |         { | ||||||
|  |             [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 if (_MyUser == null && _UID != 0) _MyUser = UserInfo.Get(_UID); | ||||||
|  |                 return _MyUser?.UserID; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|         private int _GID; |         private int _GID; | ||||||
|         public int GID |         public int GID | ||||||
|         { |         { | ||||||
| @@ -139,6 +148,15 @@ namespace VEPROMS.CSLA.Library | |||||||
|                 return _MyGroup; |                 return _MyGroup; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |         public string MyGroupName | ||||||
|  |         { | ||||||
|  |             [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 if (_MyGroup == null && _GID != 0) _MyGroup = GroupInfo.Get(_GID); | ||||||
|  |                 return _MyGroup?.GroupName; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|         private string _StartDate = string.Empty; |         private string _StartDate = string.Empty; | ||||||
|         public string StartDate |         public string StartDate | ||||||
|         { |         { | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								PROMS/Volian.Controls.Library/ToolStripMenuItemwithValue.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								PROMS/Volian.Controls.Library/ToolStripMenuItemwithValue.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | using System.Windows.Forms; | ||||||
|  |  | ||||||
|  | namespace Volian.Controls.Library | ||||||
|  | { | ||||||
|  | 	//ToolStripMenuItem with Added Value Property | ||||||
|  | 	public class ToolStripMenuItemwithValue : ToolStripMenuItem | ||||||
|  | 	{ | ||||||
|  | 		public readonly object Value; | ||||||
|  |  | ||||||
|  | 		public ToolStripMenuItemwithValue(string text, object value) | ||||||
|  | 		{ | ||||||
|  | 			Value = value; | ||||||
|  | 			Text = text; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -384,6 +384,9 @@ | |||||||
|     <Compile Include="TablePropertiesControl.Designer.cs"> |     <Compile Include="TablePropertiesControl.Designer.cs"> | ||||||
|       <DependentUpon>TablePropertiesControl.cs</DependentUpon> |       <DependentUpon>TablePropertiesControl.cs</DependentUpon> | ||||||
|     </Compile> |     </Compile> | ||||||
|  |     <Compile Include="ToolStripMenuItemwithValue.cs"> | ||||||
|  |       <SubType>Component</SubType> | ||||||
|  |     </Compile> | ||||||
|     <Compile Include="TransPanel.cs"> |     <Compile Include="TransPanel.cs"> | ||||||
|       <SubType>Component</SubType> |       <SubType>Component</SubType> | ||||||
|     </Compile> |     </Compile> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user