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
}