Updates all required mappings to use AutoMapperExtensions.MapWithUmbracoContext where appropriate
This commit is contained in:
@@ -80,7 +80,7 @@ namespace Umbraco.Web.Editors
|
||||
public IEnumerable<ContentItemDisplay> GetByIds([FromUri]int[] ids)
|
||||
{
|
||||
var foundContent = Services.ContentService.GetByIds(ids);
|
||||
return foundContent.Select(Mapper.Map<IContent, ContentItemDisplay>);
|
||||
return foundContent.Select(content => AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(content, UmbracoContext));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -232,7 +232,7 @@ namespace Umbraco.Web.Editors
|
||||
HandleContentNotFound(id);
|
||||
}
|
||||
|
||||
var content = Mapper.Map<IContent, ContentItemDisplay>(foundContent);
|
||||
var content = AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(foundContent, UmbracoContext);
|
||||
|
||||
SetupBlueprint(content, foundContent);
|
||||
|
||||
@@ -270,7 +270,7 @@ namespace Umbraco.Web.Editors
|
||||
HandleContentNotFound(id);
|
||||
}
|
||||
|
||||
var content = Mapper.Map<IContent, ContentItemDisplay>(foundContent);
|
||||
var content = AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(foundContent, UmbracoContext);
|
||||
return content;
|
||||
}
|
||||
|
||||
@@ -283,7 +283,7 @@ namespace Umbraco.Web.Editors
|
||||
HandleContentNotFound(id);
|
||||
}
|
||||
|
||||
var content = Mapper.Map<IContent, ContentItemDisplay>(foundContent);
|
||||
var content = AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(foundContent, UmbracoContext);
|
||||
return content;
|
||||
}
|
||||
|
||||
@@ -306,7 +306,7 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
|
||||
var emptyContent = Services.ContentService.CreateContent("", parentId, contentType.Alias, UmbracoUser.Id);
|
||||
var mapped = Mapper.Map<IContent, ContentItemDisplay>(emptyContent);
|
||||
var mapped = AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(emptyContent, UmbracoContext);
|
||||
|
||||
//remove this tab if it exists: umbContainerView
|
||||
var containerTab = mapped.Tabs.FirstOrDefault(x => x.Alias == Constants.Conventions.PropertyGroups.ListViewGroupName);
|
||||
@@ -563,7 +563,7 @@ namespace Umbraco.Web.Editors
|
||||
{
|
||||
//ok, so the absolute mandatory data is invalid and it's new, we cannot actually continue!
|
||||
// add the modelstate to the outgoing object and throw a validation message
|
||||
var forDisplay = Mapper.Map<IContent, ContentItemDisplay>(contentItem.PersistedContent);
|
||||
var forDisplay = AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(contentItem.PersistedContent, UmbracoContext);
|
||||
forDisplay.Errors = ModelState.ToErrorDictionary();
|
||||
throw new HttpResponseException(Request.CreateValidationErrorResponse(forDisplay));
|
||||
|
||||
@@ -605,7 +605,7 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
|
||||
//return the updated model
|
||||
var display = Mapper.Map<IContent, ContentItemDisplay>(contentItem.PersistedContent);
|
||||
var display = AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(contentItem.PersistedContent, UmbracoContext);
|
||||
|
||||
//lasty, if it is not valid, add the modelstate to the outgoing object and throw a 403
|
||||
HandleInvalidModelState(display);
|
||||
@@ -858,7 +858,7 @@ namespace Umbraco.Web.Editors
|
||||
|
||||
var unpublishResult = Services.ContentService.WithResult().UnPublish(foundContent, Security.CurrentUser.Id);
|
||||
|
||||
var content = Mapper.Map<IContent, ContentItemDisplay>(foundContent);
|
||||
var content = AutoMapperExtensions.MapWithUmbracoContext<IContent, ContentItemDisplay>(foundContent, UmbracoContext);
|
||||
|
||||
if (unpublishResult == false)
|
||||
{
|
||||
@@ -1092,4 +1092,4 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
|
||||
var emptyContent = Services.MediaService.CreateMedia("", parentId, contentType.Alias, UmbracoUser.Id);
|
||||
var mapped = Mapper.Map<IMedia, MediaItemDisplay>(emptyContent);
|
||||
var mapped = AutoMapperExtensions.MapWithUmbracoContext<IMedia, MediaItemDisplay>(emptyContent, UmbracoContext);
|
||||
|
||||
//remove this tab if it exists: umbContainerView
|
||||
var containerTab = mapped.Tabs.FirstOrDefault(x => x.Alias == Constants.Conventions.PropertyGroups.ListViewGroupName);
|
||||
@@ -137,7 +137,7 @@ namespace Umbraco.Web.Editors
|
||||
//HandleContentNotFound will throw an exception
|
||||
return null;
|
||||
}
|
||||
return Mapper.Map<IMedia, MediaItemDisplay>(foundContent);
|
||||
return AutoMapperExtensions.MapWithUmbracoContext<IMedia, MediaItemDisplay>(foundContent, UmbracoContext);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -157,7 +157,7 @@ namespace Umbraco.Web.Editors
|
||||
//HandleContentNotFound will throw an exception
|
||||
return null;
|
||||
}
|
||||
return Mapper.Map<IMedia, MediaItemDisplay>(foundContent);
|
||||
return AutoMapperExtensions.MapWithUmbracoContext<IMedia, MediaItemDisplay>(foundContent, UmbracoContext);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -186,7 +186,7 @@ namespace Umbraco.Web.Editors
|
||||
public IEnumerable<MediaItemDisplay> GetByIds([FromUri]int[] ids)
|
||||
{
|
||||
var foundMedia = Services.MediaService.GetByIds(ids);
|
||||
return foundMedia.Select(Mapper.Map<IMedia, MediaItemDisplay>);
|
||||
return foundMedia.Select(media => AutoMapperExtensions.MapWithUmbracoContext<IMedia, MediaItemDisplay>(media, UmbracoContext));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -488,7 +488,7 @@ namespace Umbraco.Web.Editors
|
||||
{
|
||||
//ok, so the absolute mandatory data is invalid and it's new, we cannot actually continue!
|
||||
// add the modelstate to the outgoing object and throw validation response
|
||||
var forDisplay = Mapper.Map<IMedia, MediaItemDisplay>(contentItem.PersistedContent);
|
||||
var forDisplay = AutoMapperExtensions.MapWithUmbracoContext<IMedia, MediaItemDisplay>(contentItem.PersistedContent, UmbracoContext);
|
||||
forDisplay.Errors = ModelState.ToErrorDictionary();
|
||||
throw new HttpResponseException(Request.CreateValidationErrorResponse(forDisplay));
|
||||
}
|
||||
@@ -498,7 +498,7 @@ namespace Umbraco.Web.Editors
|
||||
var saveStatus = Services.MediaService.WithResult().Save(contentItem.PersistedContent, (int)Security.CurrentUser.Id);
|
||||
|
||||
//return the updated model
|
||||
var display = Mapper.Map<IMedia, MediaItemDisplay>(contentItem.PersistedContent);
|
||||
var display = AutoMapperExtensions.MapWithUmbracoContext<IMedia, MediaItemDisplay>(contentItem.PersistedContent, UmbracoContext);
|
||||
|
||||
//lasty, if it is not valid, add the modelstate to the outgoing object and throw a 403
|
||||
HandleInvalidModelState(display);
|
||||
@@ -607,7 +607,7 @@ namespace Umbraco.Web.Editors
|
||||
var f = mediaService.CreateMedia(folder.Name, intParentId, Constants.Conventions.MediaTypes.Folder);
|
||||
mediaService.Save(f, Security.CurrentUser.Id);
|
||||
|
||||
return Mapper.Map<IMedia, MediaItemDisplay>(f);
|
||||
return AutoMapperExtensions.MapWithUmbracoContext<IMedia, MediaItemDisplay>(f, UmbracoContext);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -178,7 +178,7 @@ namespace Umbraco.Web.Editors
|
||||
{
|
||||
HandleContentNotFound(key);
|
||||
}
|
||||
return Mapper.Map<IMember, MemberDisplay>(foundMember);
|
||||
return AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(foundMember, UmbracoContext);
|
||||
case MembershipScenario.CustomProviderWithUmbracoLink:
|
||||
|
||||
//TODO: Support editing custom properties for members with a custom membership provider here.
|
||||
@@ -238,7 +238,7 @@ namespace Umbraco.Web.Editors
|
||||
|
||||
emptyContent = new Member(contentType);
|
||||
emptyContent.AdditionalData["NewPassword"] = Membership.GeneratePassword(provider.MinRequiredPasswordLength, provider.MinRequiredNonAlphanumericCharacters);
|
||||
return Mapper.Map<IMember, MemberDisplay>(emptyContent);
|
||||
return AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(emptyContent, UmbracoContext);
|
||||
case MembershipScenario.CustomProviderWithUmbracoLink:
|
||||
//TODO: Support editing custom properties for members with a custom membership provider here.
|
||||
|
||||
@@ -247,7 +247,7 @@ namespace Umbraco.Web.Editors
|
||||
//we need to return a scaffold of a 'simple' member - basically just what a membership provider can edit
|
||||
emptyContent = MemberService.CreateGenericMembershipProviderMember("", "", "", "");
|
||||
emptyContent.AdditionalData["NewPassword"] = Membership.GeneratePassword(Membership.MinRequiredPasswordLength, Membership.MinRequiredNonAlphanumericCharacters);
|
||||
return Mapper.Map<IMember, MemberDisplay>(emptyContent);
|
||||
return AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(emptyContent, UmbracoContext);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ namespace Umbraco.Web.Editors
|
||||
//Unlike content/media - if there are errors for a member, we do NOT proceed to save them, we cannot so return the errors
|
||||
if (ModelState.IsValid == false)
|
||||
{
|
||||
var forDisplay = Mapper.Map<IMember, MemberDisplay>(contentItem.PersistedContent);
|
||||
var forDisplay = AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(contentItem.PersistedContent, UmbracoContext);
|
||||
forDisplay.Errors = ModelState.ToErrorDictionary();
|
||||
throw new HttpResponseException(Request.CreateValidationErrorResponse(forDisplay));
|
||||
}
|
||||
@@ -329,7 +329,7 @@ namespace Umbraco.Web.Editors
|
||||
//If we've had problems creating/updating the user with the provider then return the error
|
||||
if (ModelState.IsValid == false)
|
||||
{
|
||||
var forDisplay = Mapper.Map<IMember, MemberDisplay>(contentItem.PersistedContent);
|
||||
var forDisplay = AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(contentItem.PersistedContent, UmbracoContext);
|
||||
forDisplay.Errors = ModelState.ToErrorDictionary();
|
||||
throw new HttpResponseException(Request.CreateValidationErrorResponse(forDisplay));
|
||||
}
|
||||
@@ -367,7 +367,7 @@ namespace Umbraco.Web.Editors
|
||||
contentItem.PersistedContent.AdditionalData["GeneratedPassword"] = generatedPassword;
|
||||
|
||||
//return the updated model
|
||||
var display = Mapper.Map<IMember, MemberDisplay>(contentItem.PersistedContent);
|
||||
var display = AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(contentItem.PersistedContent, UmbracoContext);
|
||||
|
||||
//lasty, if it is not valid, add the modelstate to the outgoing object and throw a 403
|
||||
HandleInvalidModelState(display);
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
{
|
||||
return Mapper.Map<TIn, TOut>(obj, opt => opt.Items["UmbracoContext"] = umbCtx);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns an <see cref="UmbracoContext"/> from the mapping options
|
||||
/// </summary>
|
||||
@@ -32,11 +32,11 @@ namespace Umbraco.Web.Models.Mapping
|
||||
/// <remarks>
|
||||
/// If an UmbracoContext is not found in the mapping options, it will try to retrieve it from the singleton
|
||||
/// </remarks>
|
||||
public static UmbracoContext GetUmbracoContext(this ResolutionResult res)
|
||||
public static UmbracoContext GetUmbracoContext(this ResolutionContext res)
|
||||
{
|
||||
//get the context from the mapping options set during a mapping operation
|
||||
object umbCtx;
|
||||
if (res.Context.Options.Items.TryGetValue("UmbracoContext", out umbCtx))
|
||||
if (res.Options.Items.TryGetValue("UmbracoContext", out umbCtx))
|
||||
{
|
||||
var umbracoContext = umbCtx as UmbracoContext;
|
||||
if (umbracoContext != null) return umbracoContext;
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
|
||||
private string ResolveCore(ResolutionResult res, TSource source)
|
||||
{
|
||||
var umbCtx = res.GetUmbracoContext();
|
||||
var umbCtx = res.Context.GetUmbracoContext();
|
||||
//map the tree node url
|
||||
if (umbCtx != null)
|
||||
{
|
||||
|
||||
@@ -25,12 +25,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
|
||||
{
|
||||
//FROM MembershipUser TO MediaItemDisplay - used when using a non-umbraco membership provider
|
||||
config.CreateMap<MembershipUser, MemberDisplay>()
|
||||
.ConvertUsing(user =>
|
||||
{
|
||||
var member = Mapper.Map<MembershipUser, IMember>(user);
|
||||
return Mapper.Map<IMember, MemberDisplay>(member);
|
||||
});
|
||||
config.CreateMap<MembershipUser, MemberDisplay>().ConvertUsing<MembershipUserTypeConverter>();
|
||||
|
||||
//FROM MembershipUser TO IMember - used when using a non-umbraco membership provider
|
||||
config.CreateMap<MembershipUser, IMember>()
|
||||
@@ -262,7 +257,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
var tabs = (List<Tab<ContentPropertyDisplay>>) result.Value;
|
||||
|
||||
//now we can customize the result with the current context, we can get the UmbracoContext from the options
|
||||
CustomizeProperties(source.GetUmbracoContext(), member, tabs);
|
||||
CustomizeProperties(source.Context.GetUmbracoContext(), member, tabs);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -500,6 +495,21 @@ namespace Umbraco.Web.Models.Mapping
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A converter to go from a <see cref="MembershipUser"/> to a <see cref="MemberDisplay"/>
|
||||
/// </summary>
|
||||
internal class MembershipUserTypeConverter : ITypeConverter<MembershipUser, MemberDisplay>
|
||||
{
|
||||
public MemberDisplay Convert(ResolutionContext context)
|
||||
{
|
||||
var source = (MembershipUser)context.SourceValue;
|
||||
//first convert to IMember
|
||||
var member = Mapper.Map<MembershipUser, IMember>(source);
|
||||
//then convert to MemberDisplay
|
||||
return AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(member, context.GetUmbracoContext());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
|
||||
private string ResolveCore(ResolutionResult res, IMember source)
|
||||
{
|
||||
var umbCtx = res.GetUmbracoContext();
|
||||
var umbCtx = res.Context.GetUmbracoContext();
|
||||
//map the tree node url
|
||||
if (umbCtx != null)
|
||||
{
|
||||
|
||||
@@ -330,6 +330,9 @@
|
||||
<Compile Include="Editors\CodeFileController.cs" />
|
||||
<Compile Include="Editors\TourController.cs" />
|
||||
<Compile Include="Models\BackOfficeTourFilter.cs" />
|
||||
<Compile Include="Models\Mapping\AutoMapperExtensions.cs" />
|
||||
<Compile Include="Models\Mapping\ContentTreeNodeUrlResolver.cs" />
|
||||
<Compile Include="Models\Mapping\MemberTreeNodeUrlResolver.cs" />
|
||||
<Compile Include="TourFilterResolver.cs" />
|
||||
<Compile Include="Editors\UserEditorAuthorizationHelper.cs" />
|
||||
<Compile Include="Editors\UserGroupAuthorizationAttribute.cs" />
|
||||
|
||||
Reference in New Issue
Block a user