using System; using System.Data; using System.Web.UI.WebControls; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.LicenseProvider; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; using CMS.ExtendedControls; public partial class CMSModules_Membership_Pages_Users_General_User_Kicked : CMSUsersPage { #region "Page events" protected override void OnInit(EventArgs e) { base.OnInit(e); // Check permissions LicenseHelper.CheckFeatureAndRedirect(URLHelper.GetCurrentDomain(), FeatureEnum.OnlineUsers); // If session management is disabled inform about it if (!SessionManager.OnlineUsersEnabled) { // Set disabled module info ucDisabledModule.SettingsKeys = "CMSUseSessionManagement"; ucDisabledModule.InfoText = GetString("administration.users.online.disabled"); gridElem.Visible = false; } else { SetHeaderActions(); PrepareUnigrid(); gridElem.HideFilterButton = true; gridElem.LoadGridDefinition(); // Filter settings IUserFilter filter = (IUserFilter)gridElem.FilterFields["UserID"].ValueControl; filter.DisplayUserEnabled = false; } } protected override void CheckUIPermissions() { // Check UI Permissions for online marketing if needed if (QueryHelper.GetBoolean("isonlinemarketing", false)) { var user = CMSContext.CurrentUser; if (!user.IsAuthorizedPerUIElement("CMS.Desk", "OnlineMarketing")) { RedirectToCMSDeskUIElementAccessDenied("CMS.Desk", "OnlineMarketing"); } if (!user.IsAuthorizedPerUIElement("CMS.OnlineMarketing", new string[] { "OMCMGroup", "ContactsFrameset", "On-line_users" }, CMSContext.CurrentSiteName)) { RedirectToCMSDeskUIElementAccessDenied("CMS.OnlineMarketing", "OMCMGroup;ContactsFrameset;On-line_users"); } } else { base.CheckUIPermissions(); } } /// /// Checks the permission for administration if not in on-line marketing. /// public override void CheckAdministration() { if (!QueryHelper.GetBoolean("isonlinemarketing", false)) { base.CheckAdministration(); } } #endregion #region "Unigrid" /// /// Sets where condition before data binding. /// protected void gridElem_OnBeforeDataReload() { if (gridElem.QueryParameters == null) { gridElem.QueryParameters = new QueryDataParameters(); } gridElem.QueryParameters.Add("@Now", DateTime.Now); } /// /// On action event. /// private void gridElem_OnAction(string actionName, object actionArgument) { // Check "modify" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Users", "Modify")) { RedirectToAccessDenied("CMS.Users", "Modify"); } int userId = ValidationHelper.GetInteger(actionArgument, 0); switch (actionName.ToLowerCSafe()) { // Undo kick action case "undokick": SessionManager.RemoveUserFromKicked(userId); PrepareUnigrid(); gridElem.ReBind(); ShowConfirmation(GetString("kicked.cancel")); break; } } /// /// On external databound event. /// private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName) { case "formattedusername": return GetFormattedUsername(parameter); case "undokick": return ModifyUndoKickButton(sender, parameter); default: return ""; } } /// /// Grid definition loaded. /// void gridElem_OnLoadColumns() { gridElem.GridActions.Actions.RemoveAt(2); gridElem.GridActions.Actions.RemoveAt(0); } #endregion #region "Unigrid data bound methods" /// /// Get formatted user name. /// private string GetFormattedUsername(object parameter) { var drv = (DataRowView)parameter; if (drv != null) { var ui = new UserInfo(drv.Row); string userName = Functions.GetFormattedUserName(ui.UserName); if (AuthenticationHelper.UserKicked(ui.UserID)) { return HTMLHelper.HTMLEncode(userName) + " " + GetString("administration.users.onlineusers.kicked") + ""; } return HTMLHelper.HTMLEncode(userName); } return ""; } /// /// Displays button for undo kicked users. /// private object ModifyUndoKickButton(object sender, object parameter) { int userID = ValidationHelper.GetInteger(((DataRowView)((GridViewRow)parameter).DataItem).Row["UserID"], 0); if (AuthenticationHelper.UserKicked(userID)) { var button = ((ImageButton)sender); button.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Undo.png"); button.Enabled = true; } else { var button = ((ImageButton)sender); button.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Undodisabled.png"); button.Enabled = false; } return ""; } #endregion #region "Private methods" /// /// Set header actions. /// private void SetHeaderActions() { string[,] actions = new string[1, 6]; actions[0, 0] = HeaderActions.TYPE_HYPERLINK; actions[0, 1] = GetString("General.Refresh"); actions[0, 2] = null; actions[0, 3] = SiteID > 0 ? ResolveUrl("User_Kicked.aspx?siteid=" + SiteID) : ResolveUrl("User_Kicked.aspx"); actions[0, 4] = null; actions[0, 5] = GetImageUrl("CMSModules/CMS_PortalEngine/ContextMenu/Refresh.png"); CurrentMaster.HeaderActions.Actions = actions; } /// /// Prepares unigrid. /// private void PrepareUnigrid() { gridElem.ObjectType = "cms.userlist"; gridElem.WhereCondition = DataHelper.GetNotEmpty(SessionManager.GetKickedUsersWhere(), "1 = 0"); // Setup unigrid events gridElem.OnAction += gridElem_OnAction; gridElem.OnBeforeDataReload += gridElem_OnBeforeDataReload; gridElem.OnExternalDataBound += gridElem_OnExternalDataBound; gridElem.ZeroRowsText = GetString("general.nodatafound"); gridElem.OnLoadColumns += gridElem_OnLoadColumns; } #endregion }