/// <summary> /// Copies role binding from parent UI element. /// </summary> /// <param name="element">Element which are permissions copied to</param> private void CopyFromParent(UIElementInfo element) { using (var tr = new CMSTransactionScope()) { if (element != null) { // Delete existing bindings DataSet elemRoles = RoleUIElementInfoProvider.GetRoleUIElements("ElementID = " + element.ElementID, null); if (!DataHelper.DataSourceIsEmpty(elemRoles)) { foreach (DataRow dr in elemRoles.Tables[0].Rows) { // Get role id int roleId = ValidationHelper.GetInteger(dr["RoleID"], 0); // Remove binding RoleUIElementInfoProvider.DeleteRoleUIElementInfo(roleId, element.ElementID); } } // Add same bindings as parent has int parentElemId = element.ElementParentID; DataSet parentRoles = RoleUIElementInfoProvider.GetRoleUIElements("ElementID = " + parentElemId, null); if (!DataHelper.DataSourceIsEmpty(parentRoles)) { foreach (DataRow dr in parentRoles.Tables[0].Rows) { // Get role id int roleId = ValidationHelper.GetInteger(dr["RoleID"], 0); // Create binding RoleUIElementInfoProvider.AddRoleUIElementInfo(roleId, element.ElementID); } } } // Commit transaction tr.Commit(); } // Invalidate all users UserInfo.TYPEINFO.InvalidateAllObjects(); // Clear hashtables with users AbstractProvider.ClearHashtables(UserInfo.OBJECT_TYPE, true); }
protected void gridMatrix_OnItemChanged(object sender, int rowItemId, int colItemId, bool newState) { if (newState) { RoleUIElementInfoProvider.AddRoleUIElementInfo(rowItemId, colItemId); } else { RoleUIElementInfoProvider.DeleteRoleUIElementInfo(rowItemId, colItemId); } // Invalidate all users UserInfo.TYPEINFO.InvalidateAllObjects(); // Forget old user CurrentUser = null; // Clear hashtables with users AbstractProvider.ClearHashtables(UserInfo.OBJECT_TYPE, true); // Update content before rows GenerateBeforeRowsContent(); }