diff --git a/config templates/web.config b/config templates/web.config index 62ba68d4a7..ef8006faae 100644 --- a/config templates/web.config +++ b/config templates/web.config @@ -30,7 +30,6 @@ - diff --git a/umbraco/businesslogic/BasePages/BasePage.cs b/umbraco/businesslogic/BasePages/BasePage.cs index 1de62ae816..3b9b643cf8 100644 --- a/umbraco/businesslogic/BasePages/BasePage.cs +++ b/umbraco/businesslogic/BasePages/BasePage.cs @@ -143,22 +143,20 @@ namespace umbraco.BasePages { /// /// The umbraco user context ID. /// - public static bool ValidateUserContextID(string umbracoUserContextID) { - if ((umbracoUserContextID != "")) { - int uid = GetUserId(umbracoUserContextID); - long timeout = GetTimeout(umbracoUserContextID); + public static bool ValidateUserContextID(string currentUmbracoUserContextID) { + if ((currentUmbracoUserContextID != "")) + { + int uid = GetUserId(currentUmbracoUserContextID); + long timeout = GetTimeout(currentUmbracoUserContextID); - if (timeout > DateTime.Now.Ticks) { + if (timeout > DateTime.Now.Ticks) + { return true; - } else { - // clear the usercontext id to prevent continuous logout entries - BasePage.umbracoUserContextID = String.Empty; - BusinessLogic.Log.Add(BusinessLogic.LogTypes.Logout, BusinessLogic.User.GetUser(uid), -1, ""); - - return false; } - } else - return false; + + BusinessLogic.Log.Add(BusinessLogic.LogTypes.Logout, BusinessLogic.User.GetUser(uid), -1, ""); + } + return false; } private static long GetTimeout(string umbracoUserContextID) { diff --git a/umbraco/cms/businesslogic/events/EventArgs.cs b/umbraco/cms/businesslogic/events/EventArgs.cs index fab79b0b7e..578c70efb8 100644 --- a/umbraco/cms/businesslogic/events/EventArgs.cs +++ b/umbraco/cms/businesslogic/events/EventArgs.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using umbraco.cms.businesslogic.member; using umbraco.cms.businesslogic.web; namespace umbraco.cms.businesslogic { @@ -28,11 +29,14 @@ namespace umbraco.cms.businesslogic { public class NewEventArgs : System.ComponentModel.CancelEventArgs { } //Special Members Event args - public class AddToCacheEventArgs : System.ComponentModel.CancelEventArgs { } - public class RemoveFromCacheEventArgs : System.ComponentModel.CancelEventArgs { } - public class AddGroupEventArgs : System.ComponentModel.CancelEventArgs { } - public class RemoveGroupEventArgs : System.ComponentModel.CancelEventArgs { } - + public class AddToCacheEventArgs : GroupEventArgs { } + public class RemoveFromCacheEventArgs : GroupEventArgs { } + public class AddGroupEventArgs : GroupEventArgs { } + public class RemoveGroupEventArgs : GroupEventArgs { } + public class GroupEventArgs : System.ComponentModel.CancelEventArgs + { + public int GroupId{ get; set; } + } //Tree node event args public class NodeRenderEventArgs : System.ComponentModel.CancelEventArgs { } diff --git a/umbraco/cms/businesslogic/member/Member.cs b/umbraco/cms/businesslogic/member/Member.cs index ebbc082f3f..c13443b1a0 100644 --- a/umbraco/cms/businesslogic/member/Member.cs +++ b/umbraco/cms/businesslogic/member/Member.cs @@ -648,6 +648,7 @@ namespace umbraco.cms.businesslogic.member public void AddGroup(int GroupId) { AddGroupEventArgs e = new AddGroupEventArgs(); + e.GroupId = GroupId; FireBeforeAddGroup(e); if (!e.Cancel) @@ -673,6 +674,7 @@ namespace umbraco.cms.businesslogic.member public void RemoveGroup(int GroupId) { RemoveGroupEventArgs e = new RemoveGroupEventArgs(); + e.GroupId = GroupId; FireBeforeRemoveGroup(e); if (!e.Cancel) diff --git a/umbraco/presentation/UmbracoContext.cs b/umbraco/presentation/UmbracoContext.cs index f136149fb4..629c460255 100644 --- a/umbraco/presentation/UmbracoContext.cs +++ b/umbraco/presentation/UmbracoContext.cs @@ -22,6 +22,7 @@ namespace umbraco.presentation private UmbracoResponse m_Response; private HttpContext m_HttpContext; private XmlDocument previewDocument; + private PreviewContent _previewContent; /// /// Creates a new Umbraco context. @@ -102,10 +103,12 @@ namespace umbraco.presentation { if (InPreviewMode) { - // zb-00004 #29956 : refactor cookies names & handling - PreviewContent pc = new PreviewContent(new Guid(StateHelper.Cookies.Preview.GetValue())); - pc.LoadPreviewset(); - return pc.XmlContent; + if (_previewContent == null) + { + _previewContent = new PreviewContent(new Guid(StateHelper.Cookies.Preview.GetValue())); + _previewContent.LoadPreviewset(); + } + return _previewContent.XmlContent; } else { diff --git a/umbraco/presentation/umbraco.presentation.csproj b/umbraco/presentation/umbraco.presentation.csproj index 3574dcbc12..fc5decef18 100644 --- a/umbraco/presentation/umbraco.presentation.csproj +++ b/umbraco/presentation/umbraco.presentation.csproj @@ -2568,13 +2568,15 @@ - - - - - - - + + + + + + + + + diff --git a/umbraco/presentation/umbraco/scripting/templates/cshtml/SiteMap.cshtml b/umbraco/presentation/umbraco/scripting/templates/cshtml/SiteMap.cshtml index 2cc1fb397f..e25ac0e108 100644 --- a/umbraco/presentation/umbraco/scripting/templates/cshtml/SiteMap.cshtml +++ b/umbraco/presentation/umbraco/scripting/templates/cshtml/SiteMap.cshtml @@ -27,6 +27,7 @@ var values = new Dictionary(); values.Add("maxLevelForSitemap", maxLevelForSitemap) ; var items = node.Children.Where("Visible").Where("Level <= maxLevelForSitemap", values); + if (items.Count() > 0) {
    @foreach (var item in items) {
  • @@ -35,6 +36,7 @@ values.Add("maxLevelForSitemap", maxLevelForSitemap) ;
  • }
+ } }
@traverse(@Model.AncestorOrSelf()) diff --git a/umbraco/presentation/umbraco/umbraco.aspx b/umbraco/presentation/umbraco/umbraco.aspx index 5a3d25eee1..2b9ec3d418 100644 --- a/umbraco/presentation/umbraco/umbraco.aspx +++ b/umbraco/presentation/umbraco/umbraco.aspx @@ -191,7 +191,16 @@ // *** NEW KEEP ALIVE - Should be moved to app manager *** */ var failedAttempts = 0; - window.setInterval(keepAlive, 10000); + var keepAliveInterval; + beginKeepAlive(); + + function beginKeepAlive() { + keepAliveInterval = window.setInterval(keepAlive, 10000); + } + function pauseKeepAlive() { + clearInterval(keepAliveInterval); + } + function keepAlive() { umbraco.presentation.webservices.legacyAjaxCalls.GetSecondsBeforeUserLogout(validateUserTimeout, keepAliveError); } @@ -231,13 +240,16 @@ function umbracoRenewSession() { umbraco.presentation.webservices.legacyAjaxCalls.RenewUmbracoSession( - function () { jQuery("#logout-warning").fadeOut().removeClass('error').addClass('notice'); }, + function () { + jQuery("#logout-warning").fadeOut().removeClass('error').addClass('notice'); + }, umbracoShowSessionRenewModal); } function umbracoShowSessionRenewModal() { + pauseKeepAlive(); jQuery("#logout-warning").fadeOut().removeClass('error').addClass('notice'); jQuery("#sessionrefreshpassword input").attr("style", ""); @@ -274,6 +286,7 @@ jQuery("#sessionrefreshpassword input").val(""); jQuery.fullmodal.close(); + beginKeepAlive(); } else { umbracoSessionRenewCheckPasswordFail();