diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs index 808637cd..7181311c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs @@ -444,7 +444,7 @@ namespace WebsitePanel.EnterpriseServer EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); var webDavSetting = ObjectUtils.FillObjectFromDataReader( - DataProvider.GetEnterpriseFolder(itemId, newFolder)); + DataProvider.GetEnterpriseFolder(itemId, oldFolder)); bool folderExists = es.GetFolder(org.OrganizationId, newFolder, webDavSetting) != null; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 9c050abd..3a721fdd 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,11 @@ - + - + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/ServiceProviderSettings.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/ServiceProviderSettings.cs index 5fd13360..072ecbe6 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/ServiceProviderSettings.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/ServiceProviderSettings.cs @@ -102,6 +102,15 @@ namespace WebsitePanel.Providers 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 public int ProviderGroupID { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs index eb745f20..b0914e21 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs @@ -27,11 +27,15 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Management.Automation; using System.Management.Automation.Runspaces; using System.Net; using WebsitePanel.Server.Utils; +using Microsoft.Management.Infrastructure; + namespace WebsitePanel.Providers.DNS { @@ -224,6 +228,9 @@ namespace WebsitePanel.Providers.DNS .Where( r => null != r ) .Where( r => r.RecordType != DnsRecordType.SOA ) // .Where( r => !( r.RecordName == "@" && DnsRecordType.NS == r.RecordType ) ) + .OrderBy( r => r.RecordName ) + .ThenBy( r => r.RecordType ) + .ThenBy( r => r.RecordData ) .ToArray(); } @@ -299,17 +306,92 @@ namespace WebsitePanel.Providers.DNS 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" ); cmd.addParam( "ZoneName", zoneName ); - cmd.addParam( "Name", Name ); + cmd.addParam( "Name", Name ); cmd.addParam( "RRType", type ); + + if (!String.IsNullOrEmpty(recordData)) + cmd.addParam("RecordData", recordData); + cmd.addParam( "Force" ); 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 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 } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs index a5ea2fb8..6cab0d99 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs @@ -38,34 +38,36 @@ using WebsitePanel.Providers.Utils; namespace WebsitePanel.Providers.DNS { 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 { get { return ProviderSettings.GetBool( "AdMode" ); } } + #endregion - private PowerShellHelper ps = null; - private WmiHelper wmi = null; //< We still need WMI because PowerShell doesn't support SOA updates. + private PowerShellHelper ps = null; private bool bulkRecords; public MsDNS2012() @@ -74,9 +76,6 @@ namespace WebsitePanel.Providers.DNS ps = new PowerShellHelper(); if( !this.IsInstalled() ) return; - - // Create WMI helper - wmi = new WmiHelper( "root\\MicrosoftDNS" ); } #region Zones @@ -99,17 +98,11 @@ namespace WebsitePanel.Providers.DNS public virtual void AddPrimaryZone( string zoneName, string[] secondaryServers ) { ps.Add_DnsServerPrimaryZone( zoneName, secondaryServers ); - - // delete orphan NS records - DeleteOrphanNsRecords( zoneName ); } public virtual void AddSecondaryZone( string zoneName, string[] masterServers ) { ps.Add_DnsServerSecondaryZone( zoneName, masterServers ); - - // delete orphan NS records - DeleteOrphanNsRecords( zoneName ); } public virtual void DeleteZone( string zoneName ) @@ -179,7 +172,7 @@ namespace WebsitePanel.Providers.DNS string rrType; if( !RecordTypes.rrTypeFromRecord.TryGetValue( record.RecordType, out rrType ) ) 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 ) { @@ -194,205 +187,38 @@ namespace WebsitePanel.Providers.DNS 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 #region SOA Record 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 - DeleteSoaRecord( zoneName ); + private void UpdateSoaRecord(string zoneName) + { + if (bulkRecords) + return; - // format record data - string recordText = GetSoaRecordText( host, primaryNsServer, primaryPerson ); - - // add record - AddDnsRecord( zoneName, recordText ); - - // update SOA record - 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 ); - } - } + try + { + ps.Update_DnsServerResourceRecordSOA(zoneName, ExpireLimit, MinimumTTL, null, RefreshInterval, null, RetryDelay, null); + } + catch (Exception ex) + { + Log.WriteError(ex); + } + } #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 ) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs index 3bb878b5..e58fb843 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs @@ -51,6 +51,7 @@ namespace WebsitePanel.Providers.HostedSolution #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_ROOT_PATH_TEMPLATE = @"\\{0}\SYSVOL\{0}\Policies\{1}"; private const string DRIVES_CLSID = "{8FDDCC1A-0C3C-43cd-A6B4-71A6DF20DA8C}"; 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}]"; @@ -1230,6 +1231,8 @@ namespace WebsitePanel.Providers.HostedSolution drivesNode.AppendChild(driveNode); xml.Save(drivesXmlPath); + + IncrementGPOVersion(organizationId, gpoId); } HostedSolutionLog.LogEnd("CreateMappedDriveInternal"); @@ -1293,6 +1296,8 @@ namespace WebsitePanel.Providers.HostedSolution } xml.Save(path); + + IncrementGPOVersion(organizationId, gpoId); } HostedSolutionLog.LogEnd("DeleteMappedDriveInternal"); @@ -1404,6 +1409,8 @@ namespace WebsitePanel.Providers.HostedSolution } xml.Save(drivesXmlPath); + + IncrementGPOVersion(organizationId, gpoId); } } catch (Exception) @@ -1464,6 +1471,8 @@ namespace WebsitePanel.Providers.HostedSolution } xml.Save(drivesXmlPath); + + IncrementGPOVersion(organizationId, gpoId); } } catch (Exception) @@ -1602,6 +1611,50 @@ namespace WebsitePanel.Providers.HostedSolution 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 private void CreateDrivesXmlEmpty(string path, string fileName) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal.sln b/WebsitePanel/Sources/WebsitePanel.WebPortal.sln index bacd747a..24bfb087 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal.sln +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal.sln @@ -1,5 +1,7 @@ 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}" ProjectSection(SolutionItems) = preProject ..\..\LICENSE.txt = ..\..\LICENSE.txt diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config new file mode 100644 index 00000000..a4255204 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config index 71b84f87..c418eca5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config @@ -88,51 +88,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/SiteSettings.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/SiteSettings.config index 95979007..4fc71ff6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/SiteSettings.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/SiteSettings.config @@ -3,7 +3,7 @@ WebsitePanel - http://192.168.0.6:9002 + http://localhost:9002 UserCulture UserTheme diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config index 7d629900..08973316 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config @@ -54,7 +54,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx index 2a1aabc9..b408a42b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx @@ -786,4 +786,7 @@ Phone Numbers + + Hosted Organization + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/advancedstatistics_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/advancedstatistics_48.png new file mode 100644 index 00000000..aa4b049a Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/advancedstatistics_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/applicationsinstaller_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/applicationsinstaller_48.png new file mode 100644 index 00000000..7f778dd8 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/applicationsinstaller_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/blackberry_users_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/blackberry_users_48.png new file mode 100644 index 00000000..1b7b9faa Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/blackberry_users_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/create_organization_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/create_organization_48.png new file mode 100644 index 00000000..5c97b86f Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/create_organization_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_orgs_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_orgs_48.png new file mode 100644 index 00000000..0cb29c3b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_orgs_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_users_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_users_48.png new file mode 100644 index 00000000..0cb29c3b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_users_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/domains_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/domains_48.png new file mode 100644 index 00000000..c6a4d3e8 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/domains_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/enterprisestorage_folders_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/enterprisestorage_folders_48.png new file mode 100644 index 00000000..b24089d0 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/enterprisestorage_folders_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_contacts_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_contacts_48.png new file mode 100644 index 00000000..931287bc Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_contacts_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_dlists_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_dlists_48.png new file mode 100644 index 00000000..931287bc Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_dlists_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/filemanager_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/filemanager_48.png new file mode 100644 index 00000000..d6f71d4d Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/filemanager_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/ftp_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/ftp_48.png new file mode 100644 index 00000000..af2004c8 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/ftp_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/lync_users_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/lync_users_48.png new file mode 100644 index 00000000..3e9ffeaa Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/lync_users_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_accounts_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_accounts_48.png new file mode 100644 index 00000000..df5b6f8b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_accounts_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_domains_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_domains_48.png new file mode 100644 index 00000000..df5b6f8b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_domains_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_forwardings_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_forwardings_48.png new file mode 100644 index 00000000..df5b6f8b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_forwardings_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_groups_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_groups_48.png new file mode 100644 index 00000000..df5b6f8b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_groups_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_lists_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_lists_48.png new file mode 100644 index 00000000..df5b6f8b Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_lists_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mailboxes_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mailboxes_48.png new file mode 100644 index 00000000..931287bc Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mailboxes_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/odbc_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/odbc_48.png new file mode 100644 index 00000000..46b5e2c5 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/odbc_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/organization_home_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/organization_home_48.png new file mode 100644 index 00000000..4c775d2e Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/organization_home_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/scheduledtasks_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/scheduledtasks_48.png new file mode 100644 index 00000000..c322accb Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/scheduledtasks_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharedssl_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharedssl_48.png new file mode 100644 index 00000000..aa4b049a Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharedssl_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharepoint_sitecollections_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharepoint_sitecollections_48.png new file mode 100644 index 00000000..3b3ecf68 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharepoint_sitecollections_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/spacehome_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/spacehome_48.png new file mode 100644 index 00000000..4c775d2e Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/spacehome_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vps_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vps_48.png new file mode 100644 index 00000000..ba3df7ee Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vps_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vpsforpc_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vpsforpc_48.png new file mode 100644 index 00000000..26aaddeb Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vpsforpc_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webapplicationsgallery_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webapplicationsgallery_48.png new file mode 100644 index 00000000..7f778dd8 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webapplicationsgallery_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webipaddresses_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webipaddresses_48.png new file mode 100644 index 00000000..aa4b049a Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webipaddresses_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/websites_48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/websites_48.png new file mode 100644 index 00000000..aa4b049a Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/websites_48.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/blank16.gif b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/blank16.gif index ca92d53f..45b75943 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/blank16.gif and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/blank16.gif differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/net_drive16.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/net_drive16.png index 3a62b557..70afcbb9 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/net_drive16.png and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/net_drive16.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Grids.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Grids.css index f6639638..4598cb1e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Grids.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Grids.css @@ -5,7 +5,7 @@ .LightGridView .AspNet-GridView table tbody tr td {padding:5px; text-align:left;} .NormalGridView .AspNet-GridView {width:100%; margin-top:10px;} .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 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;} @@ -13,7 +13,7 @@ .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.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:hover {text-decoration:underline;} .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 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 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;} \ No newline at end of file +.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;} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css index fb990495..218a820e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css @@ -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;} .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;} -.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 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 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;} @@ -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 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 {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 ul {background-color: #D1E9FF;} .LeftMenu ul.AspNet-Menu {width: 190px;} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css index 34c7128b..58f5d6c2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css @@ -2,6 +2,7 @@ html, body, div, form, fieldset, legend, label, ul, li {margin:0; padding:0;} table {border-collapse:collapse; border-spacing:0;} tr, td, th {padding:0;} +td{vertical-align:top;} img {border:0;} ul, ol, li {list-style:none;} a {text-decoration:none;} @@ -11,7 +12,7 @@ label {cursor:pointer;} /* global */ a {color:#428bca;} 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.Normal {padding:0; vertical-align:top; line-height:34px; white-space:nowrap;} 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 {width:150px;} .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;} .Right .SubHead {width:80px;} .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;} ul.LinksList {margin-left:20px;} ul.LinksList li a {display:block; line-height:30px;} .IconsBlock {margin-bottom:20px;} .IconsTitle {padding:5px; font-size:26px; font-weight:300;} .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 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;} .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;} @@ -70,6 +72,7 @@ a.FileManagerTreeNode:visited, a.FileManagerTreeNodeSelected:visited {} a.FileManagerTreeNode:active, a.FileManagerTreeNodeSelected:active {} a.FileManagerTreeNode:hover, a.FileManagerTreeNodeSelected:hover {background:#f5f5f5;} .FormButtonsBar + .NormalGridView .AspNet-GridView {margin-bottom:15px;} + /*.FormButtonsBar + .NormalGridView .AspNet-GridView table tbody tr td {border:none; padding:0;}*/ /* 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;} @@ -90,12 +93,13 @@ input[type=checkbox], input[type=radio] {margin:8px 4px 8px; vertical-align:-1px input[type=image] {margin-right:4px;} .LoginLabel {display:block; line-height:34px; width:auto !important; padding-right:8px;} .LoginContainer .SubHead {padding-right:8px; color:#333;} -.RightBlockTitle {color:#de7f40; font-size:26px; font-weight:300; letter-spacing:-1px;} -.RightBlockTable {color:#888;} +.RightBlockTitle {color:#db6b20; font-size:26px; font-weight:300; letter-spacing:-1px;} +.RightBlockTable {color:#000;} .RightBlockTable td.SubHead, .RightBlockTable td.Normal {padding:5px 0; line-height:13px;} {padding:0; line-height:13px;} .FormRightIcon {display:none;} .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 span {color:#888;} .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;} .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;} -.Hidden {display: none;} \ No newline at end of file +.Hidden {display: none;} +.LinkText {color:#428bca;} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/SkinLayout.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/SkinLayout.css index 7c8d82e3..9c6dffdd 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/SkinLayout.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/SkinLayout.css @@ -1,5 +1,5 @@ @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;} #SkinContent {float:left; width:100%; 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;} .SearchQuery {} #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 .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 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:last-child {color:#999;} #Breadcrumb .Path a:hover {text-decoration:none;} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs index 7ed0fc77..3719073a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs @@ -56,10 +56,12 @@ namespace WebsitePanel.Portal public const string CONFIG_FOLDER = "~/App_Data/"; public const string SUPPORTED_THEMES_FILE = "SupportedThemes.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 SPACE_ID_PARAM = "SpaceID"; public const string SEARCH_QUERY_PARAM = "Query"; + public static string CultureCookieName { get { return PortalConfiguration.SiteSettings["CultureCookieName"]; } @@ -981,6 +983,34 @@ namespace WebsitePanel.Portal return "~/Default.aspx?" + String.Join("&", url.ToArray()); } #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; + } } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx new file mode 100644 index 00000000..9db2a02d --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Creation Date + + + Hosting Plan + + + Name + + + Pricing + + + Server + + + Status + + + Switch to this Space + + + ActiveSync Policy + + + BlackBerry + + + BlackBerry Users + + + Contacts + + + CRM 2013 + + + CRM + + + CRM Organization + + + CRM Users + + + Disclaimers + + + Distribution Lists + + + Domains + + + Drive Maps + + + Online Folders + + + Enterprise Storage + + + Accepted Domains + + + Exchange + + + Lync Federation Domains + + + Lync + + + Phone Numbers + + + Lync User Plans + + + Lync Users + + + Mailboxes + + + Mailbox Plans + + + OCS + + + OCS Users + + + Organization + + + Organization Statistics + + + Public Folders + + + Retention Policy + + + Retention Policy Tag + + + Groups + + + Setup + + + SharePoint + + + Sharepoint Sites + + + Storage Settings + + + Storage Usage + + + Users + + + Create Organization + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserSpaces.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserSpaces.ascx.resx index 88c22595..8e396d55 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserSpaces.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserSpaces.ascx.resx @@ -112,14 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create Hosting Space + + Databases + + + Email + 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. @@ -144,4 +150,16 @@ Switch to this Space + + System + + + VPS + + + Web & Applications + + + Space Statistics + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx index fcc0eb88..e7986690 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx @@ -19,11 +19,12 @@ + @@ -37,15 +38,16 @@ - - + + - + <%# GetRecordFullData((string)Eval("RecordType"), (string)Eval("RecordData"), (int)Eval("MxPriority"), (int)Eval("SrvPort"))%> + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx.designer.cs index f628b1de..b556f006 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DnsZoneRecords.ascx.designer.cs @@ -26,7 +26,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs index b1c6aa4c..ed3b6b9c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs @@ -78,7 +78,6 @@ namespace WebsitePanel.Portal.ExchangeServer chkDisable.Visible = false; } - secLitigationHoldSettings.Visible = (Utils.CheckQouta(Quotas.EXCHANGE2007_ALLOWLITIGATIONHOLD, 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); secArchiving.Visible = plan.EnableArchiving; + secLitigationHoldSettings.Visible = plan.AllowLitigationHold && Utils.CheckQouta(Quotas.EXCHANGE2007_ALLOWLITIGATIONHOLD, Cntx); } private void BindSettings() diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddFederationDomain.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddFederationDomain.ascx.resx index 5eaa9432..f8ed0b7d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddFederationDomain.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddFederationDomain.ascx.resx @@ -138,4 +138,7 @@ Lync Add Federation Domain + + Lync Add Federation Domain + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAllocatePhoneNumbers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAllocatePhoneNumbers.ascx.resx index 118ce42a..fa8d4635 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAllocatePhoneNumbers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAllocatePhoneNumbers.ascx.resx @@ -126,4 +126,7 @@ Phone Numbers + + Lync Allocate Phone Numbers + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncPhoneNumbers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncPhoneNumbers.ascx.resx index 118ce42a..d793d960 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncPhoneNumbers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncPhoneNumbers.ascx.resx @@ -124,6 +124,9 @@ Quotas - Phone Numbers + Lync Phone Numbers + + + Lync Phone Numbers \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx index 8c44e59c..4558bd62 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx @@ -153,4 +153,7 @@ Login + + Lync Users + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/AllocatePackagePhoneNumbers.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/AllocatePackagePhoneNumbers.ascx.cs index 214feaec..f3159ee1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/AllocatePackagePhoneNumbers.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/AllocatePackagePhoneNumbers.ascx.cs @@ -149,7 +149,8 @@ namespace WebsitePanel.Portal.UserControls 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) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OrganizationMenu.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OrganizationMenu.ascx.cs index acb67ad5..2d9d4e6f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OrganizationMenu.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OrganizationMenu.ascx.cs @@ -31,16 +31,20 @@ using System.Web.UI.WebControls; using WebsitePanel.EnterpriseServer; using WebsitePanel.WebPortal; +using WebsitePanel.Portal.UserControls; namespace WebsitePanel.Portal { - public partial class OrganizationMenu : WebsitePanelModuleBase + public partial class OrganizationMenu : OrganizationMenuControl { private const string PID_SPACE_EXCHANGE_SERVER = "SpaceExchangeServer"; protected void Page_Load(object sender, EventArgs e) { + ShortMenu = false; + ShowImg = false; + // organization 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); + //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); } } - 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; - } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx index 5c9f2de6..3f25e61d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx @@ -18,11 +18,11 @@ - + Organization - Home + Home diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.cs index b72ba87b..1849cf0e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.cs @@ -127,7 +127,10 @@ namespace WebsitePanel.Portal.SkinControls "SpaceID=" + PanelSecurity.PackageId.ToString()); 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]; ModuleControl control = null; @@ -136,7 +139,10 @@ namespace WebsitePanel.Portal.SkinControls 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()); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.designer.cs index 6ee25ed6..e61a07dd 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/UserSpaceBreadcrumb.ascx.designer.cs @@ -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. - //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -140,13 +112,13 @@ namespace WebsitePanel.Portal.SkinControls { protected global::System.Web.UI.WebControls.Image imgSep4; /// - /// lbOrgCurPage control. + /// lnkOrgCurPage control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Label lbOrgCurPage; + protected global::System.Web.UI.WebControls.HyperLink lnkOrgCurPage; /// /// SpaceOrgs control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs new file mode 100644 index 00000000..4f537a5f --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs @@ -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; + } + + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx new file mode 100644 index 00000000..8ade5af5 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx @@ -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" %> + + + +
+ + + + +
+ <%# Eval("Text") %> +
+ +
    + + +
  • <%# Eval("Text") %>
  • +
    +
    +
+
+ +
+
+
+
+ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs new file mode 100644 index 00000000..a487dda2 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs @@ -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; + } + + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.designer.cs new file mode 100644 index 00000000..26efff9f --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.designer.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal { + + + public partial class UserOrganization { + + /// + /// UserOrgPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel UserOrgPanel; + + /// + /// OrgIcons control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DataList OrgIcons; + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx index 32be20c8..53ae756f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx @@ -2,10 +2,11 @@ <%@ Import Namespace="WebsitePanel.Portal" %> <%@ Register Src="UserControls/ServerDetails.ascx" TagName="ServerDetails" TagPrefix="uc3" %> <%@ Register Src="UserControls/Comments.ascx" TagName="Comments" TagPrefix="uc4" %> +<%@ Register Src="UserOrganization.ascx" TagName="UserOrganization" TagPrefix="wsp" %> <%@ Import Namespace="WebsitePanel.Portal" %> - + @@ -16,34 +17,48 @@
- + <%# Eval("PackageName") %>
- + + - - -
- <%# Eval("Text") %> -
- -
    - - -
  • <%# Eval("Text") %>
  • -
    -
    -
-
- + + + + + + + +
+ <%# Eval("Text") %> +
+ +
    + + +
  • <%# Eval("Text") %>
  • +
    +
    +
+
+ +
+
+
-
+ +
+ + + +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs index 9c47334a..849ec12e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs @@ -53,7 +53,7 @@ namespace WebsitePanel.Portal bool isUser = PanelSecurity.SelectedUser.Role == UserRole.User; // load icons data - xmlIcons = this.Module.SelectNodes("Icon"); + xmlIcons = this.Module.SelectNodes("Group"); if (isUser && xmlIcons != null) { @@ -84,6 +84,12 @@ namespace WebsitePanel.Portal { 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) { @@ -124,6 +130,8 @@ namespace WebsitePanel.Portal return items; } + + public MenuItemCollection GetIconMenuItems(object menuItems) { return (MenuItemCollection)menuItems; @@ -134,6 +142,13 @@ namespace WebsitePanel.Portal 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) { string pageId = GetXmlAttribute(xmlNode, "pageID"); @@ -149,6 +164,10 @@ namespace WebsitePanel.Portal string quota = GetXmlAttribute(xmlNode, "quota"); 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 XmlNodeList xmlParameters = xmlNode.SelectNodes("Parameters/Add"); List parameters = new List(); @@ -181,7 +200,9 @@ namespace WebsitePanel.Portal } // 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) { MenuItem menuItem = CreateMenuItem(cntx, xmlMenuNode); @@ -189,6 +210,9 @@ namespace WebsitePanel.Portal item.ChildItems.Add(menuItem); } + // test + //return item; + if (display && !(disabled && item.ChildItems.Count == 0)) return item; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs index c520a27a..cc9a065a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.designer.cs @@ -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. - //------------------------------------------------------------------------------ // // This code was generated by a tool. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj index c6b67e3e..89789ca0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj @@ -602,6 +602,9 @@ EditFeedsList.ascx + + ASPXCodeBehind + OrgIdPolicyEditor.ascx ASPXCodeBehind @@ -630,6 +633,13 @@ AllocatePackagePhoneNumbers.ascx + + UserOrganization.ascx + ASPXCodeBehind + + + UserOrganization.ascx + MonitoringPage.aspx ASPXCodeBehind @@ -4147,6 +4157,7 @@ + @@ -5355,6 +5366,9 @@ Designer + + Designer + Designer diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index 3cc8372b..ec854c1d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -104,9 +104,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -247,6 +277,7 @@ Designer +