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() %>
+
+ <% Html.EndForm(); %>
+<% Html.Include("Footer"); %>
\ No newline at end of file