diff --git a/README.md b/README.md index 2758ad3edb..3e9be6cb5f 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Note that you can always [download a nightly build](http://nightly.umbraco.org/? [![ScreenShot](http://umbraco.com/images/whatisumbraco.png)](https://umbraco.tv/videos/umbraco-v7/content-editor/basics/introduction/cms-explanation/) -## Umbraco - The Friendly CMS ## +## Umbraco - The Friendly CMS ## For the first time on the Microsoft platform, there is a free user and developer friendly CMS that makes it quick and easy to create websites - or a breeze to build complex web applications. Umbraco has award-winning integration capabilities and supports ASP.NET MVC or Web Forms, including User and Custom Controls, out of the box. @@ -30,7 +30,7 @@ Used by more than 350,000 active websites including Carlsberg, Segway, Amazon an To view more examples, please visit [https://umbraco.com/why-umbraco/#caseStudies](https://umbraco.com/why-umbraco/#caseStudies) -## Why Open Source? ## +## Why Open Source? ## As an Open Source platform, Umbraco is more than just a CMS. We are transparent with our roadmap for future versions, our incremental sprint planning notes are publicly accessible and community contributions and packages are available for all to use. ## Downloading ## @@ -49,4 +49,4 @@ Umbraco is contribution focused and community driven. If you want to contribute Another way you can contribute to Umbraco is by providing issue reports. For information on how to submit an issue report refer to our [online guide for reporting issues](https://our.umbraco.org/contribute/report-an-issue-or-request-a-feature). -To view existing issues, please visit [http://issues.umbraco.org](http://issues.umbraco.org). \ No newline at end of file +To view existing issues, please visit [http://issues.umbraco.org](http://issues.umbraco.org). diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec index bc4e3b411d..f442b92551 100644 --- a/build/NuSpecs/UmbracoCms.Core.nuspec +++ b/build/NuSpecs/UmbracoCms.Core.nuspec @@ -27,7 +27,7 @@ - + diff --git a/build/NuSpecs/tools/Web.config.install.xdt b/build/NuSpecs/tools/Web.config.install.xdt index 2d5dfb0bdb..cbb60bb949 100644 --- a/build/NuSpecs/tools/Web.config.install.xdt +++ b/build/NuSpecs/tools/Web.config.install.xdt @@ -335,7 +335,7 @@ - + diff --git a/src/Umbraco.Core/Security/BackOfficeUserStore.cs b/src/Umbraco.Core/Security/BackOfficeUserStore.cs index c6714e256a..08c6f54dcf 100644 --- a/src/Umbraco.Core/Security/BackOfficeUserStore.cs +++ b/src/Umbraco.Core/Security/BackOfficeUserStore.cs @@ -644,6 +644,13 @@ namespace Umbraco.Core.Security { anythingChanged = true; user.IsLockedOut = identityUser.IsLockedOut; + + if (user.IsLockedOut) + { + //need to set the last lockout date + user.LastLockoutDate = DateTime.Now; + } + } if (user.Username != identityUser.UserName && identityUser.UserName.IsNullOrWhiteSpace() == false) { diff --git a/src/Umbraco.Core/Services/ContentTypeService.cs b/src/Umbraco.Core/Services/ContentTypeService.cs index d80a93a4ab..31e86cd128 100644 --- a/src/Umbraco.Core/Services/ContentTypeService.cs +++ b/src/Umbraco.Core/Services/ContentTypeService.cs @@ -141,7 +141,7 @@ namespace Umbraco.Core.Services { var evtMsgs = EventMessagesFactory.Get(); - if (container.ContainedObjectType != containerObjectType) + if (container.ContainerObjectType != containerObjectType) { var ex = new InvalidOperationException("Not a " + objectTypeName + " container."); return OperationStatus.Exception(evtMsgs, ex); @@ -799,7 +799,7 @@ namespace Umbraco.Core.Services // of a different type, move them to the recycle bin, then permanently delete the content items. // The main problem with this is that for every content item being deleted, events are raised... // which we need for many things like keeping caches in sync, but we can surely do this MUCH better. - + var deletedContentTypes = new List() {contentType}; deletedContentTypes.AddRange(contentType.Descendants().OfType()); @@ -807,7 +807,7 @@ namespace Umbraco.Core.Services { _contentService.DeleteContentOfType(deletedContentType.Id); } - + repository.Delete(contentType); uow.Commit(); diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 7d1ee51a4b..656b512155 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -115,8 +115,8 @@ ..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll True - - ..\packages\ClientDependency.1.9.1\lib\net45\ClientDependency.Core.dll + + ..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll True diff --git a/src/Umbraco.Web.UI/packages.config b/src/Umbraco.Web.UI/packages.config index 3850961ea8..008e5e404c 100644 --- a/src/Umbraco.Web.UI/packages.config +++ b/src/Umbraco.Web.UI/packages.config @@ -1,7 +1,7 @@  - + diff --git a/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs b/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs index f06a7a332f..23edb2dde2 100644 --- a/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs +++ b/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs @@ -60,7 +60,7 @@ namespace Umbraco.Web } } - private void UmbracoModule_EndRequest(object sender, EventArgs e) + private void UmbracoModule_EndRequest(object sender, UmbracoRequestEventArgs e) { // will clear the batch - will remain in HttpContext though - that's ok FlushBatch(); diff --git a/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs b/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs index 63536ca9f7..805c2393a8 100644 --- a/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs +++ b/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Web; using Umbraco.Core.Sync; +using Umbraco.Web.Routing; namespace Umbraco.Web { @@ -64,7 +65,7 @@ namespace Umbraco.Web return batch; } - void UmbracoModule_EndRequest(object sender, EventArgs e) + void UmbracoModule_EndRequest(object sender, UmbracoRequestEventArgs e) { FlushBatch(); } diff --git a/src/Umbraco.Web/Editors/MediaController.cs b/src/Umbraco.Web/Editors/MediaController.cs index 6604aee507..7a7e349a3c 100644 --- a/src/Umbraco.Web/Editors/MediaController.cs +++ b/src/Umbraco.Web/Editors/MediaController.cs @@ -524,7 +524,7 @@ namespace Umbraco.Web.Editors //get the files foreach (var file in result.FileData) { - var fileName = file.Headers.ContentDisposition.FileName.Trim(new[] { '\"' }); + var fileName = file.Headers.ContentDisposition.FileName.Trim(new[] { '\"' }).TrimEnd(); var ext = fileName.Substring(fileName.LastIndexOf('.') + 1).ToLower(); if (UmbracoConfig.For.UmbracoSettings().Content.DisallowedUploadFiles.Contains(ext) == false) diff --git a/src/Umbraco.Web/Routing/EnsureRoutableOutcome.cs b/src/Umbraco.Web/Routing/EnsureRoutableOutcome.cs index fd09f5ff8c..3eefbc4d0c 100644 --- a/src/Umbraco.Web/Routing/EnsureRoutableOutcome.cs +++ b/src/Umbraco.Web/Routing/EnsureRoutableOutcome.cs @@ -3,7 +3,7 @@ namespace Umbraco.Web.Routing /// /// Represents the outcome of trying to route an incoming request. /// - internal enum EnsureRoutableOutcome + public enum EnsureRoutableOutcome { /// /// Request routes to a document. diff --git a/src/Umbraco.Web/Routing/RoutableAttemptEventArgs.cs b/src/Umbraco.Web/Routing/RoutableAttemptEventArgs.cs index 7a7bc37d5c..ee93623252 100644 --- a/src/Umbraco.Web/Routing/RoutableAttemptEventArgs.cs +++ b/src/Umbraco.Web/Routing/RoutableAttemptEventArgs.cs @@ -5,7 +5,7 @@ namespace Umbraco.Web.Routing /// /// Event args containing information about why the request was not routable, or if it is routable /// - internal class RoutableAttemptEventArgs : UmbracoRequestEventArgs + public class RoutableAttemptEventArgs : UmbracoRequestEventArgs { public EnsureRoutableOutcome Outcome { get; private set; } diff --git a/src/Umbraco.Web/Routing/UmbracoRequestEventArgs.cs b/src/Umbraco.Web/Routing/UmbracoRequestEventArgs.cs index 2c50c972f5..3516277275 100644 --- a/src/Umbraco.Web/Routing/UmbracoRequestEventArgs.cs +++ b/src/Umbraco.Web/Routing/UmbracoRequestEventArgs.cs @@ -6,7 +6,7 @@ namespace Umbraco.Web.Routing /// /// Event args used for event launched during a request (like in the UmbracoModule) /// - internal class UmbracoRequestEventArgs : EventArgs + public class UmbracoRequestEventArgs : EventArgs { public UmbracoContext UmbracoContext { get; private set; } public HttpContextBase HttpContext { get; private set; } diff --git a/src/Umbraco.Web/Search/ExamineEvents.cs b/src/Umbraco.Web/Search/ExamineEvents.cs index d02850bffe..7fbbf29b89 100644 --- a/src/Umbraco.Web/Search/ExamineEvents.cs +++ b/src/Umbraco.Web/Search/ExamineEvents.cs @@ -122,10 +122,13 @@ namespace Umbraco.Web.Search foreach (var alias in contentTypesChanged) { var ctType = ApplicationContext.Current.Services.ContentTypeService.GetContentType(alias); - var contentItems = ApplicationContext.Current.Services.ContentService.GetContentOfContentType(ctType.Id); - foreach (var contentItem in contentItems) + if (ctType != null) { - ReIndexForContent(contentItem, contentItem.HasPublishedVersion && contentItem.Trashed == false); + var contentItems = ApplicationContext.Current.Services.ContentService.GetContentOfContentType(ctType.Id); + foreach (var contentItem in contentItems) + { + ReIndexForContent(contentItem, contentItem.HasPublishedVersion && contentItem.Trashed == false); + } } } } @@ -134,10 +137,13 @@ namespace Umbraco.Web.Search foreach (var alias in mediaTypesChanged) { var ctType = ApplicationContext.Current.Services.ContentTypeService.GetMediaType(alias); - var mediaItems = ApplicationContext.Current.Services.MediaService.GetMediaOfMediaType(ctType.Id); - foreach (var mediaItem in mediaItems) + if (ctType != null) { - ReIndexForMedia(mediaItem, mediaItem.Trashed == false); + var mediaItems = ApplicationContext.Current.Services.MediaService.GetMediaOfMediaType(ctType.Id); + foreach (var mediaItem in mediaItems) + { + ReIndexForMedia(mediaItem, mediaItem.Trashed == false); + } } } } @@ -146,10 +152,13 @@ namespace Umbraco.Web.Search foreach (var alias in memberTypesChanged) { var ctType = ApplicationContext.Current.Services.MemberTypeService.Get(alias); - var memberItems = ApplicationContext.Current.Services.MemberService.GetMembersByMemberType(ctType.Id); - foreach (var memberItem in memberItems) + if (ctType != null) { - ReIndexForMember(memberItem); + var memberItems = ApplicationContext.Current.Services.MemberService.GetMembersByMemberType(ctType.Id); + foreach (var memberItem in memberItems) + { + ReIndexForMember(memberItem); + } } } } diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index a0b112c7c7..c5c75c2a2c 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -105,8 +105,8 @@ ..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll True - - ..\packages\ClientDependency.1.9.1\lib\net45\ClientDependency.Core.dll + + ..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll True diff --git a/src/Umbraco.Web/UmbracoModule.cs b/src/Umbraco.Web/UmbracoModule.cs index a80188f449..f2503b88c6 100644 --- a/src/Umbraco.Web/UmbracoModule.cs +++ b/src/Umbraco.Web/UmbracoModule.cs @@ -524,9 +524,9 @@ namespace Umbraco.Web "Total milliseconds for umbraco request to process: {0}", () => DateTime.Now.Subtract(UmbracoContext.Current.ObjectCreated).TotalMilliseconds); } - OnEndRequest(new EventArgs()); + OnEndRequest(new UmbracoRequestEventArgs(UmbracoContext.Current, new HttpContextWrapper(httpContext))); - DisposeHttpContextItems(httpContext); + DisposeHttpContextItems(httpContext); }; } @@ -536,18 +536,19 @@ namespace Umbraco.Web } - #endregion + #endregion #region Events - internal static event EventHandler RouteAttempt; + + public static event EventHandler RouteAttempt; private void OnRouteAttempt(RoutableAttemptEventArgs args) { if (RouteAttempt != null) RouteAttempt(this, args); } - internal static event EventHandler EndRequest; - private void OnEndRequest(EventArgs args) + public static event EventHandler EndRequest; + private void OnEndRequest(UmbracoRequestEventArgs args) { if (EndRequest != null) EndRequest(this, args); diff --git a/src/Umbraco.Web/packages.config b/src/Umbraco.Web/packages.config index 03c699cb2a..520a6e4f76 100644 --- a/src/Umbraco.Web/packages.config +++ b/src/Umbraco.Web/packages.config @@ -1,7 +1,7 @@  - + diff --git a/src/umbraco.cms/packages.config b/src/umbraco.cms/packages.config index 14db85833d..46e6d733a1 100644 --- a/src/umbraco.cms/packages.config +++ b/src/umbraco.cms/packages.config @@ -1,6 +1,6 @@  - + diff --git a/src/umbraco.cms/umbraco.cms.csproj b/src/umbraco.cms/umbraco.cms.csproj index 2fd7a19ca9..3ed531db8e 100644 --- a/src/umbraco.cms/umbraco.cms.csproj +++ b/src/umbraco.cms/umbraco.cms.csproj @@ -106,8 +106,8 @@ false - - ..\packages\ClientDependency.1.9.1\lib\net45\ClientDependency.Core.dll + + ..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll True diff --git a/src/umbraco.controls/packages.config b/src/umbraco.controls/packages.config index 016ca51b2d..eca7107322 100644 --- a/src/umbraco.controls/packages.config +++ b/src/umbraco.controls/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/src/umbraco.controls/umbraco.controls.csproj b/src/umbraco.controls/umbraco.controls.csproj index a626c8a4dd..49fd505856 100644 --- a/src/umbraco.controls/umbraco.controls.csproj +++ b/src/umbraco.controls/umbraco.controls.csproj @@ -68,8 +68,8 @@ false - - ..\packages\ClientDependency.1.9.1\lib\net45\ClientDependency.Core.dll + + ..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll True diff --git a/src/umbraco.editorControls/packages.config b/src/umbraco.editorControls/packages.config index 016ca51b2d..eca7107322 100644 --- a/src/umbraco.editorControls/packages.config +++ b/src/umbraco.editorControls/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/src/umbraco.editorControls/umbraco.editorControls.csproj b/src/umbraco.editorControls/umbraco.editorControls.csproj index 15128a4d51..3bccb0b5f8 100644 --- a/src/umbraco.editorControls/umbraco.editorControls.csproj +++ b/src/umbraco.editorControls/umbraco.editorControls.csproj @@ -114,8 +114,8 @@ {651E1350-91B6-44B7-BD60-7207006D7003} Umbraco.Web - - ..\packages\ClientDependency.1.9.1\lib\net45\ClientDependency.Core.dll + + ..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll True