This commit is contained in:
Virtuworks 2015-02-05 17:08:49 -05:00
commit c4b03c0de7
12 changed files with 210 additions and 99 deletions

View file

@ -127,10 +127,10 @@
<value />
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Edit RDS Application</value>
<value>Edit RDS Collection</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit RDS Application</value>
<value>Edit RDS Collection</value>
</data>
<data name="locCollectionName.Text" xml:space="preserve">
<value>Collection Name:</value>
@ -144,4 +144,13 @@
<data name="locApplicationName.Text" xml:space="preserve">
<value>Application Name:</value>
</data>
<data name="secRdsApplicationUsers.Text" xml:space="preserve">
<value>Users</value>
</data>
<data name="secRdsApplicationEdit.Text" xml:space="preserve">
<value />
</data>
<data name="locLblApplicationName" xml:space="preserve">
<value>Application Name</value>
</data>
</root>

View file

@ -2,6 +2,9 @@
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<%@ Register Src="UserControls/RDSCollectionUsers.ascx" TagName="CollectionUsers" TagPrefix="wsp"%>
<%@ Register Src="UserControls/RDSCollectionTabs.ascx" TagName="CollectionTabs" TagPrefix="wsp" %>
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
@ -12,40 +15,50 @@
</div>
<div class="Content">
<div class="Center">
<div class="Title">
<div class="Title">
<asp:Image ID="imgEditRDSCollection" SkinID="EnterpriseStorageSpace48" runat="server" />
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit RDS Application"></asp:Localize>
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit RDS Collection"></asp:Localize>
-
<asp:Literal ID="litCollectionName" runat="server" Text="" />
</div>
<div class="FormContentRDS">
<wsp:SimpleMessageBox id="messageBox" runat="server" />
<table>
<tr>
<td class="FormSimpleLabel" style="width: 120px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name:"></asp:Localize></td>
<td class="FormSimpleLabel">
<asp:Localize ID="locCName" runat="server" Text="" />
</td>
</tr>
<tr>
<td class="FormSimpleLabel" style="width: 120px;"><asp:Localize ID="locApplicationName" runat="server" meta:resourcekey="locApplicationName" Text="Collection Name:"></asp:Localize></td>
<td class="FormSimpleLabel">
<asp:Localize ID="locAppName" runat="server" Text="" />
</td>
</tr>
</table>
<fieldset id="UsersPanel" runat="server">
<legend><asp:Localize ID="locUsersSection" runat="server" meta:resourcekey="locUsersSection" Text="Users"></asp:Localize></legend>
<wsp:SimpleMessageBox id="SimpleMessageBox1" runat="server" />
<wsp:CollectionTabs id="tabs" runat="server" SelectedTab="rds_collection_edit_apps" />
<wsp:CollapsiblePanel id="secRdsApplicationEdit" runat="server"
TargetControlID="panelRdsApplicationEdit" meta:resourcekey="secRdsApplicationEdit" Text="">
</wsp:CollapsiblePanel>
<asp:Panel runat="server" ID="panelRdsApplicationEdit">
<div style="padding: 10px;">
<table>
<tr>
<td class="FormLabel150" style="width: 150px;">
<asp:Localize ID="locLblApplicationName" runat="server" meta:resourcekey="locLblApplicationName" Text="Application Name"/>
</td>
<td>
<asp:TextBox ID="txtApplicationName" runat="server" CssClass="TextBox300" />
<asp:RequiredFieldValidator ID="valApplicationName" runat="server" ErrorMessage="*" ControlToValidate="txtApplicationName" ValidationGroup="SaveRDSCollection"/>
</td>
</tr>
</table>
</div>
</asp:Panel>
<wsp:CollapsiblePanel id="secRdsApplicationUsers" runat="server"
TargetControlID="panelRdsApplicationUsers" meta:resourcekey="secRdsApplicationUsers" Text="">
</wsp:CollapsiblePanel>
<asp:Panel runat="server" ID="panelRdsApplicationUsers">
<div style="padding: 10px;">
<wsp:CollectionUsers id="users" runat="server" />
</div>
</fieldset>
<div class="FormFooter">
<asp:Button id="btnSave" runat="server" Text="Save" CssClass="Button1" meta:resourcekey="btnSave" ValidationGroup="SaveRDSCollectoin" OnClick="btnSave_Click"></asp:Button>
<asp:ValidationSummary ID="valSummary" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="SaveRDSCollectoin" />
</div>
</div>
</div>
</asp:Panel>
<div class="FormFooterClean">
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="SaveRDSCollection"
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
</div>
</div>
</div>
</div>
</div>

View file

@ -44,17 +44,38 @@ namespace WebsitePanel.Portal.RDS
{
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
var applications = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
var remoteApp = applications.Where(x => x.DisplayName.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
var collectionUsers = ES.Services.RDS.GetRdsCollectionUsers(PanelRequest.CollectionID);
var remoteApp = applications.Where(x => x.Alias.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
var organizationUsers = ES.Services.Organizations.GetOrganizationUsersPaged(PanelRequest.ItemID, null, null, null, 0, Int32.MaxValue).PageUsers;
var applicationUsers = ES.Services.RDS.GetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp);
locCName.Text = collection.Name;
locAppName.Text = remoteApp.DisplayName;
litCollectionName.Text = collection.Name;
txtApplicationName.Text = remoteApp.DisplayName;
var remoteAppUsers = organizationUsers.Where(x => applicationUsers.Contains(x.DomainUserName));
users.SetUsers(collectionUsers.Where(x => applicationUsers.Contains(x.SamAccountName)).ToArray());
users.SetUsers(remoteAppUsers.ToArray());
}
}
private bool SaveApplicationUsers()
{
try
{
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
var applications = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
var remoteApp = applications.Where(x => x.Alias.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
remoteApp.DisplayName = txtApplicationName.Text;
ES.Services.RDS.SetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp, users.GetUsers().Select(x => x.AccountName).ToArray());
}
catch (Exception ex)
{
ShowErrorMessage("REMOTEAPPUSERS_NOT_UPDATED", ex);
return false;
}
return true;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
@ -62,17 +83,19 @@ namespace WebsitePanel.Portal.RDS
return;
}
try
{
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
var applications = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
var remoteApp = applications.Where(x => x.DisplayName.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
ES.Services.RDS.SetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp, users.GetUsers().Select(x => x.AccountName).ToArray());
SaveApplicationUsers();
}
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "rds_collection_edit_apps", "CollectionId=" + PanelRequest.CollectionID, "ItemID=" + PanelRequest.ItemID));
}
catch (Exception)
protected void btnSaveExit_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
{
return;
}
if (SaveApplicationUsers())
{
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "rds_collection_edit_apps", "CollectionId=" + PanelRequest.CollectionID, "ItemID=" + PanelRequest.ItemID));
}
}
}

View file

@ -40,67 +40,94 @@ namespace WebsitePanel.Portal.RDS {
protected global::System.Web.UI.WebControls.Localize locTitle;
/// <summary>
/// messageBox control.
/// litCollectionName control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
protected global::System.Web.UI.WebControls.Literal litCollectionName;
/// <summary>
/// locCollectionName control.
/// SimpleMessageBox1 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.Localize locCollectionName;
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox SimpleMessageBox1;
/// <summary>
/// locCName control.
/// tabs 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.Localize locCName;
protected global::WebsitePanel.Portal.RDS.UserControls.RdsServerTabs tabs;
/// <summary>
/// locApplicationName control.
/// secRdsApplicationEdit 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.Localize locApplicationName;
protected global::WebsitePanel.Portal.CollapsiblePanel secRdsApplicationEdit;
/// <summary>
/// locAppName control.
/// panelRdsApplicationEdit 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.Localize locAppName;
protected global::System.Web.UI.WebControls.Panel panelRdsApplicationEdit;
/// <summary>
/// UsersPanel control.
/// locLblApplicationName control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl UsersPanel;
protected global::System.Web.UI.WebControls.Localize locLblApplicationName;
/// <summary>
/// locUsersSection control.
/// txtApplicationName 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.Localize locUsersSection;
protected global::System.Web.UI.WebControls.TextBox txtApplicationName;
/// <summary>
/// valApplicationName 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.RequiredFieldValidator valApplicationName;
/// <summary>
/// secRdsApplicationUsers control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secRdsApplicationUsers;
/// <summary>
/// panelRdsApplicationUsers 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.Panel panelRdsApplicationUsers;
/// <summary>
/// users control.
@ -112,21 +139,12 @@ namespace WebsitePanel.Portal.RDS {
protected global::WebsitePanel.Portal.RDS.UserControls.RDSCollectionUsers users;
/// <summary>
/// btnSave control.
/// buttonPanel 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 btnSave;
/// <summary>
/// valSummary 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.ValidationSummary valSummary;
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
}
}

View file

@ -42,7 +42,7 @@
<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:Literal ID="litUserName" runat="server" Text='<%# Eval("UserName") %>'/>
<asp:HiddenField ID="hfUnifiedSessionId" runat="server" Value='<%# Eval("UnifiedSessionId") %>'/>
</ItemTemplate>
</asp:TemplateField>

View file

@ -153,4 +153,7 @@
<data name="headerAddApps.Text" xml:space="preserve">
<value>Available Remote Applications</value>
</data>
<data name="lnkDisplayName" xml:space="preserve">
<value>ShowProgressDialog('Loading ...');</value>
</data>
</root>

View file

@ -24,16 +24,11 @@
<ItemStyle Width="90%" Wrap="false">
</ItemStyle>
<ItemTemplate>
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
<asp:hyperlink id="lnkDisplayName" meta:resourcekey="lnkDisplayName" runat="server" Text='<%# Eval("DisplayName") %>' NavigateUrl='<%# GetCollectionUsersEditUrl(Eval("Alias").ToString()) %>'/>
<asp:HiddenField ID="hfFilePath" runat="server" Value='<%# Eval("FilePath") %>'/>
<asp:HiddenField ID="hfRequiredCommandLine" runat="server" Value='<%# Eval("RequiredCommandLine") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:hyperlink id="lnkUsers" meta:resourcekey="lnkUsers" runat="server" NavigateUrl='<%# GetCollectionUsersEditUrl(Eval("DisplayName").ToString()) %>'>Users</asp:hyperlink>
</ItemTemplate>
</asp:TemplateField>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />

View file

@ -113,8 +113,8 @@ namespace WebsitePanel.Portal.RDS.UserControls
var sessionHosts = ES.Services.RDS.GetRdsCollectionSessionHosts(PanelRequest.CollectionID);
var addedApplications = GetApps();
var displayNames = addedApplications.Select(p => p.DisplayName);
apps = apps.Where(x => !displayNames.Contains(x.DisplayName)).ToList();
var aliases = addedApplications.Select(p => p.Alias);
apps = apps.Where(x => !aliases.Contains(x.Alias)).ToList();
if (Direction == SortDirection.Ascending)
{
@ -132,7 +132,7 @@ namespace WebsitePanel.Portal.RDS.UserControls
foreach (var host in sessionHosts)
{
if (!requiredParams.Contains(string.Format("/v:{0}", host.ToLower())))
{
{
var fullRemote = new StartMenuApp
{
DisplayName = string.Format("Full Desktop - {0}", host.ToLower()),
@ -140,6 +140,15 @@ namespace WebsitePanel.Portal.RDS.UserControls
RequiredCommandLine = string.Format("/v:{0}", host.ToLower())
};
var sessionHost = collection.Servers.Where(s => s.FqdName.Equals(host, StringComparison.CurrentCultureIgnoreCase)).First();
if (sessionHost != null)
{
fullRemote.DisplayName = string.Format("Full Desktop - {0}", sessionHost.Name.ToLower());
}
fullRemote.Alias = fullRemote.DisplayName.Replace(" ", "");
if (apps.Count > 0)
{
apps.Insert(0, fullRemote);
@ -201,7 +210,7 @@ namespace WebsitePanel.Portal.RDS.UserControls
RemoteApplication app = new RemoteApplication();
app.Alias = (string)gvApps.DataKeys[i][0];
app.DisplayName = ((Literal)row.FindControl("litDisplayName")).Text;
app.DisplayName = ((HyperLink)row.FindControl("lnkDisplayName")).Text;
app.FilePath = ((HiddenField)row.FindControl("hfFilePath")).Value;
app.RequiredCommandLine = ((HiddenField)row.FindControl("hfRequiredCommandLine")).Value;