merge commit
|
@ -444,7 +444,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
|
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
|
||||||
|
|
||||||
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
|
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
|
||||||
DataProvider.GetEnterpriseFolder(itemId, newFolder));
|
DataProvider.GetEnterpriseFolder(itemId, oldFolder));
|
||||||
|
|
||||||
bool folderExists = es.GetFolder(org.OrganizationId, newFolder, webDavSetting) != null;
|
bool folderExists = es.GetFolder(org.OrganizationId, newFolder, webDavSetting) != null;
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
</configSections>
|
</configSections>
|
||||||
<!-- Connection strings -->
|
<!-- Connection strings -->
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="EnterpriseServer" connectionString="server=DATA01.HOSTING2014.COM.SG;database=WebsitePanel;uid=WebsitePanel;pwd=20ml6ql5qr510gyrkwxz;" providerName="System.Data.SqlClient" />
|
<add name="EnterpriseServer" connectionString="Server=(local)\SQLExpress;Database=WebsitePanel;uid=sa;pwd=Password12" providerName="System.Data.SqlClient"/>
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
<!-- Encryption util settings -->
|
<!-- Encryption util settings -->
|
||||||
<add key="WebsitePanel.CryptoKey" value="g1rd36qyqf8pnx7xm0xb" />
|
<add key="WebsitePanel.CryptoKey" value="1234567890"/>
|
||||||
<!-- A1D4KDHUE83NKHddF -->
|
<!-- A1D4KDHUE83NKHddF -->
|
||||||
<add key="WebsitePanel.EncryptionEnabled" value="true"/>
|
<add key="WebsitePanel.EncryptionEnabled" value="true"/>
|
||||||
<!-- Web Applications -->
|
<!-- Web Applications -->
|
||||||
|
|
|
@ -102,6 +102,15 @@ namespace WebsitePanel.Providers
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TimeSpan GetTimeSpan(string settingName)
|
||||||
|
{
|
||||||
|
double seconds;
|
||||||
|
if (!Double.TryParse(hash[settingName], out seconds))
|
||||||
|
seconds = 0;
|
||||||
|
return TimeSpan.FromSeconds(seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region Public properties
|
#region Public properties
|
||||||
public int ProviderGroupID
|
public int ProviderGroupID
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,11 +27,15 @@
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Management.Automation;
|
using System.Management.Automation;
|
||||||
using System.Management.Automation.Runspaces;
|
using System.Management.Automation.Runspaces;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using WebsitePanel.Server.Utils;
|
using WebsitePanel.Server.Utils;
|
||||||
|
using Microsoft.Management.Infrastructure;
|
||||||
|
|
||||||
|
|
||||||
namespace WebsitePanel.Providers.DNS
|
namespace WebsitePanel.Providers.DNS
|
||||||
{
|
{
|
||||||
|
@ -224,6 +228,9 @@ namespace WebsitePanel.Providers.DNS
|
||||||
.Where( r => null != r )
|
.Where( r => null != r )
|
||||||
.Where( r => r.RecordType != DnsRecordType.SOA )
|
.Where( r => r.RecordType != DnsRecordType.SOA )
|
||||||
// .Where( r => !( r.RecordName == "@" && DnsRecordType.NS == r.RecordType ) )
|
// .Where( r => !( r.RecordName == "@" && DnsRecordType.NS == r.RecordType ) )
|
||||||
|
.OrderBy( r => r.RecordName )
|
||||||
|
.ThenBy( r => r.RecordType )
|
||||||
|
.ThenBy( r => r.RecordData )
|
||||||
.ToArray();
|
.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,17 +306,92 @@ namespace WebsitePanel.Providers.DNS
|
||||||
ps.RunPipeline( cmd );
|
ps.RunPipeline( cmd );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Remove_DnsServerResourceRecord( this PowerShellHelper ps, string zoneName, string Name, string type )
|
public static void Remove_DnsServerResourceRecord( this PowerShellHelper ps, string zoneName, string Name, string type, string recordData )
|
||||||
{
|
{
|
||||||
// Remove-DnsServerResourceRecord -ZoneName xxxx.com -Name "@" -RRType Soa -Force
|
if (String.IsNullOrEmpty(Name)) Name = "@";
|
||||||
|
|
||||||
var cmd = new Command( "Remove-DnsServerResourceRecord" );
|
var cmd = new Command( "Remove-DnsServerResourceRecord" );
|
||||||
cmd.addParam( "ZoneName", zoneName );
|
cmd.addParam( "ZoneName", zoneName );
|
||||||
cmd.addParam( "Name", Name );
|
cmd.addParam( "Name", Name );
|
||||||
cmd.addParam( "RRType", type );
|
cmd.addParam( "RRType", type );
|
||||||
|
|
||||||
|
if (!String.IsNullOrEmpty(recordData))
|
||||||
|
cmd.addParam("RecordData", recordData);
|
||||||
|
|
||||||
cmd.addParam( "Force" );
|
cmd.addParam( "Force" );
|
||||||
ps.RunPipeline( cmd );
|
ps.RunPipeline( cmd );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
public static void Update_DnsServerResourceRecordSOA(this PowerShellHelper ps, string zoneName,
|
||||||
|
TimeSpan ExpireLimit, TimeSpan MinimumTimeToLive, string PrimaryServer,
|
||||||
|
TimeSpan RefreshInterval, string ResponsiblePerson, TimeSpan RetryDelay,
|
||||||
|
string PSComputerName)
|
||||||
|
{
|
||||||
|
|
||||||
|
var cmd = new Command("Get-DnsServerResourceRecord");
|
||||||
|
cmd.addParam("ZoneName", zoneName);
|
||||||
|
cmd.addParam("RRType", "SOA");
|
||||||
|
Collection<PSObject> soaRecords = ps.RunPipeline(cmd);
|
||||||
|
|
||||||
|
if (soaRecords.Count < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
PSObject oldSOARecord = soaRecords[0];
|
||||||
|
PSObject newSOARecord = oldSOARecord.Copy();
|
||||||
|
|
||||||
|
CimInstance recordData = newSOARecord.Properties["RecordData"].Value as CimInstance;
|
||||||
|
|
||||||
|
if (recordData==null) return;
|
||||||
|
|
||||||
|
if (ExpireLimit!=null)
|
||||||
|
recordData.CimInstanceProperties["ExpireLimit"].Value = ExpireLimit;
|
||||||
|
|
||||||
|
if (MinimumTimeToLive!=null)
|
||||||
|
recordData.CimInstanceProperties["MinimumTimeToLive"].Value = MinimumTimeToLive;
|
||||||
|
|
||||||
|
if (PrimaryServer!=null)
|
||||||
|
recordData.CimInstanceProperties["PrimaryServer"].Value = PrimaryServer;
|
||||||
|
|
||||||
|
if (RefreshInterval!=null)
|
||||||
|
recordData.CimInstanceProperties["RefreshInterval"].Value = RefreshInterval;
|
||||||
|
|
||||||
|
if (ResponsiblePerson!=null)
|
||||||
|
recordData.CimInstanceProperties["ResponsiblePerson"].Value = ResponsiblePerson;
|
||||||
|
|
||||||
|
if (RetryDelay!=null)
|
||||||
|
recordData.CimInstanceProperties["RetryDelay"].Value = RetryDelay;
|
||||||
|
|
||||||
|
if (PSComputerName!=null)
|
||||||
|
recordData.CimInstanceProperties["PSComputerName"].Value = PSComputerName;
|
||||||
|
|
||||||
|
UInt32 serialNumber = (UInt32)recordData.CimInstanceProperties["SerialNumber"].Value;
|
||||||
|
|
||||||
|
// update record's serial number
|
||||||
|
string sn = serialNumber.ToString();
|
||||||
|
string todayDate = DateTime.Now.ToString("yyyyMMdd");
|
||||||
|
if (sn.Length < 10 || !sn.StartsWith(todayDate))
|
||||||
|
{
|
||||||
|
// build a new serial number
|
||||||
|
sn = todayDate + "01";
|
||||||
|
serialNumber = UInt32.Parse(sn);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// just increment serial number
|
||||||
|
serialNumber += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
recordData.CimInstanceProperties["SerialNumber"].Value = serialNumber;
|
||||||
|
|
||||||
|
cmd = new Command("Set-DnsServerResourceRecord");
|
||||||
|
cmd.addParam("NewInputObject", newSOARecord);
|
||||||
|
cmd.addParam("OldInputObject", oldSOARecord);
|
||||||
|
cmd.addParam("Zone", zoneName);
|
||||||
|
ps.RunPipeline(cmd);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -38,34 +38,36 @@ using WebsitePanel.Providers.Utils;
|
||||||
namespace WebsitePanel.Providers.DNS
|
namespace WebsitePanel.Providers.DNS
|
||||||
{
|
{
|
||||||
public class MsDNS2012: HostingServiceProviderBase, IDnsServer
|
public class MsDNS2012: HostingServiceProviderBase, IDnsServer
|
||||||
{
|
{
|
||||||
protected int ExpireLimit
|
|
||||||
|
#region Properties
|
||||||
|
protected TimeSpan ExpireLimit
|
||||||
{
|
{
|
||||||
get { return ProviderSettings.GetInt( "ExpireLimit" ); }
|
get { return ProviderSettings.GetTimeSpan( "ExpireLimit" ); }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int MinimumTTL
|
protected TimeSpan MinimumTTL
|
||||||
{
|
{
|
||||||
get { return ProviderSettings.GetInt( "MinimumTTL" ); }
|
get { return ProviderSettings.GetTimeSpan("MinimumTTL"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int RefreshInterval
|
protected TimeSpan RefreshInterval
|
||||||
{
|
{
|
||||||
get { return ProviderSettings.GetInt( "RefreshInterval" ); }
|
get { return ProviderSettings.GetTimeSpan("RefreshInterval"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int RetryDelay
|
protected TimeSpan RetryDelay
|
||||||
{
|
{
|
||||||
get { return ProviderSettings.GetInt( "RetryDelay" ); }
|
get { return ProviderSettings.GetTimeSpan("RetryDelay"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool AdMode
|
protected bool AdMode
|
||||||
{
|
{
|
||||||
get { return ProviderSettings.GetBool( "AdMode" ); }
|
get { return ProviderSettings.GetBool( "AdMode" ); }
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
private PowerShellHelper ps = null;
|
private PowerShellHelper ps = null;
|
||||||
private WmiHelper wmi = null; //< We still need WMI because PowerShell doesn't support SOA updates.
|
|
||||||
private bool bulkRecords;
|
private bool bulkRecords;
|
||||||
|
|
||||||
public MsDNS2012()
|
public MsDNS2012()
|
||||||
|
@ -74,9 +76,6 @@ namespace WebsitePanel.Providers.DNS
|
||||||
ps = new PowerShellHelper();
|
ps = new PowerShellHelper();
|
||||||
if( !this.IsInstalled() )
|
if( !this.IsInstalled() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Create WMI helper
|
|
||||||
wmi = new WmiHelper( "root\\MicrosoftDNS" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Zones
|
#region Zones
|
||||||
|
@ -99,17 +98,11 @@ namespace WebsitePanel.Providers.DNS
|
||||||
public virtual void AddPrimaryZone( string zoneName, string[] secondaryServers )
|
public virtual void AddPrimaryZone( string zoneName, string[] secondaryServers )
|
||||||
{
|
{
|
||||||
ps.Add_DnsServerPrimaryZone( zoneName, secondaryServers );
|
ps.Add_DnsServerPrimaryZone( zoneName, secondaryServers );
|
||||||
|
|
||||||
// delete orphan NS records
|
|
||||||
DeleteOrphanNsRecords( zoneName );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void AddSecondaryZone( string zoneName, string[] masterServers )
|
public virtual void AddSecondaryZone( string zoneName, string[] masterServers )
|
||||||
{
|
{
|
||||||
ps.Add_DnsServerSecondaryZone( zoneName, masterServers );
|
ps.Add_DnsServerSecondaryZone( zoneName, masterServers );
|
||||||
|
|
||||||
// delete orphan NS records
|
|
||||||
DeleteOrphanNsRecords( zoneName );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void DeleteZone( string zoneName )
|
public virtual void DeleteZone( string zoneName )
|
||||||
|
@ -179,7 +172,7 @@ namespace WebsitePanel.Providers.DNS
|
||||||
string rrType;
|
string rrType;
|
||||||
if( !RecordTypes.rrTypeFromRecord.TryGetValue( record.RecordType, out rrType ) )
|
if( !RecordTypes.rrTypeFromRecord.TryGetValue( record.RecordType, out rrType ) )
|
||||||
throw new Exception( "Unknown record type" );
|
throw new Exception( "Unknown record type" );
|
||||||
ps.Remove_DnsServerResourceRecord( zoneName, record.RecordName, rrType );
|
ps.Remove_DnsServerResourceRecord( zoneName, record.RecordName, rrType, record.RecordData );
|
||||||
}
|
}
|
||||||
catch( Exception ex )
|
catch( Exception ex )
|
||||||
{
|
{
|
||||||
|
@ -194,205 +187,38 @@ namespace WebsitePanel.Providers.DNS
|
||||||
DeleteZoneRecord( zoneName, record );
|
DeleteZoneRecord( zoneName, record );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddZoneRecord( string zoneName, string recordText )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Log.WriteStart( string.Format( "Adding MS DNS Server zone '{0}' record '{1}'", zoneName, recordText ) );
|
|
||||||
AddDnsRecord( zoneName, recordText );
|
|
||||||
Log.WriteEnd( "Added MS DNS Server zone record" );
|
|
||||||
}
|
|
||||||
catch( Exception ex )
|
|
||||||
{
|
|
||||||
Log.WriteError( ex );
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region SOA Record
|
#region SOA Record
|
||||||
public virtual void UpdateSoaRecord( string zoneName, string host, string primaryNsServer, string primaryPerson )
|
public virtual void UpdateSoaRecord( string zoneName, string host, string primaryNsServer, string primaryPerson )
|
||||||
{
|
{
|
||||||
host = CorrectHostName( zoneName, host );
|
try
|
||||||
|
{
|
||||||
|
ps.Update_DnsServerResourceRecordSOA(zoneName, ExpireLimit, MinimumTTL, primaryNsServer, RefreshInterval, primaryPerson, RetryDelay, null);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// delete record if exists
|
private void UpdateSoaRecord(string zoneName)
|
||||||
DeleteSoaRecord( zoneName );
|
{
|
||||||
|
if (bulkRecords)
|
||||||
|
return;
|
||||||
|
|
||||||
// format record data
|
try
|
||||||
string recordText = GetSoaRecordText( host, primaryNsServer, primaryPerson );
|
{
|
||||||
|
ps.Update_DnsServerResourceRecordSOA(zoneName, ExpireLimit, MinimumTTL, null, RefreshInterval, null, RetryDelay, null);
|
||||||
// add record
|
}
|
||||||
AddDnsRecord( zoneName, recordText );
|
catch (Exception ex)
|
||||||
|
{
|
||||||
// update SOA record
|
Log.WriteError(ex);
|
||||||
UpdateSoaRecord( zoneName );
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteSoaRecord( string zoneName )
|
|
||||||
{
|
|
||||||
// TODO: find a PowerShell replacement
|
|
||||||
|
|
||||||
string query = String.Format( "SELECT * FROM MicrosoftDNS_SOAType " +
|
|
||||||
"WHERE OwnerName = '{0}'",
|
|
||||||
zoneName );
|
|
||||||
using( ManagementObjectCollection objRRs = wmi.ExecuteQuery( query ) )
|
|
||||||
{
|
|
||||||
foreach( ManagementObject objRR in objRRs ) using( objRR )
|
|
||||||
objRR.Delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
// This doesn't work: no errors in PS, but the record stays in the DNS
|
|
||||||
/* try
|
|
||||||
{
|
|
||||||
ps.Remove_DnsServerResourceRecord( zoneName, "@", "Soa" );
|
|
||||||
}
|
|
||||||
catch( System.Exception ex )
|
|
||||||
{
|
|
||||||
Log.WriteWarning( "{0}", ex.Message );
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetSoaRecordText( string host, string primaryNsServer, string primaryPerson )
|
|
||||||
{
|
|
||||||
return String.Format( "{0} IN SOA {1} {2} 1 900 600 86400 3600", host, primaryNsServer, primaryPerson );
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string RemoveTrailingDot( string str )
|
|
||||||
{
|
|
||||||
return ( str.EndsWith( "." ) ) ? str.Substring( 0, str.Length - 1 ) : str;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateSoaRecord( string zoneName )
|
|
||||||
{
|
|
||||||
if( bulkRecords )
|
|
||||||
return;
|
|
||||||
|
|
||||||
// TODO: find a PowerShell replacement
|
|
||||||
|
|
||||||
// get existing SOA record in order to read serial number
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
ManagementObject objSoa = wmi.GetWmiObject( "MicrosoftDNS_SOAType", "ContainerName = '{0}'", RemoveTrailingDot( zoneName ) );
|
|
||||||
|
|
||||||
if( objSoa != null )
|
|
||||||
{
|
|
||||||
if( objSoa.Properties[ "OwnerName" ].Value.Equals( zoneName ) )
|
|
||||||
{
|
|
||||||
string primaryServer = (string)objSoa.Properties[ "PrimaryServer" ].Value;
|
|
||||||
string responsibleParty = (string)objSoa.Properties[ "ResponsibleParty" ].Value;
|
|
||||||
UInt32 serialNumber = (UInt32)objSoa.Properties[ "SerialNumber" ].Value;
|
|
||||||
|
|
||||||
// update record's serial number
|
|
||||||
string sn = serialNumber.ToString();
|
|
||||||
string todayDate = DateTime.Now.ToString( "yyyyMMdd" );
|
|
||||||
if( sn.Length < 10 || !sn.StartsWith( todayDate ) )
|
|
||||||
{
|
|
||||||
// build a new serial number
|
|
||||||
sn = todayDate + "01";
|
|
||||||
serialNumber = UInt32.Parse( sn );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// just increment serial number
|
|
||||||
serialNumber += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// update SOA record
|
|
||||||
using( ManagementBaseObject methodParams = objSoa.GetMethodParameters( "Modify" ) )
|
|
||||||
{
|
|
||||||
methodParams[ "ResponsibleParty" ] = responsibleParty;
|
|
||||||
methodParams[ "PrimaryServer" ] = primaryServer;
|
|
||||||
methodParams[ "SerialNumber" ] = serialNumber;
|
|
||||||
|
|
||||||
methodParams[ "ExpireLimit" ] = ExpireLimit;
|
|
||||||
methodParams[ "MinimumTTL" ] = MinimumTTL;
|
|
||||||
methodParams[ "TTL" ] = MinimumTTL;
|
|
||||||
methodParams[ "RefreshInterval" ] = RefreshInterval;
|
|
||||||
methodParams[ "RetryDelay" ] = RetryDelay;
|
|
||||||
|
|
||||||
ManagementBaseObject outParams = objSoa.InvokeMethod( "Modify", methodParams, null );
|
|
||||||
}
|
|
||||||
//
|
|
||||||
objSoa.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch( Exception ex )
|
|
||||||
{
|
|
||||||
Log.WriteError( ex );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void DeleteOrphanNsRecords( string zoneName )
|
|
||||||
{
|
|
||||||
// TODO: find a PowerShell replacement
|
|
||||||
string machineName = System.Net.Dns.GetHostEntry( "LocalHost" ).HostName.ToLower();
|
|
||||||
string computerName = Environment.MachineName.ToLower();
|
|
||||||
|
|
||||||
using( ManagementObjectCollection objRRs = wmi.ExecuteQuery( String.Format( "SELECT * FROM MicrosoftDNS_NSType WHERE DomainName = '{0}'", zoneName ) ) )
|
|
||||||
{
|
|
||||||
foreach( ManagementObject objRR in objRRs )
|
|
||||||
{
|
|
||||||
using( objRR )
|
|
||||||
{
|
|
||||||
string ns = ( (string)objRR.Properties[ "NSHost" ].Value ).ToLower();
|
|
||||||
if( ns.StartsWith( machineName ) || ns.StartsWith( computerName ) )
|
|
||||||
objRR.Delete();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region private helper methods
|
|
||||||
|
|
||||||
private string GetDnsServerName()
|
|
||||||
{
|
|
||||||
// TODO: find a PowerShell replacement
|
|
||||||
using( ManagementObject objServer = wmi.GetObject( "MicrosoftDNS_Server.Name=\".\"" ) )
|
|
||||||
{
|
|
||||||
return (string)objServer.Properties[ "Name" ].Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string AddDnsRecord( string zoneName, string recordText )
|
|
||||||
{
|
|
||||||
// get the name of the server
|
|
||||||
string serverName = GetDnsServerName();
|
|
||||||
|
|
||||||
// TODO: find a PowerShell replacement
|
|
||||||
// add record
|
|
||||||
using( ManagementClass clsRR = wmi.GetClass( "MicrosoftDNS_ResourceRecord" ) )
|
|
||||||
{
|
|
||||||
object[] prms = new object[] { serverName, zoneName, recordText, null };
|
|
||||||
clsRR.InvokeMethod( "CreateInstanceFromTextRepresentation", prms );
|
|
||||||
return (string)prms[ 3 ];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string CorrectHostName( string zoneName, string host )
|
|
||||||
{
|
|
||||||
// if host is empty or null
|
|
||||||
if( host == null || host == "" )
|
|
||||||
return zoneName;
|
|
||||||
|
|
||||||
// if there are not dot at all
|
|
||||||
else if( host.IndexOf( "." ) == -1 )
|
|
||||||
return host + "." + zoneName;
|
|
||||||
|
|
||||||
// if only one dot at the end
|
|
||||||
else if( host[ host.Length - 1 ] == '.' && host.IndexOf( "." ) == ( host.Length - 1 ) )
|
|
||||||
return host + zoneName;
|
|
||||||
|
|
||||||
// other cases
|
|
||||||
else
|
|
||||||
return host;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public override void DeleteServiceItems( ServiceProviderItem[] items )
|
public override void DeleteServiceItems( ServiceProviderItem[] items )
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,6 +51,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
#region Constants
|
#region Constants
|
||||||
|
|
||||||
private const string GROUP_POLICY_MAPPED_DRIVES_FILE_PATH_TEMPLATE = @"\\{0}\SYSVOL\{0}\Policies\{1}\User\Preferences\Drives";
|
private const string GROUP_POLICY_MAPPED_DRIVES_FILE_PATH_TEMPLATE = @"\\{0}\SYSVOL\{0}\Policies\{1}\User\Preferences\Drives";
|
||||||
|
private const string GROUP_POLICY_MAPPED_DRIVES_ROOT_PATH_TEMPLATE = @"\\{0}\SYSVOL\{0}\Policies\{1}";
|
||||||
private const string DRIVES_CLSID = "{8FDDCC1A-0C3C-43cd-A6B4-71A6DF20DA8C}";
|
private const string DRIVES_CLSID = "{8FDDCC1A-0C3C-43cd-A6B4-71A6DF20DA8C}";
|
||||||
private const string DRIVE_CLSID = "{935D1B74-9CB8-4e3c-9914-7DD559B7A417}";
|
private const string DRIVE_CLSID = "{935D1B74-9CB8-4e3c-9914-7DD559B7A417}";
|
||||||
private const string gPCUserExtensionNames = "[{00000000-0000-0000-0000-000000000000}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}][{5794DAFD-BE60-433F-88A2-1A31939AC01F}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}]";
|
private const string gPCUserExtensionNames = "[{00000000-0000-0000-0000-000000000000}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}][{5794DAFD-BE60-433F-88A2-1A31939AC01F}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}]";
|
||||||
|
@ -1230,6 +1231,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
drivesNode.AppendChild(driveNode);
|
drivesNode.AppendChild(driveNode);
|
||||||
|
|
||||||
xml.Save(drivesXmlPath);
|
xml.Save(drivesXmlPath);
|
||||||
|
|
||||||
|
IncrementGPOVersion(organizationId, gpoId);
|
||||||
}
|
}
|
||||||
|
|
||||||
HostedSolutionLog.LogEnd("CreateMappedDriveInternal");
|
HostedSolutionLog.LogEnd("CreateMappedDriveInternal");
|
||||||
|
@ -1293,6 +1296,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
|
|
||||||
xml.Save(path);
|
xml.Save(path);
|
||||||
|
|
||||||
|
IncrementGPOVersion(organizationId, gpoId);
|
||||||
}
|
}
|
||||||
|
|
||||||
HostedSolutionLog.LogEnd("DeleteMappedDriveInternal");
|
HostedSolutionLog.LogEnd("DeleteMappedDriveInternal");
|
||||||
|
@ -1404,6 +1409,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
|
|
||||||
xml.Save(drivesXmlPath);
|
xml.Save(drivesXmlPath);
|
||||||
|
|
||||||
|
IncrementGPOVersion(organizationId, gpoId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
@ -1464,6 +1471,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
|
|
||||||
xml.Save(drivesXmlPath);
|
xml.Save(drivesXmlPath);
|
||||||
|
|
||||||
|
IncrementGPOVersion(organizationId, gpoId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
@ -1602,6 +1611,50 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
de.CommitChanges();
|
de.CommitChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetGPCVersionNumber(string organizationId, int version)
|
||||||
|
{
|
||||||
|
string gpoName = string.Format("{0}-mapped-drives", organizationId);
|
||||||
|
|
||||||
|
DirectoryEntry de = ActiveDirectoryUtils.GetGroupPolicyContainer(gpoName);
|
||||||
|
|
||||||
|
ActiveDirectoryUtils.SetADObjectProperty(de, "versionNumber", version.ToString());
|
||||||
|
|
||||||
|
de.CommitChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IncrementGPOVersion(string organizationId, string gpoId)
|
||||||
|
{
|
||||||
|
string path = string.Format("{0}\\{1}",
|
||||||
|
string.Format(GROUP_POLICY_MAPPED_DRIVES_ROOT_PATH_TEMPLATE, RootDomain, gpoId),
|
||||||
|
"GPT.ini");
|
||||||
|
|
||||||
|
if (File.Exists(path))
|
||||||
|
{
|
||||||
|
string[] lines = File.ReadAllLines(path);
|
||||||
|
|
||||||
|
int version = int.Parse(lines.Where(x => x.Contains("Version=")).FirstOrDefault().Replace("Version=", ""));
|
||||||
|
|
||||||
|
string hexVersionValue = version.ToString("X");
|
||||||
|
|
||||||
|
int userVersion = (version == 0) ? 0 : int.Parse(hexVersionValue.Substring(0, hexVersionValue.Length - 4), System.Globalization.NumberStyles.HexNumber);
|
||||||
|
|
||||||
|
userVersion++;
|
||||||
|
|
||||||
|
string userHexVersionValue = userVersion.ToString("X");
|
||||||
|
string conputerHexVersion = (version == 0) ? "0000" : hexVersionValue.Substring(hexVersionValue.Length - 4, 4);
|
||||||
|
|
||||||
|
hexVersionValue = userHexVersionValue + conputerHexVersion;
|
||||||
|
|
||||||
|
int newVersion = int.Parse(hexVersionValue, System.Globalization.NumberStyles.HexNumber);
|
||||||
|
|
||||||
|
lines[1] = string.Format("Version={0}", newVersion);
|
||||||
|
|
||||||
|
File.WriteAllLines(path, lines);
|
||||||
|
|
||||||
|
SetGPCVersionNumber(organizationId, newVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region Drive Mapping Helpers
|
#region Drive Mapping Helpers
|
||||||
|
|
||||||
private void CreateDrivesXmlEmpty(string path, string fileName)
|
private void CreateDrivesXmlEmpty(string path, string fileName)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 2010
|
# Visual Studio 2013
|
||||||
|
VisualStudioVersion = 12.0.21005.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BB38798E-1528-493C-868E-005102316536}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BB38798E-1528-493C-868E-005102316536}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
..\..\LICENSE.txt = ..\..\LICENSE.txt
|
..\..\LICENSE.txt = ..\..\LICENSE.txt
|
||||||
|
|
|
@ -0,0 +1,135 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Controls>
|
||||||
|
<!--<Control key="" />-->
|
||||||
|
<!--<Control key="create_organization" />-->
|
||||||
|
|
||||||
|
|
||||||
|
<!--Home-->
|
||||||
|
<Control key="organization_home" />
|
||||||
|
|
||||||
|
|
||||||
|
<!--Organization-->
|
||||||
|
<Control key="users" />
|
||||||
|
<Control key="edit_user" general_key="users" /> <!--?-->
|
||||||
|
<Control key="create_user" general_key="users" />
|
||||||
|
<Control key="user_memberof" general_key="users" />
|
||||||
|
<!--<Control key="organization_user_setup" />-->
|
||||||
|
|
||||||
|
<Control key="secur_groups" />
|
||||||
|
<Control key="create_secur_group" general_key="secur_groups" />
|
||||||
|
<Control key="secur_group_settings" general_key="secur_groups" />
|
||||||
|
<Control key="secur_group_memberof" general_key="secur_groups" />
|
||||||
|
|
||||||
|
<Control key="org_domains" />
|
||||||
|
<Control key="org_add_domain" general_key="org_domains" />
|
||||||
|
|
||||||
|
|
||||||
|
<!--Exchange-->
|
||||||
|
<Control key="mailboxes" />
|
||||||
|
<!--<Control key="archivingmailboxes" />-->
|
||||||
|
<Control key="create_mailbox" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_settings" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_mobile" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_mobile_details" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_addresses" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_mailflow" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_permissions" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_advanced" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_setup" general_key="mailboxes" />
|
||||||
|
<Control key="mailbox_memberof" general_key="mailboxes" />
|
||||||
|
|
||||||
|
<Control key="contacts" />
|
||||||
|
<Control key="create_contact" general_key="contacts" />
|
||||||
|
<Control key="contact_settings" general_key="contacts" />
|
||||||
|
<Control key="contact_mailflow" general_key="contacts" />
|
||||||
|
|
||||||
|
<Control key="dlists" />
|
||||||
|
<Control key="create_dlist" general_key="dlists" />
|
||||||
|
<Control key="dlist_settings" general_key="dlists" />
|
||||||
|
<Control key="dlist_addresses" general_key="dlists" />
|
||||||
|
<Control key="dlist_mailflow" general_key="dlists" />
|
||||||
|
<Control key="dlist_permissions" general_key="dlists" />
|
||||||
|
<Control key="dlist_memberof" general_key="dlists" />
|
||||||
|
|
||||||
|
<Control key="disclaimers" />
|
||||||
|
<Control key="disclaimers_settings" general_key="disclaimers" />
|
||||||
|
|
||||||
|
<Control key="public_folders" />
|
||||||
|
<Control key="create_public_folder" general_key="public_folders" />
|
||||||
|
<Control key="public_folder_settings" general_key="public_folders" />
|
||||||
|
<Control key="public_folder_addresses" general_key="public_folders" />
|
||||||
|
<Control key="public_folder_mailflow" general_key="public_folders" />
|
||||||
|
<Control key="public_folder_mailenable" general_key="public_folders" />
|
||||||
|
|
||||||
|
<Control key="domains" />
|
||||||
|
<Control key="add_domain" general_key="domains" />
|
||||||
|
<Control key="domain_records" general_key="domains" />
|
||||||
|
|
||||||
|
<Control key="storage_usage" />
|
||||||
|
<Control key="storage_usage_details" general_key="storage_usage" />
|
||||||
|
<!--<Control key="storage_limits" />-->
|
||||||
|
|
||||||
|
<Control key="activesync_policy" />
|
||||||
|
|
||||||
|
<Control key="mailboxplans" />
|
||||||
|
<Control key="retentionpolicy" />
|
||||||
|
<Control key="retentionpolicytag" />
|
||||||
|
<Control key="add_mailboxplan" general_key="mailboxplans" /> <!--?-->
|
||||||
|
|
||||||
|
|
||||||
|
<!--CRM-->
|
||||||
|
<Control key="CRMOrganizationDetails" />
|
||||||
|
|
||||||
|
<Control key="CRMUsers" />
|
||||||
|
<Control key="CRMUserRoles" general_key="CRMUsers" />
|
||||||
|
<Control key="create_crm_user" general_key="CRMUsers" />
|
||||||
|
|
||||||
|
<Control key="crm_storage_settings" />
|
||||||
|
|
||||||
|
|
||||||
|
<!--SharePoint-->
|
||||||
|
<Control key="sharepoint_sitecollections" />
|
||||||
|
<Control key="sharepoint_edit_sitecollection" general_key="sharepoint_sitecollections" />
|
||||||
|
<Control key="sharepoint_backup_sitecollection" general_key="sharepoint_sitecollections" />
|
||||||
|
<Control key="sharepoint_restore_sitecollection" general_key="sharepoint_sitecollections" />
|
||||||
|
|
||||||
|
<Control key="sharepoint_storage_settings" />
|
||||||
|
|
||||||
|
<Control key="sharepoint_storage_usage" />
|
||||||
|
|
||||||
|
|
||||||
|
<!--BlackBerry-->
|
||||||
|
<Control key="blackberry_users" />
|
||||||
|
<Control key="create_new_blackberry_user" general_key="blackberry_users" />
|
||||||
|
<Control key="edit_blackberry_user" general_key="blackberry_users" />
|
||||||
|
|
||||||
|
|
||||||
|
<!--OCS-->
|
||||||
|
<Control key="ocs_users" />
|
||||||
|
<Control key="create_new_ocs_user" general_key="ocs_users" />
|
||||||
|
<Control key="edit_ocs_user" general_key="ocs_users" />
|
||||||
|
|
||||||
|
|
||||||
|
<!--Lync-->
|
||||||
|
<Control key="lync_users"/>
|
||||||
|
<Control key="create_new_lync_user" general_key="lync_users" />
|
||||||
|
<Control key="edit_lync_user" general_key="lync_users" />
|
||||||
|
|
||||||
|
<Control key="lync_userplans" />
|
||||||
|
<Control key="add_lyncuserplan" general_key="lync_userplans" />
|
||||||
|
|
||||||
|
<Control key="lync_federationdomains" />
|
||||||
|
<Control key="add_lyncfederation_domain" general_key="lync_federationdomains" />
|
||||||
|
|
||||||
|
<Control key="lync_phonenumbers" />
|
||||||
|
<Control key="allocate_phonenumbers" general_key="lync_phonenumbers" />
|
||||||
|
|
||||||
|
|
||||||
|
<!--EnterpriseStorage-->
|
||||||
|
<Control key="enterprisestorage_folders" />
|
||||||
|
<Control key="create_enterprisestorage_folder" general_key="enterprisestorage_folders" />
|
||||||
|
<Control key="enterprisestorage_folder_settings" general_key="enterprisestorage_folders" />
|
||||||
|
|
||||||
|
<Control key="enterprisestorage_drive_maps" />
|
||||||
|
<Control key="create_enterprisestorage_drive_map" general_key="enterprisestorage_drive_maps" />
|
||||||
|
</Controls>
|
|
@ -88,51 +88,47 @@
|
||||||
</ModuleData>
|
</ModuleData>
|
||||||
|
|
||||||
<ModuleData id="SpaceIcons">
|
<ModuleData id="SpaceIcons">
|
||||||
<Icon pageID="SpaceDomains" resourceGroup="OS" imageUrl="icons/world_48.png" />
|
<Group pageID="SpaceHome" titleresourcekey="System">
|
||||||
<Icon pageID="SpaceWeb" disabled="True" imageUrl="icons/location_48.png">
|
<Icon pageID="SpaceHome" titleresourcekey="SpaceStatistics" imageUrl="icons/spacehome_48.png" />
|
||||||
<MenuItems>
|
<Icon pageID="SpaceDomains" resourceGroup="OS" imageUrl="icons/domains_48.png" />
|
||||||
<MenuItem pageID="SpaceWebSites" resourceGroup="Web" />
|
<Icon pageID="SpaceFtpAccounts" resourceGroup="FTP" imageUrl="icons/ftp_48.png"/>
|
||||||
<MenuItem pageID="SpaceWebIPAddresses" resourceGroup="Web" />
|
<Icon pageID="SpaceFileManager" resourceGroup="OS" quota="OS.FileManager" imageUrl="icons/filemanager_48.png"/>
|
||||||
<MenuItem pageID="SpaceSharedSSL" resourceGroup="OS" quota="Web.SharedSSL" />
|
<Icon pageID="SpaceApplicationsInstaller" resourceGroup="OS" quota="OS.AppInstaller" imageUrl="icons/applicationsinstaller_48.png"/>
|
||||||
<MenuItem pageID="SpaceAdvancedStatistics" resourceGroup="Statistics" />
|
<Icon pageID="SpaceScheduledTasks" resourceGroup="OS" quota="OS.ScheduledTasks" imageUrl="icons/scheduledtasks_48.png"/>
|
||||||
</MenuItems>
|
</Group>
|
||||||
</Icon>
|
<Group pageID="SpaceWeb" titleresourcekey="Web" disabled="True">
|
||||||
<Icon pageID="SpaceFtpAccounts" resourceGroup="FTP" imageUrl="icons/folder_up_48.png"/>
|
<Icon pageID="SpaceWebSites" resourceGroup="Web" imageUrl="icons/websites_48.png" />
|
||||||
<Icon pageID="SpaceFileManager" resourceGroup="OS" quota="OS.FileManager" imageUrl="icons/cabinet_48.png"/>
|
<Icon pageID="SpaceWebIPAddresses" resourceGroup="Web" imageUrl="icons/webipaddresses_48.png" />
|
||||||
<Icon pageID="SpaceDatabases" disabled="True" imageUrl="icons/database2_48.png">
|
<Icon pageID="SpaceSharedSSL" resourceGroup="OS" quota="Web.SharedSSL" imageUrl="icons/sharedssl_48.png" />
|
||||||
<MenuItems>
|
<Icon pageID="SpaceAdvancedStatistics" resourceGroup="Statistics" imageUrl="icons/advancedstatistics_48.png" />
|
||||||
<MenuItem pageID="SpaceMsSql2000" resourceGroup="MsSQL2000"/>
|
<Icon pageID="SpaceWebApplicationsGallery" resourceGroup="Web" quota="Web.WebAppGallery" imageUrl="icons/webapplicationsgallery_48.png"/>
|
||||||
<MenuItem pageID="SpaceMsSql2005" resourceGroup="MsSQL2005"/>
|
</Group>
|
||||||
<MenuItem pageID="SpaceMsSql2008" resourceGroup="MsSQL2008"/>
|
<Group pageID="SpaceMail" titleresourcekey="Email" resourceGroup="Mail" disabled="True">
|
||||||
<MenuItem pageID="SpaceMsSql2012" resourceGroup="MsSQL2012"/>
|
<Icon pageID="SpaceMailAccounts" quota="Mail.Accounts" imageUrl="icons/mail_accounts_48.png"/>
|
||||||
<MenuItem pageID="SpaceMySql4" resourceGroup="MySQL4"/>
|
<Icon pageID="SpaceMailForwardings" quota="Mail.Forwardings" imageUrl="icons/mail_forwardings_48.png"/>
|
||||||
<MenuItem pageID="SpaceMySql5" resourceGroup="MySQL5"/>
|
<Icon pageID="SpaceMailGroups" quota="Mail.Groups" imageUrl="icons/mail_groups_48.png"/>
|
||||||
<MenuItem pageID="SpaceOdbc" resourceGroup="OS" quota="OS.ODBC"/>
|
<Icon pageID="SpaceMailLists" quota="Mail.Lists" imageUrl="icons/mail_lists_48.png"/>
|
||||||
</MenuItems>
|
<Icon pageID="SpaceMailDomains" resourceGroup="Mail" imageUrl="icons/mail_domains_48.png"/>
|
||||||
</Icon>
|
</Group>
|
||||||
<Icon pageID="SpaceMail" resourceGroup="Mail" disabled="True" imageUrl="icons/mail_48.png">
|
<Group pageID="SpaceDatabases" titleresourcekey="Databases" disabled="True">
|
||||||
<MenuItems>
|
<Icon pageID="SpaceMsSql2000" resourceGroup="MsSQL2000" imageUrl="icons/mssql_48.png"/>
|
||||||
<MenuItem pageID="SpaceMailAccounts" quota="Mail.Accounts"/>
|
<Icon pageID="SpaceMsSql2005" resourceGroup="MsSQL2005" imageUrl="icons/mssql_48.png"/>
|
||||||
<MenuItem pageID="SpaceMailForwardings" quota="Mail.Forwardings"/>
|
<Icon pageID="SpaceMsSql2008" resourceGroup="MsSQL2008" imageUrl="icons/mssql_48.png"/>
|
||||||
<MenuItem pageID="SpaceMailGroups" quota="Mail.Groups"/>
|
<Icon pageID="SpaceMsSql2012" resourceGroup="MsSQL2012" imageUrl="icons/mssql_48.png"/>
|
||||||
<MenuItem pageID="SpaceMailLists" quota="Mail.Lists"/>
|
<Icon pageID="SpaceMySql4" resourceGroup="MySQL4" imageUrl="icons/mysql_48.png"/>
|
||||||
<MenuItem pageID="SpaceMailDomains" resourceGroup="Mail"/>
|
<Icon pageID="SpaceMySql5" resourceGroup="MySQL5" imageUrl="icons/mysql_48.png"/>
|
||||||
</MenuItems>
|
<Icon pageID="SpaceOdbc" resourceGroup="OS" quota="OS.ODBC" imageUrl="icons/odbc_48.png"/>
|
||||||
</Icon>
|
</Group>
|
||||||
<Icon pageID="SpaceSharePoint" resourceGroup="SharePoint" disabled="True" imageUrl="icons/colors_48.png">
|
<Group pageID="SpaceHome" titleresourcekey="VPS" disabled="True">
|
||||||
<MenuItems>
|
<Icon pageID="SpaceVPS" resourceGroup="VPS" imageUrl="icons/vps_48.png" />
|
||||||
<MenuItem pageID="SpaceSharePointSites"/>
|
<Icon pageID="SpaceVPSForPC" resourceGroup="VPSForPC" imageUrl="icons/vpsforpc_48.png" />
|
||||||
<MenuItem pageID="SpaceSharePointUsers"/>
|
</Group>
|
||||||
</MenuItems>
|
<!--
|
||||||
</Icon>
|
<Group pageID="SpaceSharePoint" resourceGroup="SharePoint" disabled="True">
|
||||||
<Icon pageID="SpaceVPS" resourceGroup="VPS" imageUrl="images/vps/servers_48.png" />
|
<Icon pageID="SpaceSharePointSites" imageUrl="icons/colors_48.png"/>
|
||||||
<Icon pageID="SpaceVPSForPC" resourceGroup="VPSForPC" imageUrl="images/vps/icon-home-botbar-cloud.png" />
|
<Icon pageID="SpaceSharePointUsers" imageUrl="icons/colors_48.png"/>
|
||||||
<Icon pageID="SpaceExchangeServer" resourceGroup="Hosted Organizations" imageUrl="icons/enterprise.png"/>
|
</Group>
|
||||||
<Icon pageID="SpaceWebApplicationsGallery" resourceGroup="Web" quota="Web.WebAppGallery" imageUrl="icons/dvd_disc_48.png"/>
|
-->
|
||||||
<Icon pageID="SpaceApplicationsInstaller" resourceGroup="OS" quota="OS.AppInstaller" imageUrl="icons/dvd_disc_48.png"/>
|
|
||||||
<Icon pageID="SpaceScheduledTasks" resourceGroup="OS" quota="OS.ScheduledTasks" imageUrl="icons/calendar_month_2_clock_48.png"/>
|
|
||||||
<!--MenuItem url="http://phpmysqladmin.com" title="phpMyAdmin" target="_blank"
|
|
||||||
resourceGroup="MySQL4"/-->
|
|
||||||
</ModuleData>
|
</ModuleData>
|
||||||
|
|
||||||
<ModuleData id="HostedSolutionMenu">
|
<ModuleData id="HostedSolutionMenu">
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<!-- Display Settings -->
|
<!-- Display Settings -->
|
||||||
<PortalName>WebsitePanel</PortalName>
|
<PortalName>WebsitePanel</PortalName>
|
||||||
<!-- Enterprise Server -->
|
<!-- Enterprise Server -->
|
||||||
<EnterpriseServer>http://192.168.0.6:9002</EnterpriseServer>
|
<EnterpriseServer>http://localhost:9002</EnterpriseServer>
|
||||||
<!-- General Settings -->
|
<!-- General Settings -->
|
||||||
<CultureCookieName>UserCulture</CultureCookieName>
|
<CultureCookieName>UserCulture</CultureCookieName>
|
||||||
<ThemeCookieName>UserTheme</ThemeCookieName>
|
<ThemeCookieName>UserTheme</ThemeCookieName>
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
<Control key="create_space" src="WebsitePanel/UserCreateSpace.ascx" title="UserCreateSpace" type="View" icon="sphere_add_48.png" />
|
<Control key="create_space" src="WebsitePanel/UserCreateSpace.ascx" title="UserCreateSpace" type="View" icon="sphere_add_48.png" />
|
||||||
</Controls>
|
</Controls>
|
||||||
</ModuleDefinition>
|
</ModuleDefinition>
|
||||||
<ModuleDefinition id="UserNotes">
|
<ModuleDefinition id="UserNotes">
|
||||||
<Controls>
|
<Controls>
|
||||||
<Control key="" src="WebsitePanel/UserAccountNotes.ascx" title="UserAccountNotes" type="View" />
|
<Control key="" src="WebsitePanel/UserAccountNotes.ascx" title="UserAccountNotes" type="View" />
|
||||||
</Controls>
|
</Controls>
|
||||||
|
|
|
@ -786,4 +786,7 @@
|
||||||
<data name="ModuleTitle.PhoneNumbers" xml:space="preserve">
|
<data name="ModuleTitle.PhoneNumbers" xml:space="preserve">
|
||||||
<value>Phone Numbers</value>
|
<value>Phone Numbers</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ModuleTitle.UserOrganization" xml:space="preserve">
|
||||||
|
<value>Hosted Organization</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
After Width: | Height: | Size: 597 B |
After Width: | Height: | Size: 587 B |
After Width: | Height: | Size: 674 B |
After Width: | Height: | Size: 601 B |
After Width: | Height: | Size: 660 B |
After Width: | Height: | Size: 660 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 246 B |
After Width: | Height: | Size: 652 B |
After Width: | Height: | Size: 652 B |
After Width: | Height: | Size: 438 B |
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 652 B |
After Width: | Height: | Size: 568 B |
After Width: | Height: | Size: 664 B |
After Width: | Height: | Size: 777 B |
After Width: | Height: | Size: 597 B |
After Width: | Height: | Size: 1,018 B |
After Width: | Height: | Size: 664 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 587 B |
After Width: | Height: | Size: 597 B |
After Width: | Height: | Size: 597 B |
Before Width: | Height: | Size: 832 B After Width: | Height: | Size: 55 B |
Before Width: | Height: | Size: 697 B After Width: | Height: | Size: 245 B |
|
@ -5,7 +5,7 @@
|
||||||
.LightGridView .AspNet-GridView table tbody tr td {padding:5px; text-align:left;}
|
.LightGridView .AspNet-GridView table tbody tr td {padding:5px; text-align:left;}
|
||||||
.NormalGridView .AspNet-GridView {width:100%; margin-top:10px;}
|
.NormalGridView .AspNet-GridView {width:100%; margin-top:10px;}
|
||||||
.NormalGridView .AspNet-GridView table {width:100%;}
|
.NormalGridView .AspNet-GridView table {width:100%;}
|
||||||
.NormalGridView .AspNet-GridView div.AspNet-GridView-Empty {padding:30px 0 50px 0; font-size:10pt; text-align:center; border-radius:2px; color:#ccc;}
|
.NormalGridView .AspNet-GridView div.AspNet-GridView-Empty {padding:30px 0 50px 0; font-size:10pt; text-align:center; border-radius:2px; color:#777;}
|
||||||
.NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination {margin:30px 0; font-size:11px; text-align:center; white-space:nowrap; cursor:default; line-height:23px; color:#313131;}
|
.NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination {margin:30px 0; font-size:11px; text-align:center; white-space:nowrap; cursor:default; line-height:23px; color:#313131;}
|
||||||
.NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination a, .NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination span {display:inline-block; width:26px; height:24px;border:1px solid #e6e6e6; cursor:pointer; margin:0 2px; border-radius:1px;}
|
.NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination a, .NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination span {display:inline-block; width:26px; height:24px;border:1px solid #e6e6e6; cursor:pointer; margin:0 2px; border-radius:1px;}
|
||||||
.NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination span {font-weight:600; color:#222; border:none;}
|
.NormalGridView .AspNet-GridView div.AspNet-GridView-Pagination span {font-weight:600; color:#222; border:none;}
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
.NormalGridView .AspNet-GridView table thead tr th span {white-space:nowrap;}
|
.NormalGridView .AspNet-GridView table thead tr th span {white-space:nowrap;}
|
||||||
.NormalGridView .AspNet-GridView table thead tr th a {width:100%; display:inline-block; text-transform:uppercase; padding:10px 5px; color:#333;}
|
.NormalGridView .AspNet-GridView table thead tr th a {width:100%; display:inline-block; text-transform:uppercase; padding:10px 5px; color:#333;}
|
||||||
.NormalGridView .AspNet-GridView table thead tr th.AspNet-GridView-Sort {font-weight:600;}
|
.NormalGridView .AspNet-GridView table thead tr th.AspNet-GridView-Sort {font-weight:600;}
|
||||||
.NormalGridView .AspNet-GridView table tbody tr td {font-weight:300; font-size:14px; color:#888; text-align:left; padding:10px 5px; border-bottom:solid 1px #ddd; /*white-space:nowrap;*/}
|
.NormalGridView .AspNet-GridView table tbody tr td {font-weight:300; font-size:14px; color:#444; text-align:left; padding:10px 5px; border-bottom:solid 1px #ddd; /*white-space:nowrap;*/}
|
||||||
.NormalGridView .AspNet-GridView table tbody tr td a {display:inline-block;}
|
.NormalGridView .AspNet-GridView table tbody tr td a {display:inline-block;}
|
||||||
.NormalGridView .AspNet-GridView table tbody tr td a:hover {text-decoration:underline;}
|
.NormalGridView .AspNet-GridView table tbody tr td a:hover {text-decoration:underline;}
|
||||||
.NormalGridView .AspNet-GridView table tbody tr.AspNet-GridView-Alternate td {background:#f9f9f9;}
|
.NormalGridView .AspNet-GridView table tbody tr.AspNet-GridView-Alternate td {background:#f9f9f9;}
|
||||||
|
@ -32,4 +32,8 @@ table.filemanager td {padding:0 !important;}
|
||||||
.RadioButtonsGridView .AspNet-GridView table{width: 100%;}
|
.RadioButtonsGridView .AspNet-GridView table{width: 100%;}
|
||||||
.RadioButtonsGridView .AspNet-GridView table tbody tr td{font-size: 9pt; color: #333333; background: White; padding: 5px; text-align: left; white-space: nowrap;}
|
.RadioButtonsGridView .AspNet-GridView table tbody tr td{font-size: 9pt; color: #333333; background: White; padding: 5px; text-align: left; white-space: nowrap;}
|
||||||
.RadioButtonsGridView .AspNet-GridView table tbody tr td.RadioButtonColumn{padding-right: 25px; padding-left: 10px!important;}
|
.RadioButtonsGridView .AspNet-GridView table tbody tr td.RadioButtonColumn{padding-right: 25px; padding-left: 10px!important;}
|
||||||
.RadioButtonsGridView .AspNet-GridView table thead tr th{clear: both; background: #f5f5f5; padding: 4px; border-top: solid 1px #CCCCCC; font-size: 9pt; color: #333333; text-align: left; white-space: nowrap;}
|
.RadioButtonsGridView .AspNet-GridView table thead tr th{clear: both; background: #f5f5f5; padding: 4px; border-top: solid 1px #CCCCCC; font-size: 9pt; color: #333333; text-align: left; white-space: nowrap;}
|
||||||
|
|
||||||
|
/* fixed */
|
||||||
|
.FixedGrid table { table-layout: fixed; }
|
||||||
|
.FixedGrid table tbody tr td {word-wrap:break-word;}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
.TopMenu ul.AspNet-Menu li ul li.AspNet-Menu-WithChildren {}
|
.TopMenu ul.AspNet-Menu li ul li.AspNet-Menu-WithChildren {}
|
||||||
.TopMenu ul.AspNet-Menu li ul li.AspNet-Menu-WithChildren span {height:auto; line-height:20px; padding:0; background:none; color:#333; font-size:13px; line-height:34px; text-transform:capitalize;}
|
.TopMenu ul.AspNet-Menu li ul li.AspNet-Menu-WithChildren span {height:auto; line-height:20px; padding:0; background:none; color:#333; font-size:13px; line-height:34px; text-transform:capitalize;}
|
||||||
.MenuHeader {float:left; position:relative; display:block; background-image:url('/g/icons.png'); background-repeat:no-repeat; line-height:74px; text-transform:uppercase; font-size:12px; color:#fff; overflow:hidden; padding:0 22px 0 34px; filter:alpha(opacity=70); opacity:0.7; cursor:pointer;}
|
.MenuHeader {float:left; position:relative; display:block; background-image:url('/g/icons.png'); background-repeat:no-repeat; line-height:74px; text-transform:uppercase; font-size:12px; color:#fff; overflow:hidden; padding:0 22px 0 34px; filter:alpha(opacity=70); opacity:0.7; cursor:pointer;}
|
||||||
.MenuHeader:hover {filter:alpha(opacity=100); opacity:1;}
|
.MenuHeader:hover {filter:alpha(opacity=100); opacity:1;}
|
||||||
.TopMenu ul.AspNet-Menu li ul li.AspNet-Menu-WithChildren span:after {content:'?'; float:right; margin-right:10px;}
|
.TopMenu ul.AspNet-Menu li ul li.AspNet-Menu-WithChildren span:after {content:'→'; float:right; margin-right:10px;}
|
||||||
.TopMenu ul.AspNet-Menu li {float:left; position:relative;}
|
.TopMenu ul.AspNet-Menu li {float:left; position:relative;}
|
||||||
.TopMenu ul.AspNet-Menu li a, .TopMenu ul.AspNet-Menu li span {display:block; background-image:url('/g/icons.png'); background-repeat:no-repeat; line-height:74px; text-transform:uppercase; font-size:12px; color:#fff; overflow:hidden; padding:0 22px 0 34px; filter:alpha(opacity=70); opacity:0.7; cursor:pointer;}
|
.TopMenu ul.AspNet-Menu li a, .TopMenu ul.AspNet-Menu li span {display:block; background-image:url('/g/icons.png'); background-repeat:no-repeat; line-height:40px; text-transform:uppercase; font-size:12px; color:#fff; overflow:hidden; padding:0 22px 0 34px; filter:alpha(opacity=90); opacity:0.9; cursor:pointer;}
|
||||||
.TopMenu ul.AspNet-Menu li a:hover, .TopMenu ul.AspNet-Menu li.AspNet-Menu-Hover, .TopMenu ul.AspNet-Menu li span:hover {filter:alpha(opacity=100); opacity:1;}
|
.TopMenu ul.AspNet-Menu li a:hover, .TopMenu ul.AspNet-Menu li.AspNet-Menu-Hover, .TopMenu ul.AspNet-Menu li span:hover {filter:alpha(opacity=100); opacity:1;}
|
||||||
.TopMenu ul.AspNet-Menu li span {}
|
.TopMenu ul.AspNet-Menu li span {}
|
||||||
.TopMenu .AspNet-Menu-Horizontal ul.AspNet-Menu ul li {text-align:left; clear:both; text-indent:10px; color:#777; margin:0 0 0 5px;}
|
.TopMenu .AspNet-Menu-Horizontal ul.AspNet-Menu ul li {text-align:left; clear:both; text-indent:10px; color:#777; margin:0 0 0 5px;}
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
.TopMenu ul.AspNet-Menu li.AspNet-Menu-Hover a, .TopMenu ul.AspNet-Menu li.AspNet-Menu-Hover span {}
|
.TopMenu ul.AspNet-Menu li.AspNet-Menu-Hover a, .TopMenu ul.AspNet-Menu li.AspNet-Menu-Hover span {}
|
||||||
.TopMenu ul.AspNet-Menu li ul li {margin: 0px; width: 100%;}
|
.TopMenu ul.AspNet-Menu li ul li {margin: 0px; width: 100%;}
|
||||||
/*.TopMenu .AspNet-Menu-Horizontal ul.AspNet-Menu ul:before {width:0; height:0; position:absolute; content:" "; top:-8px; left:50%; margin-left:-8px; border-style:solid; border-width:0 8px 8px 8px; border-color:transparent transparent #fff transparent;}*/
|
/*.TopMenu .AspNet-Menu-Horizontal ul.AspNet-Menu ul:before {width:0; height:0; position:absolute; content:" "; top:-8px; left:50%; margin-left:-8px; border-style:solid; border-width:0 8px 8px 8px; border-color:transparent transparent #fff transparent;}*/
|
||||||
.TopMenu .AspNet-Menu-Horizontal ul.AspNet-Menu ul {position: absolute; top: 100%; left: 0; z-index: 1000; float: left; min-width: 160px; padding: 5px 10px 5px 0; margin: -20px 0 0 0; list-style: none; font-size: 14px; background-color: #FFF; border: 1px solid #CCC; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); background-clip: padding-box;}
|
.TopMenu .AspNet-Menu-Horizontal ul.AspNet-Menu ul {position: absolute; top: 100%; left: 0; z-index: 1000; float: left; min-width: 160px; padding: 5px 10px 5px 0; margin: -10px 0 0 0; list-style: none; font-size: 14px; background-color: #FFF; border: 1px solid #CCC; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); background-clip: padding-box;}
|
||||||
.LeftMenu {font-size: 8pt;}
|
.LeftMenu {font-size: 8pt;}
|
||||||
.LeftMenu ul {background-color: #D1E9FF;}
|
.LeftMenu ul {background-color: #D1E9FF;}
|
||||||
.LeftMenu ul.AspNet-Menu {width: 190px;}
|
.LeftMenu ul.AspNet-Menu {width: 190px;}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
html, body, div, form, fieldset, legend, label, ul, li {margin:0; padding:0;}
|
html, body, div, form, fieldset, legend, label, ul, li {margin:0; padding:0;}
|
||||||
table {border-collapse:collapse; border-spacing:0;}
|
table {border-collapse:collapse; border-spacing:0;}
|
||||||
tr, td, th {padding:0;}
|
tr, td, th {padding:0;}
|
||||||
|
td{vertical-align:top;}
|
||||||
img {border:0;}
|
img {border:0;}
|
||||||
ul, ol, li {list-style:none;}
|
ul, ol, li {list-style:none;}
|
||||||
a {text-decoration:none;}
|
a {text-decoration:none;}
|
||||||
|
@ -11,7 +12,7 @@ label {cursor:pointer;}
|
||||||
/* global */
|
/* global */
|
||||||
a {color:#428bca;}
|
a {color:#428bca;}
|
||||||
a:hover {text-decoration:underline;}
|
a:hover {text-decoration:underline;}
|
||||||
td.SubHead {min-width:70px; line-height:13px; color:#888; vertical-align:top; padding:9px 0 5px 0;}
|
td.SubHead {min-width:70px; line-height:13px; color:#000; vertical-align:top; padding:9px 0 5px 0;}
|
||||||
td.SubHead span {}
|
td.SubHead span {}
|
||||||
td.Normal {padding:0; vertical-align:top; line-height:34px; white-space:nowrap;}
|
td.Normal {padding:0; vertical-align:top; line-height:34px; white-space:nowrap;}
|
||||||
td.Normal span {}
|
td.Normal span {}
|
||||||
|
@ -26,20 +27,21 @@ td.Normal .NormalTextBox + span {display:inline-block; padding:0;}
|
||||||
.FormLabel150, .FormLabel200 {padding:9px 8px 14px 0; color:#888; vertical-align:top;}
|
.FormLabel150, .FormLabel200 {padding:9px 8px 14px 0; color:#888; vertical-align:top;}
|
||||||
.FormLabel150 {width:150px;}
|
.FormLabel150 {width:150px;}
|
||||||
.FormLabel200 {width:200px;}
|
.FormLabel200 {width:200px;}
|
||||||
.Huge {font-size:36px; font-weight:300; color:#333; background:none !important; border:none !important; padding:0 !important; letter-spacing:-1px;}
|
.Huge {font-family:'Segoe UI Light','Open Sans',Arial!important; font-size:36px; font-weight:300; color:#333; background:none !important; border:none !important; padding:0 !important; letter-spacing:-1px;}
|
||||||
.FormBody .Huge {font-size:18px; font-weight:600; letter-spacing:0;}
|
.FormBody .Huge {font-size:18px; font-weight:600; letter-spacing:0;}
|
||||||
.Right .SubHead {width:80px;}
|
.Right .SubHead {width:80px;}
|
||||||
.RightBlockTable .SubHead {width:60px;}
|
.RightBlockTable .SubHead {width:60px;}
|
||||||
.ToolLink a {font-size:13px; display:inline-block; padding:10px 0 0 0; font-weight:300; color:#ec9e59;}
|
.ToolLink a {font-size:13px; display:inline-block; padding:10px 0 0 0; font-weight:300; color:#db6b20;}
|
||||||
.ToolLink a:hover {text-decoration:underline;}
|
.ToolLink a:hover {text-decoration:underline;}
|
||||||
ul.LinksList {margin-left:20px;}
|
ul.LinksList {margin-left:20px;}
|
||||||
ul.LinksList li a {display:block; line-height:30px;}
|
ul.LinksList li a {display:block; line-height:30px;}
|
||||||
.IconsBlock {margin-bottom:20px;}
|
.IconsBlock {margin-bottom:20px;}
|
||||||
.IconsTitle {padding:5px; font-size:26px; font-weight:300;}
|
.IconsTitle {padding:5px; font-size:26px; font-weight:300;}
|
||||||
.IconsTitle a {color:#428bca;}
|
.IconsTitle a {color:#428bca;}
|
||||||
.Icon {width:125px; padding:15px 0; border:solid 1px transparent; text-align:center; vertical-align:top; font-size:13px;}
|
.Icon {width:125px; border:solid 1px transparent; text-align:center; vertical-align:top; font-size:13px; margin-top:10px;}
|
||||||
.Icon.Hover {cursor:pointer; border-color:#ffd349; background:#ffde77;}
|
.Icon.Hover {cursor:pointer; border-color:#ffd349; background:#ffde77;}
|
||||||
.Icon a {display:block; color:#333; padding:0 15px;}
|
.Icon a {display:block; color:#333;}
|
||||||
|
.Icon > a + br + a {padding: 0 0 10px 0;}
|
||||||
.Icon a + br {display:none;}
|
.Icon a + br {display:none;}
|
||||||
.IconMenu {position:absolute; visibility:hidden; cursor:pointer; border:1px solid #ffd349; background:#ffde77; font-size:9pt; margin:40px 0 0 -15px; min-width:150px;}
|
.IconMenu {position:absolute; visibility:hidden; cursor:pointer; border:1px solid #ffd349; background:#ffde77; font-size:9pt; margin:40px 0 0 -15px; min-width:150px;}
|
||||||
.IconMenu ul {display:block; list-style:none; margin:1px; padding:0px;}
|
.IconMenu ul {display:block; list-style:none; margin:1px; padding:0px;}
|
||||||
|
@ -70,6 +72,7 @@ a.FileManagerTreeNode:visited, a.FileManagerTreeNodeSelected:visited {}
|
||||||
a.FileManagerTreeNode:active, a.FileManagerTreeNodeSelected:active {}
|
a.FileManagerTreeNode:active, a.FileManagerTreeNodeSelected:active {}
|
||||||
a.FileManagerTreeNode:hover, a.FileManagerTreeNodeSelected:hover {background:#f5f5f5;}
|
a.FileManagerTreeNode:hover, a.FileManagerTreeNodeSelected:hover {background:#f5f5f5;}
|
||||||
.FormButtonsBar + .NormalGridView .AspNet-GridView {margin-bottom:15px;}
|
.FormButtonsBar + .NormalGridView .AspNet-GridView {margin-bottom:15px;}
|
||||||
|
|
||||||
/*.FormButtonsBar + .NormalGridView .AspNet-GridView table tbody tr td {border:none; padding:0;}*/
|
/*.FormButtonsBar + .NormalGridView .AspNet-GridView table tbody tr td {border:none; padding:0;}*/
|
||||||
/* text input */
|
/* text input */
|
||||||
input.NormalTextBox, input.LoginTextBox, input.HugeTextBox, input.Huge, input[type=text], input[type=password] {/*width:auto !important;*/ height:32px; line-height:32px; padding:0 0 0 3px; margin:0 0 4px 0; font-family:inherit; font-size:inherit; color:inherit; background:#fff; border: 1px solid #ccc;}
|
input.NormalTextBox, input.LoginTextBox, input.HugeTextBox, input.Huge, input[type=text], input[type=password] {/*width:auto !important;*/ height:32px; line-height:32px; padding:0 0 0 3px; margin:0 0 4px 0; font-family:inherit; font-size:inherit; color:inherit; background:#fff; border: 1px solid #ccc;}
|
||||||
|
@ -90,12 +93,13 @@ input[type=checkbox], input[type=radio] {margin:8px 4px 8px; vertical-align:-1px
|
||||||
input[type=image] {margin-right:4px;}
|
input[type=image] {margin-right:4px;}
|
||||||
.LoginLabel {display:block; line-height:34px; width:auto !important; padding-right:8px;}
|
.LoginLabel {display:block; line-height:34px; width:auto !important; padding-right:8px;}
|
||||||
.LoginContainer .SubHead {padding-right:8px; color:#333;}
|
.LoginContainer .SubHead {padding-right:8px; color:#333;}
|
||||||
.RightBlockTitle {color:#de7f40; font-size:26px; font-weight:300; letter-spacing:-1px;}
|
.RightBlockTitle {color:#db6b20; font-size:26px; font-weight:300; letter-spacing:-1px;}
|
||||||
.RightBlockTable {color:#888;}
|
.RightBlockTable {color:#000;}
|
||||||
.RightBlockTable td.SubHead, .RightBlockTable td.Normal {padding:5px 0; line-height:13px;}
|
.RightBlockTable td.SubHead, .RightBlockTable td.Normal {padding:5px 0; line-height:13px;}
|
||||||
{padding:0; line-height:13px;}
|
{padding:0; line-height:13px;}
|
||||||
.FormRightIcon {display:none;}
|
.FormRightIcon {display:none;}
|
||||||
.FormButtonsBar {clear:both; margin:10px 0 20px 0; text-align:center; min-height:34px;}
|
.FormButtonsBar {clear:both; margin:10px 0 20px 0; text-align:center; min-height:34px;}
|
||||||
|
.FormButtonsBar.UserSpaces {margin: -50px 80px 20px 0;text-align: right;}
|
||||||
.Small {font-size:9pt;}
|
.Small {font-size:9pt;}
|
||||||
.Small span {color:#888;}
|
.Small span {color:#888;}
|
||||||
.Small b {color:#87c442; font-weight:300;}
|
.Small b {color:#87c442; font-weight:300;}
|
||||||
|
@ -284,4 +288,5 @@ UL.ActionButtons LI {margin-bottom: 12px;}
|
||||||
.disabled {width:20px; height:20px; background: transparent url(../Icons/block.png) left center no-repeat; border:medium none;}
|
.disabled {width:20px; height:20px; background: transparent url(../Icons/block.png) left center no-repeat; border:medium none;}
|
||||||
.enabled {width:20px; height:20px; background: transparent url(../Icons/ok.png) left center no-repeat; border:medium none;}
|
.enabled {width:20px; height:20px; background: transparent url(../Icons/ok.png) left center no-repeat; border:medium none;}
|
||||||
p.warningText {font-size:14px; color:Red; text-align:center;}
|
p.warningText {font-size:14px; color:Red; text-align:center;}
|
||||||
.Hidden {display: none;}
|
.Hidden {display: none;}
|
||||||
|
.LinkText {color:#428bca;}
|
|
@ -1,5 +1,5 @@
|
||||||
@import url(https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,300,400,700);
|
@import url(https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,300,400,700);
|
||||||
body {font-family:'Segoe UI Light','Open Sans',Arial; color:#333; margin:0px; padding:0px; font-size:13px; background:#ddd;}
|
body {font-family:'Segoe UI','Open Sans',Arial; color:#333; margin:0px; padding:0px; font-size:13px; background:#ddd;}
|
||||||
#SkinOutline, #LoginSkinOutline {width:990px; margin:auto;}
|
#SkinOutline, #LoginSkinOutline {width:990px; margin:auto;}
|
||||||
#SkinContent {float:left; width:100%; background:#fff;}
|
#SkinContent {float:left; width:100%; background:#fff;}
|
||||||
#LoginSkinContent {background:#fff;}
|
#LoginSkinContent {background:#fff;}
|
||||||
|
@ -13,11 +13,12 @@ body {font-family:'Segoe UI Light','Open Sans',Arial; color:#333; margin:0px; pa
|
||||||
.SearchMethodSide {display:none;}
|
.SearchMethodSide {display:none;}
|
||||||
.SearchQuery {}
|
.SearchQuery {}
|
||||||
#Header .Account {text-align:right; padding:3px 6px 0 0;}
|
#Header .Account {text-align:right; padding:3px 6px 0 0;}
|
||||||
#TopMenu {position:relative; width:100%; min-width:880px; height:74px; background:#2e8bcc; z-index:99;}
|
#TopMenu {position:relative; width:100%; min-width:880px; height:40px; background:#2e8bcc; z-index:99;}
|
||||||
#Breadcrumb {margin:10px;}
|
#Breadcrumb {margin:10px;}
|
||||||
#Breadcrumb .Path {padding:20px; margin-bottom:20px; background-color:#f5f5f5;}
|
#Breadcrumb .Path {padding: 10px 5px 12px 25px; margin-bottom:20px; background-color:#f5f5f5;}
|
||||||
#Breadcrumb .Path img {display:none;}
|
#Breadcrumb .Path img {display:none;}
|
||||||
#Breadcrumb .Path a:not(:last-child):after, #Breadcrumb .Path span a:after {content:'/\00a0'; padding:0 5px 0 10px; color:#999; display:inline-block;}
|
#Breadcrumb .Path a:not(:last-child):after, #Breadcrumb .Path span a:after {content:'/\00a0'; padding:0 5px 0 10px; color:#999; display:inline-block;}
|
||||||
|
#Breadcrumb .Path .OrgSpan a:last-child:after {content: none;}
|
||||||
#Breadcrumb .Path a, #Breadcrumb .Path a:Active, #Breadcrumb .Path a:Visited, #Breadcrumb .Path a:Hover {color:#428bca; font-size:13px; line-height:1.428571429;}
|
#Breadcrumb .Path a, #Breadcrumb .Path a:Active, #Breadcrumb .Path a:Visited, #Breadcrumb .Path a:Hover {color:#428bca; font-size:13px; line-height:1.428571429;}
|
||||||
#Breadcrumb .Path a:last-child {color:#999;}
|
#Breadcrumb .Path a:last-child {color:#999;}
|
||||||
#Breadcrumb .Path a:hover {text-decoration:none;}
|
#Breadcrumb .Path a:hover {text-decoration:none;}
|
||||||
|
|
|
@ -56,10 +56,12 @@ namespace WebsitePanel.Portal
|
||||||
public const string CONFIG_FOLDER = "~/App_Data/";
|
public const string CONFIG_FOLDER = "~/App_Data/";
|
||||||
public const string SUPPORTED_THEMES_FILE = "SupportedThemes.config";
|
public const string SUPPORTED_THEMES_FILE = "SupportedThemes.config";
|
||||||
public const string SUPPORTED_LOCALES_FILE = "SupportedLocales.config";
|
public const string SUPPORTED_LOCALES_FILE = "SupportedLocales.config";
|
||||||
|
public const string EXCHANGE_SERVER_HIERARCHY_FILE = "ESModule_ControlsHierarchy.config";
|
||||||
public const string USER_ID_PARAM = "UserID";
|
public const string USER_ID_PARAM = "UserID";
|
||||||
public const string SPACE_ID_PARAM = "SpaceID";
|
public const string SPACE_ID_PARAM = "SpaceID";
|
||||||
public const string SEARCH_QUERY_PARAM = "Query";
|
public const string SEARCH_QUERY_PARAM = "Query";
|
||||||
|
|
||||||
|
|
||||||
public static string CultureCookieName
|
public static string CultureCookieName
|
||||||
{
|
{
|
||||||
get { return PortalConfiguration.SiteSettings["CultureCookieName"]; }
|
get { return PortalConfiguration.SiteSettings["CultureCookieName"]; }
|
||||||
|
@ -981,6 +983,34 @@ namespace WebsitePanel.Portal
|
||||||
return "~/Default.aspx?" + String.Join("&", url.ToArray());
|
return "~/Default.aspx?" + String.Join("&", url.ToArray());
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public static string GetGeneralESControlKey(string controlKey)
|
||||||
|
{
|
||||||
|
string generalControlKey = string.Empty;
|
||||||
|
|
||||||
|
string appData = HttpContext.Current.Server.MapPath(CONFIG_FOLDER);
|
||||||
|
string xmlFilePath = Path.Combine(appData, EXCHANGE_SERVER_HIERARCHY_FILE);
|
||||||
|
if (File.Exists(xmlFilePath))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
XmlDocument xmlDoc = new XmlDocument();
|
||||||
|
xmlDoc.Load(xmlFilePath);
|
||||||
|
|
||||||
|
XmlElement xmlNode = (XmlElement)xmlDoc.SelectSingleNode(string.Format("/Controls/Control[@key='{0}']", controlKey));
|
||||||
|
|
||||||
|
if (xmlNode.HasAttribute("general_key"))
|
||||||
|
{
|
||||||
|
generalControlKey = xmlNode.GetAttribute("general_key");
|
||||||
|
}
|
||||||
|
else generalControlKey = xmlNode.GetAttribute("key");
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return generalControlKey;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,255 @@
|
||||||
|
<?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="gvPackagesCreationDate.Header" xml:space="preserve">
|
||||||
|
<value>Creation Date</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPackagesHostingPlan.Header" xml:space="preserve">
|
||||||
|
<value>Hosting Plan</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPackagesName.Header" xml:space="preserve">
|
||||||
|
<value>Name</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPackagesPricing.Header" xml:space="preserve">
|
||||||
|
<value>Pricing</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPackagesServer.Header" xml:space="preserve">
|
||||||
|
<value>Server</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvPackagesStatus.Header" xml:space="preserve">
|
||||||
|
<value>Status</value>
|
||||||
|
</data>
|
||||||
|
<data name="selPackage.AlternateText" xml:space="preserve">
|
||||||
|
<value>Switch to this Space</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.ActiveSyncPolicy" xml:space="preserve">
|
||||||
|
<value>ActiveSync Policy</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.BlackBerryGroup" xml:space="preserve">
|
||||||
|
<value>BlackBerry</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.BlackBerryUsers" xml:space="preserve">
|
||||||
|
<value>BlackBerry Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.Contacts" xml:space="preserve">
|
||||||
|
<value>Contacts</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.CRM2013Group" xml:space="preserve">
|
||||||
|
<value>CRM 2013</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.CRMGroup" xml:space="preserve">
|
||||||
|
<value>CRM</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.CRMOrganization" xml:space="preserve">
|
||||||
|
<value>CRM Organization</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.CRMUsers" xml:space="preserve">
|
||||||
|
<value>CRM Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.Disclaimers" xml:space="preserve">
|
||||||
|
<value>Disclaimers</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.DistributionLists" xml:space="preserve">
|
||||||
|
<value>Distribution Lists</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.DomainNames" xml:space="preserve">
|
||||||
|
<value>Domains</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.EnterpriseStorageDriveMaps" xml:space="preserve">
|
||||||
|
<value>Drive Maps</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.EnterpriseStorageFolders" xml:space="preserve">
|
||||||
|
<value>Online Folders</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.EnterpriseStorageGroup" xml:space="preserve">
|
||||||
|
<value>Enterprise Storage</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.ExchangeDomainNames" xml:space="preserve">
|
||||||
|
<value>Accepted Domains</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.ExchangeGroup" xml:space="preserve">
|
||||||
|
<value>Exchange</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.LyncFederationDomains" xml:space="preserve">
|
||||||
|
<value>Lync Federation Domains</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.LyncGroup" xml:space="preserve">
|
||||||
|
<value>Lync</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.LyncPhoneNumbers" xml:space="preserve">
|
||||||
|
<value>Phone Numbers</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.LyncUserPlans" xml:space="preserve">
|
||||||
|
<value>Lync User Plans</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.LyncUsers" xml:space="preserve">
|
||||||
|
<value>Lync Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.Mailboxes" xml:space="preserve">
|
||||||
|
<value>Mailboxes</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.MailboxPlans" xml:space="preserve">
|
||||||
|
<value>Mailbox Plans</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.OCSGroup" xml:space="preserve">
|
||||||
|
<value>OCS</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.OCSUsers" xml:space="preserve">
|
||||||
|
<value>OCS Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.OrganizationGroup" xml:space="preserve">
|
||||||
|
<value>Organization</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.OrganizationHome" xml:space="preserve">
|
||||||
|
<value>Organization Statistics</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.PublicFolders" xml:space="preserve">
|
||||||
|
<value>Public Folders</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.RetentionPolicy" xml:space="preserve">
|
||||||
|
<value>Retention Policy</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.RetentionPolicyTag" xml:space="preserve">
|
||||||
|
<value>Retention Policy Tag</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.SecurityGroups" xml:space="preserve">
|
||||||
|
<value>Groups</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.Setup" xml:space="preserve">
|
||||||
|
<value>Setup</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.SharePointGroup" xml:space="preserve">
|
||||||
|
<value>SharePoint</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.SiteCollections" xml:space="preserve">
|
||||||
|
<value>Sharepoint Sites</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.StorageLimits" xml:space="preserve">
|
||||||
|
<value>Storage Settings</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.StorageUsage" xml:space="preserve">
|
||||||
|
<value>Storage Usage</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.Users" xml:space="preserve">
|
||||||
|
<value>Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="Text.CreateOrganization" xml:space="preserve">
|
||||||
|
<value>Create Organization</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -112,14 +112,20 @@
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnAddItem.Text" xml:space="preserve">
|
<data name="btnAddItem.Text" xml:space="preserve">
|
||||||
<value>Create Hosting Space</value>
|
<value>Create Hosting Space</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Databases.Text" xml:space="preserve">
|
||||||
|
<value>Databases</value>
|
||||||
|
</data>
|
||||||
|
<data name="Email.Text" xml:space="preserve">
|
||||||
|
<value>Email</value>
|
||||||
|
</data>
|
||||||
<data name="gvPackages.Empty" xml:space="preserve">
|
<data name="gvPackages.Empty" xml:space="preserve">
|
||||||
<value>This account has just been created and doesn't have Hosting Spaces. To create web sites, FTP, mail accounts, databases, etc. a new Hosting Space should be created for this customer.<br><br>To create a new Hosting Space click "Create Hosting Space" button.</value>
|
<value>This account has just been created and doesn't have Hosting Spaces. To create web sites, FTP, mail accounts, databases, etc. a new Hosting Space should be created for this customer.<br><br>To create a new Hosting Space click "Create Hosting Space" button.</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -144,4 +150,16 @@
|
||||||
<data name="selPackage.AlternateText" xml:space="preserve">
|
<data name="selPackage.AlternateText" xml:space="preserve">
|
||||||
<value>Switch to this Space</value>
|
<value>Switch to this Space</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="System.Text" xml:space="preserve">
|
||||||
|
<value>System</value>
|
||||||
|
</data>
|
||||||
|
<data name="VPS.Text" xml:space="preserve">
|
||||||
|
<value>VPS</value>
|
||||||
|
</data>
|
||||||
|
<data name="Web.Text" xml:space="preserve">
|
||||||
|
<value>Web & Applications</value>
|
||||||
|
</data>
|
||||||
|
<data name="SpaceStatistics.Text" xml:space="preserve">
|
||||||
|
<value>Space Statistics</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -19,11 +19,12 @@
|
||||||
<asp:Button ID="btnAdd" runat="server" meta:resourcekey="btnAdd" Text="Add record" CssClass="Button2" OnClick="btnAdd_Click" CausesValidation="False" />
|
<asp:Button ID="btnAdd" runat="server" meta:resourcekey="btnAdd" Text="Add record" CssClass="Button2" OnClick="btnAdd_Click" CausesValidation="False" />
|
||||||
</div>
|
</div>
|
||||||
<asp:GridView ID="gvRecords" runat="server" AutoGenerateColumns="False" EmptyDataText="gvRecords"
|
<asp:GridView ID="gvRecords" runat="server" AutoGenerateColumns="False" EmptyDataText="gvRecords"
|
||||||
CssSelectorClass="NormalGridView"
|
CssSelectorClass="NormalGridView FixedGrid"
|
||||||
OnRowEditing="gvRecords_RowEditing" OnRowDeleting="gvRecords_RowDeleting"
|
OnRowEditing="gvRecords_RowEditing" OnRowDeleting="gvRecords_RowDeleting"
|
||||||
AllowSorting="True" DataSourceID="odsDnsRecords">
|
AllowSorting="True" DataSourceID="odsDnsRecords">
|
||||||
<Columns>
|
<Columns>
|
||||||
<asp:TemplateField>
|
<asp:TemplateField>
|
||||||
|
<ItemStyle Width="3%" />
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:ImageButton ID="cmdEdit" runat="server" SkinID="EditSmall" CommandName="edit" AlternateText="Edit record">
|
<asp:ImageButton ID="cmdEdit" runat="server" SkinID="EditSmall" CommandName="edit" AlternateText="Edit record">
|
||||||
</asp:ImageButton>
|
</asp:ImageButton>
|
||||||
|
@ -37,15 +38,16 @@
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
<ItemStyle CssClass="NormalBold" Wrap="False" />
|
<ItemStyle CssClass="NormalBold" Wrap="False" />
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
<asp:BoundField DataField="RecordName" SortExpression="RecordName" HeaderText="gvRecordsName" />
|
<asp:BoundField DataField="RecordName" SortExpression="RecordName" HeaderText="gvRecordsName" ItemStyle-Width="20%" />
|
||||||
<asp:BoundField DataField="RecordType" SortExpression="RecordType" HeaderText="gvRecordsType" />
|
<asp:BoundField DataField="RecordType" SortExpression="RecordType" HeaderText="gvRecordsType" ItemStyle-Width="5%" />
|
||||||
<asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" >
|
<asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" >
|
||||||
<ItemStyle Width="100%" />
|
<ItemStyle Width="69%" />
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<%# GetRecordFullData((string)Eval("RecordType"), (string)Eval("RecordData"), (int)Eval("MxPriority"), (int)Eval("SrvPort"))%>
|
<%# GetRecordFullData((string)Eval("RecordType"), (string)Eval("RecordData"), (int)Eval("MxPriority"), (int)Eval("SrvPort"))%>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
<asp:TemplateField>
|
<asp:TemplateField>
|
||||||
|
<ItemStyle Width="3%" />
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:ImageButton ID="cmdDelete" runat="server" SkinID="DeleteSmall" CommandName="delete"
|
<asp:ImageButton ID="cmdDelete" runat="server" SkinID="DeleteSmall" CommandName="delete"
|
||||||
AlternateText="Delete record" OnClientClick="return confirmation();">
|
AlternateText="Delete record" OnClientClick="return confirmation();">
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// 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.
|
||||||
|
|
|
@ -78,7 +78,6 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
chkDisable.Visible = false;
|
chkDisable.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
secLitigationHoldSettings.Visible = (Utils.CheckQouta(Quotas.EXCHANGE2007_ALLOWLITIGATIONHOLD, Cntx));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
secRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, Cntx);
|
secRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, Cntx);
|
||||||
|
@ -89,6 +88,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
ExchangeMailboxPlan plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(PanelRequest.ItemID, planId);
|
ExchangeMailboxPlan plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(PanelRequest.ItemID, planId);
|
||||||
|
|
||||||
secArchiving.Visible = plan.EnableArchiving;
|
secArchiving.Visible = plan.EnableArchiving;
|
||||||
|
secLitigationHoldSettings.Visible = plan.AllowLitigationHold && Utils.CheckQouta(Quotas.EXCHANGE2007_ALLOWLITIGATIONHOLD, Cntx);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindSettings()
|
private void BindSettings()
|
||||||
|
|
|
@ -138,4 +138,7 @@
|
||||||
<data name="Text.PageName" xml:space="preserve">
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
<value>Lync Add Federation Domain</value>
|
<value>Lync Add Federation Domain</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Lync Add Federation Domain</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -126,4 +126,7 @@
|
||||||
<data name="Text.PageName" xml:space="preserve">
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
<value>Phone Numbers</value>
|
<value>Phone Numbers</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Lync Allocate Phone Numbers</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -124,6 +124,9 @@
|
||||||
<value>Quotas</value>
|
<value>Quotas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Text.PageName" xml:space="preserve">
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
<value>Phone Numbers</value>
|
<value>Lync Phone Numbers</value>
|
||||||
|
</data>
|
||||||
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
|
<value>Lync Phone Numbers</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -153,4 +153,7 @@
|
||||||
<data name="gvUsersLogin.Header" xml:space="preserve">
|
<data name="gvUsersLogin.Header" xml:space="preserve">
|
||||||
<value>Login</value>
|
<value>Login</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
|
<value>Lync Users</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -149,7 +149,8 @@ namespace WebsitePanel.Portal.UserControls
|
||||||
|
|
||||||
protected void btnCancel_Click(object sender, EventArgs e)
|
protected void btnCancel_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Response.Redirect(HostModule.EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), ListAddressesControl));
|
Response.Redirect(HostModule.EditUrl("ItemID", PanelRequest.ItemID.ToString(), ListAddressesControl,
|
||||||
|
PortalUtils.SPACE_ID_PARAM + "=" + PanelSecurity.PackageId));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void radioExternalSelected_CheckedChanged(object sender, EventArgs e)
|
protected void radioExternalSelected_CheckedChanged(object sender, EventArgs e)
|
||||||
|
|
|
@ -31,16 +31,20 @@ using System.Web.UI.WebControls;
|
||||||
|
|
||||||
using WebsitePanel.EnterpriseServer;
|
using WebsitePanel.EnterpriseServer;
|
||||||
using WebsitePanel.WebPortal;
|
using WebsitePanel.WebPortal;
|
||||||
|
using WebsitePanel.Portal.UserControls;
|
||||||
|
|
||||||
|
|
||||||
namespace WebsitePanel.Portal
|
namespace WebsitePanel.Portal
|
||||||
{
|
{
|
||||||
public partial class OrganizationMenu : WebsitePanelModuleBase
|
public partial class OrganizationMenu : OrganizationMenuControl
|
||||||
{
|
{
|
||||||
private const string PID_SPACE_EXCHANGE_SERVER = "SpaceExchangeServer";
|
private const string PID_SPACE_EXCHANGE_SERVER = "SpaceExchangeServer";
|
||||||
|
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
ShortMenu = false;
|
||||||
|
ShowImg = false;
|
||||||
|
|
||||||
// organization
|
// organization
|
||||||
bool orgVisible = (PanelRequest.ItemID > 0 && Request[DefaultPage.PAGE_ID_PARAM].Equals(PID_SPACE_EXCHANGE_SERVER, StringComparison.InvariantCultureIgnoreCase));
|
bool orgVisible = (PanelRequest.ItemID > 0 && Request[DefaultPage.PAGE_ID_PARAM].Equals(PID_SPACE_EXCHANGE_SERVER, StringComparison.InvariantCultureIgnoreCase));
|
||||||
|
|
||||||
|
@ -53,331 +57,18 @@ namespace WebsitePanel.Portal
|
||||||
|
|
||||||
menu.Items.Add(rootItem);
|
menu.Items.Add(rootItem);
|
||||||
|
|
||||||
|
//Add "Organization Home" menu item
|
||||||
|
MenuItem item = new MenuItem(
|
||||||
|
GetLocalizedString("Text.OrganizationHome"),
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
PortalUtils.EditUrl("ItemID", PanelRequest.ItemID.ToString(), "organization_home", "SpaceID=" + PanelSecurity.PackageId));
|
||||||
|
|
||||||
|
rootItem.ChildItems.Add(item);
|
||||||
|
|
||||||
BindMenu(rootItem.ChildItems);
|
BindMenu(rootItem.ChildItems);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindMenu(MenuItemCollection items)
|
|
||||||
{
|
|
||||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
|
||||||
|
|
||||||
string imagePath = String.Concat("~/", DefaultPage.THEMES_FOLDER, "/", Page.Theme, "/", "Images/Exchange", "/");
|
|
||||||
|
|
||||||
//Add "Organization Home" menu item
|
|
||||||
MenuItem item = new MenuItem(
|
|
||||||
GetLocalizedString("Text.OrganizationHome"),
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
PortalUtils.EditUrl("ItemID", PanelRequest.ItemID.ToString(), "organization_home", "SpaceID=" + PanelSecurity.PackageId));
|
|
||||||
|
|
||||||
items.Add(item);
|
|
||||||
|
|
||||||
//Organization menu group;
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations))
|
|
||||||
PrepareOrganizationMenuRoot(cntx, items, imagePath);
|
|
||||||
|
|
||||||
//Exchange menu group;
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.Exchange))
|
|
||||||
PrepareExchangeMenuRoot(cntx, items, imagePath);
|
|
||||||
|
|
||||||
//BlackBerry Menu
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.BlackBerry))
|
|
||||||
PrepareBlackBerryMenuRoot(cntx, items, imagePath);
|
|
||||||
|
|
||||||
//SharePoint menu group;
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.HostedSharePoint))
|
|
||||||
PrepareSharePointMenuRoot(cntx, items, imagePath);
|
|
||||||
|
|
||||||
//CRM Menu
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013))
|
|
||||||
PrepareCRM2013MenuRoot(cntx, items, imagePath);
|
|
||||||
else if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM))
|
|
||||||
PrepareCRMMenuRoot(cntx, items, imagePath);
|
|
||||||
|
|
||||||
//OCS Menu
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.OCS))
|
|
||||||
PrepareOCSMenuRoot(cntx, items, imagePath);
|
|
||||||
|
|
||||||
//Lync Menu
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.Lync))
|
|
||||||
PrepareLyncMenuRoot(cntx, items, imagePath);
|
|
||||||
|
|
||||||
//EnterpriseStorage Menu
|
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.EnterpriseStorage))
|
|
||||||
PrepareEnterpriseStorageMenuRoot(cntx, items, imagePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareOrganizationMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
bool hideItems = false;
|
|
||||||
|
|
||||||
UserInfo user = UsersHelper.GetUser(PanelSecurity.EffectiveUserId);
|
|
||||||
|
|
||||||
if (user != null)
|
|
||||||
{
|
|
||||||
if ((user.Role == UserRole.User) & (Utils.CheckQouta(Quotas.EXCHANGE2007_ISCONSUMER, cntx)))
|
|
||||||
hideItems = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.OrganizationGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareOrganizationMenu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareOrganizationMenu(PackageContext cntx, MenuItemCollection items)
|
|
||||||
{
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx) == false)
|
|
||||||
{
|
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx))
|
|
||||||
items.Add(CreateMenuItem("DomainNames", "org_domains"));
|
|
||||||
}
|
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx))
|
|
||||||
items.Add(CreateMenuItem("Users", "users"));
|
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, cntx))
|
|
||||||
items.Add(CreateMenuItem("SecurityGroups", "secur_groups"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareExchangeMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
bool hideItems = false;
|
|
||||||
|
|
||||||
UserInfo user = UsersHelper.GetUser(PanelSecurity.EffectiveUserId);
|
|
||||||
|
|
||||||
if (user != null)
|
|
||||||
{
|
|
||||||
if ((user.Role == UserRole.User) & (Utils.CheckQouta(Quotas.EXCHANGE2007_ISCONSUMER, cntx)))
|
|
||||||
hideItems = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.ExchangeGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareExchangeMenu(cntx, item.ChildItems, hideItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareExchangeMenu(PackageContext cntx, MenuItemCollection exchangeItems, bool hideItems)
|
|
||||||
{
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("Mailboxes", "mailboxes"));
|
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_CONTACTS, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("Contacts", "contacts"));
|
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("DistributionLists", "dlists"));
|
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_PUBLICFOLDERS, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("PublicFolders", "public_folders"));
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_ACTIVESYNCALLOWED, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("ActiveSyncPolicy", "activesync_policy"));
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("MailboxPlans", "mailboxplans"));
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("RetentionPolicy", "retentionpolicy"));
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("RetentionPolicyTag", "retentionpolicytag"));
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("ExchangeDomainNames", "domains"));
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("StorageUsage", "storage_usage"));
|
|
||||||
|
|
||||||
if (!hideItems)
|
|
||||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_DISCLAIMERSALLOWED, cntx))
|
|
||||||
exchangeItems.Add(CreateMenuItem("Disclaimers", "disclaimers"));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareCRMMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.CRMGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareCRMMenu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareCRMMenu(PackageContext cntx, MenuItemCollection crmItems)
|
|
||||||
{
|
|
||||||
crmItems.Add(CreateMenuItem("CRMOrganization", "CRMOrganizationDetails"));
|
|
||||||
crmItems.Add(CreateMenuItem("CRMUsers", "CRMUsers"));
|
|
||||||
crmItems.Add(CreateMenuItem("StorageLimits", "crm_storage_settings"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareCRM2013MenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.CRM2013Group"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareCRM2013Menu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareCRM2013Menu(PackageContext cntx, MenuItemCollection crmItems)
|
|
||||||
{
|
|
||||||
crmItems.Add(CreateMenuItem("CRMOrganization", "CRMOrganizationDetails"));
|
|
||||||
crmItems.Add(CreateMenuItem("CRMUsers", "CRMUsers"));
|
|
||||||
crmItems.Add(CreateMenuItem("StorageLimits", "crm_storage_settings"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareBlackBerryMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.BlackBerryGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareBlackBerryMenu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareBlackBerryMenu(PackageContext cntx, MenuItemCollection bbItems)
|
|
||||||
{
|
|
||||||
bbItems.Add(CreateMenuItem("BlackBerryUsers", "blackberry_users"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareSharePointMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.SharePointGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareSharePointMenu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareSharePointMenu(PackageContext cntx, MenuItemCollection spItems)
|
|
||||||
{
|
|
||||||
spItems.Add(CreateMenuItem("SiteCollections", "sharepoint_sitecollections"));
|
|
||||||
spItems.Add(CreateMenuItem("StorageUsage", "sharepoint_storage_usage"));
|
|
||||||
spItems.Add(CreateMenuItem("StorageLimits", "sharepoint_storage_settings"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareOCSMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.OCSGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareOCSMenu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareOCSMenu(PackageContext cntx, MenuItemCollection osItems)
|
|
||||||
{
|
|
||||||
osItems.Add(CreateMenuItem("OCSUsers", "ocs_users"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareLyncMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.LyncGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareLyncMenu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareLyncMenu(PackageContext cntx, MenuItemCollection lyncItems)
|
|
||||||
{
|
|
||||||
lyncItems.Add(CreateMenuItem("LyncUsers", "lync_users"));
|
|
||||||
|
|
||||||
lyncItems.Add(CreateMenuItem("LyncUserPlans", "lync_userplans"));
|
|
||||||
|
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.LYNC_FEDERATION, cntx))
|
|
||||||
lyncItems.Add(CreateMenuItem("LyncFederationDomains", "lync_federationdomains"));
|
|
||||||
|
|
||||||
if (Utils.CheckQouta(Quotas.LYNC_PHONE, cntx))
|
|
||||||
lyncItems.Add(CreateMenuItem("LyncPhoneNumbers", "lync_phonenumbers"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareEnterpriseStorageMenuRoot(PackageContext cntx, MenuItemCollection items, string imagePath)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem(GetLocalizedString("Text.EnterpriseStorageGroup"), "", "", null);
|
|
||||||
|
|
||||||
item.Selectable = false;
|
|
||||||
|
|
||||||
PrepareEnterpriseStorageMenu(cntx, item.ChildItems);
|
|
||||||
|
|
||||||
if (item.ChildItems.Count > 0)
|
|
||||||
{
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PrepareEnterpriseStorageMenu(PackageContext cntx, MenuItemCollection enterpriseStorageItems)
|
|
||||||
{
|
|
||||||
enterpriseStorageItems.Add(CreateMenuItem("EnterpriseStorageFolders", "enterprisestorage_folders"));
|
|
||||||
|
|
||||||
if(Utils.CheckQouta(Quotas.ENTERPRICESTORAGE_DRIVEMAPS, cntx))
|
|
||||||
enterpriseStorageItems.Add(CreateMenuItem("EnterpriseStorageDriveMaps", "enterprisestorage_drive_maps"));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private MenuItem CreateMenuItem(string text, string key)
|
|
||||||
{
|
|
||||||
MenuItem item = new MenuItem();
|
|
||||||
|
|
||||||
item.Text = GetLocalizedString("Text." + text);
|
|
||||||
item.NavigateUrl = PortalUtils.EditUrl("ItemID", PanelRequest.ItemID.ToString(), key,
|
|
||||||
"SpaceID=" + PanelSecurity.PackageId);
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,11 +18,11 @@
|
||||||
|
|
||||||
<asp:Image ID="imgSep2" runat="server" SkinID="PathSeparatorWhite" /> <asp:HyperLink ID="lnkCurrentPage" runat="server"></asp:HyperLink>
|
<asp:Image ID="imgSep2" runat="server" SkinID="PathSeparatorWhite" /> <asp:HyperLink ID="lnkCurrentPage" runat="server"></asp:HyperLink>
|
||||||
|
|
||||||
<span id="spanOrgn" runat="server">
|
<span id="spanOrgn" class="OrgSpan" runat="server">
|
||||||
<asp:Image ID="imgSep3" runat="server" SkinID="PathSeparatorWhite" />
|
<asp:Image ID="imgSep3" runat="server" SkinID="PathSeparatorWhite" />
|
||||||
<asp:HyperLink ID="lnkOrgn" runat="server">Organization</asp:HyperLink>
|
<asp:HyperLink ID="lnkOrgn" runat="server">Organization</asp:HyperLink>
|
||||||
<asp:Image ID="imgSep4" runat="server" SkinID="PathSeparatorWhite" />
|
<asp:Image ID="imgSep4" runat="server" SkinID="PathSeparatorWhite" />
|
||||||
<asp:Label ID="lbOrgCurPage" runat="server" ForeColor="#000000">Home</asp:Label>
|
<asp:HyperLink ID="lnkOrgCurPage" runat="server">Home</asp:HyperLink>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<wsp:SpaceOrgsSelector ID="SpaceOrgs" runat="server" />
|
<wsp:SpaceOrgsSelector ID="SpaceOrgs" runat="server" />
|
||||||
|
|
|
@ -127,7 +127,10 @@ namespace WebsitePanel.Portal.SkinControls
|
||||||
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
||||||
lnkOrgn.Text = org.Name;
|
lnkOrgn.Text = org.Name;
|
||||||
|
|
||||||
string ctrlKey = Request[DefaultPage.CONTROL_ID_PARAM].ToLower(System.Globalization.CultureInfo.InvariantCulture);
|
string curCtrlKey = PanelRequest.Ctl.ToLower();
|
||||||
|
string ctrlKey = PortalUtils.GetGeneralESControlKey(Request[DefaultPage.CONTROL_ID_PARAM].ToLower(System.Globalization.CultureInfo.InvariantCulture));
|
||||||
|
|
||||||
|
if (curCtrlKey == "edit_user") ctrlKey = PanelRequest.Context.ToLower() == "user" ? "users" : "mailboxes";
|
||||||
|
|
||||||
ModuleDefinition definition = PortalConfiguration.ModuleDefinitions[EXCHANGE_SERVER_MODULE_DEFINTION_ID];
|
ModuleDefinition definition = PortalConfiguration.ModuleDefinitions[EXCHANGE_SERVER_MODULE_DEFINTION_ID];
|
||||||
ModuleControl control = null;
|
ModuleControl control = null;
|
||||||
|
@ -136,7 +139,10 @@ namespace WebsitePanel.Portal.SkinControls
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(control.Src))
|
if (!String.IsNullOrEmpty(control.Src))
|
||||||
{
|
{
|
||||||
lbOrgCurPage.Text = PortalUtils.GetLocalizedString(DM_FOLDER_VIRTUAL_PATH + control.Src, PAGE_NANE_KEY);
|
lnkOrgCurPage.Text = PortalUtils.GetLocalizedString(DM_FOLDER_VIRTUAL_PATH + control.Src, PAGE_NANE_KEY);
|
||||||
|
lnkOrgCurPage.NavigateUrl = PortalUtils.EditUrl(
|
||||||
|
"ItemID", PanelRequest.ItemID.ToString(), ctrlKey,
|
||||||
|
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
||||||
|
@ -140,13 +112,13 @@ namespace WebsitePanel.Portal.SkinControls {
|
||||||
protected global::System.Web.UI.WebControls.Image imgSep4;
|
protected global::System.Web.UI.WebControls.Image imgSep4;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// lbOrgCurPage control.
|
/// lnkOrgCurPage 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 lbOrgCurPage;
|
protected global::System.Web.UI.WebControls.HyperLink lnkOrgCurPage;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SpaceOrgs control.
|
/// SpaceOrgs control.
|
||||||
|
|
|
@ -0,0 +1,480 @@
|
||||||
|
// 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 System.Xml;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using WebsitePanel.WebPortal;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal.UserControls
|
||||||
|
{
|
||||||
|
public class OrganizationMenuControl : WebsitePanelModuleBase
|
||||||
|
{
|
||||||
|
|
||||||
|
virtual public int PackageId
|
||||||
|
{
|
||||||
|
get { return PanelSecurity.PackageId; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual public int ItemID
|
||||||
|
{
|
||||||
|
get { return PanelRequest.ItemID; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private PackageContext cntx = null;
|
||||||
|
virtual public PackageContext Cntx
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (cntx == null) cntx = PackagesHelper.GetCachedPackageContext(PackageId);
|
||||||
|
return cntx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ShortMenu = false;
|
||||||
|
public bool ShowImg = false;
|
||||||
|
|
||||||
|
public void BindMenu(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if ((PackageId <= 0) || (ItemID <= 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
//Organization menu group;
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations))
|
||||||
|
PrepareOrganizationMenuRoot(items);
|
||||||
|
|
||||||
|
//Exchange menu group;
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.Exchange))
|
||||||
|
PrepareExchangeMenuRoot(items);
|
||||||
|
|
||||||
|
//BlackBerry Menu
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.BlackBerry))
|
||||||
|
PrepareBlackBerryMenuRoot(items);
|
||||||
|
|
||||||
|
//SharePoint menu group;
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.HostedSharePoint))
|
||||||
|
PrepareSharePointMenuRoot(items);
|
||||||
|
|
||||||
|
//CRM Menu
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013))
|
||||||
|
PrepareCRM2013MenuRoot(items);
|
||||||
|
else if (Cntx.Groups.ContainsKey(ResourceGroups.HostedCRM))
|
||||||
|
PrepareCRMMenuRoot(items);
|
||||||
|
|
||||||
|
//OCS Menu
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.OCS))
|
||||||
|
PrepareOCSMenuRoot(items);
|
||||||
|
|
||||||
|
//Lync Menu
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.Lync))
|
||||||
|
PrepareLyncMenuRoot(items);
|
||||||
|
|
||||||
|
//EnterpriseStorage Menu
|
||||||
|
if (Cntx.Groups.ContainsKey(ResourceGroups.EnterpriseStorage))
|
||||||
|
PrepareEnterpriseStorageMenuRoot(items);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareOrganizationMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
bool hideItems = false;
|
||||||
|
|
||||||
|
UserInfo user = UsersHelper.GetUser(PanelSecurity.EffectiveUserId);
|
||||||
|
|
||||||
|
if (user != null)
|
||||||
|
{
|
||||||
|
if ((user.Role == UserRole.User) & (Utils.CheckQouta(Quotas.EXCHANGE2007_ISCONSUMER, Cntx)))
|
||||||
|
hideItems = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareOrganizationMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.OrganizationGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareOrganizationMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareOrganizationMenu(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, Cntx) == false)
|
||||||
|
{
|
||||||
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, Cntx))
|
||||||
|
items.Add(CreateMenuItem("DomainNames", "org_domains"));
|
||||||
|
}
|
||||||
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, Cntx))
|
||||||
|
items.Add(CreateMenuItem("Users", "users", @"Icons/user_48.png"));
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPS, Cntx))
|
||||||
|
items.Add(CreateMenuItem("SecurityGroups", "secur_groups", @"Icons/group_48.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareExchangeMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
bool hideItems = false;
|
||||||
|
|
||||||
|
UserInfo user = UsersHelper.GetUser(PanelSecurity.EffectiveUserId);
|
||||||
|
|
||||||
|
if (user != null)
|
||||||
|
{
|
||||||
|
if ((user.Role == UserRole.User) & (Utils.CheckQouta(Quotas.EXCHANGE2007_ISCONSUMER, Cntx)))
|
||||||
|
hideItems = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareExchangeMenu(items, hideItems);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.ExchangeGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareExchangeMenu(item.ChildItems, hideItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareExchangeMenu(MenuItemCollection exchangeItems, bool hideItems)
|
||||||
|
{
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("Mailboxes", "mailboxes", @"Icons/mailboxes_48.png"));
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_CONTACTS, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("Contacts", "contacts", @"Icons/exchange_contacts_48.png"));
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("DistributionLists", "dlists", @"Icons/exchange_dlists_48.png"));
|
||||||
|
|
||||||
|
if (ShortMenu) return;
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_PUBLICFOLDERS, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("PublicFolders", "public_folders"));
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_ACTIVESYNCALLOWED, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("ActiveSyncPolicy", "activesync_policy"));
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("MailboxPlans", "mailboxplans"));
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("RetentionPolicy", "retentionpolicy"));
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("RetentionPolicyTag", "retentionpolicytag"));
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("ExchangeDomainNames", "domains"));
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("StorageUsage", "storage_usage"));
|
||||||
|
|
||||||
|
if (!hideItems)
|
||||||
|
if (Utils.CheckQouta(Quotas.EXCHANGE2007_DISCLAIMERSALLOWED, Cntx))
|
||||||
|
exchangeItems.Add(CreateMenuItem("Disclaimers", "disclaimers"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareCRMMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareCRMMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.CRMGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareCRMMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareCRMMenu(MenuItemCollection crmItems)
|
||||||
|
{
|
||||||
|
crmItems.Add(CreateMenuItem("CRMOrganization", "CRMOrganizationDetails", @"Icons/crm_orgs_48.png"));
|
||||||
|
crmItems.Add(CreateMenuItem("CRMUsers", "CRMUsers", @"Icons/crm_users_48.png"));
|
||||||
|
|
||||||
|
if (ShortMenu) return;
|
||||||
|
|
||||||
|
crmItems.Add(CreateMenuItem("StorageLimits", "crm_storage_settings"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareCRM2013MenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareCRM2013Menu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.CRM2013Group"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareCRM2013Menu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareCRM2013Menu(MenuItemCollection crmItems)
|
||||||
|
{
|
||||||
|
crmItems.Add(CreateMenuItem("CRMOrganization", "CRMOrganizationDetails", @"Icons/crm_orgs_48.png"));
|
||||||
|
crmItems.Add(CreateMenuItem("CRMUsers", "CRMUsers", @"Icons/crm_users_48.png"));
|
||||||
|
|
||||||
|
if (ShortMenu) return;
|
||||||
|
|
||||||
|
crmItems.Add(CreateMenuItem("StorageLimits", "crm_storage_settings"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareBlackBerryMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareBlackBerryMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.BlackBerryGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareBlackBerryMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareBlackBerryMenu(MenuItemCollection bbItems)
|
||||||
|
{
|
||||||
|
bbItems.Add(CreateMenuItem("BlackBerryUsers", "blackberry_users", @"Icons/blackberry_users_48.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareSharePointMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareSharePointMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.SharePointGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareSharePointMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareSharePointMenu(MenuItemCollection spItems)
|
||||||
|
{
|
||||||
|
spItems.Add(CreateMenuItem("SiteCollections", "sharepoint_sitecollections", @"Icons/sharepoint_sitecollections_48.png"));
|
||||||
|
|
||||||
|
if (ShortMenu) return;
|
||||||
|
|
||||||
|
spItems.Add(CreateMenuItem("StorageUsage", "sharepoint_storage_usage"));
|
||||||
|
spItems.Add(CreateMenuItem("StorageLimits", "sharepoint_storage_settings"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareOCSMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareOCSMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.OCSGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareOCSMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareOCSMenu(MenuItemCollection osItems)
|
||||||
|
{
|
||||||
|
osItems.Add(CreateMenuItem("OCSUsers", "ocs_users"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareLyncMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareLyncMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.LyncGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareLyncMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareLyncMenu(MenuItemCollection lyncItems)
|
||||||
|
{
|
||||||
|
lyncItems.Add(CreateMenuItem("LyncUsers", "lync_users", @"Icons/lync_users_48.png"));
|
||||||
|
|
||||||
|
if (ShortMenu) return;
|
||||||
|
|
||||||
|
lyncItems.Add(CreateMenuItem("LyncUserPlans", "lync_userplans"));
|
||||||
|
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.LYNC_FEDERATION, Cntx))
|
||||||
|
lyncItems.Add(CreateMenuItem("LyncFederationDomains", "lync_federationdomains"));
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.LYNC_PHONE, Cntx))
|
||||||
|
lyncItems.Add(CreateMenuItem("LyncPhoneNumbers", "lync_phonenumbers"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareEnterpriseStorageMenuRoot(MenuItemCollection items)
|
||||||
|
{
|
||||||
|
if (ShortMenu)
|
||||||
|
{
|
||||||
|
PrepareEnterpriseStorageMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem(GetLocalizedString("Text.EnterpriseStorageGroup"), "", "", null);
|
||||||
|
|
||||||
|
item.Selectable = false;
|
||||||
|
|
||||||
|
PrepareEnterpriseStorageMenu(item.ChildItems);
|
||||||
|
|
||||||
|
if (item.ChildItems.Count > 0)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepareEnterpriseStorageMenu(MenuItemCollection enterpriseStorageItems)
|
||||||
|
{
|
||||||
|
enterpriseStorageItems.Add(CreateMenuItem("EnterpriseStorageFolders", "enterprisestorage_folders", @"Icons/enterprisestorage_folders_48.png"));
|
||||||
|
|
||||||
|
if (ShortMenu) return;
|
||||||
|
|
||||||
|
if (Utils.CheckQouta(Quotas.ENTERPRICESTORAGE_DRIVEMAPS, Cntx))
|
||||||
|
enterpriseStorageItems.Add(CreateMenuItem("EnterpriseStorageDriveMaps", "enterprisestorage_drive_maps"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private MenuItem CreateMenuItem(string text, string key)
|
||||||
|
{
|
||||||
|
return CreateMenuItem(text, key, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual protected MenuItem CreateMenuItem(string text, string key, string img)
|
||||||
|
{
|
||||||
|
MenuItem item = new MenuItem();
|
||||||
|
|
||||||
|
item.Text = GetLocalizedString("Text." + text);
|
||||||
|
item.NavigateUrl = PortalUtils.EditUrl("ItemID", ItemID.ToString(), key,
|
||||||
|
"SpaceID=" + PackageId);
|
||||||
|
|
||||||
|
if (ShowImg)
|
||||||
|
{
|
||||||
|
if (img==null)
|
||||||
|
item.ImageUrl = PortalUtils.GetThemedIcon("Icons/tool_48.png");
|
||||||
|
else
|
||||||
|
item.ImageUrl = PortalUtils.GetThemedIcon(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserOrganization.ascx.cs" Inherits="WebsitePanel.Portal.UserOrganization" %>
|
||||||
|
<%@ Import Namespace="WebsitePanel.Portal" %>
|
||||||
|
<%@ Register Src="UserControls/ServerDetails.ascx" TagName="ServerDetails" TagPrefix="uc3" %>
|
||||||
|
<%@ Register Src="UserControls/Comments.ascx" TagName="Comments" TagPrefix="uc4" %>
|
||||||
|
<%@ Import Namespace="WebsitePanel.Portal" %>
|
||||||
|
|
||||||
|
|
||||||
|
<asp:Panel ID="UserOrgPanel" runat="server" Visible="false">
|
||||||
|
<div class="IconsBlock">
|
||||||
|
<asp:DataList ID="OrgIcons" runat="server"
|
||||||
|
CellSpacing="1" RepeatColumns="5" RepeatDirection="Horizontal">
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Panel ID="IconPanel" runat="server" CssClass="Icon">
|
||||||
|
<asp:HyperLink ID="imgLink" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><asp:Image ID="imgIcon" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' /></asp:HyperLink>
|
||||||
|
<br />
|
||||||
|
<asp:HyperLink ID="lnkIcon" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><%# Eval("Text") %></asp:HyperLink>
|
||||||
|
</asp:Panel>
|
||||||
|
<asp:Panel ID="IconMenu" runat="server" CssClass="IconMenu" Visible='<%# IsIconMenuVisible(Eval("ChildItems")) %>'>
|
||||||
|
<ul>
|
||||||
|
<asp:Repeater ID="MenuItems" runat="server" DataSource='<%# GetIconMenuItems(Eval("ChildItems")) %>'>
|
||||||
|
<ItemTemplate>
|
||||||
|
<li><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><%# Eval("Text") %></asp:HyperLink></li>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:Repeater>
|
||||||
|
</ul>
|
||||||
|
</asp:Panel>
|
||||||
|
<ajaxToolkit:HoverMenuExtender TargetControlID="IconPanel" PopupControlID="IconMenu" runat="server"
|
||||||
|
PopupPosition="Right" HoverCssClass="Icon Hover"></ajaxToolkit:HoverMenuExtender>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:DataList>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
|
|
@ -0,0 +1,164 @@
|
||||||
|
// 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.Collections.Generic;
|
||||||
|
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 System.Xml;
|
||||||
|
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.WebPortal;
|
||||||
|
using WebsitePanel.Portal.UserControls;
|
||||||
|
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal
|
||||||
|
{
|
||||||
|
public partial class UserOrganization : OrganizationMenuControl
|
||||||
|
{
|
||||||
|
|
||||||
|
int packageId = 0;
|
||||||
|
override public int PackageId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// test
|
||||||
|
//return 1;
|
||||||
|
return packageId;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
packageId = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int itemID = 0;
|
||||||
|
override public int ItemID
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// test
|
||||||
|
//return 1;
|
||||||
|
if (itemID != 0) return itemID;
|
||||||
|
if (PackageId == 0) return 0;
|
||||||
|
|
||||||
|
DataTable orgs = new OrganizationsHelper().GetOrganizations(PackageId, false);
|
||||||
|
|
||||||
|
for (int j = 0; j < orgs.Rows.Count; j++)
|
||||||
|
{
|
||||||
|
DataRow org = orgs.Rows[j];
|
||||||
|
int iId = (int)org["ItemID"];
|
||||||
|
|
||||||
|
if (itemID == 0)
|
||||||
|
itemID = iId;
|
||||||
|
|
||||||
|
object isDefault = org["IsDefault"];
|
||||||
|
if (isDefault is bool)
|
||||||
|
{
|
||||||
|
if ((bool)isDefault)
|
||||||
|
{
|
||||||
|
itemID = iId;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return itemID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ShortMenu = true;
|
||||||
|
ShowImg = true;
|
||||||
|
|
||||||
|
|
||||||
|
if ((PackageId > 0) && (Cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations)))
|
||||||
|
{
|
||||||
|
MenuItemCollection items = new MenuItemCollection();
|
||||||
|
|
||||||
|
if (ItemID > 0)
|
||||||
|
{
|
||||||
|
items.Add(CreateMenuItem("OrganizationHome", "organization_home", @"Icons/organization_home_48.png"));
|
||||||
|
BindMenu(items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
items.Add(CreateMenuItem("CreateOrganization", "create_organization", @"Icons/create_organization_48.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
UserOrgPanel.Visible = true;
|
||||||
|
|
||||||
|
OrgIcons.DataSource = items;
|
||||||
|
OrgIcons.DataBind();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
UserOrgPanel.Visible = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override MenuItem CreateMenuItem(string text, string key, string img)
|
||||||
|
{
|
||||||
|
string PID_SPACE_EXCHANGE_SERVER = "SpaceExchangeServer";
|
||||||
|
|
||||||
|
MenuItem item = new MenuItem();
|
||||||
|
|
||||||
|
item.Text = GetLocalizedString("Text." + text);
|
||||||
|
item.NavigateUrl = PortalUtils.NavigatePageURL( PID_SPACE_EXCHANGE_SERVER, "ItemID", ItemID.ToString(),
|
||||||
|
PortalUtils.SPACE_ID_PARAM + "=" + PackageId, DefaultPage.CONTROL_ID_PARAM + "=" + key,
|
||||||
|
"moduleDefId=exchangeserver");
|
||||||
|
|
||||||
|
if (img == null)
|
||||||
|
item.ImageUrl = PortalUtils.GetThemedIcon("Icons/tool_48.png");
|
||||||
|
else
|
||||||
|
item.ImageUrl = PortalUtils.GetThemedIcon(img);
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MenuItemCollection GetIconMenuItems(object menuItems)
|
||||||
|
{
|
||||||
|
return (MenuItemCollection)menuItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsIconMenuVisible(object menuItems)
|
||||||
|
{
|
||||||
|
return ((MenuItemCollection)menuItems).Count > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 UserOrganization {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UserOrgPanel 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 UserOrgPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// OrgIcons 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.DataList OrgIcons;
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,10 +2,11 @@
|
||||||
<%@ Import Namespace="WebsitePanel.Portal" %>
|
<%@ Import Namespace="WebsitePanel.Portal" %>
|
||||||
<%@ Register Src="UserControls/ServerDetails.ascx" TagName="ServerDetails" TagPrefix="uc3" %>
|
<%@ Register Src="UserControls/ServerDetails.ascx" TagName="ServerDetails" TagPrefix="uc3" %>
|
||||||
<%@ Register Src="UserControls/Comments.ascx" TagName="Comments" TagPrefix="uc4" %>
|
<%@ Register Src="UserControls/Comments.ascx" TagName="Comments" TagPrefix="uc4" %>
|
||||||
|
<%@ Register Src="UserOrganization.ascx" TagName="UserOrganization" TagPrefix="wsp" %>
|
||||||
<%@ Import Namespace="WebsitePanel.Portal" %>
|
<%@ Import Namespace="WebsitePanel.Portal" %>
|
||||||
|
|
||||||
|
|
||||||
<asp:Panel id="ButtonsPanel" runat="server" class="FormButtonsBar">
|
<asp:Panel id="ButtonsPanel" runat="server" class="FormButtonsBar UserSpaces">
|
||||||
<asp:Button ID="btnAddItem" runat="server" meta:resourcekey="btnAddItem" Text="Create Hosting Space" CssClass="Button3" OnClick="btnAddItem_Click" />
|
<asp:Button ID="btnAddItem" runat="server" meta:resourcekey="btnAddItem" Text="Create Hosting Space" CssClass="Button3" OnClick="btnAddItem_Click" />
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
|
@ -16,34 +17,48 @@
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<div class="IconsBlock">
|
<div class="IconsBlock">
|
||||||
<div class="IconsTitle">
|
<div class="IconsTitle">
|
||||||
<asp:hyperlink id=lnkEdit runat="server" NavigateUrl='<%# GetSpaceHomePageUrl((int)Eval("PackageID")) %>'>
|
<asp:hyperlink id="lnkEdit" runat="server" NavigateUrl='<%# GetSpaceHomePageUrl((int)Eval("PackageID")) %>'>
|
||||||
<%# Eval("PackageName") %>
|
<%# Eval("PackageName") %>
|
||||||
</asp:hyperlink>
|
</asp:hyperlink>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<asp:DataList ID="PackageIcons" runat="server" DataSource='<%# GetIconsDataSource((int)Eval("PackageID")) %>'
|
|
||||||
CellSpacing="1" RepeatColumns="5" RepeatDirection="Horizontal">
|
<asp:Repeater ID="PackageGroups" runat="server" DataSource='<%# GetIconsDataSource((int)Eval("PackageID")) %>' >
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:Panel ID="IconPanel" runat="server" CssClass="Icon">
|
|
||||||
<asp:HyperLink ID="imgLink" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><asp:Image ID="imgIcon" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' /></asp:HyperLink>
|
<asp:Label ID="lblGroup" runat="server" CssClass="LinkText" Text='<%# Eval("Text") %>' />
|
||||||
<br />
|
|
||||||
<asp:HyperLink ID="lnkIcon" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><%# Eval("Text") %></asp:HyperLink>
|
<asp:DataList ID="PackageIcons" runat="server" DataSource='<%# GetIconMenuItems(Eval("ChildItems")) %>'
|
||||||
</asp:Panel>
|
CellSpacing="1" RepeatColumns="5" RepeatDirection="Horizontal">
|
||||||
<asp:Panel ID="IconMenu" runat="server" CssClass="IconMenu" Visible='<%# IsIconMenuVisible(Eval("ChildItems")) %>'>
|
<ItemTemplate>
|
||||||
<ul>
|
<asp:Panel ID="IconPanel" runat="server" CssClass="Icon">
|
||||||
<asp:Repeater ID="MenuItems" runat="server" DataSource='<%# GetIconMenuItems(Eval("ChildItems")) %>'>
|
<asp:HyperLink ID="imgLink" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><asp:Image ID="imgIcon" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' /></asp:HyperLink>
|
||||||
<ItemTemplate>
|
<br />
|
||||||
<li><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><%# Eval("Text") %></asp:HyperLink></li>
|
<asp:HyperLink ID="lnkIcon" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><%# Eval("Text") %></asp:HyperLink>
|
||||||
</ItemTemplate>
|
</asp:Panel>
|
||||||
</asp:Repeater>
|
<asp:Panel ID="IconMenu" runat="server" CssClass="IconMenu" Visible='<%# IsIconMenuVisible(Eval("ChildItems")) %>'>
|
||||||
</ul>
|
<ul>
|
||||||
</asp:Panel>
|
<asp:Repeater ID="MenuItems" runat="server" DataSource='<%# GetIconMenuItems(Eval("ChildItems")) %>'>
|
||||||
<ajaxToolkit:HoverMenuExtender TargetControlID="IconPanel" PopupControlID="IconMenu" runat="server"
|
<ItemTemplate>
|
||||||
PopupPosition="Right" HoverCssClass="Icon Hover"></ajaxToolkit:HoverMenuExtender>
|
<li><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("NavigateURL") %>'><%# Eval("Text") %></asp:HyperLink></li>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:Repeater>
|
||||||
|
</ul>
|
||||||
|
</asp:Panel>
|
||||||
|
<ajaxToolkit:HoverMenuExtender TargetControlID="IconPanel" PopupControlID="IconMenu" runat="server"
|
||||||
|
PopupPosition="Right" HoverCssClass="Icon Hover"></ajaxToolkit:HoverMenuExtender>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:DataList>
|
||||||
|
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:DataList>
|
</asp:Repeater>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<asp:Panel ID="OrgPanel" runat="server" Visible='<%# IsOrgPanelVisible((int)Eval("PackageID")) %>'>
|
||||||
|
<asp:Label ID="lblOrg" runat="server" CssClass="LinkText" meta:resourcekey="lblOrg" Text="Hosted Organization" />
|
||||||
|
<wsp:UserOrganization ID="UserOrganization" runat="server" PackageId='<%# (int)Eval("PackageID") %>' />
|
||||||
|
</asp:Panel>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:Repeater>
|
</asp:Repeater>
|
||||||
<asp:Panel ID="EmptyPackagesList" runat="server" Visible="false" CssClass="FormBody">
|
<asp:Panel ID="EmptyPackagesList" runat="server" Visible="false" CssClass="FormBody">
|
||||||
|
|
|
@ -53,7 +53,7 @@ namespace WebsitePanel.Portal
|
||||||
bool isUser = PanelSecurity.SelectedUser.Role == UserRole.User;
|
bool isUser = PanelSecurity.SelectedUser.Role == UserRole.User;
|
||||||
|
|
||||||
// load icons data
|
// load icons data
|
||||||
xmlIcons = this.Module.SelectNodes("Icon");
|
xmlIcons = this.Module.SelectNodes("Group");
|
||||||
|
|
||||||
if (isUser && xmlIcons != null)
|
if (isUser && xmlIcons != null)
|
||||||
{
|
{
|
||||||
|
@ -84,6 +84,12 @@ namespace WebsitePanel.Portal
|
||||||
{
|
{
|
||||||
return PortalUtils.GetSpaceHomePageUrl(spaceId);
|
return PortalUtils.GetSpaceHomePageUrl(spaceId);
|
||||||
}
|
}
|
||||||
|
public string GetOrgPageUrl(int spaceId)
|
||||||
|
{
|
||||||
|
string PID_SPACE_EXCHANGE_SERVER = "SpaceExchangeServer";
|
||||||
|
return NavigatePageURL(PID_SPACE_EXCHANGE_SERVER, PortalUtils.SPACE_ID_PARAM, spaceId.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void odsPackages_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
protected void odsPackages_Selected(object sender, ObjectDataSourceStatusEventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -124,6 +130,8 @@ namespace WebsitePanel.Portal
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public MenuItemCollection GetIconMenuItems(object menuItems)
|
public MenuItemCollection GetIconMenuItems(object menuItems)
|
||||||
{
|
{
|
||||||
return (MenuItemCollection)menuItems;
|
return (MenuItemCollection)menuItems;
|
||||||
|
@ -134,6 +142,13 @@ namespace WebsitePanel.Portal
|
||||||
return ((MenuItemCollection)menuItems).Count > 0;
|
return ((MenuItemCollection)menuItems).Count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsOrgPanelVisible(int packageId)
|
||||||
|
{
|
||||||
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(packageId);
|
||||||
|
return cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private MenuItem CreateMenuItem(PackageContext cntx, XmlNode xmlNode)
|
private MenuItem CreateMenuItem(PackageContext cntx, XmlNode xmlNode)
|
||||||
{
|
{
|
||||||
string pageId = GetXmlAttribute(xmlNode, "pageID");
|
string pageId = GetXmlAttribute(xmlNode, "pageID");
|
||||||
|
@ -149,6 +164,10 @@ namespace WebsitePanel.Portal
|
||||||
string quota = GetXmlAttribute(xmlNode, "quota");
|
string quota = GetXmlAttribute(xmlNode, "quota");
|
||||||
bool disabled = Utils.ParseBool(GetXmlAttribute(xmlNode, "disabled"), false);
|
bool disabled = Utils.ParseBool(GetXmlAttribute(xmlNode, "disabled"), false);
|
||||||
|
|
||||||
|
string titleresourcekey = GetXmlAttribute(xmlNode, "titleresourcekey");
|
||||||
|
if (!String.IsNullOrEmpty(titleresourcekey))
|
||||||
|
title = GetLocalizedString(titleresourcekey + ".Text");
|
||||||
|
|
||||||
// get custom page parameters
|
// get custom page parameters
|
||||||
XmlNodeList xmlParameters = xmlNode.SelectNodes("Parameters/Add");
|
XmlNodeList xmlParameters = xmlNode.SelectNodes("Parameters/Add");
|
||||||
List<string> parameters = new List<string>();
|
List<string> parameters = new List<string>();
|
||||||
|
@ -181,7 +200,9 @@ namespace WebsitePanel.Portal
|
||||||
}
|
}
|
||||||
|
|
||||||
// process nested menu items
|
// process nested menu items
|
||||||
XmlNodeList xmlMenuNodes = xmlNode.SelectNodes("MenuItems/MenuItem");
|
XmlNodeList xmlMenuNodes = xmlNode.SelectNodes("Icon");
|
||||||
|
if (xmlMenuNodes.Count==0)
|
||||||
|
xmlMenuNodes = xmlNode.SelectNodes("MenuItems/MenuItem");
|
||||||
foreach (XmlNode xmlMenuNode in xmlMenuNodes)
|
foreach (XmlNode xmlMenuNode in xmlMenuNodes)
|
||||||
{
|
{
|
||||||
MenuItem menuItem = CreateMenuItem(cntx, xmlMenuNode);
|
MenuItem menuItem = CreateMenuItem(cntx, xmlMenuNode);
|
||||||
|
@ -189,6 +210,9 @@ namespace WebsitePanel.Portal
|
||||||
item.ChildItems.Add(menuItem);
|
item.ChildItems.Add(menuItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test
|
||||||
|
//return item;
|
||||||
|
|
||||||
if (display && !(disabled && item.ChildItems.Count == 0))
|
if (display && !(disabled && item.ChildItems.Count == 0))
|
||||||
return item;
|
return item;
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -602,6 +602,9 @@
|
||||||
<Compile Include="UserControls\EditFeedsList.ascx.designer.cs">
|
<Compile Include="UserControls\EditFeedsList.ascx.designer.cs">
|
||||||
<DependentUpon>EditFeedsList.ascx</DependentUpon>
|
<DependentUpon>EditFeedsList.ascx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="UserControls\OrganizationMenuControl.cs">
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="UserControls\OrgIdPolicyEditor.ascx.cs">
|
<Compile Include="UserControls\OrgIdPolicyEditor.ascx.cs">
|
||||||
<DependentUpon>OrgIdPolicyEditor.ascx</DependentUpon>
|
<DependentUpon>OrgIdPolicyEditor.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -630,6 +633,13 @@
|
||||||
<Compile Include="Lync\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="UserOrganization.ascx.cs">
|
||||||
|
<DependentUpon>UserOrganization.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="UserOrganization.ascx.designer.cs">
|
||||||
|
<DependentUpon>UserOrganization.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="VPSForPC\MonitoringPage.aspx.cs">
|
<Compile Include="VPSForPC\MonitoringPage.aspx.cs">
|
||||||
<DependentUpon>MonitoringPage.aspx</DependentUpon>
|
<DependentUpon>MonitoringPage.aspx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -4147,6 +4157,7 @@
|
||||||
<Content Include="UserControls\OrgPolicyEditor.ascx" />
|
<Content Include="UserControls\OrgPolicyEditor.ascx" />
|
||||||
<Content Include="UserControls\PackagePhoneNumbers.ascx" />
|
<Content Include="UserControls\PackagePhoneNumbers.ascx" />
|
||||||
<Content Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx" />
|
<Content Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx" />
|
||||||
|
<Content Include="UserOrganization.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" />
|
||||||
|
@ -5355,6 +5366,9 @@
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="ExchangeServer\App_LocalResources\EnterpriseStorageCreateDriveMap.ascx.resx" />
|
<Content Include="ExchangeServer\App_LocalResources\EnterpriseStorageCreateDriveMap.ascx.resx" />
|
||||||
|
<Content Include="App_LocalResources\UserOrganization.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>
|
||||||
|
|
|
@ -104,9 +104,39 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="App_Containers\Default\VPSForPC.ascx" />
|
<Content Include="App_Containers\Default\VPSForPC.ascx" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\advancedstatistics_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\applicationsinstaller_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\blackberry_users_48.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\block.png" />
|
<Content Include="App_Themes\Default\Icons\block.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\configureVLan.png" />
|
<Content Include="App_Themes\Default\Icons\configureVLan.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\create_organization_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\crm_orgs_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\crm_users_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\domains_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\enterprisestorage_folders_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\exchange_contacts_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\exchange_dlists_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\filemanager_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\ftp_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\lync_users_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\mailboxes_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\mail_accounts_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\mail_domains_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\mail_forwardings_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\mail_groups_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\mail_lists_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\odbc_48.png" />
|
||||||
<Content Include="App_Themes\Default\Icons\OK.png" />
|
<Content Include="App_Themes\Default\Icons\OK.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\organization_home_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\scheduledtasks_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\sharedssl_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\sharepoint_sitecollections_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\spacehome_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\vpsforpc_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\vps_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\webapplicationsgallery_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\webipaddresses_48.png" />
|
||||||
|
<Content Include="App_Themes\Default\Icons\websites_48.png" />
|
||||||
<Content Include="App_Themes\Default\Images\Exchange\blank16.gif" />
|
<Content Include="App_Themes\Default\Images\Exchange\blank16.gif" />
|
||||||
<Content Include="App_Themes\Default\Images\Exchange\disabled.png" />
|
<Content Include="App_Themes\Default\Images\Exchange\disabled.png" />
|
||||||
<Content Include="App_Themes\Default\Images\Exchange\disabled_16.png" />
|
<Content Include="App_Themes\Default\Images\Exchange\disabled_16.png" />
|
||||||
|
@ -247,6 +277,7 @@
|
||||||
<Content Include="App_Data\SiteSettings.config">
|
<Content Include="App_Data\SiteSettings.config">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="App_Data\ESModule_ControlsHierarchy.config" />
|
||||||
<None Include="App_Data\SupportedThemes.config" />
|
<None Include="App_Data\SupportedThemes.config" />
|
||||||
<None Include="App_Data\Countries.config" />
|
<None Include="App_Data\Countries.config" />
|
||||||
<None Include="App_Data\CountryStates.config" />
|
<None Include="App_Data\CountryStates.config" />
|
||||||
|
|