Merge origin/dev-v7.6 into dev-v8-zbwip (builds, not tested)

This commit is contained in:
Stephan
2016-11-23 10:33:12 +01:00
171 changed files with 3049 additions and 2024 deletions

View File

@@ -42,38 +42,18 @@ namespace Umbraco.Web.Models.Mapping
//FROM IContent TO ContentItemDisplay
config.CreateMap<IContent, ContentItemDisplay>()
.ForMember(
dto => dto.Owner,
expression => expression.ResolveUsing(new OwnerResolver<IContent>(_userService)))
.ForMember(
dto => dto.Updater,
expression => expression.ResolveUsing(new CreatorResolver(_userService)))
.ForMember(
dto => dto.Icon,
expression => expression.MapFrom(content => content.ContentType.Icon))
.ForMember(
dto => dto.ContentTypeAlias,
expression => expression.MapFrom(content => content.ContentType.Alias))
.ForMember(
dto => dto.ContentTypeName,
expression => expression.MapFrom(content => content.ContentType.Name))
.ForMember(
dto => dto.IsContainer,
expression => expression.MapFrom(content => content.ContentType.IsContainer))
.ForMember(display => display.IsChildOfListView, expression => expression.Ignore())
.ForMember(
dto => dto.Trashed,
expression => expression.MapFrom(content => content.Trashed))
.ForMember(
dto => dto.PublishDate,
expression => expression.MapFrom(content => GetPublishedDate(_contentService, content)))
.ForMember(
dto => dto.TemplateAlias, expression => expression.MapFrom(content => content.Template.Alias))
.ForMember(
dto => dto.HasPublishedVersion,
expression => expression.MapFrom(content => content.HasPublishedVersion))
.ForMember(
dto => dto.Urls,
.ForMember(display => display.Owner, expression => expression.ResolveUsing(new OwnerResolver<IContent>(_userService)))
.ForMember(display => display.Updater, expression => expression.ResolveUsing(new CreatorResolver(_userService)))
.ForMember(display => display.Icon, expression => expression.MapFrom(content => content.ContentType.Icon))
.ForMember(display => display.ContentTypeAlias, expression => expression.MapFrom(content => content.ContentType.Alias))
.ForMember(display => display.ContentTypeName, expression => expression.MapFrom(content => content.ContentType.Name))
.ForMember(display => display.IsContainer, expression => expression.MapFrom(content => content.ContentType.IsContainer))
.ForMember(display => display.IsChildOfListView, expression => expression.Ignore())
.ForMember(display => display.Trashed, expression => expression.MapFrom(content => content.Trashed))
.ForMember(display => display.PublishDate, expression => expression.MapFrom(content => GetPublishedDate(_contentService, content)))
.ForMember(display => display.TemplateAlias, expression => expression.MapFrom(content => content.Template.Alias))
.ForMember(display => display.HasPublishedVersion, expression => expression.MapFrom(content => content.HasPublishedVersion))
.ForMember(display => display.Urls,
expression => expression.MapFrom(content =>
UmbracoContext.Current == null
? new[] {"Cannot generate urls without a current Umbraco Context"}
@@ -87,47 +67,27 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(display => display.Tabs, expression => expression.ResolveUsing(new TabsAndPropertiesResolver(_textService)))
.ForMember(display => display.AllowedActions, expression => expression.ResolveUsing(
new ActionButtonsResolver(new Lazy<IUserService>(() => _userService))))
.AfterMap((media, display) => AfterMap(media, display, _dataTypeService, _textService,
_contentTypeService, _contentService));
.AfterMap((content, display) => AfterMap(content, display, _dataTypeService, _textService, _contentTypeService, _contentService));
//FROM IContent TO ContentItemBasic<ContentPropertyBasic, IContent>
config.CreateMap<IContent, ContentItemBasic<ContentPropertyBasic, IContent>>()
.ForMember(
dto => dto.Owner,
expression => expression.ResolveUsing(new OwnerResolver<IContent>(_userService)))
.ForMember(
dto => dto.Updater,
expression => expression.ResolveUsing(new CreatorResolver(_userService)))
.ForMember(
dto => dto.Icon,
expression => expression.MapFrom(content => content.ContentType.Icon))
.ForMember(
dto => dto.Trashed,
expression => expression.MapFrom(content => content.Trashed))
.ForMember(
dto => dto.HasPublishedVersion,
expression => expression.MapFrom(content => content.HasPublishedVersion))
.ForMember(
dto => dto.ContentTypeAlias,
expression => expression.MapFrom(content => content.ContentType.Alias))
.ForMember(display => display.Alias, expression => expression.Ignore());
.ForMember(dto => dto.Owner, expression => expression.ResolveUsing(new OwnerResolver<IContent>(_userService)))
.ForMember(dto => dto.Updater, expression => expression.ResolveUsing(new CreatorResolver(_userService)))
.ForMember(dto => dto.Icon, expression => expression.MapFrom(content => content.ContentType.Icon))
.ForMember(dto => dto.Trashed, expression => expression.MapFrom(content => content.Trashed))
.ForMember(dto => dto.HasPublishedVersion, expression => expression.MapFrom(content => content.HasPublishedVersion))
.ForMember(dto => dto.ContentTypeAlias, expression => expression.MapFrom(content => content.ContentType.Alias))
.ForMember(dto => dto.Alias, expression => expression.Ignore());
//FROM IContent TO ContentItemDto<IContent>
config.CreateMap<IContent, ContentItemDto<IContent>>()
.ForMember(
dto => dto.Owner,
expression => expression.ResolveUsing(new OwnerResolver<IContent>(_userService)))
.ForMember(
dto => dto.HasPublishedVersion,
expression => expression.MapFrom(content => content.HasPublishedVersion))
.ForMember(display => display.Updater, expression => expression.Ignore())
.ForMember(display => display.Icon, expression => expression.Ignore())
.ForMember(display => display.Alias, expression => expression.Ignore());
.ForMember(dto => dto.Owner, expression => expression.ResolveUsing(new OwnerResolver<IContent>(_userService)))
.ForMember(dto => dto.HasPublishedVersion, expression => expression.MapFrom(content => content.HasPublishedVersion))
.ForMember(dto => dto.Updater, expression => expression.Ignore())
.ForMember(dto => dto.Icon, expression => expression.Ignore())
.ForMember(dto => dto.Alias, expression => expression.Ignore());
}
/// <summary>
/// Maps the generic tab with custom properties for content
/// </summary>
@@ -137,7 +97,7 @@ namespace Umbraco.Web.Models.Mapping
/// <param name="localizedText"></param>
/// <param name="contentTypeService"></param>
/// <param name="contentService"></param>
private static void AfterMap(IContent content, ContentItemDisplay display, IDataTypeService dataTypeService,
private static void AfterMap(IContent content, ContentItemDisplay display, IDataTypeService dataTypeService,
ILocalizedTextService localizedText, IContentTypeService contentTypeService, IContentService contentService)
{
//map the IsChildOfListView (this is actually if it is a descendant of a list view!)
@@ -165,7 +125,6 @@ namespace Umbraco.Web.Models.Mapping
display.IsChildOfListView = ancesctorListView != null;
}
}
//map the tree node url
if (HttpContext.Current != null)
@@ -174,9 +133,9 @@ namespace Umbraco.Web.Models.Mapping
var url = urlHelper.GetUmbracoApiService<ContentTreeController>(controller => controller.GetTreeNode(display.Id.ToString(), null));
display.TreeNodeUrl = url;
}
//fill in the template config to be passed to the template drop down.
var templateItemConfig = new Dictionary<string, string> { { "", "Choose..." } };
var templateItemConfig = new Dictionary<string, string> {{"", "Choose..."}};
foreach (var t in content.ContentType.AllowedTemplates
.Where(t => t.Alias.IsNullOrWhiteSpace() == false && t.Name.IsNullOrWhiteSpace() == false))
{
@@ -187,7 +146,7 @@ namespace Umbraco.Web.Models.Mapping
{
TabsAndPropertiesResolver.AddListView(display, "content", dataTypeService, localizedText);
}
var properties = new List<ContentPropertyDisplay>
{
new ContentPropertyDisplay
@@ -197,7 +156,7 @@ namespace Umbraco.Web.Models.Mapping
Value = localizedText.UmbracoDictionaryTranslate(display.ContentTypeName),
View = Current.PropertyEditors[Constants.PropertyEditors.NoEditAlias].ValueEditor.View
},
new ContentPropertyDisplay
new ContentPropertyDisplay
{
Alias = string.Format("{0}releasedate", Constants.PropertyEditors.InternalGenericPropertiesPrefix),
Label = localizedText.Localize("content/releaseDate"),
@@ -209,7 +168,7 @@ namespace Umbraco.Web.Models.Mapping
{"offsetTime", "1"}
}
//TODO: Fix up hard coded datepicker
} ,
},
new ContentPropertyDisplay
{
Alias = string.Format("{0}expiredate", Constants.PropertyEditors.InternalGenericPropertiesPrefix),
@@ -260,21 +219,21 @@ namespace Umbraco.Web.Models.Mapping
var docTypeLink = string.Format("#/settings/documenttypes/edit/{0}", currentDocumentTypeId);
//Replace the doc type property
var docTypeProp = genericProperties.First(x => x.Alias == string.Format("{0}doctype", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
docTypeProp.Value = new List<object>
var docTypeProperty = genericProperties.First(x => x.Alias == string.Format("{0}doctype", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
docTypeProperty.Value = new List<object>
{
new
{
linkText = currentDocumentTypeName,
url = docTypeLink,
target = "_self", icon = "icon-item-arrangement"
target = "_self",
icon = "icon-item-arrangement"
}
};
//TODO: Hard coding this because the templatepicker doesn't necessarily need to be a resolvable (real) property editor
docTypeProp.View = "urllist";
docTypeProperty.View = "urllist";
}
});
}
/// <summary>
@@ -319,13 +278,13 @@ namespace Umbraco.Web.Models.Mapping
var svc = _userService.Value;
var permissions = svc.GetPermissions(
//TODO: This is certainly not ideal usage here - perhaps the best way to deal with this in the future is
// with the IUmbracoContextAccessor. In the meantime, if used outside of a web app this will throw a null
// refrence exception :(
UmbracoContext.Current.Security.CurrentUser,
// Here we need to do a special check since this could be new content, in which case we need to get the permissions
// from the parent, not the existing one otherwise permissions would be coming from the root since Id is 0.
source.HasIdentity ? source.Id : source.ParentId)
//TODO: This is certainly not ideal usage here - perhaps the best way to deal with this in the future is
// with the IUmbracoContextAccessor. In the meantime, if used outside of a web app this will throw a null
// refrence exception :(
UmbracoContext.Current.Security.CurrentUser,
// Here we need to do a special check since this could be new content, in which case we need to get the permissions
// from the parent, not the existing one otherwise permissions would be coming from the root since Id is 0.
source.HasIdentity ? source.Id : source.ParentId)
.FirstOrDefault();
return permissions == null
@@ -333,6 +292,5 @@ namespace Umbraco.Web.Models.Mapping
: permissions.AssignedPermissions.Where(x => x.Length == 1).Select(x => x.ToUpperInvariant()[0]);
}
}
}
}