diff --git a/src/Orchard.Web/Packages/Orchard.Roles/Controllers/AdminController.cs b/src/Orchard.Web/Packages/Orchard.Roles/Controllers/AdminController.cs index be7fe568c..f904a7336 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/Controllers/AdminController.cs +++ b/src/Orchard.Web/Packages/Orchard.Roles/Controllers/AdminController.cs @@ -1,43 +1,94 @@ -using System.Linq; +using System; +using System.Collections.Generic; +using System.Web; using System.Web.Mvc; -using Orchard.Data; using Orchard.Notify; using Orchard.Roles.Models; +using Orchard.Roles.Services; using Orchard.Roles.ViewModels; namespace Orchard.Roles.Controllers { [ValidateInput(false)] public class AdminController : Controller { - private readonly IRepository _roleRepository; + private readonly IRoleService _roleService; private readonly INotifier _notifier; - public AdminController(IRepository roleRepository, INotifier notifier) { - _roleRepository = roleRepository; + public AdminController(IRoleService roleService, INotifier notifier) { + _roleService = roleService; _notifier = notifier; } public ActionResult Index() { - var model = new RolesIndexViewModel { - Rows = _roleRepository.Fetch(x => x.Name != null) - .Select(x => new RolesIndexViewModel.Row { - Role = x - }) - .ToList() - }; + var model = new RolesIndexViewModel { Rows = _roleService.GetRoles() as IList }; return View(model); } - //TODO: NYI + [AcceptVerbs(HttpVerbs.Post)] + public ActionResult Index(FormCollection input) { + try { + foreach (string key in input.Keys) { + if (key.StartsWith("Checkbox.") && input[key] == "true") { + int roleId = Convert.ToInt32(key.Substring("Checkbox.".Length)); + _roleService.DeleteRole(roleId); + } + } + return RedirectToAction("Index"); + } + catch (Exception exception) { + _notifier.Error("Deleting Role failed: " + exception.Message); + return View(); + } + } + public ActionResult Create() { var model = new RoleCreateViewModel(); return View(model); } - //TODO: NYI + [AcceptVerbs(HttpVerbs.Post)] + public ActionResult Create(FormCollection input) { + var viewModel = new RoleCreateViewModel(); + try { + UpdateModel(viewModel, input.ToValueProvider()); + _roleService.CreateRole(viewModel.Name); + return RedirectToAction("Index"); + } + catch (Exception exception) { + _notifier.Error("Creating Role failed: " + exception.Message); + return View(viewModel); + } + } + public ActionResult Edit(int id) { - var model = new RoleEditViewModel(); + var role = _roleService.GetRole(id); + if (role == null) { + //TODO: Error message + throw new HttpException(404, "page with id " + id + " was not found"); + } + var model = new RoleEditViewModel { Name = role.Name, Id = role.Id }; + return View(model); } + + [AcceptVerbs(HttpVerbs.Post)] + public ActionResult Edit(FormCollection input) { + var viewModel = new RoleEditViewModel(); + try { + UpdateModel(viewModel, input.ToValueProvider()); + // Save + if (!String.IsNullOrEmpty(HttpContext.Request.Form["submit.Save"])) { + _roleService.UpdateRole(viewModel.Id, viewModel.Name); + } + else if (!String.IsNullOrEmpty(HttpContext.Request.Form["submit.Delete"])) { + _roleService.DeleteRole(viewModel.Id); + } + return RedirectToAction("Index"); + } + catch (Exception exception) { + _notifier.Error("Editing media file failed: " + exception.Message); + return View(viewModel); + } + } } } diff --git a/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj b/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj index e0d1e8790..41e7d340f 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj +++ b/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj @@ -66,6 +66,7 @@ + diff --git a/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleCreateViewModel.cs b/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleCreateViewModel.cs index 722adc3a6..8e4cabf83 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleCreateViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleCreateViewModel.cs @@ -1,6 +1,9 @@ -using Orchard.Mvc.ViewModels; +using System.ComponentModel.DataAnnotations; +using Orchard.Mvc.ViewModels; namespace Orchard.Roles.ViewModels { public class RoleCreateViewModel : AdminViewModel { + [Required] + public string Name { get; set; } } } diff --git a/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleEditViewModel.cs b/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleEditViewModel.cs index a845281d4..9dec52a81 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleEditViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RoleEditViewModel.cs @@ -1,6 +1,10 @@ -using Orchard.Mvc.ViewModels; +using System.ComponentModel.DataAnnotations; +using Orchard.Mvc.ViewModels; namespace Orchard.Roles.ViewModels { public class RoleEditViewModel : AdminViewModel { + public int Id { get; set; } + [Required] + public string Name { get; set; } } } diff --git a/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RolesIndexViewModel.cs b/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RolesIndexViewModel.cs index 0a860ce5e..2a1bbfdb4 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RolesIndexViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Roles/ViewModels/RolesIndexViewModel.cs @@ -4,10 +4,6 @@ using Orchard.Roles.Models; namespace Orchard.Roles.ViewModels { public class RolesIndexViewModel : AdminViewModel { - public class Row { - public RoleRecord Role { get; set; } - } - - public IList Rows { get; set; } + public IList Rows { get; set; } } } diff --git a/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Create.aspx b/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Create.aspx index 70a6fca3b..3c2137cdc 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Create.aspx +++ b/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Create.aspx @@ -10,11 +10,13 @@ <% Html.Include("Header"); %> + <% Html.BeginForm(); %> + <%= Html.ValidationSummary() %>

Add a Role

Information

- +

Permissions

@@ -43,9 +45,9 @@ - - +
+ <% Html.EndForm(); %> <% Html.Include("Footer"); %> diff --git a/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Edit.aspx b/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Edit.aspx index ae4d3d38d..d16db7efc 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Edit.aspx +++ b/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Edit.aspx @@ -10,12 +10,14 @@ <% Html.Include("Header"); %> + <% Html.BeginForm(); %> + <%= Html.ValidationSummary() %>

Edit a Role

Information

- - + +

Permissions

Pages Module

@@ -43,9 +45,10 @@ - - + +
+ <% Html.EndForm(); %> <% Html.Include("Footer"); %> diff --git a/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Index.aspx b/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Index.aspx index d47d04d04..1d47f0999 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Index.aspx +++ b/src/Orchard.Web/Packages/Orchard.Roles/Views/Admin/Index.aspx @@ -39,9 +39,9 @@ <%foreach (var row in Model.Rows) { %> - "/> - <%=Html.Encode(row.Role.Name) %> - <%=Html.ActionLink("Edit", "Edit", new { row.Role.Id })%> + "/> + <%=Html.Encode(row.Name) %> + <%=Html.ActionLink("Edit", "Edit", new { row.Id })%> <%}%> diff --git a/src/Orchard/Data/DataModule.cs b/src/Orchard/Data/DataModule.cs index 98aef5746..3c41bf223 100644 --- a/src/Orchard/Data/DataModule.cs +++ b/src/Orchard/Data/DataModule.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Autofac; -using Autofac.Builder; +using Autofac.Builder; namespace Orchard.Data { public class DataModule : Module { diff --git a/src/Orchard/Data/HackSessionLocator.cs b/src/Orchard/Data/HackSessionLocator.cs index d1be9a197..096909871 100644 --- a/src/Orchard/Data/HackSessionLocator.cs +++ b/src/Orchard/Data/HackSessionLocator.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; using System.Threading; using System.Web; using FluentNHibernate.Automapping; @@ -29,6 +26,7 @@ namespace Orchard.Data { var automaps = new[] { CreatePersistenceModel(Assembly.Load("Orchard.CmsPages")), CreatePersistenceModel(Assembly.Load("Orchard.Users")), + CreatePersistenceModel(Assembly.Load("Orchard.Roles")), CreatePersistenceModel(Assembly.Load("Orchard")), };