UI changes

This commit is contained in:
vfedosevich 2015-01-30 06:43:13 -08:00
parent 1567ef9f15
commit d063e2ce2d
12 changed files with 139 additions and 101 deletions

View file

@ -12,5 +12,6 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
public string UnifiedSessionId { get; set; }
public string SessionState { get; set; }
public string HostServer { get; set; }
public string DomainName { get; set; }
}
}

View file

@ -33,5 +33,6 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
public string DisplayName { get; set; }
public string FilePath { get; set; }
public string FileVirtualPath { get; set; }
public string RequiredCommandLine { get; set; }
}
}

View file

@ -1738,9 +1738,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
Command cmd = new Command("Get-RDUserSession");
cmd.Parameters.Add("CollectionName", collectionName);
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
var userSessions = ExecuteShellCommand(runSpace, cmd, false, out errors);
//var userSessions = ExecuteShellCommand(runSpace, scripts, out errors);
var userSessions = ExecuteShellCommand(runSpace, cmd, false, out errors);
var properties = typeof(RdsUserSession).GetProperties();
foreach(var userSession in userSessions)

View file

@ -147,4 +147,7 @@
<data name="cmdLogOff.ToolTip" xml:space="preserve">
<value>Log Off</value>
</data>
<data name="btnRefresh.Text" xml:space="preserve">
<value>Refresh</value>
</data>
</root>

View file

@ -22,51 +22,58 @@
</div>
<div class="FormBody">
<wsp:CollectionTabs id="tabs" runat="server" SelectedTab="rds_collection_user_sessions" />
<wsp:SimpleMessageBox id="messageBox" runat="server" />
<wsp:CollapsiblePanel id="secRdsUserSessions" runat="server"
TargetControlID="panelRdsUserSessions" meta:resourcekey="secRdsUserSessions" Text="">
</wsp:CollapsiblePanel>
<asp:Panel runat="server" ID="panelRdsUserSessions">
<div style="padding: 10px;">
<asp:GridView ID="gvRDSUserSessions" runat="server" AutoGenerateColumns="False" EnableViewState="true"
Width="100%" EmptyDataText="gvRDSUserSessions" CssSelectorClass="NormalGridView"
OnRowCommand="gvRDSCollections_RowCommand" AllowPaging="True" AllowSorting="True">
<Columns>
<asp:TemplateField meta:resourcekey="gvUserName" HeaderText="gvUserName">
<ItemStyle Width="30%" Wrap="false"/>
<ItemTemplate>
<asp:Literal ID="litUserName" runat="server" Text='<%# Eval("UserName") %>'/>
<asp:HiddenField ID="hfUnifiedSessionId" runat="server" Value='<%# Eval("UnifiedSessionId") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvHostServer" HeaderText="gvHostServer">
<ItemStyle Width="30%" Wrap="false"/>
<ItemTemplate>
<asp:Literal ID="litHostServer" runat="server" Text='<%# Eval("HostServer") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvSessionState" HeaderText="gvSessionState">
<ItemStyle Width="30%" Wrap="false"/>
<ItemTemplate>
<asp:Literal ID="litSessionState" runat="server" Text='<%# Eval("SessionState") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkLogOff" runat="server" Text="Log Off" CommandName="LogOff" CommandArgument='<%# Eval("UnifiedSessionId") + ";" + Eval("HostServer") %>'
meta:resourcekey="cmdLogOff" OnClientClick="return confirm('Are you sure you want to log off selected user?')"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</asp:Panel>
<div class="FormFooterClean">
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="SaveRDSCollection"
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
</div>
<wsp:SimpleMessageBox id="messageBox" runat="server" />
<asp:UpdatePanel ID="RDAppsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<div class="FormButtonsBarCleanRight">
<div class="FormButtonsBarClean">
<asp:Button ID="btnRefresh" runat="server" Text="Refresh" CssClass="Button1" OnClick="btnRefresh_Click" OnClientClick="ShowProgressDialog('Loading'); return true;" meta:resourcekey="btnRefresh" />
</div>
</div>
<wsp:CollapsiblePanel id="secRdsUserSessions" runat="server"
TargetControlID="panelRdsUserSessions" meta:resourcekey="secRdsUserSessions" Text="">
</wsp:CollapsiblePanel>
<asp:Panel runat="server" ID="panelRdsUserSessions">
<div style="padding: 10px;">
<asp:GridView ID="gvRDSUserSessions" runat="server" AutoGenerateColumns="False" EnableViewState="true"
Width="100%" EmptyDataText="gvRDSUserSessions" CssSelectorClass="NormalGridView"
OnRowCommand="gvRDSCollections_RowCommand" AllowPaging="True" AllowSorting="True">
<Columns>
<asp:TemplateField meta:resourcekey="gvUserName" HeaderText="gvUserName">
<ItemStyle Width="30%" Wrap="false"/>
<ItemTemplate>
<asp:Literal ID="litUserName" runat="server" Text='<%# string.Format("{0}\\{1}", Eval("DomainName"), Eval("UserName")) %>'/>
<asp:HiddenField ID="hfUnifiedSessionId" runat="server" Value='<%# Eval("UnifiedSessionId") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvHostServer" HeaderText="gvHostServer">
<ItemStyle Width="30%" Wrap="false"/>
<ItemTemplate>
<asp:Literal ID="litHostServer" runat="server" Text='<%# Eval("HostServer") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvSessionState" HeaderText="gvSessionState">
<ItemStyle Width="30%" Wrap="false"/>
<ItemTemplate>
<asp:Literal ID="litSessionState" runat="server" Text='<%# Eval("SessionState") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkLogOff" runat="server" Text="Log Off" CommandName="LogOff" CommandArgument='<%# Eval("UnifiedSessionId") + ";" + Eval("HostServer") %>'
meta:resourcekey="cmdLogOff" OnClientClick="return confirm('Are you sure you want to log off selected user?')"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</asp:Panel>
<div class="FormFooterClean">
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="SaveRDSCollection"
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>

View file

@ -1,4 +1,5 @@
using System;
using AjaxControlToolkit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
@ -17,7 +18,7 @@ namespace WebsitePanel.Portal.RDS
if (!IsPostBack)
{
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
litCollectionName.Text = collection.Name;
litCollectionName.Text = collection.DisplayName;
BindGrid();
}
}
@ -34,7 +35,7 @@ namespace WebsitePanel.Portal.RDS
{
ES.Services.RDS.LogOffRdsUser(PanelRequest.ItemID, unifiedSessionId, hostServer);
BindGrid();
((ModalPopupExtender)asyncTasks.FindControl("ModalPopupProperties")).Hide();
}
catch (Exception ex)
{
@ -49,6 +50,8 @@ namespace WebsitePanel.Portal.RDS
{
return;
}
BindGrid();
}
protected void btnSaveExit_Click(object sender, EventArgs e)
@ -61,6 +64,17 @@ namespace WebsitePanel.Portal.RDS
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_collections", "SpaceID=" + PanelSecurity.PackageId));
}
protected void btnRefresh_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
{
return;
}
BindGrid();
((ModalPopupExtender)asyncTasks.FindControl("ModalPopupProperties")).Hide();
}
private void BindGrid()
{
var userSessions = new List<RdsUserSession>();
@ -74,6 +88,16 @@ namespace WebsitePanel.Portal.RDS
ShowErrorMessage("REMOTE_DESKTOP_SERVICES_USER_SESSIONS", ex);
}
foreach(var userSession in userSessions)
{
var states = userSession.SessionState.Split('_');
if (states.Length == 2)
{
userSession.SessionState = states[1];
}
}
gvRDSUserSessions.DataSource = userSessions;
gvRDSUserSessions.DataBind();
}

View file

@ -66,6 +66,24 @@ namespace WebsitePanel.Portal.RDS {
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary>
/// RDAppsUpdatePanel control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel RDAppsUpdatePanel;
/// <summary>
/// btnRefresh control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnRefresh;
/// <summary>
/// secRdsUserSessions control.
/// </summary>

View file

@ -138,9 +138,6 @@
<data name="btnDelete.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="btnFullDesktopConnection.Text" xml:space="preserve">
<value>Add Full Desktop Connection</value>
</data>
<data name="gvAppName.HeaderText" xml:space="preserve">
<value>Remote Application Name</value>
</data>

View file

@ -5,8 +5,7 @@
<ContentTemplate>
<div class="FormButtonsBarClean">
<asp:Button ID="btnAdd" runat="server" Text="Add..." CssClass="Button1" OnClick="btnAdd_Click" meta:resourcekey="btnAdd" />
<asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="Button1" OnClick="btnDelete_Click" meta:resourcekey="btnDelete"/>
<asp:Button ID="btnFullDesktopConnection" runat="server" Text="" CssClass="Button1" OnClick="btnFullDesktopConnection_Click" meta:resourcekey="btnFullDesktopConnection"/>
<asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="Button1" OnClick="btnDelete_Click" meta:resourcekey="btnDelete"/>
</div>
<asp:GridView ID="gvApps" runat="server" meta:resourcekey="gvApps" AutoGenerateColumns="False"
Width="600px" CssSelectorClass="NormalGridView"
@ -76,6 +75,7 @@
<ItemTemplate>
<asp:Literal ID="litName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
<asp:HiddenField ID="hfFilePathPopup" runat="server" Value='<%# Eval("FilePath") %>'/>
<asp:HiddenField ID="hfRequiredCommandLinePopup" runat="server" Value='<%# Eval("RequiredCommandLine") %>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>

View file

@ -104,39 +104,45 @@ namespace WebsitePanel.Portal.RDS.UserControls
List<RemoteApplication> selectedApps = GetPopUpGridViewApps();
BindApps(selectedApps.ToArray(), true);
}
protected void btnFullDesktopConnection_Click(object sender, EventArgs e)
{
var newApps = new RemoteApplication[]
{
new RemoteApplication
{
DisplayName = "Session Host",
FilePath = "%SystemRoot%\\system32\\mstsc.exe",
Alias = "mstsc",
RequiredCommandLine = "/v:",
ShowInWebAccess = true
}
};
BindApps(newApps, true);
}
}
protected void BindPopupApps()
{
RdsCollection collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
StartMenuApp[] apps = ES.Services.RDS.GetAvailableRemoteApplications(PanelRequest.ItemID, collection.Name);
List<StartMenuApp> apps = ES.Services.RDS.GetAvailableRemoteApplications(PanelRequest.ItemID, collection.Name).ToList();
var fullRemote = new StartMenuApp
{
DisplayName = "Session Host",
FilePath = "%SystemRoot%\\system32\\mstsc.exe",
RequiredCommandLine = string.Format("/v:{0}", collection.Servers.First().FqdName)
};
var displayNames = GetApps().Select(p => p.DisplayName);
apps = apps.Where(x => !displayNames.Contains(x.DisplayName)).ToList();
apps = apps.Where(x => !GetApps().Select(p => p.DisplayName).Contains(x.DisplayName)).ToArray();
Array.Sort(apps, CompareAccount);
if (Direction == SortDirection.Ascending)
{
Array.Reverse(apps);
apps = apps.OrderBy(a => a.DisplayName).ToList();
Direction = SortDirection.Descending;
}
else
{
apps = apps.OrderByDescending(a => a.DisplayName).ToList();
Direction = SortDirection.Ascending;
}
if (!displayNames.Contains(fullRemote.DisplayName))
{
if (apps.Count > 0)
{
apps.Insert(0, fullRemote);
}
else
{
apps.Add(fullRemote);
}
}
gvPopupApps.DataSource = apps;
gvPopupApps.DataBind();
@ -170,16 +176,7 @@ namespace WebsitePanel.Portal.RDS.UserControls
apps.Add(newApp);
}
}
if (apps.Any(a => a.DisplayName.Equals("session host", StringComparison.CurrentCultureIgnoreCase)))
{
btnFullDesktopConnection.Enabled = false;
}
else
{
btnFullDesktopConnection.Enabled = true;
}
}
gvApps.DataSource = apps;
gvApps.DataBind();
@ -226,7 +223,8 @@ namespace WebsitePanel.Portal.RDS.UserControls
{
Alias = (string)gvPopupApps.DataKeys[i][0],
DisplayName = ((Literal)row.FindControl("litName")).Text,
FilePath = ((HiddenField)row.FindControl("hfFilePathPopup")).Value
FilePath = ((HiddenField)row.FindControl("hfFilePathPopup")).Value,
RequiredCommandLine = ((HiddenField)row.FindControl("hfRequiredCommandLinePopup")).Value
});
}
}

View file

@ -39,15 +39,6 @@ namespace WebsitePanel.Portal.RDS.UserControls {
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnDelete;
/// <summary>
/// btnFullDesktopConnection control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnFullDesktopConnection;
/// <summary>
/// gvApps control.
/// </summary>

View file

@ -21,7 +21,7 @@
<ItemStyle Width="10px" />
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvUsersAccount" HeaderText="gvUsersAccount">
<ItemStyle Width="60%" Wrap="false">
<ItemStyle Width="96%" Wrap="false" HorizontalAlign="Left">
</ItemStyle>
<ItemTemplate>
<asp:Literal ID="litAccount" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
@ -75,14 +75,14 @@
<ItemStyle Width="10px" />
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvAccountsDisplayName">
<ItemStyle Width="50%"></ItemStyle>
<ItemStyle Width="50%" HorizontalAlign="Left"></ItemStyle>
<ItemTemplate>
<asp:Image ID="imgAccount" runat="server" ImageUrl='<%# GetAccountImage((int)Eval("AccountType")) %>' ImageAlign="AbsMiddle" />
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvAccountsEmail">
<ItemStyle Width="50%"></ItemStyle>
<ItemStyle Width="50%" HorizontalAlign="Left"></ItemStyle>
<ItemTemplate>
<asp:Literal ID="litPrimaryEmailAddress" runat="server" Text='<%# Eval("PrimaryEmailAddress") %>'></asp:Literal>
</ItemTemplate>