Merge remote-tracking branch 'origin/temp8' into feature/IContentType-removale-from-IContent

# Conflicts:
#	src/Umbraco.Core/ContentExtensions.cs
#	src/Umbraco.Core/Models/Content.cs
#	src/Umbraco.Tests/Models/ContentTests.cs
#	src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs
#	src/Umbraco.Tests/Models/VariationTests.cs
#	src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs
#	src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs
#	src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs
#	src/Umbraco.Web.UI/Umbraco/dialogs/ChangeDocType.aspx.cs
This commit is contained in:
Bjarke Berg
2019-01-11 08:29:29 +01:00
627 changed files with 10531 additions and 10745 deletions

View File

@@ -20,5 +20,8 @@ namespace Umbraco.Web.Models.ContentEditing
[DataMember(Name = "contentId")]
public int ContentId { get; set; }
[DataMember(Name = "culture")]
public string Culture { get; set; }
}
}

View File

@@ -4,6 +4,7 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
using Umbraco.Core;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
using Umbraco.Core.Models.Validation;
@@ -75,7 +76,7 @@ namespace Umbraco.Web.Models.ContentEditing
{
return IconIsClass
? string.Empty
: string.Format("{0}images/umbraco/{1}", UmbracoConfig.For.GlobalSettings().Path.EnsureEndsWith("/"), Icon);
: string.Format("{0}images/umbraco/{1}", Current.Configs.Global().Path.EnsureEndsWith("/"), Icon);
}
}

View File

@@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.Serialization;
using Umbraco.Core;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
namespace Umbraco.Web.Models.ContentEditing
@@ -33,7 +34,7 @@ namespace Umbraco.Web.Models.ContentEditing
if (UserGroups.Any() == false)
yield return new ValidationResult("A user must be assigned to at least one group", new[] { "UserGroups" });
if (UmbracoConfig.For.UmbracoSettings().Security.UsernameIsEmail == false && Username.IsNullOrWhiteSpace())
if (Current.Configs.Settings().Security.UsernameIsEmail == false && Username.IsNullOrWhiteSpace())
yield return new ValidationResult("A username cannot be empty", new[] { "Username" });
}
}

View File

@@ -1,9 +1,8 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Web;
using System.ComponentModel.DataAnnotations;
using Umbraco.Core;
using Umbraco.Web.Composing;
using Umbraco.Core.Composing;
using Umbraco.Web.Security;
using Current = Umbraco.Web.Composing.Current;
namespace Umbraco.Web.Models
{
@@ -25,7 +24,7 @@ namespace Umbraco.Web.Models
{
if (doLookup && Current.UmbracoContext != null)
{
var helper = new MembershipHelper(Current.UmbracoContext);
var helper = Current.Factory.GetInstance<MembershipHelper>();
var model = helper.GetCurrentLoginStatus();
if (model != null)
{

View File

@@ -20,7 +20,7 @@ namespace Umbraco.Web.Models.Mapping
public DataTypeMapperProfile(PropertyEditorCollection propertyEditors, ILogger logger)
{
// create, capture, cache
var availablePropertyEditorsResolver = new AvailablePropertyEditorsResolver(UmbracoConfig.For.UmbracoSettings().Content);
var availablePropertyEditorsResolver = new AvailablePropertyEditorsResolver(Current.Configs.Settings().Content);
var configurationDisplayResolver = new DataTypeConfigurationFieldDisplayResolver(logger);
var databaseTypeResolver = new DatabaseTypeResolver();

View File

@@ -1,5 +1,7 @@
using AutoMapper;
using System.Web.Mvc;
using Umbraco.Core.Models;
using Umbraco.Core.Services;
using Umbraco.Web.Models.ContentEditing;
namespace Umbraco.Web.Models.Mapping
@@ -8,17 +10,24 @@ namespace Umbraco.Web.Models.Mapping
{
public string Resolve(IContent source, ContentItemDisplay destination, string destMember, ResolutionContext context)
{
if (source == null || source.Template == null) return null;
if (source == null)
return null;
var alias = source.Template.Alias;
// If no template id was set...
if (!source.TemplateId.HasValue)
{
// ... and no default template is set, return null...
if (string.IsNullOrWhiteSpace(source.ContentType.DefaultTemplate?.Alias))
return null;
//set default template if template isn't set
if (string.IsNullOrEmpty(alias))
alias = source.ContentType.DefaultTemplate == null
? string.Empty
: source.ContentType.DefaultTemplate.Alias;
// ... otherwise return the content type default template alias.
return source.ContentType.DefaultTemplate?.Alias;
}
var fileService = DependencyResolver.Current.GetService<IFileService>();
var template = fileService.GetTemplate(source.TemplateId.Value);
return alias;
return template.Alias;
}
}
}
}

View File

@@ -1,5 +1,6 @@
using AutoMapper;
using Umbraco.Core;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
@@ -52,7 +53,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Tabs, opt => opt.ResolveUsing(tabsAndPropertiesResolver))
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.ForMember(dest => dest.ContentType, opt => opt.ResolveUsing(mediaTypeBasicResolver))
.ForMember(dest => dest.MediaLink, opt => opt.ResolveUsing(content => string.Join(",", content.GetUrls(UmbracoConfig.For.UmbracoSettings().Content, logger))))
.ForMember(dest => dest.MediaLink, opt => opt.ResolveUsing(content => string.Join(",", content.GetUrls(Current.Configs.Settings().Content, logger))))
.ForMember(dest => dest.ContentApps, opt => opt.ResolveUsing(mediaAppResolver))
.ForMember(dest => dest.VariesByCulture, opt => opt.MapFrom(src => src.ContentType.VariesByCulture()));

View File

@@ -37,15 +37,6 @@ namespace Umbraco.Web.Models.Mapping
_userService = userService ?? throw new System.ArgumentNullException(nameof(userService));
}
public MemberTabsAndPropertiesResolver(IUmbracoContextAccessor umbracoContextAccessor, ILocalizedTextService localizedTextService, IEnumerable<string> ignoreProperties, IMemberService memberService, IUserService userService)
: base(localizedTextService, ignoreProperties)
{
_umbracoContextAccessor = umbracoContextAccessor ?? throw new System.ArgumentNullException(nameof(umbracoContextAccessor));
_localizedTextService = localizedTextService ?? throw new System.ArgumentNullException(nameof(localizedTextService));
_memberService = memberService ?? throw new System.ArgumentNullException(nameof(memberService));
_userService = userService ?? throw new System.ArgumentNullException(nameof(userService));
}
/// <inheritdoc />
/// <remarks>Overriden to deal with custom member properties and permissions.</remarks>
public override IEnumerable<Tab<ContentPropertyDisplay>> Resolve(IMember source, MemberDisplay destination, IEnumerable<Tab<ContentPropertyDisplay>> destMember, ResolutionContext context)

View File

@@ -8,18 +8,12 @@ namespace Umbraco.Web.Models.Mapping
{
internal class RedirectUrlMapperProfile : Profile
{
private readonly UrlProvider _urlProvider;
public RedirectUrlMapperProfile(UrlProvider urlProvider)
{
_urlProvider = urlProvider;
}
public RedirectUrlMapperProfile()
{
CreateMap<IRedirectUrl, ContentRedirectUrl>()
.ForMember(x => x.OriginalUrl, expression => expression.MapFrom(item => _urlProvider.GetUrlFromRoute(item.ContentId, item.Url, null)))
.ForMember(x => x.DestinationUrl, expression => expression.Ignore())
.ForMember(x => x.OriginalUrl, expression => expression.MapFrom(item => Current.UmbracoContext.UrlProvider.GetUrlFromRoute(item.ContentId, item.Url, item.Culture)))
.ForMember(x => x.DestinationUrl, expression => expression.MapFrom(item => item.ContentId > 0 ? new UmbracoHelper(Current.UmbracoContext, Current.Services).Url(item.ContentId, item.Culture) : "#"))
.ForMember(x => x.RedirectId, expression => expression.MapFrom(item => item.Key));
}
}

View File

@@ -27,7 +27,7 @@ namespace Umbraco.Web.Models.Mapping
IgnoreProperties = ignoreProperties ?? throw new ArgumentNullException(nameof(ignoreProperties));
}
//TODO: This should deserialize to ListViewConfiguration
//TODO: This should deserialize to ListViewConfiguration
private static int GetTabNumberFromConfig(IDictionary<string, object> listViewConfig)
{
if (!listViewConfig.TryGetValue("displayAtTabNumber", out var displayTabNum))
@@ -139,13 +139,7 @@ namespace Umbraco.Web.Models.Mapping
{
public TabsAndPropertiesResolver(ILocalizedTextService localizedTextService)
: base(localizedTextService)
{
}
public TabsAndPropertiesResolver(ILocalizedTextService localizedTextService, IEnumerable<string> ignoreProperties)
: base(localizedTextService, ignoreProperties)
{
}
{ }
public virtual IEnumerable<Tab<ContentPropertyDisplay>> Resolve(TSource source, TDestination destination, IEnumerable<Tab<ContentPropertyDisplay>> destMember, ResolutionContext context)
{

View File

@@ -2,10 +2,11 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web;
using System.Web.Mvc;
using Umbraco.Web.Composing;
using Umbraco.Web.Security;
using Umbraco.Core;
using Umbraco.Core.Composing;
using Current = Umbraco.Web.Composing.Current;
namespace Umbraco.Web.Models
{
@@ -27,7 +28,7 @@ namespace Umbraco.Web.Models
MemberProperties = new List<UmbracoProperty>();
if (doLookup && Current.UmbracoContext != null)
{
var helper = new MembershipHelper(Current.UmbracoContext);
var helper = Current.Factory.GetInstance<MembershipHelper>();
var model = helper.GetCurrentMemberProfileModel();
MemberProperties = model.MemberProperties;
}

View File

@@ -51,7 +51,7 @@ namespace Umbraco.Web.Models
public abstract string Path { get; }
/// <inheritdoc />
public abstract int TemplateId { get; }
public abstract int? TemplateId { get; }
/// <inheritdoc />
public abstract int CreatorId { get; }

View File

@@ -5,8 +5,9 @@ using System.ComponentModel.DataAnnotations;
using System.Web;
using System.Web.Mvc;
using Umbraco.Core;
using Umbraco.Web.Composing;
using Umbraco.Core.Composing;
using Umbraco.Web.Security;
using Current = Umbraco.Web.Composing.Current;
namespace Umbraco.Web.Models
{
@@ -31,7 +32,7 @@ namespace Umbraco.Web.Models
CreatePersistentLoginCookie = true;
if (doLookup && Current.UmbracoContext != null)
{
var helper = new MembershipHelper(Current.UmbracoContext);
var helper = Current.Factory.GetInstance<MembershipHelper>();
var model = helper.CreateRegistrationModel(MemberTypeAlias);
MemberProperties = model.MemberProperties;
}

View File

@@ -2,6 +2,7 @@
using Umbraco.Core.IO;
using System.Collections.Generic;
using Umbraco.Core;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Exceptions;
using Umbraco.Web.Models.ContentEditing;
@@ -111,7 +112,7 @@ namespace Umbraco.Web.Models.Trees
return IOHelper.ResolveUrl("~" + Icon.TrimStart('~'));
//legacy icon path
return string.Format("{0}images/umbraco/{1}", UmbracoConfig.For.GlobalSettings().Path.EnsureEndsWith("/"), Icon);
return string.Format("{0}images/umbraco/{1}", Current.Configs.Global().Path.EnsureEndsWith("/"), Icon);
}
}