Added phone numbers in the hosted organization. part 1.

This commit is contained in:
dev_amdtel 2013-11-07 02:23:32 +04:00
parent 4e42e69927
commit a735808a04
20 changed files with 1290 additions and 181 deletions

View file

@ -277,7 +277,6 @@
<ModuleDefinition id="LyncPhoneNumbers"> <ModuleDefinition id="LyncPhoneNumbers">
<Controls> <Controls>
<Control key="" src="WebsitePanel/LyncPhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" /> <Control key="" src="WebsitePanel/LyncPhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
<Control key="allocate_phonenumbers" src="WebsitePanel/LyncAllocatePhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
</Controls> </Controls>
</ModuleDefinition> </ModuleDefinition>
<ModuleDefinition id="FtpAccounts"> <ModuleDefinition id="FtpAccounts">
@ -554,6 +553,8 @@
<Control key="create_enterprisestorage_folder" src="WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx" title="Create New ES Folder" type="View" /> <Control key="create_enterprisestorage_folder" src="WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx" title="Create New ES Folder" type="View" />
<Control key="enterprisestorage_folder_settings" src="WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx" title="Edit ES Folder" type="View" /> <Control key="enterprisestorage_folder_settings" src="WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx" title="Edit ES Folder" 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" />
</Controls> </Controls>
</ModuleDefinition> </ModuleDefinition>

View file

@ -210,4 +210,7 @@
<data name="Text.EnterpriseStorageFolders" xml:space="preserve"> <data name="Text.EnterpriseStorageFolders" xml:space="preserve">
<value>Folders</value> <value>Folders</value>
</data> </data>
<data name="Text.LyncPhoneNumbers" xml:space="preserve">
<value>Phone Numbers</value>
</data>
</root> </root>

View file

@ -246,6 +246,9 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
if (Utils.CheckQouta(Quotas.LYNC_FEDERATION, cntx)) if (Utils.CheckQouta(Quotas.LYNC_FEDERATION, cntx))
lyncGroup.MenuItems.Add(CreateMenuItem("LyncFederationDomains", "lync_federationdomains")); lyncGroup.MenuItems.Add(CreateMenuItem("LyncFederationDomains", "lync_federationdomains"));
if (Utils.CheckQouta(Quotas.LYNC_PHONE, cntx))
lyncGroup.MenuItems.Add(CreateMenuItem("LyncPhoneNumbers", "lync_phonenumbers"));
groups.Add(lyncGroup); groups.Add(lyncGroup);
} }

View file

@ -135,4 +135,7 @@
<data name="DomainRequiredValidator.Text" xml:space="preserve"> <data name="DomainRequiredValidator.Text" xml:space="preserve">
<value>*</value> <value>*</value>
</data> </data>
<data name="Text.PageName" xml:space="preserve">
<value>Lync Add Federation Domain</value>
</data>
</root> </root>

View file

@ -0,0 +1,129 @@
<?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="locIPQuota.Text" xml:space="preserve">
<value>Number of Phone Numbers:</value>
</data>
<data name="secQuotas.Text" xml:space="preserve">
<value>Quotas</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Phone Numbers</value>
</data>
</root>

View file

@ -0,0 +1,129 @@
<?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="locIPQuota.Text" xml:space="preserve">
<value>Number of Phone Numbers:</value>
</data>
<data name="secQuotas.Text" xml:space="preserve">
<value>Quotas</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Phone Numbers</value>
</data>
</root>

View file

@ -0,0 +1,40 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncAllocatePhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.Lync.LyncAllocatePhoneNumbers" %>
<%@ Register Src="UserControls/AllocatePackagePhoneNumbers.ascx" TagName="AllocatePackagePhoneNumbers" TagPrefix="wsp" %>
<%@ Register Src="../ExchangeServer/UserControls/UserSelector.ascx" TagName="UserSelector" TagPrefix="wsp" %>
<%@ Register Src="../ExchangeServer/UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
<%@ Register Src="../ExchangeServer/UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
<%@ Register Src="UserControls/LyncUserPlanSelector.ascx" TagName="LyncUserPlanSelector" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/PackagePhoneNumbers.ascx" TagName="PackagePhoneNumbers" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/Quota.ascx" TagName="Quota" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
<div id="ExchangeContainer">
<div class="Module">
<div class="Header">
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" meta:resourcekey="breadcrumb" />
</div>
<div class="Left">
<wsp:Menu id="menu" runat="server" />
</div>
<div class="Content">
<div class="Center">
<div class="Title">
<asp:Image ID="Image1" SkinID="LyncLogo" runat="server" />
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle"></asp:Localize>
</div>
<div class="FormBody">
<wsp:AllocatePackagePhoneNumbers id="allocatePhoneNumbers" runat="server"
Pool="PhoneNumbers"
ResourceGroup="Web"
ListAddressesControl="" />
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,44 @@
// 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.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebsitePanel.Portal.Lync
{
public partial class LyncAllocatePhoneNumbers : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}

View file

@ -0,0 +1,69 @@
//------------------------------------------------------------------------------
// <автоматически создаваемое>
// Этот код создан программой.
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </автоматически создаваемое>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.Lync {
public partial class LyncAllocatePhoneNumbers {
/// <summary>
/// asyncTasks элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
/// <summary>
/// breadcrumb элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
/// <summary>
/// menu элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
/// <summary>
/// Image1 элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Image Image1;
/// <summary>
/// locTitle элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locTitle;
/// <summary>
/// allocatePhoneNumbers элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.AllocatePackagePhoneNumbers allocatePhoneNumbers;
}
}

View file

@ -1,39 +1,10 @@
// Copyright (c) 2011, 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>
// This code was generated by a tool.
// Runtime Version:2.0.50727.3074
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace WebsitePanel.Portal.Lync { namespace WebsitePanel.Portal.Lync {
@ -42,192 +13,182 @@ namespace WebsitePanel.Portal.Lync {
public partial class CreateLyncUser { public partial class CreateLyncUser {
/// <summary> /// <summary>
/// asyncTasks control. /// asyncTasks элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
/// <summary> /// <summary>
/// breadcrumb control. /// breadcrumb элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
/// <summary> /// <summary>
/// menu control. /// menu элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
/// <summary> /// <summary>
/// Image1 control. /// Image1 элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Image Image1; protected global::System.Web.UI.WebControls.Image Image1;
/// <summary> /// <summary>
/// locTitle control. /// locTitle элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize locTitle; protected global::System.Web.UI.WebControls.Localize locTitle;
/// <summary> /// <summary>
/// messageBox control. /// messageBox элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary> /// <summary>
/// ExistingUserTable control. /// ExistingUserTable элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTable ExistingUserTable; protected global::System.Web.UI.HtmlControls.HtmlTable ExistingUserTable;
/// <summary> /// <summary>
/// Localize1 control. /// Localize1 элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize Localize1; protected global::System.Web.UI.WebControls.Localize Localize1;
/// <summary> /// <summary>
/// userSelector control. /// userSelector элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.UserSelector userSelector; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.UserSelector userSelector;
/// <summary> /// <summary>
/// locPlanName control. /// locPlanName элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize locPlanName; protected global::System.Web.UI.WebControls.Localize locPlanName;
/// <summary> /// <summary>
/// planSelector control. /// planSelector элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserPlanSelector planSelector; protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserPlanSelector planSelector;
/// <summary> /// <summary>
/// pnEnterpriseVoice control. /// pnEnterpriseVoice элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Panel pnEnterpriseVoice; protected global::System.Web.UI.WebControls.Panel pnEnterpriseVoice;
/// <summary> /// <summary>
/// locPhoneNumber control. /// locPhoneNumber элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize locPhoneNumber; protected global::System.Web.UI.WebControls.Localize locPhoneNumber;
/// <summary> /// <summary>
/// ddlPhoneNumber control. /// tb_PhoneNumber элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox tb_PhoneNumber;
/// <summary>
/// ddlPhoneNumber элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlPhoneNumber; protected global::System.Web.UI.WebControls.DropDownList ddlPhoneNumber;
/// <summary> /// <summary>
/// PhoneFormatValidator control. /// PhoneFormatValidator элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.RegularExpressionValidator PhoneFormatValidator; protected global::System.Web.UI.WebControls.RegularExpressionValidator PhoneFormatValidator;
/// <summary> /// <summary>
/// locLyncPin control. /// locLyncPin элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize locLyncPin; protected global::System.Web.UI.WebControls.Localize locLyncPin;
/// <summary> /// <summary>
/// tbPin control. /// tbPin элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.TextBox tbPin; protected global::System.Web.UI.WebControls.TextBox tbPin;
/// <summary> /// <summary>
/// PinRegularExpressionValidator control. /// PinRegularExpressionValidator элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.RegularExpressionValidator PinRegularExpressionValidator; protected global::System.Web.UI.WebControls.RegularExpressionValidator PinRegularExpressionValidator;
/// <summary> /// <summary>
/// btnCreate control. /// btnCreate элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Button btnCreate; protected global::System.Web.UI.WebControls.Button btnCreate;
} }

View file

@ -0,0 +1,57 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncPhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.Lync.LyncPhoneNumbers" %>
<%@ Register Src="../ExchangeServer/UserControls/UserSelector.ascx" TagName="UserSelector" TagPrefix="wsp" %>
<%@ Register Src="../ExchangeServer/UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
<%@ Register Src="../ExchangeServer/UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
<%@ Register Src="UserControls/LyncUserPlanSelector.ascx" TagName="LyncUserPlanSelector" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/PackagePhoneNumbers.ascx" TagName="PackagePhoneNumbers" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/Quota.ascx" TagName="Quota" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
<div id="ExchangeContainer">
<div class="Module">
<div class="Header">
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" meta:resourcekey="breadcrumb" />
</div>
<div class="Left">
<wsp:Menu id="menu" runat="server" />
</div>
<div class="Content">
<div class="Center">
<div class="Title">
<asp:Image ID="Image1" SkinID="LyncLogo" runat="server" />
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle"></asp:Localize>
</div>
<div class="FormBody">
<wsp:PackagePhoneNumbers id="webAddresses" runat="server"
Pool="PhoneNumbers"
EditItemControl=""
SpaceHomeControl=""
AllocateAddressesControl="allocate_phonenumbers"
ManageAllowed="true" />
<br />
<wsp:CollapsiblePanel id="secQuotas" runat="server"
TargetControlID="QuotasPanel" meta:resourcekey="secQuotas" Text="Quotas">
</wsp:CollapsiblePanel>
<asp:Panel ID="QuotasPanel" runat="server" Height="0" style="overflow:hidden;">
<table cellspacing="6">
<tr>
<td><asp:Localize ID="locIPQuota" runat="server" meta:resourcekey="locIPQuota" Text="Number of Phone Numbes:"></asp:Localize></td>
<td><wsp:Quota ID="addressesQuota" runat="server" QuotaName="Lync.PhoneNumbers" /></td>
</tr>
</table>
</asp:Panel>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,43 @@
// 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.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebsitePanel.Portal.Lync
{
public partial class LyncPhoneNumbers : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}

View file

@ -0,0 +1,60 @@
//------------------------------------------------------------------------------
// <автоматически создаваемое>
// Этот код создан программой.
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </автоматически создаваемое>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.Lync {
public partial class LyncPhoneNumbers {
/// <summary>
/// asyncTasks элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
/// <summary>
/// breadcrumb элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
/// <summary>
/// menu элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
/// <summary>
/// Image1 элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Image Image1;
/// <summary>
/// locTitle элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locTitle;
}
}

View file

@ -0,0 +1,71 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AllocatePackagePhoneNumbers.ascx.cs" Inherits="WebsitePanel.Portal.UserControls.AllocatePackagePhoneNumbers" %>
<%@ Register Src="../../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
<wsp:SimpleMessageBox id="messageBox" runat="server" />
<asp:ValidationSummary ID="validatorsSummary" runat="server"
ValidationGroup="AddAddress" ShowMessageBox="True" ShowSummary="False" />
<ul id="ErrorMessagesList" runat="server" visible="false">
<li id="EmptyAddressesMessage" runat="server">
<asp:Localize ID="locNotEnoughAddresses" runat="server" Text="Not enough..." meta:resourcekey="locNotEnoughAddresses"></asp:Localize>
</li>
<li id="QuotaReachedMessage" runat="server">
<asp:Localize ID="locQuotaReached" runat="server" Text="Quota reached..." meta:resourcekey="locQuotaReached"></asp:Localize>
</li>
</ul>
<asp:UpdatePanel runat="server" ID="AddressesTable" UpdateMode="Conditional">
<ContentTemplate>
<table cellspacing="5" style="width: 100%;">
<tr>
<td>
<asp:RadioButton ID="radioExternalRandom" runat="server" AutoPostBack="true"
meta:resourcekey="radioExternalRandom" Text="Randomly select phone Numbers from the pool"
Checked="True" GroupName="ExternalAddress"
oncheckedchanged="radioExternalRandom_CheckedChanged" />
</td>
</tr>
<tr id="AddressesNumberRow" runat="server">
<td style="padding-left: 30px;">
<asp:Localize ID="locExternalAddresses" runat="server"
meta:resourcekey="locExternalAddresses" Text="Number of Phone Numbers:"></asp:Localize>
<asp:TextBox ID="txtExternalAddressesNumber" runat="server" CssClass="NormalTextBox" Width="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="ExternalAddressesValidator" runat="server" Text="*" Display="Dynamic"
ControlToValidate="txtExternalAddressesNumber" meta:resourcekey="ExternalAddressesValidator" SetFocusOnError="true"
ValidationGroup="AddAddress">*</asp:RequiredFieldValidator>
<asp:Literal ID="litMaxAddresses" runat="server"></asp:Literal>
</td>
</tr>
<tr>
<td>
<asp:RadioButton ID="radioExternalSelected" runat="server" AutoPostBack="true"
meta:resourcekey="radioExternalSelected" Text="Select PHone Number from the list"
GroupName="ExternalAddress"
oncheckedchanged="radioExternalSelected_CheckedChanged" />
</td>
</tr>
<tr id="AddressesListRow" runat="server">
<td style="padding-left: 30px;">
<asp:ListBox ID="listExternalAddresses" SelectionMode="Multiple" runat="server" Rows="8"
CssClass="NormalTextBox" Width="220" style="height:100px;" ></asp:ListBox>
<br />
<asp:Localize ID="locHoldCtrl" runat="server"
meta:resourcekey="locHoldCtrl" Text="* Hold CTRL key to select multiple phone numbers" ></asp:Localize>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
<p>
<asp:Button ID="btnAdd" runat="server" meta:resourcekey="btnAdd"
ValidationGroup="AddAddress" Text="Add" CssClass="Button1"
onclick="btnAdd_Click" />
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel"
CausesValidation="false" Text="Cancel" CssClass="Button1"
onclick="btnCancel_Click" />
</p>

View file

@ -0,0 +1,174 @@
// 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.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.Common;
namespace WebsitePanel.Portal.UserControls
{
public partial class AllocatePackagePhoneNumbers : WebsitePanelControlBase
{
private IPAddressPool pool;
public IPAddressPool Pool
{
get { return pool; }
set { pool = value; }
}
private string listAddressesControl;
public string ListAddressesControl
{
get { return listAddressesControl; }
set { listAddressesControl = value; }
}
private string resourceGroup;
public string ResourceGroup
{
get { return resourceGroup; }
set { resourceGroup = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindIPAddresses();
ToggleControls();
}
}
private void BindIPAddresses()
{
bool vps = (Pool == IPAddressPool.VpsExternalNetwork || Pool == IPAddressPool.VpsManagementNetwork);
// bind list
IPAddressInfo[] ips = ES.Services.Servers.GetUnallottedIPAddresses(PanelSecurity.PackageId, ResourceGroup, Pool);
foreach (IPAddressInfo ip in ips)
{
string txt = ip.ExternalIP;
// web sites - NAT Address
if (!vps && !String.IsNullOrEmpty(ip.InternalIP))
txt += "/" + ip.InternalIP;
// VPS - Gateway Address
else if (vps && !String.IsNullOrEmpty(ip.DefaultGateway))
txt += "/" + ip.DefaultGateway;
listExternalAddresses.Items.Add(new ListItem(txt, ip.AddressId.ToString()));
}
int quotaAllowed = -1;
string quotaName = Quotas.LYNC_PHONE;
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
if (cntx.Quotas.ContainsKey(quotaName))
{
int quotaAllocated = cntx.Quotas[quotaName].QuotaAllocatedValue;
int quotaUsed = cntx.Quotas[quotaName].QuotaUsedValue;
if (quotaAllocated != -1)
quotaAllowed = quotaAllocated - quotaUsed;
}
// bind controls
int max = quotaAllowed == -1 ? listExternalAddresses.Items.Count : quotaAllowed;
txtExternalAddressesNumber.Text = max.ToString();
litMaxAddresses.Text = String.Format(GetLocalizedString("litMaxAddresses.Text"), max);
if (max == 0)
{
AddressesTable.Visible = false;
ErrorMessagesList.Visible = true;
EmptyAddressesMessage.Visible = (listExternalAddresses.Items.Count == 0);
QuotaReachedMessage.Visible = (quotaAllowed == 0);
btnAdd.Enabled = false;
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
try
{
List<int> ids = new List<int>();
foreach (ListItem item in listExternalAddresses.Items)
{
if (item.Selected)
ids.Add(Utils.ParseInt(item.Value));
}
ResultObject res = ES.Services.Servers.AllocatePackageIPAddresses(PanelSecurity.PackageId,
ResourceGroup, Pool,
radioExternalRandom.Checked,
Utils.ParseInt(txtExternalAddressesNumber.Text),
ids.ToArray());
if (res.IsSuccess)
{
// return back
Response.Redirect(HostModule.EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), ListAddressesControl));
}
else
{
// show message
messageBox.ShowMessage(res, "VPS_ALLOCATE_EXTERNAL_ADDRESSES_ERROR", "VPS");
}
}
catch (Exception ex)
{
messageBox.ShowErrorMessage("VPS_ALLOCATE_EXTERNAL_ADDRESSES_ERROR", ex);
}
}
protected void btnCancel_Click(object sender, EventArgs e)
{
Response.Redirect(HostModule.EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), ListAddressesControl));
}
protected void radioExternalSelected_CheckedChanged(object sender, EventArgs e)
{
ToggleControls();
}
private void ToggleControls()
{
AddressesNumberRow.Visible = radioExternalRandom.Checked;
AddressesListRow.Visible = radioExternalSelected.Checked;
}
protected void radioExternalRandom_CheckedChanged(object sender, EventArgs e)
{
ToggleControls();
}
}
}

View file

@ -0,0 +1,195 @@
//------------------------------------------------------------------------------
// <автоматически создаваемое>
// Этот код создан программой.
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </автоматически создаваемое>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.UserControls {
public partial class AllocatePackagePhoneNumbers {
/// <summary>
/// messageBox элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary>
/// validatorsSummary элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.ValidationSummary validatorsSummary;
/// <summary>
/// ErrorMessagesList элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl ErrorMessagesList;
/// <summary>
/// EmptyAddressesMessage элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl EmptyAddressesMessage;
/// <summary>
/// locNotEnoughAddresses элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locNotEnoughAddresses;
/// <summary>
/// QuotaReachedMessage элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl QuotaReachedMessage;
/// <summary>
/// locQuotaReached элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locQuotaReached;
/// <summary>
/// AddressesTable элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.UpdatePanel AddressesTable;
/// <summary>
/// radioExternalRandom элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.RadioButton radioExternalRandom;
/// <summary>
/// AddressesNumberRow элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow AddressesNumberRow;
/// <summary>
/// locExternalAddresses элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locExternalAddresses;
/// <summary>
/// txtExternalAddressesNumber элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtExternalAddressesNumber;
/// <summary>
/// ExternalAddressesValidator элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator ExternalAddressesValidator;
/// <summary>
/// litMaxAddresses элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal litMaxAddresses;
/// <summary>
/// radioExternalSelected элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.RadioButton radioExternalSelected;
/// <summary>
/// AddressesListRow элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow AddressesListRow;
/// <summary>
/// listExternalAddresses элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.ListBox listExternalAddresses;
/// <summary>
/// locHoldCtrl элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locHoldCtrl;
/// <summary>
/// btnAdd элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnAdd;
/// <summary>
/// btnCancel элемент управления.
/// </summary>
/// <remarks>
/// Автоматически создаваемое поле.
/// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnCancel;
}
}

View file

@ -0,0 +1,153 @@
<?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="btnCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="ExternalAddressesValidator.ErrorMessage" xml:space="preserve">
<value>Enter the number of Phone Numbers</value>
</data>
<data name="litMaxAddresses.Text" xml:space="preserve">
<value>({0} max)</value>
</data>
<data name="locExternalAddresses.Text" xml:space="preserve">
<value>Number of Phone Numbers:</value>
</data>
<data name="locHoldCtrl.Text" xml:space="preserve">
<value>* Hold CTRL key to select multiple phone numbers</value>
</data>
<data name="locNotEnoughAddresses.Text" xml:space="preserve">
<value>The pool of Phone Numbers is empty.&lt;br/&gt;Allocate more Phone Numbers on reseller level. If the current hosting space is nested within "System" space then add more server Phone Numbers to the appropriate pool on "Configuration -&gt; Phone Numbers" page.</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Allocate Phone Numbers</value>
</data>
<data name="radioExternalRandom.Text" xml:space="preserve">
<value>Randomly select Phone Numbers from the pool</value>
</data>
<data name="radioExternalSelected.Text" xml:space="preserve">
<value>Select Phone Numbers from the list</value>
</data>
<data name="locQuotaReached.Text" xml:space="preserve">
<value>Phone Numbers quota has been reached.</value>
</data>
</root>

View file

@ -8,7 +8,6 @@
Pool="PhoneNumbers" Pool="PhoneNumbers"
EditItemControl="" EditItemControl=""
SpaceHomeControl="" SpaceHomeControl=""
AllocateAddressesControl="allocate_phonenumbers"
ManageAllowed="true" /> ManageAllowed="true" />
<br /> <br />

View file

@ -1,39 +1,10 @@
// Copyright (c) 2011, 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>
// This code was generated by a tool.
// Runtime Version:2.0.50727.3074
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace WebsitePanel.Portal { namespace WebsitePanel.Portal {
@ -42,52 +13,47 @@ namespace WebsitePanel.Portal {
public partial class LyncPhoneNumbers { public partial class LyncPhoneNumbers {
/// <summary> /// <summary>
/// webAddresses control. /// webAddresses элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.UserControls.PackagePhoneNumbers webAddresses; protected global::WebsitePanel.Portal.UserControls.PackagePhoneNumbers webAddresses;
/// <summary> /// <summary>
/// secQuotas control. /// secQuotas элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secQuotas; protected global::WebsitePanel.Portal.CollapsiblePanel secQuotas;
/// <summary> /// <summary>
/// QuotasPanel control. /// QuotasPanel элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Panel QuotasPanel; protected global::System.Web.UI.WebControls.Panel QuotasPanel;
/// <summary> /// <summary>
/// locIPQuota control. /// locIPQuota элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize locIPQuota; protected global::System.Web.UI.WebControls.Localize locIPQuota;
/// <summary> /// <summary>
/// addressesQuota control. /// addressesQuota элемент управления.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// Auto-generated field. /// Автоматически создаваемое поле.
/// To modify move field declaration from designer file to code-behind file. /// Для изменения переместите объявление поля из файла конструктора в файл кода программной части.
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.Quota addressesQuota; protected global::WebsitePanel.Portal.Quota addressesQuota;
} }

View file

@ -403,6 +403,13 @@
<Compile Include="Lync\LyncFederationDomains.ascx.designer.cs"> <Compile Include="Lync\LyncFederationDomains.ascx.designer.cs">
<DependentUpon>LyncFederationDomains.ascx</DependentUpon> <DependentUpon>LyncFederationDomains.ascx</DependentUpon>
</Compile> </Compile>
<Compile Include="Lync\LyncPhoneNumbers.ascx.cs">
<DependentUpon>LyncPhoneNumbers.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Lync\LyncPhoneNumbers.ascx.designer.cs">
<DependentUpon>LyncPhoneNumbers.ascx</DependentUpon>
</Compile>
<Compile Include="Lync\LyncUserPlans.ascx.cs"> <Compile Include="Lync\LyncUserPlans.ascx.cs">
<DependentUpon>LyncUserPlans.ascx</DependentUpon> <DependentUpon>LyncUserPlans.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
@ -567,11 +574,11 @@
<Compile Include="UserControls\PackagePhoneNumbers.ascx.designer.cs"> <Compile Include="UserControls\PackagePhoneNumbers.ascx.designer.cs">
<DependentUpon>PackagePhoneNumbers.ascx</DependentUpon> <DependentUpon>PackagePhoneNumbers.ascx</DependentUpon>
</Compile> </Compile>
<Compile Include="UserControls\AllocatePackagePhoneNumbers.ascx.cs"> <Compile Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx.cs">
<DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon> <DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="UserControls\AllocatePackagePhoneNumbers.ascx.designer.cs"> <Compile Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx.designer.cs">
<DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon> <DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon>
</Compile> </Compile>
<Compile Include="VPSForPC\MonitoringPage.aspx.cs"> <Compile Include="VPSForPC\MonitoringPage.aspx.cs">
@ -3999,11 +4006,11 @@
<Compile Include="LyncPhoneNumbers.ascx.designer.cs"> <Compile Include="LyncPhoneNumbers.ascx.designer.cs">
<DependentUpon>LyncPhoneNumbers.ascx</DependentUpon> <DependentUpon>LyncPhoneNumbers.ascx</DependentUpon>
</Compile> </Compile>
<Compile Include="LyncAllocatePhoneNumbers.ascx.cs"> <Compile Include="Lync\LyncAllocatePhoneNumbers.ascx.cs">
<DependentUpon>LyncAllocatePhoneNumbers.ascx</DependentUpon> <DependentUpon>LyncAllocatePhoneNumbers.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="LyncAllocatePhoneNumbers.ascx.designer.cs"> <Compile Include="Lync\LyncAllocatePhoneNumbers.ascx.designer.cs">
<DependentUpon>LyncAllocatePhoneNumbers.ascx</DependentUpon> <DependentUpon>LyncAllocatePhoneNumbers.ascx</DependentUpon>
</Compile> </Compile>
<Compile Include="PhoneNumbers.ascx.cs"> <Compile Include="PhoneNumbers.ascx.cs">
@ -4049,6 +4056,7 @@
<Content Include="ExchangeServer\UserControls\GroupsList.ascx" /> <Content Include="ExchangeServer\UserControls\GroupsList.ascx" />
<Content Include="ExchangeServer\UserControls\SecurityGroupTabs.ascx" /> <Content Include="ExchangeServer\UserControls\SecurityGroupTabs.ascx" />
<Content Include="ExchangeServer\UserControls\UsersList.ascx" /> <Content Include="ExchangeServer\UserControls\UsersList.ascx" />
<Content Include="Lync\LyncPhoneNumbers.ascx" />
<Content Include="Lync\UserControls\LyncUserSettings.ascx" /> <Content Include="Lync\UserControls\LyncUserSettings.ascx" />
<Content Include="ProviderControls\CRM2011_Settings.ascx" /> <Content Include="ProviderControls\CRM2011_Settings.ascx" />
<Content Include="ProviderControls\EnterpriseStorage_Settings.ascx" /> <Content Include="ProviderControls\EnterpriseStorage_Settings.ascx" />
@ -4081,7 +4089,7 @@
<Content Include="UserControls\OrgIdPolicyEditor.ascx" /> <Content Include="UserControls\OrgIdPolicyEditor.ascx" />
<Content Include="UserControls\OrgPolicyEditor.ascx" /> <Content Include="UserControls\OrgPolicyEditor.ascx" />
<Content Include="UserControls\PackagePhoneNumbers.ascx" /> <Content Include="UserControls\PackagePhoneNumbers.ascx" />
<Content Include="UserControls\AllocatePackagePhoneNumbers.ascx" /> <Content Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx" />
<Content Include="VPSForPC\MonitoringPage.aspx" /> <Content Include="VPSForPC\MonitoringPage.aspx" />
<Content Include="VPSForPC\VdcAccountVLanAdd.ascx" /> <Content Include="VPSForPC\VdcAccountVLanAdd.ascx" />
<Content Include="VPSForPC\VdcAccountVLanNetwork.ascx" /> <Content Include="VPSForPC\VdcAccountVLanNetwork.ascx" />
@ -4145,7 +4153,7 @@
<Content Include="WebSitesHeliconZooControl.ascx" /> <Content Include="WebSitesHeliconZooControl.ascx" />
<Content Include="WebsitesSSL.ascx" /> <Content Include="WebsitesSSL.ascx" />
<Content Include="LyncPhoneNumbers.ascx" /> <Content Include="LyncPhoneNumbers.ascx" />
<Content Include="LyncAllocatePhoneNumbers.ascx" /> <Content Include="Lync\LyncAllocatePhoneNumbers.ascx" />
<Content Include="PhoneNumbers.ascx" /> <Content Include="PhoneNumbers.ascx" />
<Content Include="PhoneNumbersAddPhoneNumber.ascx" /> <Content Include="PhoneNumbersAddPhoneNumber.ascx" />
<Content Include="PhoneNumbersEditPhoneNumber.ascx" /> <Content Include="PhoneNumbersEditPhoneNumber.ascx" />
@ -5233,7 +5241,7 @@
<Content Include="UserControls\App_LocalResources\PackagePhoneNumbers.ascx.resx"> <Content Include="UserControls\App_LocalResources\PackagePhoneNumbers.ascx.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Content> </Content>
<Content Include="UserControls\App_LocalResources\AllocatePackagePhoneNumbers.ascx.resx"> <Content Include="Lync\UserControls\App_LocalResources\AllocatePackagePhoneNumbers.ascx.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Content> </Content>
<None Include="Resources\Windows2008_Settings.ascx.resx" /> <None Include="Resources\Windows2008_Settings.ascx.resx" />
@ -5250,7 +5258,7 @@
<Content Include="App_LocalResources\LyncPhoneNumbers.ascx.resx"> <Content Include="App_LocalResources\LyncPhoneNumbers.ascx.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Content> </Content>
<Content Include="App_LocalResources\LyncAllocatePhoneNumbers.ascx.resx"> <Content Include="Lync\App_LocalResources\LyncAllocatePhoneNumbers.ascx.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Content> </Content>
<Content Include="App_LocalResources\PhoneNumbers.ascx.resx" /> <Content Include="App_LocalResources\PhoneNumbers.ascx.resx" />
@ -5277,6 +5285,9 @@
<Content Include="ExchangeServer\App_LocalResources\EnterpriseStorageCreateFolder.ascx.resx" /> <Content Include="ExchangeServer\App_LocalResources\EnterpriseStorageCreateFolder.ascx.resx" />
<Content Include="ExchangeServer\App_LocalResources\EnterpriseStorageFolderGeneralSettings.ascx.resx" /> <Content Include="ExchangeServer\App_LocalResources\EnterpriseStorageFolderGeneralSettings.ascx.resx" />
<Content Include="ExchangeServer\UserControls\App_LocalResources\EnterpriseStoragePermissions.ascx.resx" /> <Content Include="ExchangeServer\UserControls\App_LocalResources\EnterpriseStoragePermissions.ascx.resx" />
<Content Include="Lync\App_LocalResources\LyncPhoneNumbers.ascx.resx">
<SubType>Designer</SubType>
</Content>
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx"> <EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
@ -6230,9 +6241,7 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup />
<Folder Include="Lync\UserControls\App_LocalResources\" />
</ItemGroup>
<PropertyGroup> <PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>