From eecd5cd7f5f6715ed25a6283406c2cf255f47b92 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Fri, 1 Oct 2010 14:45:43 -0700 Subject: [PATCH] Addin new Category property to Permission - Automatically creates a Category if non is provided, using the previous text pattern --HG-- branch : dev --- .../Orchard.Roles/Services/RoleService.cs | 17 ++++++++++++----- .../Orchard.Roles/Views/Admin/Edit.cshtml | 6 +++--- src/Orchard/Security/Permissions/Permission.cs | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs b/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs index e7cc0a63c..7c80b78f0 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; using Orchard.Data; -using Orchard.Environment.Extensions.Models; +using Orchard.Localization; using Orchard.Logging; using Orchard.Roles.Models; using Orchard.Security.Permissions; @@ -22,8 +22,10 @@ namespace Orchard.Roles.Services { _permissionRepository = permissionRepository; _permissionProviders = permissionProviders; Logger = NullLogger.Instance; + T = NullLocalizer.Instance; } + public Localizer T { get; set; } public ILogger Logger { get; set; } public IEnumerable GetRoles() { @@ -105,11 +107,16 @@ namespace Orchard.Roles.Services { foreach (var permissionProvider in _permissionProviders) { var featureName = permissionProvider.Feature.Descriptor.Name; var permissions = permissionProvider.GetPermissions(); + foreach(var permission in permissions) { + var category = permission.Category; - if (installedPermissions.ContainsKey(featureName)) - installedPermissions[featureName] = installedPermissions[featureName].Concat(permissions); - else - installedPermissions.Add(featureName, permissions); + string title = String.IsNullOrWhiteSpace(category) ? T("{0} Feature", featureName).Text : T(category).Text; + + if ( installedPermissions.ContainsKey(title) ) + installedPermissions[title] = installedPermissions[title].Concat( new [] {permission}); + else + installedPermissions.Add(title, permissions); + } } return installedPermissions; diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.cshtml index 5e20fa4ec..38256d7e1 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.cshtml @@ -11,9 +11,9 @@
@T("Permissions") - @foreach (var featureName in Model.FeaturePermissions.Keys) { + @foreach (var category in Model.FeaturePermissions.Keys) {
- @T("{0} Feature", featureName) + @category @@ -26,7 +26,7 @@ - @foreach (var permission in Model.FeaturePermissions[featureName]) { + @foreach (var permission in Model.FeaturePermissions[category]) {
@T("Effective")
@permission.Description diff --git a/src/Orchard/Security/Permissions/Permission.cs b/src/Orchard/Security/Permissions/Permission.cs index ce7da2984..48dbda826 100644 --- a/src/Orchard/Security/Permissions/Permission.cs +++ b/src/Orchard/Security/Permissions/Permission.cs @@ -4,6 +4,7 @@ namespace Orchard.Security.Permissions { public class Permission { public string Name { get; set; } public string Description { get; set; } + public string Category { get; set; } public IEnumerable ImpliedBy { get; set; } public bool RequiresOwnership { get; set; }