From 31a59516260723beea5df982599c720f562637ac Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 1 Oct 2013 15:36:08 +1000 Subject: [PATCH] Updated member tree/editor to use the GUID --- src/Umbraco.Core/Services/IMemberService.cs | 2 + .../src/common/resources/member.resource.js | 22 ++--- .../views/member/member.edit.controller.js | 2 +- src/Umbraco.Web/Editors/MemberController.cs | 8 +- src/Umbraco.Web/Trees/MediaTreeController.cs | 79 ---------------- src/Umbraco.Web/Trees/MemberTreeController.cs | 91 +++++++++++++++++++ src/Umbraco.Web/Umbraco.Web.csproj | 1 + 7 files changed, 110 insertions(+), 95 deletions(-) create mode 100644 src/Umbraco.Web/Trees/MemberTreeController.cs diff --git a/src/Umbraco.Core/Services/IMemberService.cs b/src/Umbraco.Core/Services/IMemberService.cs index a6a2a14424..737e142c3b 100644 --- a/src/Umbraco.Core/Services/IMemberService.cs +++ b/src/Umbraco.Core/Services/IMemberService.cs @@ -14,6 +14,8 @@ namespace Umbraco.Core.Services IEnumerable GetMembersByMemberType(string memberTypeAlias); IEnumerable GetMembersByGroup(string memberGroupName); IEnumerable GetAllMembers(params int[] ids); + + //TODO: Need to get all members that start with a certain letter } /// diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js index d879aa322c..fa2a8efa27 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js @@ -26,7 +26,7 @@ function memberResource($q, $http, umbDataFormatter, umbRequestHelper) { /** * @ngdoc method - * @name umbraco.resources.memberResource#getByLogin + * @name umbraco.resources.memberResource#getByKey * @methodOf umbraco.resources.memberResource * * @description @@ -34,7 +34,7 @@ function memberResource($q, $http, umbDataFormatter, umbRequestHelper) { * * ##usage *
-         * memberResource.getByLogin("tom")
+         * memberResource.getByKey("0000-0000-000-00000-000")
          *    .then(function(member) {
          *        var mymember = member; 
          *        alert('its here!');
@@ -45,20 +45,20 @@ function memberResource($q, $http, umbDataFormatter, umbRequestHelper) {
          * @returns {Promise} resourcePromise object containing the member item.
          *
          */
-        getByLogin: function (loginName) {
+        getByKey: function (key) {
             
             return umbRequestHelper.resourcePromise(
                $http.get(
                    umbRequestHelper.getApiUrl(
                        "memberApiBaseUrl",
-                       "GetByLogin",
-                       [{ loginName: loginName }])),
-               'Failed to retreive data for member id ' + loginName);
+                       "GetByKey",
+                       [{ key: key }])),
+               'Failed to retreive data for member id ' + key);
         },
 
         /**
          * @ngdoc method
-         * @name umbraco.resources.memberResource#deleteByLogin
+         * @name umbraco.resources.memberResource#deleteByKey
          * @methodOf umbraco.resources.memberResource
          *
          * @description
@@ -66,7 +66,7 @@ function memberResource($q, $http, umbDataFormatter, umbRequestHelper) {
          *
          * ##usage
          * 
-         * memberResource.deleteByLogin(1234)
+         * memberResource.deleteByKey("0000-0000-000-00000-000")
          *    .then(function() {
          *        alert('its gone!');
          *    });
@@ -76,14 +76,14 @@ function memberResource($q, $http, umbDataFormatter, umbRequestHelper) {
          * @returns {Promise} resourcePromise object.
          *
          */
-        deleteByLogin: function (id) {
+        deleteByKey: function (key) {
             return umbRequestHelper.resourcePromise(
                 $http.delete(
                     umbRequestHelper.getApiUrl(
                         "memberApiBaseUrl",
                         "DeleteById",
-                        [{ id: id }])),
-                'Failed to delete item ' + id);
+                        [{ key: key }])),
+                'Failed to delete item ' + key);
         },
 
         /**
diff --git a/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js
index 4ff85a6f95..493739842b 100644
--- a/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js
@@ -22,7 +22,7 @@ function MemberEditController($scope, $routeParams, $q, $timeout, $window, membe
     }
     else {
         //we are editing so get the content item from the server
-        memberResource.getByLogin($routeParams.id)
+        memberResource.getByKey($routeParams.id)
             .then(function(data) {
                 $scope.loaded = true;
                 $scope.content = data;
diff --git a/src/Umbraco.Web/Editors/MemberController.cs b/src/Umbraco.Web/Editors/MemberController.cs
index 565c0fbfa2..87403d8713 100644
--- a/src/Umbraco.Web/Editors/MemberController.cs
+++ b/src/Umbraco.Web/Editors/MemberController.cs
@@ -50,16 +50,16 @@ namespace Umbraco.Web.Editors
         /// 
         /// Gets the content json for the member
         /// 
-        /// 
+        /// 
         /// 
-        public MemberDisplay GetByLogin(string loginName)
+        public MemberDisplay GetByKey(Guid key)
         {
             if (Member.InUmbracoMemberMode())
             {
-                var foundMember = Services.MemberService.GetByUsername(loginName);
+                var foundMember = Services.MemberService.GetByKey(key);
                 if (foundMember == null)
                 {
-                    HandleContentNotFound(loginName);
+                    HandleContentNotFound(key);
                 }
                 return Mapper.Map(foundMember);
             }
diff --git a/src/Umbraco.Web/Trees/MediaTreeController.cs b/src/Umbraco.Web/Trees/MediaTreeController.cs
index ee2432bf15..fac1e5386b 100644
--- a/src/Umbraco.Web/Trees/MediaTreeController.cs
+++ b/src/Umbraco.Web/Trees/MediaTreeController.cs
@@ -1,11 +1,9 @@
 using System;
-using System.Globalization;
 using System.Linq;
 using System.Net;
 using System.Net.Http.Formatting;
 using System.Web;
 using System.Web.Http;
-using System.Web.Security;
 using Umbraco.Core;
 using Umbraco.Core.Models;
 using Umbraco.Core.Services;
@@ -14,86 +12,9 @@ using Umbraco.Web.Trees.Menu;
 using umbraco;
 using umbraco.BusinessLogic.Actions;
 using Constants = Umbraco.Core.Constants;
-using LegacyMember = umbraco.cms.businesslogic.member.Member;
 
 namespace Umbraco.Web.Trees
 {
-    [LegacyBaseTree(typeof (loadMembers))]
-    [Tree(Constants.Applications.Members, Constants.Trees.Members, "Members")]
-    [PluginController("UmbracoTrees")]
-    public class MemberTreeController : TreeController
-    {
-        protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings)
-        {
-            var nodes = new TreeNodeCollection();
-
-            if (id == Constants.System.Root.ToInvariantString())
-            {
-                //list out all the letters
-                for (var i = 97; i < 123; i++)
-                {
-                    var charString = ((char) i).ToString(CultureInfo.InvariantCulture);
-                    nodes.Add(CreateTreeNode(charString, queryStrings, charString, "icon-folder-close", true));
-                }
-                //list out 'Others' if the membership provider is umbraco
-                if (LegacyMember.InUmbracoMemberMode())
-                {
-                    nodes.Add(CreateTreeNode("others", queryStrings, "Others", "icon-folder-close", true));
-                }
-            }
-            else
-            {
-                //if it is a letter
-                if (id.Length == 1 && char.IsLower(id, 0))
-                {
-                    if (LegacyMember.InUmbracoMemberMode())
-                    {
-                        //get the members from our member data layer
-                        nodes.AddRange(
-                            LegacyMember.getMemberFromFirstLetter(id.ToCharArray()[0])
-                                        .Select(m => CreateTreeNode(m.LoginName, queryStrings, m.Text, "icon-user")));
-                    }
-                    else
-                    {
-                        //get the members from the provider
-                        int total;
-                        nodes.AddRange(
-                            Membership.Provider.FindUsersByName(id + "%", 0, 9999, out total).Cast()
-                                      .Select(m => CreateTreeNode(m.UserName, queryStrings, m.UserName, "icon-user")));
-                    }
-                }
-                else if (id == "others")
-                {
-                    //others will only show up when in umbraco membership mode
-                    nodes.AddRange(
-                        LegacyMember.getAllOtherMembers()
-                                    .Select(m => CreateTreeNode(m.Id.ToInvariantString(), queryStrings, m.Text, "icon-user")));
-                }
-            }
-            return nodes;
-        }
-
-        protected override MenuItemCollection GetMenuForNode(string id, FormDataCollection queryStrings)
-        {
-            var menu = new MenuItemCollection();
-
-            if (id == Constants.System.Root.ToInvariantString())
-            {
-                //set default
-                menu.DefaultMenuAlias = ActionNew.Instance.Alias;
-
-                // root actions         
-                menu.AddMenuItem();
-                menu.AddMenuItem(true);
-                return menu;
-            }
-
-            menu.AddMenuItem();
-            return menu;
-        }
-    }
-
-
     [LegacyBaseTree(typeof(loadMedia))]
     [Tree(Constants.Applications.Media, Constants.Trees.Media, "Media")]
     [PluginController("UmbracoTrees")]
diff --git a/src/Umbraco.Web/Trees/MemberTreeController.cs b/src/Umbraco.Web/Trees/MemberTreeController.cs
new file mode 100644
index 0000000000..b127ae5808
--- /dev/null
+++ b/src/Umbraco.Web/Trees/MemberTreeController.cs
@@ -0,0 +1,91 @@
+using System.Globalization;
+using System.Linq;
+using System.Net.Http.Formatting;
+using System.Web.Security;
+using Umbraco.Core;
+using Umbraco.Web.Mvc;
+using Umbraco.Web.Trees.Menu;
+using umbraco;
+using umbraco.BusinessLogic.Actions;
+using umbraco.cms.businesslogic.member;
+using Constants = Umbraco.Core.Constants;
+
+namespace Umbraco.Web.Trees
+{
+    //TODO: Upgrade thsi to use the new Member Service!
+
+    [LegacyBaseTree(typeof (loadMembers))]
+    [Tree(Constants.Applications.Members, Constants.Trees.Members, "Members")]
+    [PluginController("UmbracoTrees")]
+    public class MemberTreeController : TreeController
+    {
+        protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings)
+        {
+            var nodes = new TreeNodeCollection();
+
+            if (id == Constants.System.Root.ToInvariantString())
+            {
+                //list out all the letters
+                for (var i = 97; i < 123; i++)
+                {
+                    var charString = ((char) i).ToString(CultureInfo.InvariantCulture);
+                    nodes.Add(CreateTreeNode(charString, queryStrings, charString, "icon-folder-close", true));
+                }
+                //list out 'Others' if the membership provider is umbraco
+                if (Member.InUmbracoMemberMode())
+                {
+                    nodes.Add(CreateTreeNode("others", queryStrings, "Others", "icon-folder-close", true));
+                }
+            }
+            else
+            {
+                //if it is a letter
+                if (id.Length == 1 && char.IsLower(id, 0))
+                {
+                    if (Member.InUmbracoMemberMode())
+                    {
+                        //get the members from our member data layer
+                        nodes.AddRange(
+                            Member.getMemberFromFirstLetter(id.ToCharArray()[0])
+                                        .Select(m => CreateTreeNode(m.UniqueId.ToString("N"), queryStrings, m.Text, "icon-user")));
+                    }
+                    else
+                    {
+                        //get the members from the provider
+                        int total;
+                        nodes.AddRange(
+                            Membership.Provider.FindUsersByName(id + "%", 0, 9999, out total).Cast()
+                                      .Select(m => CreateTreeNode(m.ProviderUserKey.ToString(), queryStrings, m.UserName, "icon-user")));
+                    }
+                }
+                else if (id == "others")
+                {
+                    //others will only show up when in umbraco membership mode
+                    nodes.AddRange(
+                        Member.getAllOtherMembers()
+                                    .Select(m => CreateTreeNode(m.Id.ToInvariantString(), queryStrings, m.Text, "icon-user")));
+                }
+            }
+            return nodes;
+        }
+
+        protected override MenuItemCollection GetMenuForNode(string id, FormDataCollection queryStrings)
+        {
+            var menu = new MenuItemCollection();
+
+            if (id == Constants.System.Root.ToInvariantString())
+            {
+                //set default
+                menu.DefaultMenuAlias = ActionNew.Instance.Alias;
+
+                // root actions         
+                menu.AddMenuItem();
+                menu.AddMenuItem(true);
+                return menu;
+            }
+
+            menu.AddMenuItem();
+            return menu;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 0c085bfcab..1bc820439e 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -370,6 +370,7 @@
     
     
     
+