RDS GUI
This commit is contained in:
parent
2e97811d33
commit
933cc5fcb3
62 changed files with 5437 additions and 46 deletions
|
@ -256,5 +256,8 @@ order by rg.groupOrder
|
||||||
public const string ENTERPRICESTORAGE_DRIVEMAPS = "EnterpriseStorage.DriveMaps";
|
public const string ENTERPRICESTORAGE_DRIVEMAPS = "EnterpriseStorage.DriveMaps";
|
||||||
|
|
||||||
public const string SERVICE_LEVELS = "ServiceLevel.";
|
public const string SERVICE_LEVELS = "ServiceLevel.";
|
||||||
|
|
||||||
|
public const string RDS_USERS = "RDS.Users";
|
||||||
|
public const string RDS_SERVERS = "RDS.Servers";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,4 +132,13 @@
|
||||||
|
|
||||||
<Control key="enterprisestorage_drive_maps" />
|
<Control key="enterprisestorage_drive_maps" />
|
||||||
<Control key="create_enterprisestorage_drive_map" general_key="enterprisestorage_drive_maps" />
|
<Control key="create_enterprisestorage_drive_map" general_key="enterprisestorage_drive_maps" />
|
||||||
|
|
||||||
|
<!--RDS-->
|
||||||
|
<Control key="rds_servers" />
|
||||||
|
<Control key="rds_add_server" general_key="rds_servers"/>
|
||||||
|
|
||||||
|
<Control key="rds_collections" />
|
||||||
|
<Control key="rds_create_collection" general_key="rds_collections" />
|
||||||
|
<Control key="rds_collection_edit_apps" general_key="rds_collections" />
|
||||||
|
<Control key="rds_collection_edit_users" general_key="rds_collections" />
|
||||||
</Controls>
|
</Controls>
|
||||||
|
|
|
@ -168,7 +168,13 @@
|
||||||
<Control key="edit_phone" src="WebsitePanel/PhoneNumbersEditPhoneNumber.ascx" title="EditPhoneNumber" type="View" icon="adress_48.png" />
|
<Control key="edit_phone" src="WebsitePanel/PhoneNumbersEditPhoneNumber.ascx" title="EditPhoneNumber" type="View" icon="adress_48.png" />
|
||||||
</Controls>
|
</Controls>
|
||||||
</ModuleDefinition>
|
</ModuleDefinition>
|
||||||
|
|
||||||
|
<ModuleDefinition id="RDSServers">
|
||||||
|
<Controls>
|
||||||
|
<Control key="" src="WebsitePanel/RDSServers.ascx" title="RDSServers" type="View" />
|
||||||
|
<Control key="add_rdsserver" src="WebsitePanel/RDSServersAddserver.ascx" title="RDSServersAddserver" type="View" icon="computer_add_48.png" />
|
||||||
|
</Controls>
|
||||||
|
</ModuleDefinition>
|
||||||
|
|
||||||
<ModuleDefinition id="Servers">
|
<ModuleDefinition id="Servers">
|
||||||
<Controls>
|
<Controls>
|
||||||
|
@ -561,6 +567,13 @@
|
||||||
|
|
||||||
<Control key="lync_phonenumbers" src="WebsitePanel/Lync/LyncPhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
<Control key="lync_phonenumbers" src="WebsitePanel/Lync/LyncPhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
||||||
<Control key="allocate_phonenumbers" src="WebsitePanel/Lync/LyncAllocatePhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
<Control key="allocate_phonenumbers" src="WebsitePanel/Lync/LyncAllocatePhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
||||||
|
|
||||||
|
<Control key="rds_servers" src="WebsitePanel/RDS/AssignedRDSServers.ascx" title="RDSServers" type="View" />
|
||||||
|
<Control key="rds_add_server" src="WebsitePanel/RDS/AddRDSServer.ascx" title="AddRDSServer" type="View" />
|
||||||
|
<Control key="rds_collections" src="WebsitePanel/RDS/RDSCollections.ascx" title="RDSCollections" type="View" />
|
||||||
|
<Control key="rds_create_collection" src="WebsitePanel/RDS/RDSCreateCollection.ascx" title="RDSCreateCollection" type="View" />
|
||||||
|
<Control key="rds_collection_edit_apps" src="WebsitePanel/RDS/RDSEditCollectionApps.ascx" title="RDSEditCollectionApps" type="View" />
|
||||||
|
<Control key="rds_collection_edit_users" src="WebsitePanel/RDS/RDSEditCollectionUsers.ascx" title="RDSEditCollectionUsers" type="View" />
|
||||||
</Controls>
|
</Controls>
|
||||||
</ModuleDefinition>
|
</ModuleDefinition>
|
||||||
|
|
||||||
|
|
|
@ -712,6 +712,16 @@
|
||||||
<Module moduleDefinitionID="Servers" title="Servers" container="Edit.ascx" icon="computer_48.png" />
|
<Module moduleDefinitionID="Servers" title="Servers" container="Edit.ascx" icon="computer_48.png" />
|
||||||
</Content>
|
</Content>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page name="RDSServers" roles="Administrator" skin="Browse1.ascx">
|
||||||
|
<Content id="LeftPane">
|
||||||
|
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
||||||
|
<ModuleData ref="UserMenu"/>
|
||||||
|
</Module>
|
||||||
|
</Content>
|
||||||
|
<Content id="ContentPane">
|
||||||
|
<Module moduleDefinitionID="RDSServers" title="RDSServers" icon="computer_48.png" container="Edit.ascx"/>
|
||||||
|
</Content>
|
||||||
|
</Page>
|
||||||
<Page name="IPAddresses" roles="Administrator" skin="Browse1.ascx">
|
<Page name="IPAddresses" roles="Administrator" skin="Browse1.ascx">
|
||||||
<Content id="LeftPane">
|
<Content id="LeftPane">
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
||||||
|
|
|
@ -789,4 +789,10 @@
|
||||||
<data name="ModuleTitle.UserOrganization" xml:space="preserve">
|
<data name="ModuleTitle.UserOrganization" xml:space="preserve">
|
||||||
<value>Hosted Organization</value>
|
<value>Hosted Organization</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ModuleTitle.RDSServers" xml:space="preserve">
|
||||||
|
<value>RDS Servers</value>
|
||||||
|
</data>
|
||||||
|
<data name="ModuleTitle.RDSServersAddserver" xml:space="preserve">
|
||||||
|
<value>Add New RDS Server</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -288,10 +288,10 @@
|
||||||
<data name="PageTitle.SpaceMsSql2012" xml:space="preserve">
|
<data name="PageTitle.SpaceMsSql2012" xml:space="preserve">
|
||||||
<value>{user} - {space} - SQL Server 2012</value>
|
<value>{user} - {space} - SQL Server 2012</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PageName.SpaceMsSql2014" xml:space="preserve">
|
<data name="PageName.SpaceMsSql2014" xml:space="preserve">
|
||||||
<value>SQL Server 2014</value>
|
<value>SQL Server 2014</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PageTitle.SpaceMsSql2014" xml:space="preserve">
|
<data name="PageTitle.SpaceMsSql2014" xml:space="preserve">
|
||||||
<value>{user} - {space} - SQL Server 2014</value>
|
<value>{user} - {space} - SQL Server 2014</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PageTitle.SpaceMsSql2005" xml:space="preserve">
|
<data name="PageTitle.SpaceMsSql2005" xml:space="preserve">
|
||||||
|
@ -480,4 +480,7 @@
|
||||||
<data name="PageTitle.PhoneNumbers" xml:space="preserve">
|
<data name="PageTitle.PhoneNumbers" xml:space="preserve">
|
||||||
<value>Phone Numbers</value>
|
<value>Phone Numbers</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="PageName.RDSServers" xml:space="preserve">
|
||||||
|
<value>RDS Servers</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -5584,4 +5584,13 @@
|
||||||
<data name="Error.SERVICE_LEVEL_IN_USE" xml:space="preserve">
|
<data name="Error.SERVICE_LEVEL_IN_USE" xml:space="preserve">
|
||||||
<value>Unable to remove Service Level because it is being used</value>
|
<value>Unable to remove Service Level because it is being used</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Quota.RDS.Servers" xml:space="preserve">
|
||||||
|
<value>Remote Desktop Servers</value>
|
||||||
|
</data>
|
||||||
|
<data name="Quota.RDS.Users" xml:space="preserve">
|
||||||
|
<value>Remote Desktop Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="Error.RDS_CREATE_COLLECTION_RDSSERVER_REQUAIRED" xml:space="preserve">
|
||||||
|
<value>Error creating rds collection. You need to add at least 1 rds server to collection</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -96,4 +96,8 @@ Default skin template. The following skins are provided as examples only.
|
||||||
|
|
||||||
<%-- Enterprise Storage Icons --%>
|
<%-- Enterprise Storage Icons --%>
|
||||||
<asp:Image SkinID="EnterpriseStorageSpace48" runat="server" ImageUrl="images/Exchange/spaces48.png" ImageAlign="AbsMiddle" Width="48" Height="48"></asp:Image>
|
<asp:Image SkinID="EnterpriseStorageSpace48" runat="server" ImageUrl="images/Exchange/spaces48.png" ImageAlign="AbsMiddle" Width="48" Height="48"></asp:Image>
|
||||||
<asp:Image SkinID="EnterpriseStorageDriveMaps48" runat="server" ImageUrl="images/Exchange/net_drive48.png" ImageAlign="AbsMiddle" Width="48" Height="48"></asp:Image>
|
<asp:Image SkinID="EnterpriseStorageDriveMaps48" runat="server" ImageUrl="images/Exchange/net_drive48.png" ImageAlign="AbsMiddle" Width="48" Height="48"></asp:Image>
|
||||||
|
|
||||||
|
<%-- RDS Icons --%>
|
||||||
|
<asp:Image SkinID="AssignedRDSServers48" runat="server" ImageUrl="icons/computer_48.png" ImageAlign="AbsMiddle" Width="48" Height="48"></asp:Image>
|
||||||
|
<asp:Image SkinID="AddRDSServer48" runat="server" ImageUrl="icons/computer_add_48.png" ImageAlign="AbsMiddle" Width="48" Height="48"></asp:Image>
|
|
@ -163,7 +163,9 @@ h2.ProductTitle.Huge {margin:0;}
|
||||||
.NormalGreen {color:#87c442;}
|
.NormalGreen {color:#87c442;}
|
||||||
.NormalRed {color:#f25555;}
|
.NormalRed {color:#f25555;}
|
||||||
.FormBody {margin:10px 0;}
|
.FormBody {margin:10px 0;}
|
||||||
|
.FormContentRDS {border: 2px solid #eee;padding: 10px;margin: 10px;}
|
||||||
|
.FormFooterRDSConf {border-color: #eee;border-style: none solid solid;border-width: 2px;padding: 20px 15px 15px 10px;width: 97%;}
|
||||||
|
.FormContentRDSConf {border-color: #eee;border-style: solid;border-width: 2px;padding: 30px 15px 15px 10px;width: 97%;}
|
||||||
|
|
||||||
/* not modified */
|
/* not modified */
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -231,4 +231,13 @@
|
||||||
<data name="Text.EnterpriseStorageDriveMaps" xml:space="preserve">
|
<data name="Text.EnterpriseStorageDriveMaps" xml:space="preserve">
|
||||||
<value>Drive Maps</value>
|
<value>Drive Maps</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Text.RDSCollections" xml:space="preserve">
|
||||||
|
<value>RDS Collections</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.RDSGroup" xml:space="preserve">
|
||||||
|
<value>RDS</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.RDSServers" xml:space="preserve">
|
||||||
|
<value>RDS Servers</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -0,0 +1,126 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnAddRDSServer.Text" xml:space="preserve">
|
||||||
|
<value>Add RDS Server</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServers.Empty" xml:space="preserve">
|
||||||
|
<value>The list of RDS Servers is empty.<br><br>To add a new Server click "Add RDS Sever" button.</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -252,4 +252,13 @@
|
||||||
<data name="Text.CreateOrganization" xml:space="preserve">
|
<data name="Text.CreateOrganization" xml:space="preserve">
|
||||||
<value>Create Organization</value>
|
<value>Create Organization</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Text.RDSCollections" xml:space="preserve">
|
||||||
|
<value>RDS Collections</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.RDSGroup" xml:space="preserve">
|
||||||
|
<value>Hosted Organization - Remote Desktop Services</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.RDSServers" xml:space="preserve">
|
||||||
|
<value>RDS Servers</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -224,6 +224,11 @@ namespace WebsitePanel.Portal
|
||||||
{
|
{
|
||||||
get { return GetCachedProxy<esEnterpriseStorage>(); }
|
get { return GetCachedProxy<esEnterpriseStorage>(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public esRemoteDesktopServices RDS
|
||||||
|
{
|
||||||
|
get { return GetCachedProxy<esRemoteDesktopServices>(); }
|
||||||
|
}
|
||||||
|
|
||||||
protected ES()
|
protected ES()
|
||||||
{
|
{
|
||||||
|
|
|
@ -213,5 +213,10 @@ namespace WebsitePanel.Portal
|
||||||
{
|
{
|
||||||
get { return HttpContext.Current.Request["ctl"] ?? ""; }
|
get { return HttpContext.Current.Request["ctl"] ?? ""; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int CollectionID
|
||||||
|
{
|
||||||
|
get { return GetInt("CollectionId"); }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
// Copyright (c) 2012, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal
|
||||||
|
{
|
||||||
|
public class RDSHelper
|
||||||
|
{
|
||||||
|
#region RDS Servers
|
||||||
|
|
||||||
|
RdsServersPaged rdsServers;
|
||||||
|
|
||||||
|
public int GetRDSServersPagedCount(string filterValue)
|
||||||
|
{
|
||||||
|
//return 4;
|
||||||
|
return rdsServers.RecordsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RdsServer[] GetRDSServersPaged(int maximumRows, int startRowIndex, string sortColumn, string filterValue)
|
||||||
|
{
|
||||||
|
rdsServers = ES.Services.RDS.GetRdsServersPaged("", filterValue, sortColumn, startRowIndex, maximumRows);
|
||||||
|
|
||||||
|
return rdsServers.Servers;
|
||||||
|
//return new RdsServer[] { new RdsServer { Name = "rds.1.server", FqdName = "", Address = "127.0.0.1" },
|
||||||
|
// new RdsServer { Name = "rds.2.server", FqdName = "", Address = "127.0.0.2" },
|
||||||
|
// new RdsServer { Name = "rds.3.server", FqdName = "", Address = "127.0.0.3" },
|
||||||
|
// new RdsServer { Name = "rds.4.server", FqdName = "", Address = "127.0.0.4" }};
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetOrganizationRdsServersPagedCount(int itemId, string filterValue)
|
||||||
|
{
|
||||||
|
return rdsServers.RecordsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RdsServer[] GetOrganizationRdsServersPaged(int itemId, int maximumRows, int startRowIndex, string sortColumn, string filterValue)
|
||||||
|
{
|
||||||
|
rdsServers = ES.Services.RDS.GetOrganizationRdsServersPaged(itemId, "", filterValue, sortColumn, startRowIndex, maximumRows);
|
||||||
|
|
||||||
|
return rdsServers.Servers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RdsServer[] GetFreeRDSServers()
|
||||||
|
{
|
||||||
|
return ES.Services.RDS.GetFreeRdsServersPaged("", "", "", 0, 1000).Servers;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region RDS Collectons
|
||||||
|
|
||||||
|
RdsCollectionPaged rdsCollections;
|
||||||
|
|
||||||
|
public int GetRDSCollectonsPagedCount(int itemId, string filterValue)
|
||||||
|
{
|
||||||
|
//return 3;
|
||||||
|
return rdsCollections.RecordsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RdsCollection[] GetRDSCollectonsPaged(int itemId, int maximumRows, int startRowIndex, string sortColumn, string filterValue)
|
||||||
|
{
|
||||||
|
rdsCollections = ES.Services.RDS.GetRdsCollectionsPaged(itemId, "Name", filterValue, sortColumn, startRowIndex, maximumRows);
|
||||||
|
|
||||||
|
return rdsCollections.Collections;
|
||||||
|
|
||||||
|
//return new RdsCollection[] { new RdsCollection { Name = "Collection 1", Description = "" },
|
||||||
|
// new RdsCollection { Name = "Collection 2", Description = "" },
|
||||||
|
// new RdsCollection { Name = "Collection 3", Description = "" }};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,55 @@
|
||||||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDS_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.RDS_Settings" %>
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDS_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.RDS_Settings" %>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead" width="150" nowrap>
|
<td class="SubHead" width="200" nowrap>
|
||||||
<asp:Label runat="server" ID="lblUsersHome" meta:resourcekey="lblUsersHome" Text="Users Home:"/>
|
<asp:Label runat="server" ID="lblConnectionBroker" meta:resourcekey="lblConnectionBroker" Text="Connection Broker:"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<asp:TextBox runat="server" ID="txtUsersHome" MaxLength="256" Width="200px" />
|
<asp:TextBox runat="server" ID="txtConnectionBroker" MaxLength="1000" Width="200px" />
|
||||||
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtUsersHome" Display="Dynamic" ErrorMessage="*" />
|
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtConnectionBroker" Display="Dynamic" ErrorMessage="*" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" width="200" nowrap>
|
||||||
|
<asp:Label runat="server" ID="lblGateway" meta:resourcekey="lblGateway" Text="Gateway Servers:"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox runat="server" ID="txtGateway" MaxLength="1000" Width="200px" />
|
||||||
|
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtGateway" Display="Dynamic" ErrorMessage="*" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" width="200" nowrap>
|
||||||
|
<asp:Label runat="server" ID="lblRootOU" meta:resourcekey="lblRootOU" Text="Root OU:"/>
|
||||||
|
</td>
|
||||||
|
<td class="Normal">
|
||||||
|
<asp:TextBox runat="server" ID="txtRootOU" MaxLength="1000" Width="200px" />
|
||||||
|
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtRootOU" ErrorMessage="*" Display="Dynamic" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" width="200" nowrap>
|
||||||
|
<asp:Label runat="server" ID="lblPrimaryDomainController" meta:resourcekey="lblPrimaryDomainController" Text="Primary Domain Controller:"/>
|
||||||
|
</td>
|
||||||
|
<td class="Normal">
|
||||||
|
<asp:TextBox runat="server" ID="txtPrimaryDomainController" MaxLength="1000" Width="200px"/>
|
||||||
|
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="txtPrimaryDomainController" ErrorMessage="*" Display="Dynamic" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" width="200" nowrap>
|
||||||
|
<asp:Label runat="server" ID="lblUseCentralNPS" meta:resourcekey="lblUseCentralNPS" Text="Use Central NPS:"/>
|
||||||
|
</td>
|
||||||
|
<td class="Normal">
|
||||||
|
<asp:CheckBox runat="server" ID="chkUseCentralNPS" meta:resourcekey="chkUseCentralNPS" OnCheckedChanged="chkUseCentralNPS_CheckedChanged" AutoPostBack="True" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" width="200" nowrap>
|
||||||
|
<asp:Label runat="server" ID="lblCentralNPS" meta:resourcekey="lblCentralNPS" MaxLength="1000" Text="Central NPS:"/>
|
||||||
|
</td>
|
||||||
|
<td class="Normal">
|
||||||
|
<asp:TextBox runat="server" ID="txtCentralNPS" Width="200px"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
|
@ -36,16 +36,44 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
{
|
{
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BindSettings(System.Collections.Specialized.StringDictionary settings)
|
public void BindSettings(System.Collections.Specialized.StringDictionary settings)
|
||||||
{
|
{
|
||||||
txtUsersHome.Text = settings[Constants.UsersHome];
|
txtConnectionBroker.Text = settings["ConnectionBroker"];
|
||||||
|
txtGateway.Text = settings["GWServrsList"];
|
||||||
|
txtRootOU.Text = settings["RootOU"];
|
||||||
|
txtPrimaryDomainController.Text = settings["PrimaryDomainController"];
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(settings["UseCentralNPS"]) && bool.TrueString == settings["UseCentralNPS"])
|
||||||
|
{
|
||||||
|
chkUseCentralNPS.Checked = true;
|
||||||
|
txtCentralNPS.Enabled = true;
|
||||||
|
txtCentralNPS.Text = settings["CentralNPS"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chkUseCentralNPS.Checked = false;
|
||||||
|
txtCentralNPS.Enabled = false;
|
||||||
|
txtCentralNPS.Text = string.Empty;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveSettings(System.Collections.Specialized.StringDictionary settings)
|
public void SaveSettings(System.Collections.Specialized.StringDictionary settings)
|
||||||
{
|
{
|
||||||
settings[Constants.UsersHome] = txtUsersHome.Text;
|
settings["ConnectionBroker"] = txtConnectionBroker.Text;
|
||||||
|
settings["GWServrsList"] = txtGateway.Text;
|
||||||
|
settings["RootOU"] = txtRootOU.Text;
|
||||||
|
settings["PrimaryDomainController"] = txtPrimaryDomainController.Text;
|
||||||
|
settings["UseCentralNPS"] = chkUseCentralNPS.Checked.ToString();
|
||||||
|
settings["CentralNPS"] = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void chkUseCentralNPS_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
txtCentralNPS.Enabled = chkUseCentralNPS.Checked;
|
||||||
|
txtCentralNPS.Text = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,31 +1,3 @@
|
||||||
// Copyright (c) 2014, Outercurve Foundation.
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
// are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// - Redistributions of source code must retain the above copyright notice, this
|
|
||||||
// list of conditions and the following disclaimer.
|
|
||||||
//
|
|
||||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
//
|
|
||||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
|
||||||
// contributors may be used to endorse or promote products derived from this
|
|
||||||
// software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
@ -35,37 +7,153 @@
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
namespace WebsitePanel.Portal.ProviderControls {
|
namespace WebsitePanel.Portal.ProviderControls {
|
||||||
|
|
||||||
|
|
||||||
public partial class RDS_Settings {
|
public partial class RDS_Settings {
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// lblUsersHome control.
|
/// lblConnectionBroker control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Label lblUsersHome;
|
protected global::System.Web.UI.WebControls.Label lblConnectionBroker;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// txtUsersHome control.
|
/// txtConnectionBroker control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.TextBox txtUsersHome;
|
protected global::System.Web.UI.WebControls.TextBox txtConnectionBroker;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RequiredFieldValidator1 control.
|
/// RequiredFieldValidator2 control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
|
protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblGateway 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.Label lblGateway;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtGateway 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.TextBox txtGateway;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RequiredFieldValidator3 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 RequiredFieldValidator3;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblRootOU 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.Label lblRootOU;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtRootOU 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.TextBox txtRootOU;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RequiredFieldValidator4 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 RequiredFieldValidator4;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblPrimaryDomainController 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.Label lblPrimaryDomainController;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtPrimaryDomainController 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.TextBox txtPrimaryDomainController;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RequiredFieldValidator5 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 RequiredFieldValidator5;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblUseCentralNPS 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.Label lblUseCentralNPS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkUseCentralNPS 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.CheckBox chkUseCentralNPS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblCentralNPS 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.Label lblCentralNPS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtCentralNPS 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.TextBox txtCentralNPS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AddRDSServer.ascx.cs" Inherits="WebsitePanel.Portal.RDS.AddRDSServer" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="imgAddRDSServer" SkinID="AddRDSServer48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Add Server To Organization"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
<div class="FormBody">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150"><asp:Localize ID="locServer" runat="server" meta:resourcekey="locServer" Text="Server:"></asp:Localize></td>
|
||||||
|
<td>
|
||||||
|
<asp:DropDownList ID="ddlServers" runat="server" CssClass="NormalTextBox" Width="150px" style="vertical-align: middle;" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="FormFooterClean">
|
||||||
|
<asp:Button id="btnAdd" runat="server" Text="Add" CssClass="Button1" meta:resourcekey="btnAdd" ValidationGroup="AddRDSServer" OnClick="btnAdd_Click"></asp:Button>
|
||||||
|
<asp:ValidationSummary ID="valSummary" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="AddRDSServer" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,76 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.OS;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS
|
||||||
|
{
|
||||||
|
public partial class AddRDSServer : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
BindRDSServers();
|
||||||
|
}
|
||||||
|
|
||||||
|
btnAdd.Enabled = ddlServers.Items.Count > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BindRDSServers()
|
||||||
|
{
|
||||||
|
ddlServers.DataSource = new RDSHelper().GetFreeRDSServers();
|
||||||
|
ddlServers.DataTextField = "Name";
|
||||||
|
ddlServers.DataValueField = "Id";
|
||||||
|
ddlServers.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!Page.IsValid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ES.Services.RDS.AddRdsServerToOrganization(PanelRequest.ItemID, int.Parse(ddlServers.SelectedValue));
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_servers",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId));
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class AddRDSServer {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// imgAddRDSServer 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.Image imgAddRDSServer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locTitle 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 locTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locServer 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 locServer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlServers 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.DropDownList ddlServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAdd 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 btnAdd;
|
||||||
|
|
||||||
|
/// <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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnCreate.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Adding RDS Server ...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
|
<value>Add</value>
|
||||||
|
</data>
|
||||||
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Add RDS Server</value>
|
||||||
|
</data>
|
||||||
|
<data name="valRequireFolderName.ErrorMessage" xml:space="preserve">
|
||||||
|
<value>Enter Folder Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="valRequireFolderName.Text" xml:space="preserve">
|
||||||
|
<value>*</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Add RDS Server To Organization</value>
|
||||||
|
</data>
|
||||||
|
<data name="locServer.Text" xml:space="preserve">
|
||||||
|
<value>Select RDS Server:</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,150 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnAddServerToOrg.Text" xml:space="preserve">
|
||||||
|
<value>Add...</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.OnClientClick" xml:space="preserve">
|
||||||
|
<value>if(!confirm('Are you sure you want to remove selected server?')) return false; else ShowProgressDialog('Removing server...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.Text" xml:space="preserve">
|
||||||
|
<value>Remove</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.ToolTip" xml:space="preserve">
|
||||||
|
<value>Remove Server</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSAssignedServers.Empty" xml:space="preserve">
|
||||||
|
<value>No RDS Servers have been added yet. To add a new RDS Servers click "Add..." button.</value>
|
||||||
|
</data>
|
||||||
|
<data name="HSFormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>RDS Servers</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServerName.Header" xml:space="preserve">
|
||||||
|
<value>Server</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Assigned RDS Servers</value>
|
||||||
|
</data>
|
||||||
|
<data name="locQuota.Text" xml:space="preserve">
|
||||||
|
<value>Total RDS Servers Allocated:</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,150 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnAddCollection.Text" xml:space="preserve">
|
||||||
|
<value>Create New RDS Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.OnClientClick" xml:space="preserve">
|
||||||
|
<value>if(!confirm('Are you sure you want to remove selected rds collection?')) return false; else ShowProgressDialog('Deleting Collection...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.Text" xml:space="preserve">
|
||||||
|
<value>Remove</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmdDelete.ToolTip" xml:space="preserve">
|
||||||
|
<value>Delete Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSCollections.Empty" xml:space="preserve">
|
||||||
|
<value>No collections have been added yet. To add a new click "Create New RDS Collection" button.</value>
|
||||||
|
</data>
|
||||||
|
<data name="HSFormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>RDS Collections</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvCollectionName.Header" xml:space="preserve">
|
||||||
|
<value>Collection Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>RDS Collections</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvServer.Header" xml:space="preserve">
|
||||||
|
<value>RDS Server</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,144 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnCreate.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Adding RDS Server ...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSave.Text" xml:space="preserve">
|
||||||
|
<value>Save</value>
|
||||||
|
</data>
|
||||||
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Create RDS Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Create New RDS Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCollectionName.Text" xml:space="preserve">
|
||||||
|
<value>Collection Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServerName.Header" xml:space="preserve">
|
||||||
|
<value>Server Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServers.Empty" xml:space="preserve">
|
||||||
|
<value>No RDS Servers have been added yet. To add a new RDS Servers click "Add RDS Server" button.</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,144 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnCreate.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Adding RDS Server ...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSave.Text" xml:space="preserve">
|
||||||
|
<value>Save Changes</value>
|
||||||
|
</data>
|
||||||
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Edit RDS Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Edit RDS Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCollectionName.Text" xml:space="preserve">
|
||||||
|
<value>Collection Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServerName.Header" xml:space="preserve">
|
||||||
|
<value>Server Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServers.Empty" xml:space="preserve">
|
||||||
|
<value>No RDS Servers have been added yet. To add a new RDS Servers click "Add RDS Server" button.</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,144 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnCreate.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Adding RDS Server ...');</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSave.Text" xml:space="preserve">
|
||||||
|
<value>Save Changes</value>
|
||||||
|
</data>
|
||||||
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Edit RDS Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Edit RDS Collection</value>
|
||||||
|
</data>
|
||||||
|
<data name="locCollectionName.Text" xml:space="preserve">
|
||||||
|
<value>Collection Name:</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServerName.Header" xml:space="preserve">
|
||||||
|
<value>Server Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvRDSServers.Empty" xml:space="preserve">
|
||||||
|
<value>No RDS Servers have been added yet. To add a new RDS Servers click "Add RDS Server" button.</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,79 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AssignedRDSServers.ascx.cs" Inherits="WebsitePanel.Portal.RDS.AssignedRDSServers" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="imgRDSServers" SkinID="AssignedRDSServers48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Assigned RDS Servers"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
<div class="FormContentRDS">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanLeft">
|
||||||
|
<asp:Button ID="btnAddServerToOrg" runat="server" meta:resourcekey="btnAddServerToOrg"
|
||||||
|
Text="Add..." CssClass="Button2" OnClick="btnAddServerToOrg_Click" />
|
||||||
|
</div>
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:Localize ID="locSearch" runat="server" meta:resourcekey="locSearch" Visible="false"></asp:Localize>
|
||||||
|
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
|
||||||
|
onselectedindexchanged="ddlPageSize_SelectedIndexChanged">
|
||||||
|
<asp:ListItem>10</asp:ListItem>
|
||||||
|
<asp:ListItem Selected="True">20</asp:ListItem>
|
||||||
|
<asp:ListItem>50</asp:ListItem>
|
||||||
|
<asp:ListItem>100</asp:ListItem>
|
||||||
|
</asp:DropDownList>
|
||||||
|
|
||||||
|
<asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100">
|
||||||
|
</asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton" CausesValidation="false"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<asp:GridView ID="gvRDSAssignedServers" runat="server" AutoGenerateColumns="False" EnableViewState="true"
|
||||||
|
Width="100%" EmptyDataText="gvRDSAssignedServers" CssSelectorClass="NormalGridView"
|
||||||
|
OnRowCommand="gvRDSAssignedServers_RowCommand" AllowPaging="True" AllowSorting="True"
|
||||||
|
DataSourceID="odsRDSAssignedServersPaged" PageSize="20">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField HeaderText="gvRDSServerName" SortExpression="Name">
|
||||||
|
<ItemStyle Width="90%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Label id="litRDSServerName" runat="server">
|
||||||
|
<%# Eval("Name") %>
|
||||||
|
</asp:Label>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:LinkButton ID="imgRemove1" runat="server" Text="Remove"
|
||||||
|
CommandName="DeleteItem" CommandArgument='<%# Eval("Id") %>'
|
||||||
|
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Are you sure you want to remove selected server?')"></asp:LinkButton>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<asp:ObjectDataSource ID="odsRDSAssignedServersPaged" runat="server" EnablePaging="True"
|
||||||
|
SelectCountMethod="GetOrganizationRdsServersPagedCount"
|
||||||
|
SelectMethod="GetOrganizationRdsServersPaged"
|
||||||
|
SortParameterName="sortColumn"
|
||||||
|
TypeName="WebsitePanel.Portal.RDSHelper">
|
||||||
|
<SelectParameters>
|
||||||
|
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
||||||
|
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
||||||
|
</SelectParameters>
|
||||||
|
</asp:ObjectDataSource>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,94 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.OS;
|
||||||
|
using WebsitePanel.WebPortal;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS
|
||||||
|
{
|
||||||
|
public partial class AssignedRDSServers : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
if (cntx.Quotas.ContainsKey(Quotas.RDS_SERVERS))
|
||||||
|
{
|
||||||
|
btnAddServerToOrg.Enabled = (!(cntx.Quotas[Quotas.RDS_SERVERS].QuotaAllocatedValue <= gvRDSAssignedServers.Rows.Count) || (cntx.Quotas[Quotas.RDS_SERVERS].QuotaAllocatedValue == -1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddServerToOrg_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_add_server",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void gvRDSAssignedServers_RowCommand(object sender, GridViewCommandEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.CommandName == "DeleteItem")
|
||||||
|
{
|
||||||
|
// delete RDS Server
|
||||||
|
int rdsServerId = int.Parse(e.CommandArgument.ToString());
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ResultObject result = ES.Services.RDS.RemoveRdsServerFromOrganization(rdsServerId);
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
messageBox.ShowMessage(result, "REMOTE_DESKTOP_SERVICES_UNASSIGN_SERVER_FROM_ORG", "RDS");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gvRDSAssignedServers.DataBind();
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ShowErrorMessage("REMOTE_DESKTOP_SERVICES_UNASSIGN_SERVER_FROM_ORG", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
gvRDSAssignedServers.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
|
||||||
|
|
||||||
|
gvRDSAssignedServers.DataBind();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,123 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class AssignedRDSServers {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// imgRDSServers 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.Image imgRDSServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locTitle 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 locTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddServerToOrg 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 btnAddServerToOrg;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locSearch 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 locSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlPageSize 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.DropDownList ddlPageSize;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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.TextBox txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvRDSAssignedServers 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.GridView gvRDSAssignedServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// odsRDSAssignedServersPaged 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.ObjectDataSource odsRDSAssignedServersPaged;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSCollections.ascx.cs" Inherits="WebsitePanel.Portal.RDS.RDSCollections" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="imgRDSCollections" SkinID="EnterpriseStorageSpace48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="RDS Collections"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
<div class="FormBody">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanLeft">
|
||||||
|
<asp:Button ID="btnAddCollection" runat="server" meta:resourcekey="btnAddCollection"
|
||||||
|
Text="Create New RDS Collection" CssClass="Button1" OnClick="btnAddCollection_Click" />
|
||||||
|
</div>
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:Localize ID="locSearch" runat="server" meta:resourcekey="locSearch" Visible="false"></asp:Localize>
|
||||||
|
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
|
||||||
|
onselectedindexchanged="ddlPageSize_SelectedIndexChanged">
|
||||||
|
<asp:ListItem>10</asp:ListItem>
|
||||||
|
<asp:ListItem Selected="True">20</asp:ListItem>
|
||||||
|
<asp:ListItem>50</asp:ListItem>
|
||||||
|
<asp:ListItem>100</asp:ListItem>
|
||||||
|
</asp:DropDownList>
|
||||||
|
|
||||||
|
<asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100">
|
||||||
|
</asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton" CausesValidation="false"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<asp:GridView ID="gvRDSCollections" runat="server" AutoGenerateColumns="False" EnableViewState="true"
|
||||||
|
Width="100%" EmptyDataText="gvRDSCollections" CssSelectorClass="NormalGridView"
|
||||||
|
OnRowCommand="gvRDSCollections_RowCommand" AllowPaging="True" AllowSorting="True"
|
||||||
|
DataSourceID="odsRDSCollectionsPaged" PageSize="20">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField HeaderText="gvCollectionName" SortExpression="Name">
|
||||||
|
<ItemStyle Width="40%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal id="litCollectionName" runat="server" Text='<%# Eval("Name").ToString() %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField HeaderText="gvServer">
|
||||||
|
<ItemStyle Width="40%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal id="litServer" runat="server" Text='<%#GetServerName(Eval("Id").ToString())%>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:hyperlink id="lnkApps" meta:resourcekey="lnkApps" runat="server" NavigateUrl='<%# GetCollectionAppsEditUrl(Eval("Id").ToString()) %>'>Applications</asp:hyperlink>
|
||||||
|
|
|
||||||
|
<asp:hyperlink id="lnkUsers" meta:resourcekey="lnkUsers" runat="server" NavigateUrl='<%# GetCollectionUsersEditUrl(Eval("Id").ToString()) %>'>Users</asp:hyperlink>
|
||||||
|
|
|
||||||
|
<asp:LinkButton ID="lnkRemove" runat="server" Text="Remove"
|
||||||
|
CommandName="DeleteItem" CommandArgument='<%# Eval("Id") %>'
|
||||||
|
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Are you sure you want to remove selected rds collection?')"></asp:LinkButton>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<asp:ObjectDataSource ID="odsRDSCollectionsPaged" runat="server" EnablePaging="True"
|
||||||
|
SelectCountMethod="GetRDSCollectonsPagedCount"
|
||||||
|
SelectMethod="GetRDSCollectonsPaged"
|
||||||
|
SortParameterName="sortColumn"
|
||||||
|
TypeName="WebsitePanel.Portal.RDSHelper">
|
||||||
|
<SelectParameters>
|
||||||
|
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
||||||
|
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
||||||
|
</SelectParameters>
|
||||||
|
</asp:ObjectDataSource>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,115 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.OS;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
|
using WebsitePanel.WebPortal;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS
|
||||||
|
{
|
||||||
|
public partial class RDSCollections : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetServerName(string collectionId)
|
||||||
|
{
|
||||||
|
int id = int.Parse(collectionId);
|
||||||
|
|
||||||
|
RdsServer[] servers = ES.Services.RDS.GetCollectionRdsServers(id);
|
||||||
|
|
||||||
|
return servers.FirstOrDefault().FqdName;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddCollection_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_create_collection",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void gvRDSCollections_RowCommand(object sender, GridViewCommandEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.CommandName == "DeleteItem")
|
||||||
|
{
|
||||||
|
// delete RDS Collection
|
||||||
|
int rdsCollectionId = int.Parse(e.CommandArgument.ToString());
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
RdsCollection collection = ES.Services.RDS.GetRdsCollection(rdsCollectionId);
|
||||||
|
|
||||||
|
ResultObject result = ES.Services.RDS.RemoveRdsCollection(PanelRequest.ItemID, collection);
|
||||||
|
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
messageBox.ShowMessage(result, "REMOTE_DESKTOP_SERVICES_REMOVE_COLLECTION", "RDS");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gvRDSCollections.DataBind();
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ShowErrorMessage("REMOTE_DESKTOP_SERVICES_REMOVE_COLLECTION", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
gvRDSCollections.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
|
||||||
|
|
||||||
|
gvRDSCollections.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetCollectionAppsEditUrl(string collectionId)
|
||||||
|
{
|
||||||
|
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "rds_collection_edit_apps",
|
||||||
|
"CollectionId=" + collectionId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetCollectionUsersEditUrl(string collectionId)
|
||||||
|
{
|
||||||
|
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "rds_collection_edit_users",
|
||||||
|
"CollectionId=" + collectionId,
|
||||||
|
"ItemID=" + PanelRequest.ItemID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,123 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSCollections {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// imgRDSCollections 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.Image imgRDSCollections;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locTitle 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 locTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddCollection 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 btnAddCollection;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locSearch 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 locSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlPageSize 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.DropDownList ddlPageSize;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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.TextBox txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvRDSCollections 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.GridView gvRDSCollections;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// odsRDSCollectionsPaged 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.ObjectDataSource odsRDSCollectionsPaged;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSCreateCollection.ascx.cs" Inherits="WebsitePanel.Portal.RDS.RDSCreateCollection" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/RDSCollectionServers.ascx" TagName="CollectionServers" TagPrefix="wsp"%>
|
||||||
|
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="imgAddRDSServer" SkinID="AddRDSServer48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Add Server To Organization"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
<div class="FormContentRDS">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150" style="width: 100px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name"></asp:Localize></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtCollectionName" runat="server" CssClass="NormalTextBox" />
|
||||||
|
<asp:RequiredFieldValidator ID="valCollectionName" runat="server" ErrorMessage="*" ControlToValidate="txtCollectionName"></asp:RequiredFieldValidator>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<fieldset id="RDSServersPanel" runat="server">
|
||||||
|
<legend><asp:Localize ID="locRDSServersSection" runat="server" meta:resourcekey="locRDSServersSection" Text="RDS Servers"></asp:Localize></legend>
|
||||||
|
<div style="padding: 10px;">
|
||||||
|
<wsp:CollectionServers id="servers" runat="server" />
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button id="btnSave" runat="server" Text="Save" CssClass="Button1" meta:resourcekey="btnSave" OnClick="btnSave_Click"></asp:Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,72 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.OS;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS
|
||||||
|
{
|
||||||
|
public partial class RDSCreateCollection : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!Page.IsValid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (servers.GetServers().Count < 1)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("RDS_CREATE_COLLECTION_RDSSERVER_REQUAIRED");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RdsCollection collection = new RdsCollection{ Name = txtCollectionName.Text, Servers = servers.GetServers(), Description = "" };
|
||||||
|
|
||||||
|
ES.Services.RDS.AddRdsCollection(PanelRequest.ItemID, collection);
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_collections",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId));
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSCreateCollection {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// imgAddRDSServer 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.Image imgAddRDSServer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locTitle 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 locTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCollectionName 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtCollectionName 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.TextBox txtCollectionName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// valCollectionName 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 valCollectionName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RDSServersPanel 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 RDSServersPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locRDSServersSection 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 locRDSServersSection;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// servers control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.RDS.UserControls.RDSCollectionServers servers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSave 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSEditCollectionApps.ascx.cs" Inherits="WebsitePanel.Portal.RDS.RDSEditCollectionApps" %>
|
||||||
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/RDSCollectionApps.ascx" TagName="CollectionApps" TagPrefix="wsp"%>
|
||||||
|
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="imgEditRDSCollection" SkinID="EnterpriseStorageSpace48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit RDS Collection"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
<div class="FormContentRDS">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150" style="width: 100px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name"></asp:Localize></td>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locCName" runat="server" Text="RDS Collection 1" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<fieldset id="RemoteAppsPanel" runat="server">
|
||||||
|
<legend><asp:Localize ID="locRemoteAppsSection" runat="server" meta:resourcekey="locRemoteAppsSection" Text="Remote Applications"></asp:Localize></legend>
|
||||||
|
<div style="padding: 10px;">
|
||||||
|
<wsp:CollectionApps id="remoreApps" runat="server" />
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button id="btnSave" runat="server" Text="Save Changes" 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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,69 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.OS;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS
|
||||||
|
{
|
||||||
|
public partial class RDSEditCollectionApps : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
RdsCollection collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
|
||||||
|
var collectionApps = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
|
||||||
|
|
||||||
|
locCName.Text = collection.Name;
|
||||||
|
|
||||||
|
remoreApps.SetApps(collectionApps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!Page.IsValid)
|
||||||
|
return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ES.Services.RDS.SetRemoteApplicationsToRdsCollection(PanelRequest.ItemID, PanelRequest.CollectionID, remoreApps.GetApps());
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_collections",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId));
|
||||||
|
}
|
||||||
|
catch (Exception ex) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSEditCollectionApps {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// imgEditRDSCollection 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.Image imgEditRDSCollection;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locTitle 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 locTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCollectionName 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCName 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RemoteAppsPanel 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 RemoteAppsPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locRemoteAppsSection 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 locRemoteAppsSection;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// remoreApps control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.RDS.UserControls.RDSCollectionApps remoreApps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSave 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSEditCollectionUsers.ascx.cs" Inherits="WebsitePanel.Portal.RDS.RDSEditCollectionUsers" %>
|
||||||
|
<%@ 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"%>
|
||||||
|
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div id="ExchangeContainer">
|
||||||
|
<div class="Module">
|
||||||
|
<div class="Left">
|
||||||
|
</div>
|
||||||
|
<div class="Content">
|
||||||
|
<div class="Center">
|
||||||
|
<div class="Title">
|
||||||
|
<asp:Image ID="imgEditRDSCollection" SkinID="EnterpriseStorageSpace48" runat="server" />
|
||||||
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit RDS Collection"></asp:Localize>
|
||||||
|
</div>
|
||||||
|
<div class="FormContentRDS">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150" style="width: 100px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name:"></asp:Localize></td>
|
||||||
|
<td class="FormLabel150">
|
||||||
|
<asp:Localize ID="locCName" runat="server" Text="RDS Collection 1" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<fieldset id="UsersPanel" runat="server">
|
||||||
|
<legend><asp:Localize ID="locUsersSection" runat="server" meta:resourcekey="locUsersSection" Text="Users"></asp:Localize></legend>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,68 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.OS;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS
|
||||||
|
{
|
||||||
|
public partial class RDSEditCollectionUsers : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
var collectionUsers = ES.Services.RDS.GetRdsCollectionUsers(PanelRequest.CollectionID);
|
||||||
|
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
|
||||||
|
|
||||||
|
locCName.Text = collection.Name;
|
||||||
|
|
||||||
|
users.SetUsers(collectionUsers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!Page.IsValid)
|
||||||
|
return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ES.Services.RDS.SetUsersToRdsCollection(PanelRequest.ItemID, PanelRequest.CollectionID, users.GetUsers());
|
||||||
|
|
||||||
|
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_collections",
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId));
|
||||||
|
}
|
||||||
|
catch(Exception ex) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSEditCollectionUsers {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// imgEditRDSCollection 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.Image imgEditRDSCollection;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locTitle 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 locTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCollectionName 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locCName 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UsersPanel 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locUsersSection 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// users control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.RDS.UserControls.RDSCollectionUsers users;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSave 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,147 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
|
<value>Add...</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnAddSelected.Text" xml:space="preserve">
|
||||||
|
<value>Add Apps</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvAppName.HeaderText" xml:space="preserve">
|
||||||
|
<value>Remote Application Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvApps.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>The list of remote apps is empty. Click "Add..." button.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPopupAppName.HeaderText" xml:space="preserve">
|
||||||
|
<value>Remote App Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPopupApps.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>No remote apps found.</value>
|
||||||
|
</data>
|
||||||
|
<data name="headerAddApps.Text" xml:space="preserve">
|
||||||
|
<value>Available Remote Applications</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,147 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
|
<value>Add...</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnAddSelected.Text" xml:space="preserve">
|
||||||
|
<value>Add Servers</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPopupServerName.HeaderText" xml:space="preserve">
|
||||||
|
<value>Server Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPopupServers.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>No servers found.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvServerName.HeaderText" xml:space="preserve">
|
||||||
|
<value>Server Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvServers.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>The list of servers is empty. Click "Add..." button.</value>
|
||||||
|
</data>
|
||||||
|
<data name="headerAddServers.Text" xml:space="preserve">
|
||||||
|
<value>Enabled Servers</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,156 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
|
<value>Add...</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnAddSelected.Text" xml:space="preserve">
|
||||||
|
<value>Add Accounts</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnDelete.Text" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlSearchColumnEmail.Text" xml:space="preserve">
|
||||||
|
<value>E-mail Address</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvAccountsDisplayName.HeaderText" xml:space="preserve">
|
||||||
|
<value>Display Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvAccountsEmail.HeaderText" xml:space="preserve">
|
||||||
|
<value>Email</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPopupAccounts.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>No accounts found.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvUsers.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>The list of users is empty. Click "Add..." button.</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvUsersAccount.HeaderText" xml:space="preserve">
|
||||||
|
<value>Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="headerAddAccounts.Text" xml:space="preserve">
|
||||||
|
<value>Enabled Users</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,95 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSCollectionApps.ascx.cs" Inherits="WebsitePanel.Portal.RDS.UserControls.RDSCollectionApps" %>
|
||||||
|
<%@ Register Src="../../UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<asp:UpdatePanel ID="RDAppsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<asp:Button ID="btnAdd" runat="server" Text="Add..." CssClass="Button2" OnClick="btnAdd_Click" meta:resourcekey="btnAdd" />
|
||||||
|
<asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="Button2" OnClick="btnDelete_Click" meta:resourcekey="btnDelete"/>
|
||||||
|
</div>
|
||||||
|
<asp:GridView ID="gvApps" runat="server" meta:resourcekey="gvApps" AutoGenerateColumns="False"
|
||||||
|
Width="600px" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="Alias">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvAppName" HeaderText="gvAppName">
|
||||||
|
<ItemStyle Width="60%" Wrap="false">
|
||||||
|
</ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
||||||
|
<asp:HiddenField ID="hfFilePath" runat="server" Value='<%# Eval("FilePath") %>'/>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
<asp:Panel ID="AddAppsPanel" runat="server" CssClass="Popup" style="display:none">
|
||||||
|
<table class="Popup-Header" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td class="Popup-HeaderLeft"></td>
|
||||||
|
<td class="Popup-HeaderTitle">
|
||||||
|
<asp:Localize ID="headerAddApps" runat="server" meta:resourcekey="headerAddApps"></asp:Localize>
|
||||||
|
</td>
|
||||||
|
<td class="Popup-HeaderRight"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="Popup-Content">
|
||||||
|
<div class="Popup-Body">
|
||||||
|
<br />
|
||||||
|
<asp:UpdatePanel ID="AddAppsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
</div>
|
||||||
|
<div class="Popup-Scroll">
|
||||||
|
<asp:GridView ID="gvPopupApps" runat="server" meta:resourcekey="gvPopupApps" AutoGenerateColumns="False"
|
||||||
|
Width="100%" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="DisplayName">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvPopupAppName">
|
||||||
|
<ItemStyle Width="70%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
||||||
|
<asp:HiddenField ID="hfFilePathPopup" runat="server" Value='<%# Eval("FilePath") %>'/>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
</div>
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button ID="btnAddSelected" runat="server" CssClass="Button1" meta:resourcekey="btnAddSelected" Text="Add Servers" OnClick="btnAddSelected_Click" />
|
||||||
|
<asp:Button ID="btnCancelAdd" runat="server" CssClass="Button1" meta:resourcekey="btnCancel" Text="Cancel" CausesValidation="false" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<asp:Button ID="btnAddAppsFake" runat="server" style="display:none;" />
|
||||||
|
<ajaxToolkit:ModalPopupExtender ID="AddAppsModal" runat="server"
|
||||||
|
TargetControlID="btnAddAppsFake" PopupControlID="AddAppsPanel"
|
||||||
|
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelAdd" />
|
||||||
|
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
|
@ -0,0 +1,222 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Web.UI;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using System.Linq;
|
||||||
|
using WebsitePanel.Providers.Web;
|
||||||
|
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
|
{
|
||||||
|
public partial class RDSCollectionApps : WebsitePanelControlBase
|
||||||
|
{
|
||||||
|
public const string DirectionString = "DirectionString";
|
||||||
|
|
||||||
|
protected enum SelectedState
|
||||||
|
{
|
||||||
|
All,
|
||||||
|
Selected,
|
||||||
|
Unselected
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetApps(RemoteApplication[] apps)
|
||||||
|
{
|
||||||
|
BindApps(apps, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public RemoteApplication[] GetApps()
|
||||||
|
{
|
||||||
|
return GetGridViewApps(SelectedState.All).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// register javascript
|
||||||
|
if (!Page.ClientScript.IsClientScriptBlockRegistered("SelectAllCheckboxes"))
|
||||||
|
{
|
||||||
|
string script = @" function SelectAllCheckboxes(box)
|
||||||
|
{
|
||||||
|
var state = box.checked;
|
||||||
|
var elm = box.parentElement.parentElement.parentElement.parentElement.getElementsByTagName(""INPUT"");
|
||||||
|
for(i = 0; i < elm.length; i++)
|
||||||
|
if(elm[i].type == ""checkbox"" && elm[i].id != box.id && elm[i].checked != state && !elm[i].disabled)
|
||||||
|
elm[i].checked = state;
|
||||||
|
}";
|
||||||
|
Page.ClientScript.RegisterClientScriptBlock(typeof(RDSCollectionUsers), "SelectAllCheckboxes",
|
||||||
|
script, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// bind all servers
|
||||||
|
BindPopupApps();
|
||||||
|
|
||||||
|
// show modal
|
||||||
|
AddAppsModal.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnDelete_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
List<RemoteApplication> selectedApps = GetGridViewApps(SelectedState.Unselected);
|
||||||
|
|
||||||
|
BindApps(selectedApps.ToArray(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddSelected_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
List<RemoteApplication> selectedApps = GetPopUpGridViewApps();
|
||||||
|
|
||||||
|
BindApps(selectedApps.ToArray(), true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BindPopupApps()
|
||||||
|
{
|
||||||
|
RdsCollection collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
|
||||||
|
StartMenuApp[] apps = ES.Services.RDS.GetAvailableRemoteApplications(PanelRequest.ItemID, collection.Name);
|
||||||
|
|
||||||
|
apps = apps.Where(x => !GetApps().Select(p => p.DisplayName).Contains(x.DisplayName)).ToArray();
|
||||||
|
Array.Sort(apps, CompareAccount);
|
||||||
|
if (Direction == SortDirection.Ascending)
|
||||||
|
{
|
||||||
|
Array.Reverse(apps);
|
||||||
|
Direction = SortDirection.Descending;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Direction = SortDirection.Ascending;
|
||||||
|
|
||||||
|
gvPopupApps.DataSource = apps;
|
||||||
|
gvPopupApps.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BindApps(RemoteApplication[] newApps, bool preserveExisting)
|
||||||
|
{
|
||||||
|
// get binded addresses
|
||||||
|
List<RemoteApplication> apps = new List<RemoteApplication>();
|
||||||
|
if(preserveExisting)
|
||||||
|
apps.AddRange(GetGridViewApps(SelectedState.All));
|
||||||
|
|
||||||
|
// add new servers
|
||||||
|
if (newApps != null)
|
||||||
|
{
|
||||||
|
foreach (RemoteApplication newApp in newApps)
|
||||||
|
{
|
||||||
|
// check if exists
|
||||||
|
bool exists = false;
|
||||||
|
foreach (RemoteApplication app in apps)
|
||||||
|
{
|
||||||
|
if (app.DisplayName == newApp.DisplayName)
|
||||||
|
{
|
||||||
|
exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
apps.Add(newApp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gvApps.DataSource = apps;
|
||||||
|
gvApps.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<RemoteApplication> GetGridViewApps(SelectedState state)
|
||||||
|
{
|
||||||
|
List<RemoteApplication> apps = new List<RemoteApplication>();
|
||||||
|
for (int i = 0; i < gvApps.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gvApps.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
RemoteApplication app = new RemoteApplication();
|
||||||
|
app.Alias = (string)gvApps.DataKeys[i][0];
|
||||||
|
app.DisplayName = ((Literal)row.FindControl("litDisplayName")).Text;
|
||||||
|
app.FilePath = ((HiddenField)row.FindControl("hfFilePath")).Value;
|
||||||
|
|
||||||
|
if (state == SelectedState.All ||
|
||||||
|
(state == SelectedState.Selected && chkSelect.Checked) ||
|
||||||
|
(state == SelectedState.Unselected && !chkSelect.Checked))
|
||||||
|
apps.Add(app);
|
||||||
|
}
|
||||||
|
|
||||||
|
return apps;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<RemoteApplication> GetPopUpGridViewApps()
|
||||||
|
{
|
||||||
|
List<RemoteApplication> apps = new List<RemoteApplication>();
|
||||||
|
for (int i = 0; i < gvPopupApps.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gvPopupApps.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (chkSelect.Checked)
|
||||||
|
{
|
||||||
|
apps.Add(new RemoteApplication
|
||||||
|
{
|
||||||
|
Alias = (string)gvPopupApps.DataKeys[i][0],
|
||||||
|
DisplayName = ((Literal)row.FindControl("litName")).Text,
|
||||||
|
FilePath = ((HiddenField)row.FindControl("hfFilePathPopup")).Value
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return apps;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)
|
||||||
|
{
|
||||||
|
BindPopupApps();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SortDirection Direction
|
||||||
|
{
|
||||||
|
get { return ViewState[DirectionString] == null ? SortDirection.Descending : (SortDirection)ViewState[DirectionString]; }
|
||||||
|
set { ViewState[DirectionString] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static int CompareAccount(StartMenuApp app1, StartMenuApp app2)
|
||||||
|
{
|
||||||
|
return string.Compare(app1.DisplayName, app2.DisplayName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,123 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS.UserControls {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSCollectionApps {
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
/// btnAdd 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 btnAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnDelete 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 btnDelete;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvApps 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.GridView gvApps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAppsPanel 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 AddAppsPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// headerAddApps 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 headerAddApps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAppsUpdatePanel 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 AddAppsUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvPopupApps 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.GridView gvPopupApps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddSelected 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 btnAddSelected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancelAdd 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 btnCancelAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddAppsFake 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 btnAddAppsFake;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAppsModal control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::AjaxControlToolkit.ModalPopupExtender AddAppsModal;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSCollectionServers.ascx.cs" Inherits="WebsitePanel.Portal.RDS.UserControls.RDSCollectionServers" %>
|
||||||
|
<%@ Register Src="../../UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<asp:UpdatePanel ID="UsersUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<asp:Button ID="btnAdd" runat="server" Text="Add..." CssClass="Button2" OnClick="btnAdd_Click" meta:resourcekey="btnAdd" />
|
||||||
|
<asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="Button2" OnClick="btnDelete_Click" meta:resourcekey="btnDelete"/>
|
||||||
|
</div>
|
||||||
|
<asp:GridView ID="gvServers" runat="server" meta:resourcekey="gvServers" AutoGenerateColumns="False"
|
||||||
|
Width="600px" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="Id">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvServerName" HeaderText="gvServerName">
|
||||||
|
<ItemStyle Width="60%" Wrap="false">
|
||||||
|
</ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litFqdName" runat="server" Text='<%# Eval("FqdName") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
<asp:Panel ID="AddServersPanel" runat="server" CssClass="Popup" style="display:none">
|
||||||
|
<table class="Popup-Header" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td class="Popup-HeaderLeft"></td>
|
||||||
|
<td class="Popup-HeaderTitle">
|
||||||
|
<asp:Localize ID="headerAddServers" runat="server" meta:resourcekey="headerAddServers"></asp:Localize>
|
||||||
|
</td>
|
||||||
|
<td class="Popup-HeaderRight"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="Popup-Content">
|
||||||
|
<div class="Popup-Body">
|
||||||
|
<br />
|
||||||
|
<asp:UpdatePanel ID="AddServersUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||||
|
CausesValidation="false" OnClick="cmdSearch_Click"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="Popup-Scroll">
|
||||||
|
<asp:GridView ID="gvPopupServers" runat="server" meta:resourcekey="gvPopupServers" AutoGenerateColumns="False"
|
||||||
|
Width="100%" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="Id">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvPopupServerName">
|
||||||
|
<ItemStyle Width="70%"></ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litName" runat="server" Text='<%# Eval("FqdName") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
</div>
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button ID="btnAddSelected" runat="server" CssClass="Button1" meta:resourcekey="btnAddSelected" Text="Add Servers" OnClick="btnAddSelected_Click" />
|
||||||
|
<asp:Button ID="btnCancelAdd" runat="server" CssClass="Button1" meta:resourcekey="btnCancel" Text="Cancel" CausesValidation="false" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<asp:Button ID="btnAddServersFake" runat="server" style="display:none;" />
|
||||||
|
<ajaxToolkit:ModalPopupExtender ID="AddServersModal" runat="server"
|
||||||
|
TargetControlID="btnAddServersFake" PopupControlID="AddServersPanel"
|
||||||
|
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelAdd" />
|
||||||
|
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
|
@ -0,0 +1,224 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Web.UI;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using System.Linq;
|
||||||
|
using WebsitePanel.Providers.Web;
|
||||||
|
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
|
{
|
||||||
|
public partial class RDSCollectionServers : WebsitePanelControlBase
|
||||||
|
{
|
||||||
|
public const string DirectionString = "DirectionString";
|
||||||
|
|
||||||
|
protected enum SelectedState
|
||||||
|
{
|
||||||
|
All,
|
||||||
|
Selected,
|
||||||
|
Unselected
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetServers(RdsServer[] servers)
|
||||||
|
{
|
||||||
|
BindServers(servers, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//public RdsServer[] GetServers()
|
||||||
|
//{
|
||||||
|
// return GetGridViewServers(SelectedState.All).ToArray();
|
||||||
|
//}
|
||||||
|
|
||||||
|
public List<RdsServer> GetServers()
|
||||||
|
{
|
||||||
|
return GetGridViewServers(SelectedState.All);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// register javascript
|
||||||
|
if (!Page.ClientScript.IsClientScriptBlockRegistered("SelectAllCheckboxes"))
|
||||||
|
{
|
||||||
|
string script = @" function SelectAllCheckboxes(box)
|
||||||
|
{
|
||||||
|
var state = box.checked;
|
||||||
|
var elm = box.parentElement.parentElement.parentElement.parentElement.getElementsByTagName(""INPUT"");
|
||||||
|
for(i = 0; i < elm.length; i++)
|
||||||
|
if(elm[i].type == ""checkbox"" && elm[i].id != box.id && elm[i].checked != state && !elm[i].disabled)
|
||||||
|
elm[i].checked = state;
|
||||||
|
}";
|
||||||
|
Page.ClientScript.RegisterClientScriptBlock(typeof(RDSCollectionUsers), "SelectAllCheckboxes",
|
||||||
|
script, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// bind all servers
|
||||||
|
BindPopupServers();
|
||||||
|
|
||||||
|
// show modal
|
||||||
|
AddServersModal.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnDelete_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
List<RdsServer> selectedServers = GetGridViewServers(SelectedState.Unselected);
|
||||||
|
|
||||||
|
BindServers(selectedServers.ToArray(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddSelected_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
List<RdsServer> selectedServers = GetPopUpGridViewServers();
|
||||||
|
|
||||||
|
BindServers(selectedServers.ToArray(), true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BindPopupServers()
|
||||||
|
{
|
||||||
|
RdsServer[] servers = ES.Services.RDS.GetOrganizationFreeRdsServersPaged(PanelRequest.ItemID, "FqdName", txtSearchValue.Text, null, 0, 1000).Servers;
|
||||||
|
|
||||||
|
servers = servers.Where(x => !GetServers().Select(p => p.Id).Contains(x.Id)).ToArray();
|
||||||
|
Array.Sort(servers, CompareAccount);
|
||||||
|
if (Direction == SortDirection.Ascending)
|
||||||
|
{
|
||||||
|
Array.Reverse(servers);
|
||||||
|
Direction = SortDirection.Descending;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Direction = SortDirection.Ascending;
|
||||||
|
|
||||||
|
gvPopupServers.DataSource = servers;
|
||||||
|
gvPopupServers.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BindServers(RdsServer[] newServers, bool preserveExisting)
|
||||||
|
{
|
||||||
|
// get binded addresses
|
||||||
|
List<RdsServer> servers = new List<RdsServer>();
|
||||||
|
if(preserveExisting)
|
||||||
|
servers.AddRange(GetGridViewServers(SelectedState.All));
|
||||||
|
|
||||||
|
// add new servers
|
||||||
|
if (newServers != null)
|
||||||
|
{
|
||||||
|
foreach (RdsServer newServer in newServers)
|
||||||
|
{
|
||||||
|
// check if exists
|
||||||
|
bool exists = false;
|
||||||
|
foreach (RdsServer server in servers)
|
||||||
|
{
|
||||||
|
if (server.Id == newServer.Id)
|
||||||
|
{
|
||||||
|
exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
servers.Add(newServer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gvServers.DataSource = servers;
|
||||||
|
gvServers.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<RdsServer> GetGridViewServers(SelectedState state)
|
||||||
|
{
|
||||||
|
List<RdsServer> servers = new List<RdsServer>();
|
||||||
|
for (int i = 0; i < gvServers.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gvServers.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
RdsServer server = new RdsServer();
|
||||||
|
server.Id = (int)gvServers.DataKeys[i][0];
|
||||||
|
server.FqdName = ((Literal)row.FindControl("litFqdName")).Text;
|
||||||
|
|
||||||
|
if (state == SelectedState.All ||
|
||||||
|
(state == SelectedState.Selected && chkSelect.Checked) ||
|
||||||
|
(state == SelectedState.Unselected && !chkSelect.Checked))
|
||||||
|
servers.Add(server);
|
||||||
|
}
|
||||||
|
|
||||||
|
return servers;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<RdsServer> GetPopUpGridViewServers()
|
||||||
|
{
|
||||||
|
List<RdsServer> servers = new List<RdsServer>();
|
||||||
|
for (int i = 0; i < gvPopupServers.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gvPopupServers.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (chkSelect.Checked)
|
||||||
|
{
|
||||||
|
servers.Add(new RdsServer
|
||||||
|
{
|
||||||
|
Id = (int)gvPopupServers.DataKeys[i][0],
|
||||||
|
FqdName = ((Literal)row.FindControl("litName")).Text
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return servers;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)
|
||||||
|
{
|
||||||
|
BindPopupServers();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SortDirection Direction
|
||||||
|
{
|
||||||
|
get { return ViewState[DirectionString] == null ? SortDirection.Descending : (SortDirection)ViewState[DirectionString]; }
|
||||||
|
set { ViewState[DirectionString] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static int CompareAccount(RdsServer server1, RdsServer server2)
|
||||||
|
{
|
||||||
|
return string.Compare(server1.FqdName, server2.FqdName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,150 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS.UserControls {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSCollectionServers {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UsersUpdatePanel 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 UsersUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAdd 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 btnAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnDelete 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 btnDelete;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvServers 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.GridView gvServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddServersPanel 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 AddServersPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// headerAddServers 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 headerAddServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddServersUpdatePanel 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 AddServersUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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.TextBox txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvPopupServers 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.GridView gvPopupServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddSelected 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 btnAddSelected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancelAdd 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 btnCancelAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddServersFake 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 btnAddServersFake;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddServersModal control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::AjaxControlToolkit.ModalPopupExtender AddServersModal;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSCollectionUsers.ascx.cs" Inherits="WebsitePanel.Portal.RDS.UserControls.RDSCollectionUsers" %>
|
||||||
|
<%@ Register Src="../../UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<asp:UpdatePanel ID="UsersUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<asp:Button ID="btnAdd" runat="server" Text="Add..." CssClass="Button2" OnClick="btnAdd_Click" meta:resourcekey="btnAdd" />
|
||||||
|
<asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="Button2" OnClick="btnDelete_Click" meta:resourcekey="btnDelete"/>
|
||||||
|
</div>
|
||||||
|
<asp:GridView ID="gvUsers" runat="server" meta:resourcekey="gvUsers" AutoGenerateColumns="False"
|
||||||
|
Width="600px" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="AccountName">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvUsersAccount" HeaderText="gvUsersAccount">
|
||||||
|
<ItemStyle Width="60%" Wrap="false">
|
||||||
|
</ItemStyle>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litAccount" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
<asp:Panel ID="AddAccountsPanel" runat="server" CssClass="Popup" style="display:none">
|
||||||
|
<table class="Popup-Header" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td class="Popup-HeaderLeft"></td>
|
||||||
|
<td class="Popup-HeaderTitle">
|
||||||
|
<asp:Localize ID="headerAddAccounts" runat="server" meta:resourcekey="headerAddAccounts"></asp:Localize>
|
||||||
|
</td>
|
||||||
|
<td class="Popup-HeaderRight"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="Popup-Content">
|
||||||
|
<div class="Popup-Body">
|
||||||
|
<br />
|
||||||
|
<asp:UpdatePanel ID="AddAccountsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
|
||||||
|
<ContentTemplate>
|
||||||
|
|
||||||
|
<div class="FormButtonsBarClean">
|
||||||
|
<div class="FormButtonsBarCleanRight">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:DropDownList ID="ddlSearchColumn" runat="server" CssClass="NormalTextBox">
|
||||||
|
<asp:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</asp:ListItem>
|
||||||
|
<asp:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem>
|
||||||
|
</asp:DropDownList><asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||||
|
CausesValidation="false" OnClick="cmdSearch_Click"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="Popup-Scroll">
|
||||||
|
<asp:GridView ID="gvPopupAccounts" runat="server" meta:resourcekey="gvPopupAccounts" AutoGenerateColumns="False"
|
||||||
|
Width="100%" CssSelectorClass="NormalGridView"
|
||||||
|
DataKeyNames="AccountName">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<HeaderTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" />
|
||||||
|
</HeaderTemplate>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:CheckBox ID="chkSelect" runat="server" />
|
||||||
|
<asp:Literal ID="litAccountType" runat="server" Visible="false" Text='<%# Eval("AccountType") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
<ItemStyle Width="10px" />
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField meta:resourcekey="gvAccountsDisplayName">
|
||||||
|
<ItemStyle Width="50%"></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>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Literal ID="litPrimaryEmailAddress" runat="server" Text='<%# Eval("PrimaryEmailAddress") %>'></asp:Literal>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
</div>
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormFooter">
|
||||||
|
<asp:Button ID="btnAddSelected" runat="server" CssClass="Button1" meta:resourcekey="btnAddSelected" Text="Add Accounts" OnClick="btnAddSelected_Click" />
|
||||||
|
<asp:Button ID="btnCancelAdd" runat="server" CssClass="Button1" meta:resourcekey="btnCancel" Text="Cancel" CausesValidation="false" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<asp:Button ID="btnAddAccountsFake" runat="server" style="display:none;" />
|
||||||
|
<ajaxToolkit:ModalPopupExtender ID="AddAccountsModal" runat="server"
|
||||||
|
TargetControlID="btnAddAccountsFake" PopupControlID="AddAccountsPanel"
|
||||||
|
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelAdd" />
|
||||||
|
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
|
@ -0,0 +1,247 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Web.UI;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using System.Linq;
|
||||||
|
using WebsitePanel.Providers.Web;
|
||||||
|
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
|
{
|
||||||
|
public partial class RDSCollectionUsers : WebsitePanelControlBase
|
||||||
|
{
|
||||||
|
public const string DirectionString = "DirectionString";
|
||||||
|
|
||||||
|
protected enum SelectedState
|
||||||
|
{
|
||||||
|
All,
|
||||||
|
Selected,
|
||||||
|
Unselected
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetUsers(OrganizationUser[] users)
|
||||||
|
{
|
||||||
|
BindAccounts(users, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizationUser[] GetUsers()
|
||||||
|
{
|
||||||
|
return GetGridViewUsers(SelectedState.All).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// register javascript
|
||||||
|
if (!Page.ClientScript.IsClientScriptBlockRegistered("SelectAllCheckboxes"))
|
||||||
|
{
|
||||||
|
string script = @" function SelectAllCheckboxes(box)
|
||||||
|
{
|
||||||
|
var state = box.checked;
|
||||||
|
var elm = box.parentElement.parentElement.parentElement.parentElement.getElementsByTagName(""INPUT"");
|
||||||
|
for(i = 0; i < elm.length; i++)
|
||||||
|
if(elm[i].type == ""checkbox"" && elm[i].id != box.id && elm[i].checked != state && !elm[i].disabled)
|
||||||
|
elm[i].checked = state;
|
||||||
|
}";
|
||||||
|
Page.ClientScript.RegisterClientScriptBlock(typeof(RDSCollectionUsers), "SelectAllCheckboxes",
|
||||||
|
script, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
if (cntx.Quotas.ContainsKey(Quotas.RDS_USERS))
|
||||||
|
{
|
||||||
|
int rdsUsersCount = ES.Services.RDS.GetOrganizationRdsUsersCount(PanelRequest.ItemID);
|
||||||
|
btnAdd.Enabled = (!(cntx.Quotas[Quotas.RDS_USERS].QuotaAllocatedValue <= rdsUsersCount) || (cntx.Quotas[Quotas.RDS_USERS].QuotaAllocatedValue == -1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// bind all accounts
|
||||||
|
BindPopupAccounts();
|
||||||
|
|
||||||
|
// show modal
|
||||||
|
AddAccountsModal.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnDelete_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
List<OrganizationUser> selectedAccounts = GetGridViewUsers(SelectedState.Unselected);
|
||||||
|
|
||||||
|
BindAccounts(selectedAccounts.ToArray(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddSelected_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
List<OrganizationUser> selectedAccounts = GetGridViewAccounts();
|
||||||
|
|
||||||
|
BindAccounts(selectedAccounts.ToArray(), true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetAccountImage(int accountTypeId)
|
||||||
|
{
|
||||||
|
string imgName = string.Empty;
|
||||||
|
|
||||||
|
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||||
|
switch (accountType)
|
||||||
|
{
|
||||||
|
case ExchangeAccountType.Room:
|
||||||
|
imgName = "room_16.gif";
|
||||||
|
break;
|
||||||
|
case ExchangeAccountType.Equipment:
|
||||||
|
imgName = "equipment_16.gif";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
imgName = "admin_16.png";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetThemedImage("Exchange/" + imgName);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BindPopupAccounts()
|
||||||
|
{
|
||||||
|
OrganizationUser[] accounts = ES.Services.Organizations.GetOrganizationUsersPaged(PanelRequest.ItemID, null, null, null, 0, Int32.MaxValue).PageUsers;
|
||||||
|
|
||||||
|
accounts = accounts.Where(x => !GetUsers().Select(p => p.AccountName).Contains(x.AccountName)).ToArray();
|
||||||
|
Array.Sort(accounts, CompareAccount);
|
||||||
|
if (Direction == SortDirection.Ascending)
|
||||||
|
{
|
||||||
|
Array.Reverse(accounts);
|
||||||
|
Direction = SortDirection.Descending;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Direction = SortDirection.Ascending;
|
||||||
|
|
||||||
|
gvPopupAccounts.DataSource = accounts;
|
||||||
|
gvPopupAccounts.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void BindAccounts(OrganizationUser[] newUsers, bool preserveExisting)
|
||||||
|
{
|
||||||
|
// get binded addresses
|
||||||
|
List<OrganizationUser> users = new List<OrganizationUser>();
|
||||||
|
if(preserveExisting)
|
||||||
|
users.AddRange(GetGridViewUsers(SelectedState.All));
|
||||||
|
|
||||||
|
// add new accounts
|
||||||
|
if (newUsers != null)
|
||||||
|
{
|
||||||
|
foreach (OrganizationUser newUser in newUsers)
|
||||||
|
{
|
||||||
|
// check if exists
|
||||||
|
bool exists = false;
|
||||||
|
foreach (OrganizationUser user in users)
|
||||||
|
{
|
||||||
|
if (String.Compare(user.AccountName, newUser.AccountName, true) == 0)
|
||||||
|
{
|
||||||
|
exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
users.Add(newUser);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gvUsers.DataSource = users;
|
||||||
|
gvUsers.DataBind();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<OrganizationUser> GetGridViewUsers(SelectedState state)
|
||||||
|
{
|
||||||
|
List<OrganizationUser> users = new List<OrganizationUser>();
|
||||||
|
for (int i = 0; i < gvUsers.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gvUsers.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
OrganizationUser user = new OrganizationUser();
|
||||||
|
user.AccountName = (string)gvUsers.DataKeys[i][0];
|
||||||
|
user.DisplayName = ((Literal)row.FindControl("litAccount")).Text;
|
||||||
|
|
||||||
|
if (state == SelectedState.All ||
|
||||||
|
(state == SelectedState.Selected && chkSelect.Checked) ||
|
||||||
|
(state == SelectedState.Unselected && !chkSelect.Checked))
|
||||||
|
users.Add(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
return users;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<OrganizationUser> GetGridViewAccounts()
|
||||||
|
{
|
||||||
|
List<OrganizationUser> accounts = new List<OrganizationUser>();
|
||||||
|
for (int i = 0; i < gvPopupAccounts.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
GridViewRow row = gvPopupAccounts.Rows[i];
|
||||||
|
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
|
||||||
|
if (chkSelect == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (chkSelect.Checked)
|
||||||
|
{
|
||||||
|
accounts.Add(new OrganizationUser
|
||||||
|
{
|
||||||
|
AccountName = (string)gvPopupAccounts.DataKeys[i][0],
|
||||||
|
DisplayName = ((Literal)row.FindControl("litDisplayName")).Text
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return accounts;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)
|
||||||
|
{
|
||||||
|
BindPopupAccounts();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SortDirection Direction
|
||||||
|
{
|
||||||
|
get { return ViewState[DirectionString] == null ? SortDirection.Descending : (SortDirection)ViewState[DirectionString]; }
|
||||||
|
set { ViewState[DirectionString] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static int CompareAccount(OrganizationUser user1, OrganizationUser user2)
|
||||||
|
{
|
||||||
|
return string.Compare(user1.DisplayName, user2.DisplayName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,159 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.RDS.UserControls {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSCollectionUsers {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UsersUpdatePanel 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 UsersUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAdd 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 btnAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnDelete 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 btnDelete;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvUsers 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.GridView gvUsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAccountsPanel 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 AddAccountsPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// headerAddAccounts 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 headerAddAccounts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAccountsUpdatePanel 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 AddAccountsUpdatePanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlSearchColumn 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.DropDownList ddlSearchColumn;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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.TextBox txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvPopupAccounts 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.GridView gvPopupAccounts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddSelected 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 btnAddSelected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancelAdd 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 btnCancelAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddAccountsFake 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 btnAddAccountsFake;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddAccountsModal control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::AjaxControlToolkit.ModalPopupExtender AddAccountsModal;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSServers.ascx.cs" Inherits="WebsitePanel.Portal.RDSServers" %>
|
||||||
|
<%@ Import Namespace="WebsitePanel.Portal" %>
|
||||||
|
<%@ Register Src="UserControls/Comments.ascx" TagName="Comments" TagPrefix="uc4" %>
|
||||||
|
<%@ Register Src="UserControls/SearchBox.ascx" TagName="SearchBox" TagPrefix="uc1" %>
|
||||||
|
<%@ Register Src="UserControls/UserDetails.ascx" TagName="UserDetails" TagPrefix="uc2" %>
|
||||||
|
<%@ Register Src="UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
<asp:UpdatePanel runat="server" ID="updatePanelUsers">
|
||||||
|
<ContentTemplate>
|
||||||
|
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<div class="FormButtonsBar">
|
||||||
|
<div class="Left">
|
||||||
|
<asp:Button ID="btnAddRDSServer" runat="server"
|
||||||
|
meta:resourcekey="btnAddRDSServer" Text="Add RDS Server" CssClass="Button3"
|
||||||
|
OnClick="btnAddRDSServer_Click" />
|
||||||
|
</div>
|
||||||
|
<div class="Right">
|
||||||
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:Localize ID="locSearch" runat="server" meta:resourcekey="locSearch" Visible="false"></asp:Localize>
|
||||||
|
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
|
||||||
|
onselectedindexchanged="ddlPageSize_SelectedIndexChanged">
|
||||||
|
<asp:ListItem>10</asp:ListItem>
|
||||||
|
<asp:ListItem Selected="True">20</asp:ListItem>
|
||||||
|
<asp:ListItem>50</asp:ListItem>
|
||||||
|
<asp:ListItem>100</asp:ListItem>
|
||||||
|
</asp:DropDownList>
|
||||||
|
|
||||||
|
<asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100">
|
||||||
|
</asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton" CausesValidation="false"/>
|
||||||
|
</asp:Panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<asp:GridView id="gvRDSServers" runat="server" AutoGenerateColumns="False"
|
||||||
|
AllowPaging="True" AllowSorting="True"
|
||||||
|
CssSelectorClass="NormalGridView"
|
||||||
|
OnRowCommand="gvRDSServers_RowCommand"
|
||||||
|
DataSourceID="odsRDSServersPaged" EnableViewState="False"
|
||||||
|
EmptyDataText="gvRDSServers">
|
||||||
|
<Columns>
|
||||||
|
<asp:BoundField DataField="Name" HtmlEncode="true" SortExpression="Name" HeaderText="Server name">
|
||||||
|
<HeaderStyle Wrap="false" />
|
||||||
|
<ItemStyle Wrap="False" Width="35%"/>
|
||||||
|
</asp:BoundField>
|
||||||
|
<asp:BoundField DataField="Address" HeaderText="IP Address"><ItemStyle Width="20%"/></asp:BoundField>
|
||||||
|
<asp:BoundField DataField="ItemName" HeaderText="Organization"><ItemStyle Width="35%"/></asp:BoundField>
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:LinkButton ID="lnkRemove" runat="server" Text="Remove" Visible='<%# Eval("ItemId") == null %>'
|
||||||
|
CommandName="DeleteItem" CommandArgument='<%# Eval("Id") %>'
|
||||||
|
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Are you sure you want to delete selected rds server?')"></asp:LinkButton>
|
||||||
|
<asp:Label ID="lbRemove" Text="Remove" runat="server" Visible='<%# Eval("ItemId") != null %>'></asp:Label>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
<asp:ObjectDataSource ID="odsRDSServersPaged" runat="server" EnablePaging="True" SelectCountMethod="GetRDSServersPagedCount"
|
||||||
|
SelectMethod="GetRDSServersPaged" SortParameterName="sortColumn" TypeName="WebsitePanel.Portal.RDSHelper" OnSelected="odsRDSServersPaged_Selected">
|
||||||
|
<SelectParameters>
|
||||||
|
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
||||||
|
</SelectParameters>
|
||||||
|
</asp:ObjectDataSource>
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
|
@ -0,0 +1,111 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Web;
|
||||||
|
using System.Web.Security;
|
||||||
|
using System.Web.UI;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using System.Web.UI.WebControls.WebParts;
|
||||||
|
using System.Web.UI.HtmlControls;
|
||||||
|
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal
|
||||||
|
{
|
||||||
|
public partial class RDSServers : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
gvRDSServers.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
|
||||||
|
gvRDSServers.Sort("Name", System.Web.UI.WebControls.SortDirection.Ascending);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void odsRDSServersPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Exception != null)
|
||||||
|
{
|
||||||
|
ProcessException(e.Exception.InnerException);
|
||||||
|
this.DisableControls = true;
|
||||||
|
e.ExceptionHandled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAddRDSServer_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Response.Redirect(EditUrl("add_rdsserver"));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void gvRDSServers_RowCommand(object sender, GridViewCommandEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.CommandName == "DeleteItem")
|
||||||
|
{
|
||||||
|
// delete rds server
|
||||||
|
int rdsServerId;
|
||||||
|
bool hasValue = int.TryParse(e.CommandArgument.ToString(), out rdsServerId);
|
||||||
|
|
||||||
|
ResultObject result = new ResultObject();
|
||||||
|
result.IsSuccess = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (hasValue)
|
||||||
|
{
|
||||||
|
result = ES.Services.RDS.RemoveRdsServer(rdsServerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
messageBox.ShowMessage(result, "REMOTE_DESKTOP_SERVICES_REMOVE_RDSSERVER", "RDS");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gvRDSServers.DataBind();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ShowErrorMessage("REMOTE_DESKTOP_SERVICES_REMOVE_RDSSERVER", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
gvRDSServers.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
|
||||||
|
|
||||||
|
gvRDSServers.DataBind();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
105
WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDSServers.ascx.designer.cs
generated
Normal file
105
WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDSServers.ascx.designer.cs
generated
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSServers {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// updatePanelUsers 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 updatePanelUsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddRDSServer 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 btnAddRDSServer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SearchPanel 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 SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locSearch 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 locSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlPageSize 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.DropDownList ddlPageSize;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSearchValue 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.TextBox txtSearchValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// cmdSearch 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.ImageButton cmdSearch;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvRDSServers 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.GridView gvRDSServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// odsRDSServersPaged 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.ObjectDataSource odsRDSServersPaged;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSServersAddserver.ascx.cs" Inherits="WebsitePanel.Portal.RDSServersAddserver" %>
|
||||||
|
<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||||
|
|
||||||
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
<div class="FormBody">
|
||||||
|
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||||
|
|
||||||
|
<div class="FormContentRDSConf">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150"><asp:Localize ID="locServerName" runat="server" meta:resourcekey="locServerName" Text="Server Full Name:"></asp:Localize></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtServerName" runat="server" CssClass="NormalTextBox" Width="145px"></asp:TextBox>
|
||||||
|
<asp:RequiredFieldValidator ID="valServerName" runat="server" ErrorMessage="*" ControlToValidate="txtServerName"></asp:RequiredFieldValidator>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150"><asp:Localize ID="locServerComments" runat="server" meta:resourcekey="locServerComments" Text="Server Comments:"></asp:Localize></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtServerComments" runat="server" CssClass="NormalTextBox" Width="145px"></asp:TextBox>
|
||||||
|
<asp:RequiredFieldValidator ID="valServerComments" runat="server" ErrorMessage="*" ControlToValidate="txtServerComments"></asp:RequiredFieldValidator>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="FormFooterRDSConf">
|
||||||
|
<asp:Button ID="btnAdd" runat="server" meta:resourcekey="btnAdd" Text="Add Server" CssClass="Button2"
|
||||||
|
OnClick="btnAdd_Click" OnClientClick="ShowProgressDialog('Adding server...');" />
|
||||||
|
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" Text="Cancel"
|
||||||
|
CssClass="Button1" OnClick="btnCancel_Click" CausesValidation="False" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,83 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
using WebsitePanel.Providers.OS;
|
||||||
|
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal
|
||||||
|
{
|
||||||
|
public partial class RDSServersAddserver : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!Page.IsValid)
|
||||||
|
return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
RdsServer rdsServer = new RdsServer();
|
||||||
|
|
||||||
|
rdsServer.FqdName = txtServerName.Text;
|
||||||
|
rdsServer.Description = txtServerComments.Text;
|
||||||
|
|
||||||
|
ResultObject result = ES.Services.RDS.AddRdsServer(rdsServer);
|
||||||
|
|
||||||
|
if (!result.IsSuccess && result.ErrorCodes.Count > 0)
|
||||||
|
{
|
||||||
|
messageBox.ShowMessage(result, "", "");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RedirectToBrowsePage();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage("", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnCancel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
RedirectToBrowsePage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class RDSServersAddserver {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// messageBox 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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locServerName 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 locServerName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtServerName 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.TextBox txtServerName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// valServerName 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 valServerName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locServerComments 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 locServerComments;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtServerComments 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.TextBox txtServerComments;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// valServerComments 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 valServerComments;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAdd 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 btnAdd;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancel 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 btnCancel;
|
||||||
|
}
|
||||||
|
}
|
|
@ -115,6 +115,10 @@ namespace WebsitePanel.Portal.UserControls
|
||||||
//EnterpriseStorage Menu
|
//EnterpriseStorage Menu
|
||||||
if (Cntx.Groups.ContainsKey(ResourceGroups.EnterpriseStorage))
|
if (Cntx.Groups.ContainsKey(ResourceGroups.EnterpriseStorage))
|
||||||
PrepareEnterpriseStorageMenuRoot(items);
|
PrepareEnterpriseStorageMenuRoot(items);
|
||||||
|
|
||||||
|
//Remote Desktop Services Menu
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.RDS))
|
||||||
|
PrepareRDSMenuRoot(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PrepareOrganizationMenuRoot(MenuItemCollection items)
|
private void PrepareOrganizationMenuRoot(MenuItemCollection items)
|
||||||
|
@ -477,6 +481,35 @@ namespace WebsitePanel.Portal.UserControls
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void PrepareRDSMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareRDSMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.RDSGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareRDSMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareRDSMenu(MenuItemCollection rdsItems)
|
||||||
|
{
|
||||||
|
rdsItems.Add(CreateMenuItem("RDSCollections", "rds_collections", null));
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.RDS_SERVERS, Cntx) && (PanelSecurity.LoggedUser.Role != UserRole.User))
|
||||||
|
rdsItems.Add(CreateMenuItem("RDSServers", "rds_servers", null));
|
||||||
|
}
|
||||||
|
|
||||||
private MenuItem CreateMenuItem(string text, string key)
|
private MenuItem CreateMenuItem(string text, string key)
|
||||||
{
|
{
|
||||||
return CreateMenuItem(text, key, null);
|
return CreateMenuItem(text, key, null);
|
||||||
|
|
|
@ -169,6 +169,7 @@
|
||||||
<Compile Include="Code\Framework\Utils.cs" />
|
<Compile Include="Code\Framework\Utils.cs" />
|
||||||
<Compile Include="Code\Helpers\AuditLogHelper.cs" />
|
<Compile Include="Code\Helpers\AuditLogHelper.cs" />
|
||||||
<Compile Include="Code\Helpers\BlackBerryHelper.cs" />
|
<Compile Include="Code\Helpers\BlackBerryHelper.cs" />
|
||||||
|
<Compile Include="Code\Helpers\RDSHelper.cs" />
|
||||||
<Compile Include="Code\Helpers\EnterpriseStorageHelper.cs" />
|
<Compile Include="Code\Helpers\EnterpriseStorageHelper.cs" />
|
||||||
<Compile Include="Code\Helpers\LyncHelper.cs" />
|
<Compile Include="Code\Helpers\LyncHelper.cs" />
|
||||||
<Compile Include="Code\Helpers\VirtualMachinesForPCHelper.cs" />
|
<Compile Include="Code\Helpers\VirtualMachinesForPCHelper.cs" />
|
||||||
|
@ -210,6 +211,83 @@
|
||||||
<Compile Include="Code\ReportingServices\IResourceStorage.cs" />
|
<Compile Include="Code\ReportingServices\IResourceStorage.cs" />
|
||||||
<Compile Include="Code\ReportingServices\ReportingServicesUtils.cs" />
|
<Compile Include="Code\ReportingServices\ReportingServicesUtils.cs" />
|
||||||
<Compile Include="Code\UserControls\Tab.cs" />
|
<Compile Include="Code\UserControls\Tab.cs" />
|
||||||
|
<Compile Include="RDSServersAddserver.ascx.cs">
|
||||||
|
<DependentUpon>RDSServersAddserver.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDSServersAddserver.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSServersAddserver.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDSServers.ascx.cs">
|
||||||
|
<DependentUpon>RDSServers.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDSServers.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSServers.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\AssignedRDSServers.ascx.cs">
|
||||||
|
<DependentUpon>AssignedRDSServers.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\AssignedRDSServers.ascx.designer.cs">
|
||||||
|
<DependentUpon>AssignedRDSServers.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\AddRDSServer.ascx.cs">
|
||||||
|
<DependentUpon>AddRDSServer.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\AddRDSServer.ascx.designer.cs">
|
||||||
|
<DependentUpon>AddRDSServer.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSEditCollectionApps.ascx.cs">
|
||||||
|
<DependentUpon>RDSEditCollectionApps.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSEditCollectionApps.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSEditCollectionApps.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSEditCollectionUsers.ascx.cs">
|
||||||
|
<DependentUpon>RDSEditCollectionUsers.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSEditCollectionUsers.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSEditCollectionUsers.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSCreateCollection.ascx.cs">
|
||||||
|
<DependentUpon>RDSCreateCollection.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSCreateCollection.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSCreateCollection.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSCollections.ascx.cs">
|
||||||
|
<DependentUpon>RDSCollections.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\RDSCollections.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSCollections.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\UserControls\RDSCollectionApps.ascx.cs">
|
||||||
|
<DependentUpon>RDSCollectionApps.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\UserControls\RDSCollectionApps.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSCollectionApps.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\UserControls\RDSCollectionServers.ascx.cs">
|
||||||
|
<DependentUpon>RDSCollectionServers.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\UserControls\RDSCollectionServers.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSCollectionServers.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\UserControls\RDSCollectionUsers.ascx.cs">
|
||||||
|
<DependentUpon>RDSCollectionUsers.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="RDS\UserControls\RDSCollectionUsers.ascx.designer.cs">
|
||||||
|
<DependentUpon>RDSCollectionUsers.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="SettingsServiceLevels.ascx.cs">
|
<Compile Include="SettingsServiceLevels.ascx.cs">
|
||||||
<DependentUpon>SettingsServiceLevels.ascx</DependentUpon>
|
<DependentUpon>SettingsServiceLevels.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -4145,6 +4223,17 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="ApplyEnableHardQuotaFeature.ascx" />
|
<Content Include="ApplyEnableHardQuotaFeature.ascx" />
|
||||||
|
<Content Include="RDSServersAddserver.ascx" />
|
||||||
|
<Content Include="RDSServers.ascx" />
|
||||||
|
<Content Include="RDS\AssignedRDSServers.ascx" />
|
||||||
|
<Content Include="RDS\AddRDSServer.ascx" />
|
||||||
|
<Content Include="RDS\RDSEditCollectionApps.ascx" />
|
||||||
|
<Content Include="RDS\RDSEditCollectionUsers.ascx" />
|
||||||
|
<Content Include="RDS\RDSCreateCollection.ascx" />
|
||||||
|
<Content Include="RDS\RDSCollections.ascx" />
|
||||||
|
<Content Include="RDS\UserControls\RDSCollectionApps.ascx" />
|
||||||
|
<Content Include="RDS\UserControls\RDSCollectionServers.ascx" />
|
||||||
|
<Content Include="RDS\UserControls\RDSCollectionUsers.ascx" />
|
||||||
<Content Include="SettingsServiceLevels.ascx" />
|
<Content Include="SettingsServiceLevels.ascx" />
|
||||||
<Content Include="CRM\CRMStorageSettings.ascx" />
|
<Content Include="CRM\CRMStorageSettings.ascx" />
|
||||||
<Content Include="ExchangeServer\EnterpriseStorageCreateDriveMap.ascx" />
|
<Content Include="ExchangeServer\EnterpriseStorageCreateDriveMap.ascx" />
|
||||||
|
@ -5430,6 +5519,22 @@
|
||||||
<Content Include="ProviderControls\App_LocalResources\IceWarp_EditList.ascx.resx" />
|
<Content Include="ProviderControls\App_LocalResources\IceWarp_EditList.ascx.resx" />
|
||||||
<Content Include="ProviderControls\App_LocalResources\IceWarp_Settings.ascx.resx" />
|
<Content Include="ProviderControls\App_LocalResources\IceWarp_Settings.ascx.resx" />
|
||||||
<Content Include="App_LocalResources\SettingsServiceLevels.ascx.resx" />
|
<Content Include="App_LocalResources\SettingsServiceLevels.ascx.resx" />
|
||||||
|
<Content Include="App_LocalResources\RDSServers.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="RDS\App_LocalResources\AssignedRDSServers.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="RDS\App_LocalResources\RDSCollections.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="RDS\App_LocalResources\AddRDSServer.ascx.resx" />
|
||||||
|
<Content Include="RDS\App_LocalResources\RDSCreateCollection.ascx.resx" />
|
||||||
|
<Content Include="RDS\App_LocalResources\RDSEditCollectionUsers.ascx.resx" />
|
||||||
|
<Content Include="RDS\App_LocalResources\RDSEditCollectionApps.ascx.resx" />
|
||||||
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionUsers.ascx.resx" />
|
||||||
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionServers.ascx.resx" />
|
||||||
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionApps.ascx.resx" />
|
||||||
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue