+
@@ -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 @@
+
+
+