diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js
index dd84d8e7e2..6e3d085fa7 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js
@@ -10,53 +10,19 @@
scope.allowOpenMediaType = true;
// get document type details
- scope.mediaType = getMediaType(scope.node);
+ scope.mediaType = scope.node.documentType.value;
// get node url
- scope.nodeUrl = getNodeUrl(scope.node);
+ scope.nodeUrl = scope.node.mediaLink;
}
scope.openMediaType = function (mediaType) {
// remove first "#" from url if it is prefixed else the path won't work
- var url = mediaType.url.replace(/^#/, "");
+ var url = "/settings/mediaTypes/edit/" + mediaType.id;
$location.path(url);
};
- function getMediaType(node) {
-
- var mediaType = {};
-
- // find the document type in the properties array
- angular.forEach(node.properties, function (property) {
- if (property.alias === "_umb_doctype") {
- if (property.value && property.value.length > 0) {
- mediaType = property.value[0];
- }
- }
- });
-
- return mediaType;
-
- }
-
- function getNodeUrl(node) {
-
- var nodeUrl = "";
-
- // find the document type in the properties array
- angular.forEach(node.properties, function (property) {
- if (property.alias === "_umb_urls") {
- if (property.value) {
- nodeUrl = property.value;
- }
- }
- });
-
- return nodeUrl;
-
- }
-
onInit();
}
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html b/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html
index ce4ab5ccc6..4b33e72d11 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html
@@ -41,7 +41,7 @@
diff --git a/src/Umbraco.Web/Models/ContentEditing/MediaItemDisplay.cs b/src/Umbraco.Web/Models/ContentEditing/MediaItemDisplay.cs
index 5505ff7904..9941d48d48 100644
--- a/src/Umbraco.Web/Models/ContentEditing/MediaItemDisplay.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/MediaItemDisplay.cs
@@ -10,6 +10,10 @@ namespace Umbraco.Web.Models.ContentEditing
[DataContract(Name = "content", Namespace = "")]
public class MediaItemDisplay : ListViewAwareContentItemDisplayBase
{
-
+ [DataMember(Name = "documentType")]
+ public ContentPropertyDisplay DocumentType { get; set; }
+
+ [DataMember(Name = "mediaLink")]
+ public string MediaLink { get; set; }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
index 384ef332e2..9e4cda0c70 100644
--- a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
@@ -42,6 +42,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(display => display.IsContainer, expression => expression.Ignore())
.ForMember(display => display.HasPublishedVersion, expression => expression.Ignore())
.ForMember(display => display.Tabs, expression => expression.ResolveUsing(new TabsAndPropertiesResolver(applicationContext.Services.TextService)))
+ .ForMember(display => display.DocumentType, expression => expression.ResolveUsing())
.AfterMap((media, display) => AfterMap(media, display, applicationContext.Services.DataTypeService, applicationContext.Services.TextService, applicationContext.Services.ContentTypeService, applicationContext.ProfilingLogger.Logger));
//FROM IMedia TO ContentItemBasic
@@ -65,6 +66,20 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dto => dto.Icon, expression => expression.Ignore())
.ForMember(dto => dto.Alias, expression => expression.Ignore())
.ForMember(dto => dto.HasPublishedVersion, expression => expression.Ignore());
+
+ //FROM ContentTypeBasic TO ContentPropertyDisplay
+ config.CreateMap()
+ .ForMember(display => display.Value, expresion => expresion.MapFrom(content => content))
+ .ForMember(display =>display.Description, expression =>expression.Ignore())
+ .ForMember(display => display.Config, expression => expression.Ignore())
+ .ForMember(display => display.HideLabel, expression => expression.Ignore())
+ .ForMember(display => display.Label, expression => expression.Ignore())
+ .ForMember(display => display.Validation, expression => expression.Ignore())
+ .ForMember(display => display.View, expression => expression.Ignore())
+ .ForMember(display => display.Alias, expression => expression.Ignore())
+ .ForMember(display => display.Editor, expression => expression.Ignore())
+ .ForMember(display => display.Id, expression => expression.Ignore())
+ .ForMember(display => display.PropertyEditor, expression => expression.Ignore());
}
private static void AfterMap(IMedia media, MediaItemDisplay display, IDataTypeService dataTypeService, ILocalizedTextService localizedText, IContentTypeService contentTypeService, ILogger logger)
@@ -86,54 +101,40 @@ namespace Umbraco.Web.Models.Mapping
{
TabsAndPropertiesResolver.AddListView(display, "media", dataTypeService, localizedText);
}
-
- var genericProperties = new List
+
+ var links = media.GetUrls(UmbracoConfig.For.UmbracoSettings().Content, logger);
+ if (links.Any())
{
- new ContentPropertyDisplay
- {
- Alias = string.Format("{0}doctype", Constants.PropertyEditors.InternalGenericPropertiesPrefix),
- Label = localizedText.Localize("content/mediatype"),
- Value = localizedText.UmbracoDictionaryTranslate(display.ContentTypeName),
- View = PropertyEditorResolver.Current.GetByAlias(Constants.PropertyEditors.NoEditAlias).ValueEditor.View
- }
- };
+ // Media link to root node
+ display.MediaLink = string.Join(",", links);
+ }
- TabsAndPropertiesResolver.MapGenericProperties(media, display, localizedText, genericProperties, properties =>
+ TabsAndPropertiesResolver.MapGenericProperties(media, display, localizedText);
+ }
+
+ ///
+ /// Resolves a from the item and checks if the current user
+ /// has access to see this data
+ ///
+ private class ContentTypeBasicResolver : ValueResolver
+ {
+ protected override ContentTypeBasic ResolveCore(IMedia source)
{
- if (HttpContext.Current != null && UmbracoContext.Current != null && UmbracoContext.Current.Security.CurrentUser != null
- && UmbracoContext.Current.Security.CurrentUser.AllowedSections.Any(x => x.Equals(Constants.Applications.Settings)))
+ //TODO: This would be much nicer with the IUmbracoContextAccessor so we don't use singletons
+ //If this is a web request and there's a user signed in and the
+ // user has access to the settings section, we will
+ if (HttpContext.Current != null && UmbracoContext.Current != null &&
+ UmbracoContext.Current.Security.CurrentUser != null
+ && UmbracoContext.Current.Security.CurrentUser.AllowedSections.Any(x => x.Equals(Constants
+ .Applications.Settings)))
{
- var mediaTypeLink = string.Format("#/settings/mediatypes/edit/{0}", media.ContentTypeId);
-
- //Replace the doctype property
- var docTypeProperty = properties.First(x => x.Alias == string.Format("{0}doctype", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
- docTypeProperty.Value = new List