From c6f88023b4db8daeb0da4425f9768f0ea5a0bdf6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 20 Jul 2014 19:33:36 -0400 Subject: [PATCH 01/41] Revert Setting Files --- WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config | 4 ++-- .../WebsitePanel.WebPortal/App_Data/SiteSettings.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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.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 From ff07a97d1e6c73ff535979777908107d61a775b2 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 20 Jul 2014 19:43:29 -0400 Subject: [PATCH 02/41] Added tag build-2.1.0.378 for changeset eef7b47bd5ec From 17b8b952f1eac858f90f722750f38db8e8693337 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Mon, 21 Jul 2014 19:28:09 +0400 Subject: [PATCH 03/41] MsDNS2012 fix --- .../Common/ServiceProviderSettings.cs | 9 + .../DnsCommands.cs | 76 +++++- .../MsDNS.cs | 244 +++--------------- 3 files changed, 119 insertions(+), 210 deletions(-) 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..66603c23 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 { @@ -310,6 +314,76 @@ namespace WebsitePanel.Providers.DNS 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..d0c6c03a 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 ) @@ -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 ) { From 3130155c4c975afcce9aa56baaae9d379a306802 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 21 Jul 2014 11:49:27 -0400 Subject: [PATCH 04/41] Added tag build-2.1.0.379 for changeset a35d17c6f9c6 From f2564ce514ba6e531fe910cae473cd7825f31bf0 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Thu, 24 Jul 2014 17:49:23 +0400 Subject: [PATCH 05/41] MsDNS2012 fix : edit/delete empty name records --- .../DnsCommands.cs | 14 +++++++++++--- .../WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs index 66603c23..b0914e21 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/DnsCommands.cs @@ -228,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(); } @@ -303,13 +306,18 @@ 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 ); } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs index d0c6c03a..6cab0d99 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.MsDNS2012/MsDNS.cs @@ -172,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 ) { From 67e9e70b1ebae4f512582723cd9c542845df8683 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 25 Jul 2014 09:23:32 -0400 Subject: [PATCH 06/41] Added tag build-2.1.0.380 for changeset a1125bf2b416 From 6ae6823f672e5cfc199645292e7673c8eb88134a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 26 Jul 2014 18:40:39 -0400 Subject: [PATCH 07/41] Update Images --- .../Default/Images/Exchange/blank16.gif | Bin 832 -> 55 bytes .../Default/Images/Exchange/net_drive16.png | Bin 697 -> 245 bytes 2 files changed, 0 insertions(+), 0 deletions(-) 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 ca92d53faf0df9e9270c469e3395e67af015b888..45b7594365a818b73be8f519439f500c252da4d2 100644 GIT binary patch literal 55 zcmZ?wbhEHb6krfwXkcLY|NlP&1B2pE7Dgb&paUX6G7L<7E&VG`zvW*%XUnbb&33E| F)&OmJ4$S}n literal 832 zcmW-fA+8`a7=-5q#Nu9p1wn8WHz8rO9u^d)4uhFBO z4SlboY5OOg|Nmyb{qCEuU;gxnNBjVM_TPsO|9tQjzQkQmZ*QIsARxd%fMNiH7{V|{ zFp3FGVhYok!7LWAh$Spz1*_P=CbqDR9qi%&hd9D9PH=kvMu`eF8uVVSHVF|Xa%&vm zAcr{25sq?#lbqr-XE@6RE^>*>T;VD=xXCSUbBDV;;31EA%oConV9AO#8}{~b$EF~` zLT+0c(4dAitPzcBLX(=(v}QD`1ubex%UaQ@HngcNZEHunI?$nxbgUDds!*v)wHoyz zxWsA5u#ro|10M8{hdts^Pk7Q(p7xAqz2HSJdD$yo^@caS zxpw1T`qyj*3LNB`k%0_mD8m`aXeKh5sZ3`kvsuVuma?3ctY#yd*~)fyvYUe(<|xNG z$!Us|sZys&`xJ!h#zk`by2TrXfev=4!yV~pCpy`wPIsoWUFc$$y4;nncB7l!>UMX! z+k+nVsK-6&c@n!pyKZ0PckXBL=hQ!MFFwV;AAR!r-EV*V^5Ww!e*F90?|;5|{QUc0 OU%!9**Ut|Rc=bOgEs9P6 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 3a62b557beafa00f355acc4fcd8b27aed149fc91..70afcbb9fae41c05f0a6bf10b156e75225121212 100644 GIT binary patch delta 184 zcmV;p07w711@!@tB$0w7e*l+BL_t(|+G1d!5HMm9GXUa#9O@SW@dA7XDgg0)s3GV; z0Eo}ykRwh3RPH=fEru8NLnSs6@U}k?9{}P)5QhcL1%*U}8%T3KHi`XsG=U6vK=K}3 zEeiod1fcizlqMvK4Pe0%#}k0~BT|%Mi$+kGE(D?*@Btb{2cc{b m;75u&1|+eM48sQi1Q-BzT^awY_yE`d0000004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00009a7bBm000XT000XT0n*)m z{E;Cie*yhTL_t(IPh()9HZVK!Mn?PmKS%8&-+}lu0-yfvsD1FG6<+(;w|rL;-1+&g z*zy1WMGyT&!D5I1{}(y(|3B}R_f6Ohso&4Su;B3uhV|e6Gc0=g7ZX4E%dqU#e}-i* ze=*E_XoF#h=$4lfLTg`67hL;dk>Hx=3o!8Nf2RwDRy~;|y!F$3p|#KAFboje@hL#+ z;E(4DhrVu6IPiJ9{QgfnU>L+#IQV(1^xjXmWsm*6F0tp+9)|z_8Bq*jTJ<8DVco~? z49i{|Wmx{=1du+-uoOsxFqr@R7{iK}Zy45pdBM2y^*Ia!7#7|)WLWU@6vNzy*BIv9 zf4>68v+rL3(x;&8s|>U5onu)1`aHv&d;LVkzTn2U)&d*eOe0D$HbtV_-en1F`>@UE z^gl_0hH!6ur^mnP{RRFl?=K5({dAFkYkhY{lV@A{N)^mr|5g?(x8|KZ&!$fz1j7WZVB0@-@tx1P8S4Kt5vKv0D)bbG7p4XP XxWpj~N@`WB00000NkvXXu0mjf4lp#_ From ba9e87aa4c18ceda4ce9a6db1ce82896d27c4cd6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 26 Jul 2014 18:55:53 -0400 Subject: [PATCH 08/41] Added tag build-2.1.0.381 for changeset b60fd8935d70 From ee03438168ceb8755efc6a74678ef1bd3a8cdf73 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Mon, 28 Jul 2014 12:18:31 +0400 Subject: [PATCH 09/41] fix page "DNS Zone Records" --- .../App_Themes/Default/Styles/Grids.css | 6 +++++- .../DesktopModules/WebsitePanel/DnsZoneRecords.ascx | 10 ++++++---- .../WebsitePanel/DnsZoneRecords.ascx.designer.cs | 1 - 3 files changed, 11 insertions(+), 6 deletions(-) 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..dda8d528 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Grids.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Grids.css @@ -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/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. From 11ced1d4db591ad3651e0f1791f85f2abd73924c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 28 Jul 2014 13:17:44 -0400 Subject: [PATCH 10/41] Added tag build-2.1.0.382 for changeset f4a6a776a68a From 45b1f20102ec114f4f6c8da71ab52c86f59014f5 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 28 Jul 2014 13:23:17 -0400 Subject: [PATCH 11/41] Added tag build-2.1.0.383 for changeset 0ddffb641d4d From 6acb71d4b3a3de960aba55f8252390cd62053298 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Tue, 5 Aug 2014 18:32:21 +0400 Subject: [PATCH 12/41] Account Home Organization module --- .../App_Data/WebsitePanel_Modules.config | 7 +- .../App_Data/WebsitePanel_Pages.config | 1 + .../WebsitePanel_Modules.ascx.resx | 3 + .../UserOrganization.ascx.resx | 252 +++++++++ .../WebsitePanel/OrganizationMenu.ascx.cs | 337 +----------- .../UserControls/OrganizationMenuControl.cs | 480 ++++++++++++++++++ .../WebsitePanel/UserOrganization.ascx | 20 + .../WebsitePanel/UserOrganization.ascx.cs | 132 +++++ .../UserOrganization.ascx.designer.cs | 33 ++ .../WebsitePanel.Portal.Modules.csproj | 14 + 10 files changed, 955 insertions(+), 324 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.designer.cs diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config index 7d629900..751c3884 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config @@ -54,7 +54,12 @@ - + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config index 9dd556ee..cca4b918 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config @@ -38,6 +38,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/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..585341ab --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 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 Home + + + Public Folders + + + Retention Policy + + + Retention Policy Tag + + + Groups + + + Setup + + + SharePoint + + + Site Collections + + + Storage Settings + + + Storage Usage + + + Users + + \ No newline at end of file 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/UserControls/OrganizationMenuControl.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs new file mode 100644 index 00000000..4d2e8c36 --- /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 string ImagePath + { + get { return String.Concat("~/", DefaultPage.THEMES_FOLDER, "/", Page.Theme, "/"); } + } + + virtual public int PackageId + { + get { return PanelSecurity.PackageId; } + } + + virtual public int ItemID + { + get { return PanelRequest.ItemID; } + } + + + 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) + { + //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/accounting_mail_48.png")); + + if (ShortMenu) return; + + 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(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", @"Images/crm_48.png")); + crmItems.Add(CreateMenuItem("CRMUsers", "CRMUsers", @"Images/crm_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", @"Images/crm_48.png")); + crmItems.Add(CreateMenuItem("CRMUsers", "CRMUsers", @"Images/crm_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", @"Images/blackberry48.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", @"Images/Exchange/storage_limits_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", @"Images/lync48.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", @"Images/folder_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); + } + + private 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 = ImagePath + "Icons/tool_48.png"; + else + item.ImageUrl = ImagePath + 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..84547d05 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx @@ -0,0 +1,20 @@ +<%@ 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") %> +
+
+
+
+ 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..5ccdbc57 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs @@ -0,0 +1,132 @@ +// 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 + { + private void FindDefaultOrg() + { + DataSet rawPackages = new PackagesHelper().GetMyPackages(); + if (rawPackages.Tables.Count<1) return; + + DataTable packages = rawPackages.Tables[0]; + + for(int i=0;i 0) + { + MenuItemCollection items = new MenuItemCollection(); + + BindMenu(items); + UserOrgPanel.Visible = true; + + OrgIcons.DataSource = items; + OrgIcons.DataBind(); + } + else + UserOrgPanel.Visible = false; + + } + + + } +} \ 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/WebsitePanel.Portal.Modules.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj index 84a7a6bc..60e9bcef 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 @@ + @@ -5354,6 +5365,9 @@ Designer + + Designer + Designer From 10f3586e846043238944fbcc616a399704458c67 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Wed, 6 Aug 2014 13:09:50 +0300 Subject: [PATCH 13/41] added of increment GPO version. --- .../EnterpriseStorageController.cs | 2 +- .../OrganizationProvider.cs | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) 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.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) From 753b914cd4b676cd125109640830eba090661c07 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 6 Aug 2014 08:34:53 -0400 Subject: [PATCH 14/41] Added tag build-2.1.0.384 for changeset 22c0f143b97b From 7696614304a01bae6752cce06f5c965473462807 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Thu, 7 Aug 2014 04:23:43 +0400 Subject: [PATCH 15/41] Account Home Organization module --- .../Sources/WebsitePanel.WebPortal.sln | 7 +- .../App_Data/ModulesData.config | 85 ++++++++--------- .../App_Data/WebsitePanel_Modules.config | 5 - .../App_Data/WebsitePanel_Pages.config | 1 - .../Default/Icons/advancedstatistics_48.png | Bin 0 -> 597 bytes .../Icons/applicationsinstaller_48.png | Bin 0 -> 587 bytes .../Default/Icons/blackberry_users_48.png | Bin 0 -> 674 bytes .../App_Themes/Default/Icons/crm_orgs_48.png | Bin 0 -> 660 bytes .../App_Themes/Default/Icons/crm_users_48.png | Bin 0 -> 660 bytes .../App_Themes/Default/Icons/domains_48.png | Bin 0 -> 1185 bytes .../Icons/enterprisestorage_folders_48.png | Bin 0 -> 246 bytes .../Default/Icons/filemanager_48.png | Bin 0 -> 438 bytes .../App_Themes/Default/Icons/ftp_48.png | Bin 0 -> 331 bytes .../Default/Icons/lync_users_48.png | Bin 0 -> 582 bytes .../Default/Icons/mail_accounts_48.png | Bin 0 -> 420 bytes .../Default/Icons/mail_domains_48.png | Bin 0 -> 420 bytes .../Default/Icons/mail_forwardings_48.png | Bin 0 -> 420 bytes .../Default/Icons/mail_groups_48.png | Bin 0 -> 420 bytes .../Default/Icons/mail_lists_48.png | Bin 0 -> 420 bytes .../App_Themes/Default/Icons/mailboxes_48.png | Bin 0 -> 491 bytes .../App_Themes/Default/Icons/odbc_48.png | Bin 0 -> 568 bytes .../Default/Icons/scheduledtasks_48.png | Bin 0 -> 777 bytes .../App_Themes/Default/Icons/sharedssl_48.png | Bin 0 -> 597 bytes .../Icons/sharepoint_sitecollections_48.png | Bin 0 -> 1018 bytes .../App_Themes/Default/Icons/vps_48.png | Bin 0 -> 3480 bytes .../App_Themes/Default/Icons/vpsforpc_48.png | Bin 0 -> 5363 bytes .../Icons/webapplicationsgallery_48.png | Bin 0 -> 587 bytes .../Default/Icons/webipaddresses_48.png | Bin 0 -> 597 bytes .../App_Themes/Default/Icons/websites_48.png | Bin 0 -> 597 bytes .../UserControls/OrganizationMenuControl.cs | 31 +++--- .../WebsitePanel/UserOrganization.ascx.cs | 89 ++++++++++-------- .../WebsitePanel/UserSpaces.ascx | 56 +++++++---- .../WebsitePanel/UserSpaces.ascx.cs | 24 ++++- .../WebsitePanel/UserSpaces.ascx.designer.cs | 28 ------ 34 files changed, 168 insertions(+), 158 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/advancedstatistics_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/applicationsinstaller_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/blackberry_users_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_orgs_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/crm_users_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/domains_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/enterprisestorage_folders_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/filemanager_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/ftp_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/lync_users_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_accounts_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_domains_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_forwardings_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_groups_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mail_lists_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/mailboxes_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/odbc_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/scheduledtasks_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharedssl_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/sharepoint_sitecollections_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vps_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/vpsforpc_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webapplicationsgallery_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/webipaddresses_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/websites_48.png diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal.sln b/WebsitePanel/Sources/WebsitePanel.WebPortal.sln index bacd747a..4fc0c4ef 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 @@ -36,4 +38,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection EndGlobal diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config index 71b84f87..77a50c2a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config @@ -88,51 +88,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config index 751c3884..08973316 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config @@ -54,11 +54,6 @@
- - - - - diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config index cca4b918..9dd556ee 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Pages.config @@ -38,7 +38,6 @@ - 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 0000000000000000000000000000000000000000..aa4b049a89ead0e2419b75a9315e690206d1465f GIT binary patch literal 597 zcmV-b0;>IqP)teK4?_|hTC*Fb0e+A@KI}LT!?Aq;IlE$M)Zy{ za~&!I8L=2xTjD?(W$0OL-hp$7GmM{&p((*WAGryE7ORNjNF1?=Hsc};Ww16!wo$-s zD3GsB7Fy$^0`8=!v(o_3X%d0xkl#PeZ);4z6ibFa%r<-7PdI9UL}NMiDfD2mIx@qA z6gh5jt@T+?v4IH`sn8A2ftA>W@(5^0vS2^;Ws?{x;d03ij7esdF~KV$jNkI{;C0^v z0vLX8JZW(~rMuP-&)i>zV*99gQXn&Q+%gdT#^MTCU4}`-lUT|L#1y3!{Re1VmXr9j zjK4e3Cl`j0Xadk@0kKhg;*N!$07Vc(nlU*#H5tjHVv|Qw8s!!e#x^oiNHHW!qrO50 z(N`9Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0pLkQK~!i%?U+9= z1VI>w*Pnz!LZMJ7P%D%oBqAgVr4PV2(CGClQ7Y&(K7xdVLaCIHP$(243JHaT-*0E$ zcyms6X5H-FW#1=xGPCc^=4N*1oteALFbu;m45K_fzAWONwj)Q`;%@0UwlakUT*hC!bKqxSEkysN-yxjE-G} zV)g+(rOEut&Gl7R&AEhkkTHHH96{!XBspO_wx96|Cs5ub2f(~Ywht^q#>5Rs&Y+GH zc0|YISh53kob80*H&ELo?ikAE0M~Fme{UdHAjbHaa1Oa=aN`r$j_qar7p@>zHBx2G9pzD*k z&zG%$=lmr&2YDu1hTH=P6LJ8~!zq9L0+XIVLzspK@D|E+3H2TFUcK=}6Pm=$;Hi^y zTb{BYyK*xccVBV}S6nro{|tZ~--nGq1^3{!tNwyVjWsCu3`0(%s{XDq48t%C!}uY~ Zz5ymPd<)@D$BF;|002ovPDHLkV1h$#{ICE3 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1b7b9faa762cd158d4b2f093575550bc9779db7e GIT binary patch literal 674 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..af2004c8555ea9f258c9dc418787c28717f69a6e GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!-~&$=$B+!?x7QAGG8qc6UI?B2VTEi&lWRl+ zYem2Y2I~zf>*Z{#HnW|VD^WYsE+E#l4r|*JH#|O6#_rxQ{lV3%rc3lUn*Evd;$|ej%}Z$| zxdWx2C-60X4Sck(vP0Vc@xICz(u-z3Q7zYx;6Cr*?F7$h_Lc Z|9-uFG}EaWF+jgEc)I$ztaD0e0s!~2g`EHZ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3e9ffeaafc76018af2a06ccb85bc27bb81c00bb9 GIT binary patch literal 582 zcmV-M0=fN(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0ozGLK~!i%?U=nT z1W_1n=O zoaE%>?9Q3pGrP$5Bu{2`es;ch_WaCj!!QiPFpNGjP%LvYBIo3yTqxGrwjs0AO@LUT ztWU|1XF1(m%}Z*46`4|KD{2dn%2$^@$yyjJmVXutP?3FkC+SC7=yiZexh8L9wh$@A zI%XAJCmxcQl5MZDXCcCZoa^!=*cOuj6UEZs{vwAZO^bc!lJ88W+a`1?ADgSCaQB%z zm=l~2@>8;JT<*$ic__2u-!)(0qOpCx++B(sm95~H;Je-==T!P7$_NW`LTZ3ib|mL8 zT9xt}=Yb3PE|-5km0%ND4QxyL106gYVVibBY9C;fIhLD}4jnQk_hipIF@!Kje|jN_Y_`MbAiz;{}I196OExG>a{HAi3L|=Lfi#XL40$$1kQ6 zTMeT;7r79pY^aN{psKc;2mBE9fm#R)s%pCcK(o1$Sv#&ztf(rM1?U)?$ofquf2*+M zIfd~*mA?Nk6oW@&f)Hp{5|THp*dz0=4A2VRya+~^B}qUgv3Y42hG7`SKcdn228as! U-C6NFga7~l07*qoM6N<$f`*y!CjbBd literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..df5b6f8ba36a162f7bc61d5d1821cf8cb7c85ce6 GIT binary patch literal 420 zcmV;V0bBlwP){#=-tb;*AfH(00000V6|)}_@vUp zh4O2pm9CRi(%uVMHJ03V?Mui;z=KS2rscM4%308J#u!7-S@gtY74R(} zNAj1En5+Tb(LazC-Hd>^j$L=C_F_3(BqndY`G5^em0AYCo7Z&G)`C(=eP%~d2hB{h3R~O1X z2*~H^LaoPJayy5BpJZp@d!%)_+8>(LR^Te_zTi(i000000Qgrv0t^6|6pn1&zM={M O0000{#=-tb;*AfH(00000V6|)}_@vUp zh4O2pm9CRi(%uVMHJ03V?Mui;z=KS2rscM4%308J#u!7-S@gtY74R(} zNAj1En5+Tb(LazC-Hd>^j$L=C_F_3(BqndY`G5^em0AYCo7Z&G)`C(=eP%~d2hB{h3R~O1X z2*~H^LaoPJayy5BpJZp@d!%)_+8>(LR^Te_zTi(i000000Qgrv0t^6|6pn1&zM={M O0000{#=-tb;*AfH(00000V6|)}_@vUp zh4O2pm9CRi(%uVMHJ03V?Mui;z=KS2rscM4%308J#u!7-S@gtY74R(} zNAj1En5+Tb(LazC-Hd>^j$L=C_F_3(BqndY`G5^em0AYCo7Z&G)`C(=eP%~d2hB{h3R~O1X z2*~H^LaoPJayy5BpJZp@d!%)_+8>(LR^Te_zTi(i000000Qgrv0t^6|6pn1&zM={M O0000{#=-tb;*AfH(00000V6|)}_@vUp zh4O2pm9CRi(%uVMHJ03V?Mui;z=KS2rscM4%308J#u!7-S@gtY74R(} zNAj1En5+Tb(LazC-Hd>^j$L=C_F_3(BqndY`G5^em0AYCo7Z&G)`C(=eP%~d2hB{h3R~O1X z2*~H^LaoPJayy5BpJZp@d!%)_+8>(LR^Te_zTi(i000000Qgrv0t^6|6pn1&zM={M O0000{#=-tb;*AfH(00000V6|)}_@vUp zh4O2pm9CRi(%uVMHJ03V?Mui;z=KS2rscM4%308J#u!7-S@gtY74R(} zNAj1En5+Tb(LazC-Hd>^j$L=C_F_3(BqndY`G5^em0AYCo7Z&G)`C(=eP%~d2hB{h3R~O1X z2*~H^LaoPJayy5BpJZp@d!%)_+8>(LR^Te_zTi(i000000Qgrv0t^6|6pn1&zM={M O0000u!UY&KQlFiQ$ zs$}!ULD=TMOM=Ur{Hp9BeCD%BE7sN8|SLjP2088&r zMzWM!U29FsJN3mwK$2frPy+xojuxQkjsR4K`CG~fS{Ku&W2>8u-lcAv%38$cd0^-5 zQUhQRF$bFZ=l?P*fU6P@XfNuO!FOP>Y@? zsguA0kjlIXp&a8S2e>3QZwiA*4lpyBcR{cLaG1v+NC1Zoi!Te+RpFvkpx@c!REb0) hkw_#GiBSCsFaY2kJSbcHh|vH5002ovPDHLkV1kfA%pw2) literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..46b5e2c589ca9dd549d1fbc951d15b1abae51da4 GIT binary patch literal 568 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 R+Wr6l002ovPDHLkV1nZ{KpFr5 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7f778dd8795d9883c87fee1ede7797a9ab17e4af GIT binary patch literal 587 zcmV-R0<`^!P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0pLkQK~!i%?U+9= z1VI>w*Pnz!LZMJ7P%D%oBqAgVr4PV2(CGClQ7Y&(K7xdVLaCIHP$(243JHaT-*0E$ zcyms6X5H-FW#1=xGPCc^=4N*1oteALFbu;m45K_fzAWONwj)Q`;%@0UwlakUT*hC!bKqxSEkysN-yxjE-G} zV)g+(rOEut&Gl7R&AEhkkTHHH96{!XBspO_wx96|Cs5ub2f(~Ywht^q#>5Rs&Y+GH zc0|YISh53kob80*H&ELo?ikAE0M~Fme{UdHAjbHaa1Oa=aN`r$j_qar7p@>zHBx2G9pzD*k z&zG%$=lmr&2YDu1hTH=P6LJ8~!zq9L0+XIVLzspK@D|E+3H2TFUcK=}6Pm=$;Hi^y zTb{BYyK*xccVBV}S6nro{|tZ~--nGq1^3{!tNwyVjWsCu3`0(%s{XDq48t%C!}uY~ Zz5ymPd<)@D$BF;|002ovPDHLkV1h$#{ICE3 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..aa4b049a89ead0e2419b75a9315e690206d1465f GIT binary patch literal 597 zcmV-b0;>IqP)teK4?_|hTC*Fb0e+A@KI}LT!?Aq;IlE$M)Zy{ za~&!I8L=2xTjD?(W$0OL-hp$7GmM{&p((*WAGryE7ORNjNF1?=Hsc};Ww16!wo$-s zD3GsB7Fy$^0`8=!v(o_3X%d0xkl#PeZ);4z6ibFa%r<-7PdI9UL}NMiDfD2mIx@qA z6gh5jt@T+?v4IH`sn8A2ftA>W@(5^0vS2^;Ws?{x;d03ij7esdF~KV$jNkI{;C0^v z0vLX8JZW(~rMuP-&)i>zV*99gQXn&Q+%gdT#^MTCU4}`-lUT|L#1y3!{Re1VmXr9j zjK4e3Cl`j0Xadk@0kKhg;*N!$07Vc(nlU*#H5tjHVv|Qw8s!!e#x^oiNHHW!qrO50 z(N`9IqP)teK4?_|hTC*Fb0e+A@KI}LT!?Aq;IlE$M)Zy{ za~&!I8L=2xTjD?(W$0OL-hp$7GmM{&p((*WAGryE7ORNjNF1?=Hsc};Ww16!wo$-s zD3GsB7Fy$^0`8=!v(o_3X%d0xkl#PeZ);4z6ibFa%r<-7PdI9UL}NMiDfD2mIx@qA z6gh5jt@T+?v4IH`sn8A2ftA>W@(5^0vS2^;Ws?{x;d03ij7esdF~KV$jNkI{;C0^v z0vLX8JZW(~rMuP-&)i>zV*99gQXn&Q+%gdT#^MTCU4}`-lUT|L#1y3!{Re1VmXr9j zjK4e3Cl`j0Xadk@0kKhg;*N!$07Vc(nlU*#H5tjHVv|Qw8s!!e#x^oiNHHW!qrO50 z(N`9 <%@ 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,33 +17,48 @@
- + <%# Eval("PackageName") %>
- + + - - -
- <%# Eval("Text") %> -
- -
    - - -
  • <%# 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..3ed43f73 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"); @@ -181,7 +196,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 +206,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. From 3c6dc5d24be077c6ade1d90caa381bf5aff92157 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 07:59:39 -0400 Subject: [PATCH 16/41] Added tag build-2.1.0.385 for changeset a9f85f823257 From 6f979a7da9b34648698cc57c23402c176fd93209 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 08:04:27 -0400 Subject: [PATCH 17/41] Added tag build-2.1.0.386 for changeset 3356ef9bb259 From 8ade43624a143df501457d06ed65e40d2f751c5a Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Thu, 7 Aug 2014 18:45:46 +0400 Subject: [PATCH 18/41] Account Home Organization module fix --- .../Sources/WebsitePanel.WebPortal.sln | 3 --- .../App_Data/ModulesData.config | 10 ++++---- .../App_LocalResources/UserSpaces.ascx.resx | 19 ++++++++++++-- .../WebsitePanel/UserOrganization.ascx | 22 ++++++++-------- .../WebsitePanel/UserOrganization.ascx.cs | 4 +-- .../WebsitePanel/UserSpaces.ascx | 10 ++++---- .../WebsitePanel/UserSpaces.ascx.cs | 4 +++ .../WebsitePanel.WebPortal.csproj | 25 +++++++++++++++++++ 8 files changed, 70 insertions(+), 27 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal.sln b/WebsitePanel/Sources/WebsitePanel.WebPortal.sln index 4fc0c4ef..24bfb087 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal.sln +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal.sln @@ -38,7 +38,4 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection - GlobalSection(Performance) = preSolution - HasPerformanceSessions = true - EndGlobalSection EndGlobal diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config index 77a50c2a..83a6b0f3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config @@ -88,28 +88,28 @@ - + - + - + - + @@ -118,7 +118,7 @@ - + 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..02874ca9 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,13 @@ Switch to this Space + + System + + + VPS + + + Web & Applications + \ 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 index 84547d05..77a76bef 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx @@ -6,15 +6,17 @@ - - - - -
- <%# 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 index 37e43bed..aa753946 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs @@ -129,8 +129,8 @@ namespace WebsitePanel.Portal 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 - /*, DefaultPage.MODULE_ID_PARAM + "=" + */ ); + PortalUtils.SPACE_ID_PARAM + "=" + PackageId, DefaultPage.CONTROL_ID_PARAM + "=" + key, + "moduleDefId=exchangeserver"); if (img == null) item.ImageUrl = PortalUtils.GetThemedIcon("Icons/tool_48.png"); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx index ff83ca0e..e003e191 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx @@ -25,7 +25,7 @@ - + <%# Eval("Text") %> @@ -55,11 +55,11 @@ - - - - + + + +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs index 3ed43f73..849ec12e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx.cs @@ -164,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(); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index c5ae723d..e0c79735 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -104,9 +104,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + From fa5d9d6e07c151ca9944f7ffa4fabcd621b7d026 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 10:56:29 -0400 Subject: [PATCH 19/41] Added tag build-2.1.0.387 for changeset a7439887d1f4 From 9652dbc59f08232f0e4b3fd6c09a3edf94167e30 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Thu, 7 Aug 2014 18:26:21 +0300 Subject: [PATCH 20/41] Breadcrumb fix and some other small fixes --- .../ESModule_ControlsHierarchy.config | 135 ++++++++++++++++++ .../App_Themes/Default/Styles/SkinLayout.css | 1 + .../Code/PortalUtils.cs | 30 ++++ .../LyncAddFederationDomain.ascx.resx | 3 + .../LyncAllocatePhoneNumbers.ascx.resx | 3 + .../LyncPhoneNumbers.ascx.resx | 5 +- .../App_LocalResources/LyncUsers.ascx.resx | 3 + .../AllocatePackagePhoneNumbers.ascx.cs | 3 +- .../SkinControls/UserSpaceBreadcrumb.ascx | 4 +- .../SkinControls/UserSpaceBreadcrumb.ascx.cs | 10 +- .../UserSpaceBreadcrumb.ascx.designer.cs | 32 +---- .../WebsitePanel.WebPortal.csproj | 1 + 12 files changed, 194 insertions(+), 36 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config 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..1d37b463 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..60640b6b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/SkinLayout.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/SkinLayout.css @@ -18,6 +18,7 @@ body {font-family:'Segoe UI Light','Open Sans',Arial; color:#333; margin:0px; pa #Breadcrumb .Path {padding:20px; 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/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/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/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index c5ae723d..f106d40a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -229,6 +229,7 @@ Designer + From a40144c6cc4c4cf66ea59a5b7976d6a4e4c5f7f2 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 12:43:21 -0400 Subject: [PATCH 21/41] Added tag build-2.1.0.388 for changeset cbfaca5f7f75 From e7a008a44ed8051b07a0403f762004309390becf Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Thu, 7 Aug 2014 23:54:42 +0400 Subject: [PATCH 22/41] Account Home Organization module fix --- .../App_Data/ModulesData.config | 3 ++- .../Default/Icons/exchange_contacts_48.png | Bin 0 -> 652 bytes .../Default/Icons/exchange_dlists_48.png | Bin 0 -> 652 bytes .../Default/Icons/organization_home_48.png | Bin 0 -> 299 bytes .../App_Themes/Default/Icons/spacehome_48.png | Bin 0 -> 299 bytes .../App_Themes/Default/Styles/Skin.css | 3 ++- .../App_LocalResources/UserOrganization.ascx.resx | 6 +++--- .../App_LocalResources/UserSpaces.ascx.resx | 3 +++ .../UserControls/OrganizationMenuControl.cs | 9 +++++---- .../WebsitePanel/UserOrganization.ascx | 11 +++++++++++ .../WebsitePanel/UserOrganization.ascx.cs | 13 +++++++++++++ .../DesktopModules/WebsitePanel/UserSpaces.ascx | 7 +++---- .../WebsitePanel.WebPortal.csproj | 4 ++++ 13 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_contacts_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/exchange_dlists_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/organization_home_48.png create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/spacehome_48.png diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config index 83a6b0f3..cc4e32b6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config @@ -89,7 +89,8 @@ - + + 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 0000000000000000000000000000000000000000..931287bc3a94c59eaf13b0383c5719fca63cb439 GIT binary patch literal 652 zcmV;70(1R|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0wGC6K~!i%?U+9= z1VI?a&!0k}P$(1%g@lCo6FvZmLZKj0C=^N(g;F8m0}zEm=>sSfN(Bjtl0-qGP?C^{ zC`c4Mzub&$#=6^Gb9Z|&Px8x*_a^Rr=AFHnokCDhP*6}%J*&yIl~l7B5bp-BYA~%Y zb&4U;D@IJ)FEBAKPJ~xwHP9+ZZdCLMk|gmq@tbODU{;XiplQ2BT2;hAQhj=0On6tL zY3o*XZy@P2z!LbYcm}$P-9)-Hc#*rFv%oVD7cWIw<*@<}f(`Fjc-yDknTfJ5R>ZD& zG_g36R^UL`vEJl<3A~9pf!M@a1UvDyh#Q~8z=q)eRK>uyVCOwGf8PssXUw=`p_BnC zH!0X8k3>}ru%0myjj?VKZ8Q!fMb+H+xuA0M;#J&wo zlG%yGQW?m)kv*9Iel4oWYMcnw@8Gu7!p99R0 zJj*Cfnq%pux^s4ZtxGzde8Uu+H-Um{M)98A!TT(Y-so3==x6D~! z33=DQc_%&-_V|!1rG4Y!pk{B|dQ2aZylK_+Vym3&O&u3rTz=U;EgKxF>BUx7kv!F! m799kFf`WpAf`YzPD0~4Slxz=DUknle0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0wGC6K~!i%?U+9= z1VI?a&!0k}P$(1%g@lCo6FvZmLZKj0C=^N(g;F8m0}zEm=>sSfN(Bjtl0-qGP?C^{ zC`c4Mzub&$#=6^Gb9Z|&Px8x*_a^Rr=AFHnokCDhP*6}%J*&yIl~l7B5bp-BYA~%Y zb&4U;D@IJ)FEBAKPJ~xwHP9+ZZdCLMk|gmq@tbODU{;XiplQ2BT2;hAQhj=0On6tL zY3o*XZy@P2z!LbYcm}$P-9)-Hc#*rFv%oVD7cWIw<*@<}f(`Fjc-yDknTfJ5R>ZD& zG_g36R^UL`vEJl<3A~9pf!M@a1UvDyh#Q~8z=q)eRK>uyVCOwGf8PssXUw=`p_BnC zH!0X8k3>}ru%0myjj?VKZ8Q!fMb+H+xuA0M;#J&wo zlG%yGQW?m)kv*9Iel4oWYMcnw@8Gu7!p99R0 zJj*Cfnq%pux^s4ZtxGzde8Uu+H-Um{M)98A!TT(Y-so3==x6D~! z33=DQc_%&-_V|!1rG4Y!pk{B|dQ2aZylK_+Vym3&O&u3rTz=U;EgKxF>BUx7kv!F! m799kFf`WpAf`YzPD0~4Slxz=DUknle0000~)nf{RXkb;1l^kas+2V6Z3lW&O5IU=}f@&mTF zTz*Y6el(kC-g8{MrB;7uyefPDvMK8`fqIu&w!Cuw*^{-{E;p_J-{!WQoM%Vg7X`}4 z2bgU=u-ECCicGoO+qyHVR}|hnR%te2;y)TaJ1O9c;Kt}*?p+K_910B%g0tjjiuPHn z&6`=zwL|jR?!32Vw*)z^Ic&e`@YtRGKoV20=Nz-`0pD*i`*x`}vN5s~)nf{RXkb;1l^kas+2V6Z3lW&O5IU=}f@&mTF zTz*Y6el(kC-g8{MrB;7uyefPDvMK8`fqIu&w!Cuw*^{-{E;p_J-{!WQoM%Vg7X`}4 z2bgU=u-ECCicGoO+qyHVR}|hnR%te2;y)TaJ1O9c;Kt}*?p+K_910B%g0tjjiuPHn z&6`=zwL|jR?!32Vw*)z^Ic&e`@YtRGKoV20=Nz-`0pD*i`*x`}vN5sBlackBerry Users - Contacts + Exchange Contacts CRM 2013 @@ -166,7 +166,7 @@ Disclaimers - Distribution Lists + Exchange Distribution Lists Domains @@ -217,7 +217,7 @@ Organization - Organization Home + Orginization Statistics Public Folders 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 02874ca9..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 @@ -159,4 +159,7 @@ Web & Applications + + Space Statistics + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs index f56b0e70..5d01bb2a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs @@ -74,6 +74,7 @@ namespace WebsitePanel.Portal.UserControls public void BindMenu(MenuItemCollection items) { + //Organization menu group; if (Cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations)) PrepareOrganizationMenuRoot(items); @@ -193,13 +194,13 @@ namespace WebsitePanel.Portal.UserControls if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, Cntx)) exchangeItems.Add(CreateMenuItem("Mailboxes", "mailboxes", @"Icons/mailboxes_48.png")); - if (ShortMenu) return; - if (Utils.CheckQouta(Quotas.EXCHANGE2007_CONTACTS, Cntx)) - exchangeItems.Add(CreateMenuItem("Contacts", "contacts")); + exchangeItems.Add(CreateMenuItem("Contacts", "contacts", @"Icons/exchange_contacts_48.png")); if (Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, Cntx)) - exchangeItems.Add(CreateMenuItem("DistributionLists", "dlists")); + 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")); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx index 77a76bef..8ade5af5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx @@ -15,6 +15,17 @@
<%# 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 index aa753946..4a72bd03 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs @@ -110,6 +110,8 @@ namespace WebsitePanel.Portal { MenuItemCollection items = new MenuItemCollection(); + items.Add(CreateMenuItem("OrganizationHome", "organization_home", @"Icons/organization_home_48.png")); + BindMenu(items); UserOrgPanel.Visible = true; @@ -139,5 +141,16 @@ namespace WebsitePanel.Portal 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/UserSpaces.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx index e003e191..da26021d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx @@ -25,9 +25,8 @@ - - <%# Eval("Text") %> - + + @@ -57,7 +56,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index 4b6d9e40..2ffe738a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -113,6 +113,8 @@ + + @@ -124,9 +126,11 @@ + + From 16f789c40e3666d13b76ca54638006bb1ef5934a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 16:05:30 -0400 Subject: [PATCH 23/41] Added tag build-2.1.0.389 for changeset 7fa9973b7117 From 1854b9db182a38bc6b744a7fb294f026cdbe99f9 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 16:55:26 -0400 Subject: [PATCH 24/41] Update Stats Icons --- .../Default/Icons/organization_home_48.png | Bin 299 -> 664 bytes .../App_Themes/Default/Icons/spacehome_48.png | Bin 299 -> 664 bytes 2 files changed, 0 insertions(+), 0 deletions(-) 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 index 9aea056fcf1faf2f3c971dba5acbb618b93bb8d6..4c775d2ef2d31d4dcf1e15b9330b3a7fde282411 100644 GIT binary patch delta 603 zcmV-h0;K(`0+mx{ICsoxm2lArOG4adXinkJpXuBAhg%c>*V!k zMJHIRpTY6Q>#)ITP6x12T$I;7;?NAwTcD8!HSny5HS~8q*ncdBI;D!+iKJtw)s%34 zAs;mdvbUg&VKA06gP_j4gLW*kaf@W+lpqvA%4OKW=ySB1r1wNG;5>&u7ep^f9gNK7 z1oW}sOp8zn*Lfp^e!J4eai7TUu(;HXOzQX8858STc#prC)v-IKgU;}7>qc{lEGn=y zGvDfR0+^7)j(?QVQ1aXgN*wx{u^DS{hlN&z6j~$0ZHj)3CIKXi#uWUG!y|EO)1@2< z^wK0-T;MK3l{U9{n2iQ>f?gc2DfI?;7WUn+QP~YBORw>O_sVkQH4zfHit` zs5x20ZOv4grWA#?HZM!EWyl(Z4oFIxLajh4#-o8D!GAO;a|>kUCNTj>3|4fOYLQb4 z991g=q(~#n5lg`62u(sT7VWoLqLFoilOZ={8j>kPvX(VUXrXfeH~CPpPZa)bcH4>XcT$~8bvIZ{d<>SKUdpvrjWp<8d^ordL zO&J^8lvH+J@@lb(TrVEFTD)dZ;5E`@zP#SOetP`|4eS5(1u6}#?eAXS(E4KXZ?D&5 p9s41FaMZt;s#K{`B};w<7yvkH002ovPDHLkV1nh&8JqwB delta 235 zcmVmx{ICsoxm2lArOG4adXinkJpXuBAhg%c>*V!k zMJHIRpTY6Q>#)ITP6x12T$I;7;?NAwTcD8!HSny5HS~8q*ncdBI;D!+iKJtw)s%34 zAs;mdvbUg&VKA06gP_j4gLW*kaf@W+lpqvA%4OKW=ySB1r1wNG;5>&u7ep^f9gNK7 z1oW}sOp8zn*Lfp^e!J4eai7TUu(;HXOzQX8858STc#prC)v-IKgU;}7>qc{lEGn=y zGvDfR0+^7)j(?QVQ1aXgN*wx{u^DS{hlN&z6j~$0ZHj)3CIKXi#uWUG!y|EO)1@2< z^wK0-T;MK3l{U9{n2iQ>f?gc2DfI?;7WUn+QP~YBORw>O_sVkQH4zfHit` zs5x20ZOv4grWA#?HZM!EWyl(Z4oFIxLajh4#-o8D!GAO;a|>kUCNTj>3|4fOYLQb4 z991g=q(~#n5lg`62u(sT7VWoLqLFoilOZ={8j>kPvX(VUXrXfeH~CPpPZa)bcH4>XcT$~8bvIZ{d<>SKUdpvrjWp<8d^ordL zO&J^8lvH+J@@lb(TrVEFTD)dZ;5E`@zP#SOetP`|4eS5(1u6}#?eAXS(E4KXZ?D&5 p9s41FaMZt;s#K{`B};w<7yvkH002ovPDHLkV1nh&8JqwB delta 235 zcmV Date: Thu, 7 Aug 2014 17:00:35 -0400 Subject: [PATCH 25/41] Update Mailboxes Icon --- .../App_Themes/Default/Icons/mailboxes_48.png | Bin 491 -> 652 bytes 1 file changed, 0 insertions(+), 0 deletions(-) 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 index fa6830d7ba93b594c2b4b0ae17517c20ab2df363..931287bc3a94c59eaf13b0383c5719fca63cb439 100644 GIT binary patch delta 627 zcmV-(0*w9Z1B?ZbB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pHAxT6*RA@u(m_IKBK^Vr*pF*KfC=?2XgoOALJ^+bAp&(Hx6iO0> zQX%035QReN11JC6-y4ziIcYk{^Px8x*_a^Rr=AFHn zokCDhP*6}%J*&yIl~l7B5bp-BYA~%Yb&4U;D@IJ)FEBAKPJ~xwHP9+ZZdCLMk|gmq z@tbODU{;XiplQ2BT2;hAQhj=0On6tLY3o*XZy@P2z!LbYcm}$P-9)-Hc#*rFv%oVD z7cWIw<*@<}f`1L~Sa{o~+?k28FIL2^cr>v%l2+hA*s|6f5T!^ z%!n;PwU$LiWoO6oAvhx2^&gEhqkEB<#m*|Tj>##(bK{Py$`XPJvEal=9AhLAje||9 z991(w=}C4?TnLh9W*0@=_}m$QLt&o-%#b|GC~j;n4FCyK0e%AGKDVSXz)$q5@TRyg zN=q68iEI_#2U3XB=z6hRQa56$*!3s3%voRwdDp*rCq5JQ_>e25edFPvW^dbiOdpcG zY1Q;%tDNjj9T#3)e%U@P8yu?X#a334Jk^>O9Rz}cf`WpAg1%KKd;uYpY!6aj3=#kU N002ovPDHLkV1hyX6xjd( delta 465 zcmV;?0WSWG1?vNlB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0004v zNkl^&Cd|3Wb?&A*yg`Wg0Rgm&wq`Mu>=Ur{Hp9BeCD%< zpqS4VBE)=l5HaSnf!JbxcZd|`cY{c2{^bxH=3fSZnQwJGkULLITsR?IGv6gLzr+w* zi8lhkY<&LEaWw$e#5Wy35tDO*O5Sz!7DNlrJ$xT6bEZZ}U{|1v9DA@TfK}W(b{&}T z2+10zjiL+f{eL#Ua=#BtX zhWT5{30fD^r(>&|jozhho61_m=6PV}?NS3^5HSau`se>LD}bvK4`?symBDvlv23G0 zJz Date: Thu, 7 Aug 2014 17:09:04 -0400 Subject: [PATCH 26/41] Added tag build-2.1.0.390 for changeset 3a346641a330 From 5c9882ac4d14891da5158857b9b65f329b550f5e Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Fri, 8 Aug 2014 01:22:21 +0400 Subject: [PATCH 27/41] Account Home Organization text fix --- .../App_LocalResources/UserOrganization.ascx.resx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 index b66cd9a8..b3199d5d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx @@ -148,7 +148,7 @@ BlackBerry Users
- Exchange Contacts + Contacts CRM 2013 @@ -166,7 +166,7 @@ Disclaimers - Exchange Distribution Lists + Distribution Lists Domains @@ -238,7 +238,7 @@ SharePoint - Site Collections + Sharepoint Sites Storage Settings From 46ff8e6ce38dccd52029977520115dd1754b033e Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 17:35:45 -0400 Subject: [PATCH 28/41] Added tag build-2.1.0.391 for changeset 44e1f7d3925f From cee99239bca2cabe0415f8b4a9c2535a45329f01 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 19:13:16 -0400 Subject: [PATCH 29/41] Several CSS Changes to improve Metro Theme - Adjusted Fonts, Colors, Menus hieghts --- .../App_Themes/Default/Styles/Grids.css | 4 ++-- .../App_Themes/Default/Styles/Menus.css | 2 +- .../App_Themes/Default/Styles/Skin.css | 12 ++++++------ .../App_Themes/Default/Styles/SkinLayout.css | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) 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 dda8d528..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;} 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..6789039e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css @@ -4,7 +4,7 @@ .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 {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;} 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 f6b465ae..b18cc0c3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css @@ -11,7 +11,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,11 +26,11 @@ 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;} @@ -90,8 +90,8 @@ 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;} @@ -285,4 +285,4 @@ UL.ActionButtons LI {margin-bottom: 12px;} .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;} -.LinkText {color:#428bca;} +.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 60640b6b..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,9 +13,9 @@ 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;} From f4a284175eaf442106f5ccc3f91a958c763e86d5 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 7 Aug 2014 19:17:54 -0400 Subject: [PATCH 30/41] Added tag build-2.1.0.392 for changeset b2d86549899b From b32b458ff31010e477b8e4f954754a1fd15dcca7 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Fri, 8 Aug 2014 09:55:46 +0300 Subject: [PATCH 31/41] bug of lync users fixed --- .../App_Data/ESModule_ControlsHierarchy.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config index 1d37b463..a4255204 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ESModule_ControlsHierarchy.config @@ -111,7 +111,7 @@ - + From 81d1500a0ea8222762a693842e36743987910d48 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Fri, 8 Aug 2014 11:32:41 +0300 Subject: [PATCH 32/41] Top menu fix. --- .../App_Themes/Default/Styles/Menus.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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..c1c6ca13 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;} From a65cfb5b572dc8de809f095daa77c9f04bb94aea Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 8 Aug 2014 10:29:58 -0400 Subject: [PATCH 33/41] Move Create new space. Several other CSS Changes --- .../App_Themes/Default/Styles/Skin.css | 8 ++++++-- .../DesktopModules/WebsitePanel/UserSpaces.ascx | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) 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 b18cc0c3..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;} @@ -37,9 +38,10 @@ 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;} @@ -96,6 +99,7 @@ input[type=image] {margin-right:4px;} {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;} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx index da26021d..53ae756f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserSpaces.ascx @@ -6,7 +6,7 @@ <%@ Import Namespace="WebsitePanel.Portal" %> - + From d04b363d45028eceb400d71b36d297b3119f83cd Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 8 Aug 2014 10:41:13 -0400 Subject: [PATCH 34/41] Added tag build-2.1.0.393 for changeset d9c750592590 From 6aaee634cb2b08081586731f836b20c036ffe175 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 8 Aug 2014 10:47:27 -0400 Subject: [PATCH 35/41] Added tag build-2.1.0.394 for changeset 43a60e23f31b From 5dd6af673a2695fbef2f071c18a0589c13d68143 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Fri, 8 Aug 2014 18:58:17 +0400 Subject: [PATCH 36/41] Account Home fix : hide group if there are no items --- .../WebsitePanel.WebPortal/App_Data/ModulesData.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config index cc4e32b6..c418eca5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/ModulesData.config @@ -96,14 +96,14 @@
- + - + From 1712570dd1865c24922d77063d3d8fcdf97e69d0 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Fri, 8 Aug 2014 19:34:45 +0400 Subject: [PATCH 37/41] Exchange mailbox page fix --- .../ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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() From 3736794f93019cf9deb0a756ae0109c99aba55c8 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 8 Aug 2014 13:45:02 -0400 Subject: [PATCH 38/41] Fix top Menu Position --- .../WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c1c6ca13..218a820e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Menus.css @@ -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;} From a92532d6117ed4b2a0739d1e2e6de6de1fd4a850 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 8 Aug 2014 13:56:40 -0400 Subject: [PATCH 39/41] Added tag build-2.1.0.395 for changeset 9844cf35351c From e301486e94bb60cd7c5d5b51aece96729bcc5dff Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Sat, 9 Aug 2014 04:44:25 +0400 Subject: [PATCH 40/41] Account Home fix --- .../Default/Icons/create_organization_48.png | Bin 0 -> 601 bytes .../App_LocalResources/UserOrganization.ascx.resx | 3 +++ .../UserControls/OrganizationMenuControl.cs | 2 ++ .../WebsitePanel/UserOrganization.ascx.cs | 14 +++++++++++--- .../WebsitePanel.WebPortal.csproj | 1 + 5 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons/create_organization_48.png 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 0000000000000000000000000000000000000000..5c97b86f250411222376ae5bf59c825e2748674a GIT binary patch literal 601 zcmV-f0;c_mP) zDqs!V0892;4;+9W$UlRNpbhW{JPSDj^%W(PdY}M40}uG!;si9nPd0vo9^yj30bg-m zGE~gs7mK#|TryYV96SFgoErsuwt34u;Nn5eLTjHwcxv@sgf(ksko}xtGZNvY;Zg~` z(Gex;*uobi=0}HkwE~sGJ*a_-mhVA50y%e0$v^+?Kp6pkJD6qlLl)@{v=XPq)O5jR$r7*L< zl@6i!o5g$fY>+Ix3doJlVZ0WMd0?JC#R#E$LR4Na1LAWbpv9wLtho`sCPaarC38xw zV|ZW?CgB{YCk~MR^CB}OnVu3_pI&N$I~Y1~F&A2YO}bMjP@oA6+et5^xX?r`rEgs+ z3r7W{SITa#E2TZwtU#S`1K&&iZqC!;>~Xo5)Kz!s4V^LReBIrs#Eq?6&8QKDk;Hnb zel~->n`EKQU46xB207qM@PtCIQE?u2@4y$8xVg(M+A@zw*v81A*ne>BP^c{{0u3q5 n43-CXvv@{EMn=Xrz62Nm9l_d3RtQ=200000NkvXXu0mjfo3;sU literal 0 HcmV?d00001 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 index faa19b08..9db2a02d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserOrganization.ascx.resx @@ -249,4 +249,7 @@ Users + + Create Organization + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs index 5d01bb2a..4f537a5f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/OrganizationMenuControl.cs @@ -74,6 +74,8 @@ namespace WebsitePanel.Portal.UserControls public void BindMenu(MenuItemCollection items) { + if ((PackageId <= 0) || (ItemID <= 0)) + return; //Organization menu group; if (Cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations)) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs index 4a72bd03..a487dda2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserOrganization.ascx.cs @@ -106,13 +106,21 @@ namespace WebsitePanel.Portal ShowImg = true; - if (PackageId > 0) + if ((PackageId > 0) && (Cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations))) { MenuItemCollection items = new MenuItemCollection(); - items.Add(CreateMenuItem("OrganizationHome", "organization_home", @"Icons/organization_home_48.png")); + 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")); + } + - BindMenu(items); UserOrgPanel.Visible = true; OrgIcons.DataSource = items; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index 2ffe738a..a28a12e2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -109,6 +109,7 @@ + From 00a93a104dd1a6b8b257528c4ec32473f1d5c3ab Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 8 Aug 2014 20:55:49 -0400 Subject: [PATCH 41/41] Added tag build-2.1.0.396 for changeset 8202c17cc943