diff --git a/src/Umbraco.Core/Models/UserExtensions.cs b/src/Umbraco.Core/Models/UserExtensions.cs
index 930d0fff04..a79aec5026 100644
--- a/src/Umbraco.Core/Models/UserExtensions.cs
+++ b/src/Umbraco.Core/Models/UserExtensions.cs
@@ -69,11 +69,11 @@ namespace Umbraco.Core.Models
{
return new[]
{
- gravatarUrl + "?s=30",
- gravatarUrl + "?s=60",
- gravatarUrl + "?s=90",
- gravatarUrl + "?s=150",
- gravatarUrl + "?s=300"
+ gravatarUrl + "&s=30",
+ gravatarUrl + "&s=60",
+ gravatarUrl + "&s=90",
+ gravatarUrl + "&s=150",
+ gravatarUrl + "&s=300"
};
}
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbuserpreview.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbuserpreview.directive.js
index 29db5f7238..634decfa3d 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbuserpreview.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbuserpreview.directive.js
@@ -12,7 +12,7 @@
replace: true,
templateUrl: 'views/components/users/umb-user-preview.html',
scope: {
- avatar: "=?",
+ avatars: "=?",
name: "=",
allowRemove: "=?",
onRemove: "&?"
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html
index 33c4dd41d8..8a3300a5a6 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html
@@ -38,7 +38,7 @@
{{ user.name }}
- {{ value }},
+ {{ userGroup.name }},
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/umb-avatar.html b/src/Umbraco.Web.UI.Client/src/views/components/umb-avatar.html
index c589eabcf7..0bd72ba7a4 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/umb-avatar.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/umb-avatar.html
@@ -1,6 +1,6 @@
-
![]()
-
+
![]()
+
{{ initials }}
?
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/users/umb-user-preview.html b/src/Umbraco.Web.UI.Client/src/views/components/users/umb-user-preview.html
index 7753376206..be2037209a 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/users/umb-user-preview.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/users/umb-user-preview.html
@@ -5,7 +5,8 @@
size="xs"
color="secondary"
name="{{name}}"
- img-src="{{avatar}}">
+ img-src="{{avatars[0]}}"
+ img-srcset="{{avatars[1]}} 2x, {{avatars[2]}} 3x">
diff --git a/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js
index f92352c036..2f30857edb 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js
@@ -15,6 +15,7 @@
vm.openMediaPicker = openMediaPicker;
vm.openUserPicker = openUserPicker;
vm.removeSelectedItem = removeSelectedItem;
+ vm.clearStartNode = clearStartNode;
vm.getUserStateType = getUserStateType;
function init() {
@@ -64,11 +65,11 @@
vm.contentPicker = {
title: "Select content start node",
view: "contentpicker",
- multiPicker: true,
+ hideSubmitButton: true,
show: true,
submit: function(model) {
if(model.selection) {
- vm.userGroup.startNodesContent = model.selection;
+ vm.userGroup.startContentId = model.selection[0];
}
vm.contentPicker.show = false;
vm.contentPicker = null;
@@ -87,11 +88,11 @@
section: "media",
treeAlias: "media",
entityType: "media",
- multiPicker: true,
+ hideSubmitButton: true,
show: true,
submit: function(model) {
if(model.selection) {
- vm.userGroup.startNodesMedia = model.selection;
+ vm.userGroup.startMediaId = model.selection[0];
}
vm.contentPicker.show = false;
vm.contentPicker = null;
@@ -126,7 +127,17 @@
}
function removeSelectedItem(index, selection) {
- selection.splice(index, 1);
+ if(selection && selection.length > 0) {
+ selection.splice(index, 1);
+ }
+ }
+
+ function clearStartNode(type) {
+ if (type === "content") {
+ vm.userGroup.startContentId = null;
+ } else if (type === "media") {
+ vm.userGroup.startMediaId = null;
+ }
}
function getUserStateType(state) {
diff --git a/src/Umbraco.Web.UI.Client/src/views/users/group.html b/src/Umbraco.Web.UI.Client/src/views/users/group.html
index 2e740fe207..e1a870972d 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/group.html
+++ b/src/Umbraco.Web.UI.Client/src/views/users/group.html
@@ -44,17 +44,18 @@
-
+
+ on-remove="vm.clearStartNode('content')">
-
+
+ on-remove="vm.clearStartNode('media')">
diff --git a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js
index 43392cecf1..d5654cfd5a 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js
@@ -100,15 +100,21 @@
title: "Select content start node",
view: "contentpicker",
multiPicker: true,
+ selection: vm.user.startContentIds,
show: true,
submit: function (model) {
+ // select items
if (model.selection) {
- vm.user.startNodesContent = model.selection;
+ angular.forEach(model.selection, function(item){
+ multiSelectItem(item, vm.user.startContentIds);
+ });
}
+ // close overlay
vm.contentPicker.show = false;
vm.contentPicker = null;
},
close: function (oldModel) {
+ // close overlay
vm.contentPicker.show = false;
vm.contentPicker = null;
}
@@ -125,19 +131,40 @@
multiPicker: true,
show: true,
submit: function (model) {
+ // select items
if (model.selection) {
- vm.user.startNodesMedia = model.selection;
+ angular.forEach(model.selection, function(item){
+ multiSelectItem(item, vm.user.startMediaIds);
+ });
}
+ // close overlay
vm.mediaPicker.show = false;
vm.mediaPicker = null;
},
close: function (oldModel) {
+ // close overlay
vm.mediaPicker.show = false;
vm.mediaPicker = null;
}
};
}
+ function multiSelectItem(item, selection) {
+ var found = false;
+ // check if item is already in the selected list
+ if (selection.length > 0) {
+ angular.forEach(selection, function (selectedItem) {
+ if (selectedItem.udi === item.udi) {
+ found = true;
+ }
+ });
+ }
+ // only add the selected item if it is not already selected
+ if (!found) {
+ selection.push(item);
+ }
+ }
+
function removeSelectedItem(index, selection) {
selection.splice(index, 1);
}
diff --git a/src/Umbraco.Web.UI.Client/src/views/users/user.html b/src/Umbraco.Web.UI.Client/src/views/users/user.html
index 5c9f6c9587..c9e60a2965 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/user.html
+++ b/src/Umbraco.Web.UI.Client/src/views/users/user.html
@@ -126,7 +126,8 @@
color="secondary"
size="xxl"
name="{{vm.user.name}}"
- img-src="{{vm.user.avatars[4]}}">
+ img-src="{{vm.user.avatars[3]}}"
+ img-srcset="{{vm.user.avatars[4]}} 2x, {{vm.user.avatars[4]}} 3x">
+ img-src="{{user.avatars[2]}}"
+ img-srcset="{{user.avatars[3]}} 2x, {{user.avatars[4]}} 3x">