/// <summary> /// On items selected event handling. /// </summary> private void usRoles_OnItemsSelected(object sender, EventArgs e) { AclProvider aclProv = null; // Create Acl provider to current treenode if (Node != null) { aclProv = new AclProvider(Tree); } // Remove old items string newValues = ValidationHelper.GetString(usRoles.Value, null); string items = DataHelper.GetNewItemsInList(newValues, CurrentValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { // Add all new items to site foreach (string item in newItems) { int roleID = ValidationHelper.GetInteger(item, 0); if (PollID > 0) { // Remove role from poll ModuleCommands.PollsRemoveRoleFromPoll(roleID, PollID); } else if (FormID > 0) { // Remove role from form BizFormInfoProvider.RemoveRoleFromForm(roleID, FormID); } else if (BoardID > 0) { // Check permissions if (CMSContext.CurrentUser.IsAuthorizedPerResource("cms.messageboards", CMSAdminControl.PERMISSION_MODIFY)) { // Remove message board from board ModuleCommands.MessageBoardRemoveRoleFromBoard(roleID, BoardID); } } else if (Node != null) { if (aclProv != null) { // Remove role from treenode aclProv.RemoveRole(NodeID, roleID); } } } } } // Add new items items = DataHelper.GetNewItemsInList(CurrentValues, newValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { // Add all new items to site foreach (string item in newItems) { int roleID = ValidationHelper.GetInteger(item, 0); if (PollID > 0) { // Add poll role ModuleCommands.PollsAddRoleToPoll(roleID, PollID); } else if (FormID > 0) { // Add BizForm role BizFormInfoProvider.AddRoleToForm(roleID, FormID); } else if (BoardID > 0) { // Add role to the message board ModuleCommands.MessageBoardAddRoleToBoard(roleID, BoardID); } else if (Node != null) { // Add role to treenode if (aclProv != null) { aclProv.SetRolePermissions(Node, 0, 0, roleID); } } } } } // Log synchronization task if (Node != null) { DocumentSynchronizationHelper.LogDocumentChange(Node, TaskTypeEnum.UpdateDocument, Node.TreeProvider); } RaiseOnChanged(); }