diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Controllers/AdminController.cs b/src/Orchard.Web/Packages/Orchard.Tags/Controllers/AdminController.cs index b682682b3..f48aba443 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Controllers/AdminController.cs +++ b/src/Orchard.Web/Packages/Orchard.Tags/Controllers/AdminController.cs @@ -99,6 +99,39 @@ namespace Orchard.Tags.Controllers { } } + public ActionResult Edit(int id) { + try { + Tag tag = _tagService.GetTag(id); + var viewModel = new TagsAdminEditViewModel { + Id = tag.Id, + TagName = tag.TagName, + }; + return View(viewModel); + + } + catch (Exception exception) { + _notifier.Error(T("Editing tag failed: " + exception.Message)); + return Index(); + } + } + + [AcceptVerbs(HttpVerbs.Post)] + public ActionResult Edit(FormCollection input) { + var viewModel = new TagsAdminEditViewModel(); + try { + UpdateModel(viewModel, input.ToValueProvider()); + if (!_authorizer.Authorize(Permissions.RenameTag, T("Couldn't edit tag"))) + return new HttpUnauthorizedResult(); + + _tagService.UpdateTag(viewModel.Id, viewModel.TagName); + return RedirectToAction("Index"); + } + catch (Exception exception) { + _notifier.Error(T("Editing Comment failed: " + exception.Message)); + return View(viewModel); + } + } + private static TagEntry CreateTagEntry(Tag tag) { return new TagEntry { Tag = tag, diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj b/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj index 772e89ef6..9e9815e10 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj +++ b/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj @@ -71,6 +71,7 @@ + @@ -78,6 +79,7 @@ + diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Permissions.cs b/src/Orchard.Web/Packages/Orchard.Tags/Permissions.cs index fa6ba233e..c4f12e3be 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Permissions.cs +++ b/src/Orchard.Web/Packages/Orchard.Tags/Permissions.cs @@ -6,6 +6,7 @@ namespace Orchard.Tags { public static readonly Permission CreateTag = new Permission { Description = "Creating a Tag", Name = "CreateTag" }; public static readonly Permission ApplyTag = new Permission { Description = "Applying a Tag", Name = "ApplyTag" }; public static readonly Permission DeleteTag = new Permission { Description = "Deleting a Tag", Name = "DeleteTag" }; + public static readonly Permission RenameTag = new Permission { Description = "Renaming a Tag", Name = "RenameTag" }; public string PackageName { get { @@ -18,6 +19,7 @@ namespace Orchard.Tags { CreateTag, ApplyTag, DeleteTag, + RenameTag, }; } } diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Services/TagService.cs b/src/Orchard.Web/Packages/Orchard.Tags/Services/TagService.cs index 7fe192f85..86f6e2ad3 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Services/TagService.cs +++ b/src/Orchard.Web/Packages/Orchard.Tags/Services/TagService.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using Orchard.Data; using Orchard.Localization; @@ -14,6 +15,7 @@ namespace Orchard.Tags.Services { Tag GetTagByName(string tagName); void CreateTag(string tagName); void DeleteTag(int id); + void UpdateTag(int id, string tagName); void TagContentItem(int contentItemId, string tagName); void UpdateTagsForContentItem(int contentItemId, IEnumerable tagsForContentItem); } @@ -69,6 +71,15 @@ namespace Orchard.Tags.Services { } } + public void UpdateTag(int id, string tagName) { + Tag tag = _tagRepository.Get(id); + if (String.IsNullOrEmpty(tagName)) { + _notifier.Warning(T("Couldn't rename tag: name was empty")); + return; + } + tag.TagName = tagName; + } + public void TagContentItem(int contentItemId, string tagName) { Tag tag = GetTagByName(tagName); TagsContentItems tagsContentItems = new TagsContentItems { ContentItemId = contentItemId, TagId = tag.Id }; diff --git a/src/Orchard.Web/Packages/Orchard.Tags/ViewModels/TagsAdminEditViewModel.cs b/src/Orchard.Web/Packages/Orchard.Tags/ViewModels/TagsAdminEditViewModel.cs new file mode 100644 index 000000000..744d202b5 --- /dev/null +++ b/src/Orchard.Web/Packages/Orchard.Tags/ViewModels/TagsAdminEditViewModel.cs @@ -0,0 +1,8 @@ +using Orchard.Mvc.ViewModels; + +namespace Orchard.Tags.ViewModels { + public class TagsAdminEditViewModel : AdminViewModel { + public int Id { get; set; } + public string TagName { get; set; } + } +} diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Views/Admin/Edit.aspx b/src/Orchard.Web/Packages/Orchard.Tags/Views/Admin/Edit.aspx new file mode 100644 index 000000000..1892bb888 --- /dev/null +++ b/src/Orchard.Web/Packages/Orchard.Tags/Views/Admin/Edit.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> +<%@ Import Namespace="Orchard.Tags.ViewModels"%> +<%@ Import Namespace="Orchard.Mvc.Html" %> +<% Html.Include("Header"); %> + <% Html.BeginForm(); %> + <%= Html.ValidationSummary() %> +
+

Edit a Tag

+

Information

+
    +
  1. + + + +
  2. +
  3. + +
  4. +
+
+ <% Html.EndForm(); %> +<% Html.Include("Footer"); %> \ No newline at end of file