From e8f6150f44397fa7b069a7d72401322237ab0df6 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Fri, 15 Oct 2010 15:55:47 -0700 Subject: [PATCH] - Migrating Roles to the new shape API. --HG-- branch : dev --- .../Drivers/UserRolesPartDriver.cs | 45 +++++++++---------- .../Orchard.Roles/Orchard.Roles.csproj | 4 ++ .../Modules/Orchard.Roles/Placement.info | 3 ++ 3 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Roles/Placement.info diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Drivers/UserRolesPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Roles/Drivers/UserRolesPartDriver.cs index 1b5109d90..cedc19a43 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Drivers/UserRolesPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Drivers/UserRolesPartDriver.cs @@ -18,6 +18,7 @@ namespace Orchard.Roles.Drivers { private readonly INotifier _notifier; private readonly IAuthenticationService _authenticationService; private readonly IAuthorizationService _authorizationService; + private const string TemplateName = "Parts/Roles.UserRoles"; public UserRolesPartDriver( IRepository userRolesRepository, @@ -46,20 +47,19 @@ namespace Orchard.Roles.Drivers { if (!_authorizationService.TryCheckAccess(Permissions.ApplyRoles, _authenticationService.GetAuthenticatedUser(), userRolesPart)) return null; - var roles = - _roleService.GetRoles().Select( - x => new UserRoleEntry { - RoleId = x.Id, - Name = x.Name, - Granted = userRolesPart.Roles.Contains(x.Name) - }); - - var model = new UserRolesViewModel { - User = userRolesPart.As(), - UserRoles = userRolesPart, - Roles = roles.ToList(), - }; - return ContentPartTemplate(model, "Parts/Roles.UserRoles"); + return ContentShape("Parts_Roles_UserRoles_Edit", + () => { + var roles =_roleService.GetRoles().Select(x => new UserRoleEntry { + RoleId = x.Id, + Name = x.Name, + Granted = userRolesPart.Roles.Contains(x.Name)}); + var model = new UserRolesViewModel { + User = userRolesPart.As(), + UserRoles = userRolesPart, + Roles = roles.ToList(), + }; + return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix); + }); } protected override DriverResult Editor(UserRolesPart userRolesPart, IUpdateModel updater, dynamic shapeHelper) { @@ -67,29 +67,26 @@ namespace Orchard.Roles.Drivers { if (!_authorizationService.TryCheckAccess(Permissions.ApplyRoles, _authenticationService.GetAuthenticatedUser(), userRolesPart)) return null; - var model = new UserRolesViewModel { - User = userRolesPart.As(), - UserRoles = userRolesPart, - }; - + var model = BuildEditorViewModel(userRolesPart); if (updater.TryUpdateModel(model, Prefix, null, null)) { - var currentUserRoleRecords = _userRolesRepository.Fetch(x => x.UserId == model.User.Id); var currentRoleRecords = currentUserRoleRecords.Select(x => x.Role); var targetRoleRecords = model.Roles.Where(x => x.Granted).Select(x => _roleService.GetRole(x.RoleId)); - foreach (var addingRole in targetRoleRecords.Where(x => !currentRoleRecords.Contains(x))) { _notifier.Warning(T("Adding role {0} to user {1}", addingRole.Name, userRolesPart.As().UserName)); _userRolesRepository.Create(new UserRolesPartRecord { UserId = model.User.Id, Role = addingRole }); } - foreach (var removingRole in currentUserRoleRecords.Where(x => !targetRoleRecords.Contains(x.Role))) { _notifier.Warning(T("Removing role {0} from user {1}", removingRole.Role.Name, userRolesPart.As().UserName)); _userRolesRepository.Delete(removingRole); } - } - return ContentPartTemplate(model, "Parts/Roles.UserRoles"); + return ContentShape("Parts_Roles_UserRoles_Edit", + () => shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix)); + } + + private static UserRolesViewModel BuildEditorViewModel(UserRolesPart userRolesPart) { + return new UserRolesViewModel { User = userRolesPart.As(), UserRoles = userRolesPart }; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj b/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj index 5276d0806..aeea6b32c 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj +++ b/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj @@ -39,6 +39,7 @@ AllRules.ruleset + @@ -108,6 +109,9 @@ Orchard.Core + + +