diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/insertmacro.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/insertmacro.html index be129bf859..028653912b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/insertmacro.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/insertmacro.html @@ -12,7 +12,7 @@ -
+
+ ng-options="{{selectOptions}}"> @@ -13,7 +13,7 @@ ng-switch-when="1" multiple ng-model="model.value" - ng-options="contentType.id as contentType.name for contentType in contentTypes"> + ng-options="{{selectOptions}}">
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/userpicker/userpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/userpicker/userpicker.controller.js deleted file mode 100644 index 163f58dec6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/userpicker/userpicker.controller.js +++ /dev/null @@ -1,11 +0,0 @@ -angular.module('umbraco').controller("Umbraco.PropertyEditors.UserPickerController", - function($rootScope, $scope, $log, userResource){ - - userResource.getAll().then(function (userArray) { - $scope.users = userArray; - }); - - if ($scope.model.value === null || $scope.model.value === undefined) { - $scope.model.value = ""; - } -}); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/userpicker/userpicker.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/userpicker/userpicker.html deleted file mode 100644 index badfdbfd69..0000000000 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/userpicker/userpicker.html +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web/Editors/EntityController.cs b/src/Umbraco.Web/Editors/EntityController.cs index 44be3c39b4..15e6978f92 100644 --- a/src/Umbraco.Web/Editors/EntityController.cs +++ b/src/Umbraco.Web/Editors/EntityController.cs @@ -10,6 +10,7 @@ using Examine.LuceneEngine; using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Logging; +using Umbraco.Core.Models.Membership; using Umbraco.Core.Services; using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Mvc; @@ -341,41 +342,38 @@ namespace Umbraco.Web.Editors { //TODO: Should we order this by something ? var entities = Services.EntityService.GetAll(objectType.Value).WhereNotNull().Select(Mapper.Map); - - //if a post filter is assigned then try to execute it - if (postFilter.IsNullOrWhiteSpace() == false) - { - return postFilterParams == null - ? entities.AsQueryable().Where(postFilter).ToArray() - : entities.AsQueryable().Where(postFilter, postFilterParams).ToArray(); - - } - return entities; + return ExecutePostFilter(entities, postFilter, postFilterParams); } //now we need to convert the unknown ones switch (entityType) { case UmbracoEntityTypes.Macro: //Get all macros from the macro service - var result = Services.MacroService.GetAll().WhereNotNull().OrderBy(x => x.Name).AsQueryable(); + var macros = Services.MacroService.GetAll().WhereNotNull().OrderBy(x => x.Name); + var filteredMacros = ExecutePostFilter(macros, postFilter, postFilterParams); + return filteredMacros.Select(Mapper.Map); - //if a post filter is assigned then try to execute it - if (postFilter.IsNullOrWhiteSpace() == false) - { - result = postFilterParams == null - ? result.Where(postFilter) - : result.Where(postFilter, postFilterParams); + case UmbracoEntityTypes.PropertyType: - } + //get all document types, then combine all property types into one list + var propertyTypes = Services.ContentTypeService.GetAllContentTypes().Cast() + .Concat(Services.ContentTypeService.GetAllMediaTypes()) + .ToArray() + .SelectMany(x => x.PropertyTypes) + .DistinctBy(composition => composition.Alias); + var filteredPropertyTypes = ExecutePostFilter(propertyTypes, postFilter, postFilterParams); + return Mapper.Map, IEnumerable>(filteredPropertyTypes); - return result.Select(Mapper.Map); + case UmbracoEntityTypes.User: + + var users = Services.UserService.GetAllUsers(); + var filteredUsers = ExecutePostFilter(users, postFilter, postFilterParams); + return Mapper.Map, IEnumerable>(filteredUsers); case UmbracoEntityTypes.Domain: case UmbracoEntityTypes.Language: - case UmbracoEntityTypes.User: - default: throw new NotSupportedException("The " + typeof(EntityController) + " does not currently support data for the type " + entityType); } @@ -392,6 +390,8 @@ namespace Umbraco.Web.Editors //now we need to convert the unknown ones switch (entityType) { + case UmbracoEntityTypes.PropertyType: + case UmbracoEntityTypes.Domain: case UmbracoEntityTypes.Language: @@ -420,6 +420,8 @@ namespace Umbraco.Web.Editors //now we need to convert the unknown ones switch (entityType) { + case UmbracoEntityTypes.PropertyType: + case UmbracoEntityTypes.Domain: case UmbracoEntityTypes.Language: @@ -465,5 +467,26 @@ namespace Umbraco.Web.Editors } } + /// + /// Executes the post filter against a collection of objects + /// + /// + /// + /// + /// + /// + private IEnumerable ExecutePostFilter(IEnumerable entities, string postFilter, IDictionary postFilterParams) + { + //if a post filter is assigned then try to execute it + if (postFilter.IsNullOrWhiteSpace() == false) + { + return postFilterParams == null + ? entities.AsQueryable().Where(postFilter).ToArray() + : entities.AsQueryable().Where(postFilter, postFilterParams).ToArray(); + + } + return entities; + } + } } diff --git a/src/Umbraco.Web/Models/ContentEditing/UmbracoEntityTypes.cs b/src/Umbraco.Web/Models/ContentEditing/UmbracoEntityTypes.cs index f6d98cfbbb..8743e3cbd2 100644 --- a/src/Umbraco.Web/Models/ContentEditing/UmbracoEntityTypes.cs +++ b/src/Umbraco.Web/Models/ContentEditing/UmbracoEntityTypes.cs @@ -78,6 +78,11 @@ /// /// Data Type /// - DataType + DataType, + + /// + /// Property Type + /// + PropertyType } } \ No newline at end of file diff --git a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs index 6b61384e85..ca8ffe6b92 100644 --- a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs @@ -6,6 +6,7 @@ using Examine; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.Mapping; +using Umbraco.Core.Models.Membership; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.Web.Models.Mapping @@ -17,6 +18,17 @@ namespace Umbraco.Web.Models.Mapping config.CreateMap() .ForMember(basic => basic.Icon, expression => expression.MapFrom(entity => entity.ContentTypeIcon)); + config.CreateMap() + .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-box")) + .ForMember(basic => basic.Path, expression => expression.UseValue("")) + .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)); + + config.CreateMap() + .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-user")) + .ForMember(basic => basic.Path, expression => expression.UseValue("")) + .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)) + .ForMember(basic => basic.Alias, expression => expression.MapFrom(user => user.Username)); + config.CreateMap() //default to document icon .ForMember(x => x.Icon, expression => expression.UseValue("icon-document")) diff --git a/src/Umbraco.Web/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs b/src/Umbraco.Web/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs index 51984bb239..03855e83f5 100644 --- a/src/Umbraco.Web/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs @@ -8,18 +8,13 @@ using Umbraco.Core.PropertyEditors; namespace Umbraco.Web.PropertyEditors.ParameterEditors { - [ParameterEditor("contentType", "Content Type Picker", "contenttypepicker")] + [ParameterEditor("contentType", "Content Type Picker", "entitypicker")] public class ContentTypeParameterEditor : ParameterEditor { - - } - - [ParameterEditor("contentTypeMultiple", "Multiple Content Type Picker", "contenttypepicker")] - public class MultipleContentTypeParameterEditor : ParameterEditor - { - public MultipleContentTypeParameterEditor() + public ContentTypeParameterEditor() { - Configuration.Add("multiple", "1"); + Configuration.Add("multiple", "0"); + Configuration.Add("entityType", "DocumentType"); } } } diff --git a/src/Umbraco.Web/PropertyEditors/ParameterEditors/MultipleContentTypeParameterEditor.cs b/src/Umbraco.Web/PropertyEditors/ParameterEditors/MultipleContentTypeParameterEditor.cs new file mode 100644 index 0000000000..f09896f8a2 --- /dev/null +++ b/src/Umbraco.Web/PropertyEditors/ParameterEditors/MultipleContentTypeParameterEditor.cs @@ -0,0 +1,14 @@ +using Umbraco.Core.PropertyEditors; + +namespace Umbraco.Web.PropertyEditors.ParameterEditors +{ + [ParameterEditor("contentTypeMultiple", "Multiple Content Type Picker", "entitypicker")] + public class MultipleContentTypeParameterEditor : ParameterEditor + { + public MultipleContentTypeParameterEditor() + { + Configuration.Add("multiple", "1"); + Configuration.Add("entityType", "DocumentType"); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/PropertyEditors/ParameterEditors/MultiplePropertyTypeParameterEditor.cs b/src/Umbraco.Web/PropertyEditors/ParameterEditors/MultiplePropertyTypeParameterEditor.cs new file mode 100644 index 0000000000..93817e0758 --- /dev/null +++ b/src/Umbraco.Web/PropertyEditors/ParameterEditors/MultiplePropertyTypeParameterEditor.cs @@ -0,0 +1,16 @@ +using Umbraco.Core.PropertyEditors; + +namespace Umbraco.Web.PropertyEditors.ParameterEditors +{ + [ParameterEditor("propertyTypePickerMultiple", "Multiple Property Type Picker", "entitypicker")] + public class MultiplePropertyTypeParameterEditor : ParameterEditor + { + public MultiplePropertyTypeParameterEditor() + { + Configuration.Add("multiple", "1"); + Configuration.Add("entityType", "PropertyType"); + //don't publish the id for a property type, publish it's alias + Configuration.Add("publishBy", "alias"); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/PropertyEditors/ParameterEditors/PropertyTypeParameterEditor.cs b/src/Umbraco.Web/PropertyEditors/ParameterEditors/PropertyTypeParameterEditor.cs new file mode 100644 index 0000000000..8ddabde128 --- /dev/null +++ b/src/Umbraco.Web/PropertyEditors/ParameterEditors/PropertyTypeParameterEditor.cs @@ -0,0 +1,16 @@ +using Umbraco.Core.PropertyEditors; + +namespace Umbraco.Web.PropertyEditors.ParameterEditors +{ + [ParameterEditor("propertyTypePicker", "Property Type Picker", "entitypicker")] + public class PropertyTypeParameterEditor : ParameterEditor + { + public PropertyTypeParameterEditor() + { + Configuration.Add("multiple", "0"); + Configuration.Add("entityType", "PropertyType"); + //don't publish the id for a property type, publish it's alias + Configuration.Add("publishBy", "alias"); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/PropertyEditors/UserPickerPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/UserPickerPropertyEditor.cs index 4fb52da9c1..e43708836a 100644 --- a/src/Umbraco.Web/PropertyEditors/UserPickerPropertyEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/UserPickerPropertyEditor.cs @@ -1,13 +1,28 @@ -using System.ComponentModel; +using System.Collections.Generic; +using System.ComponentModel; using System.Web.Mvc; using Umbraco.Core; using Umbraco.Core.PropertyEditors; namespace Umbraco.Web.PropertyEditors { - [PropertyEditor(Constants.PropertyEditors.UserPickerAlias, "User picker", "INT", "userpicker")] + [PropertyEditor(Constants.PropertyEditors.UserPickerAlias, "User picker", "INT", "entitypicker")] public class UserPickerPropertyEditor : PropertyEditor { + private IDictionary _defaultPreValues; + public UserPickerPropertyEditor() + { + _defaultPreValues = new Dictionary + { + {"entityType", "User"} + }; + } + + public override IDictionary DefaultPreValues + { + get { return _defaultPreValues; } + set { _defaultPreValues = value; } + } } } \ No newline at end of file diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index edf3d98c8b..13f28eb131 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -347,6 +347,9 @@ + + +