Changing MenuItem .Text to LocalizedString

Updating comparer to avoid collapsing url and routevalue items together
Flattened the navigation admin controller to avoid using MenuItem class in editor model
HtmlEncode the text of the menu item to be displayed
Updated TheMenu templates to use .text and .hinttext properties of LocalizedString

--HG--
branch : dev
This commit is contained in:
Louis DeJardin
2011-02-26 18:29:00 -08:00
parent 10bba3b135
commit 4a4ac2ef07
16 changed files with 80 additions and 72 deletions

View File

@@ -42,7 +42,7 @@ namespace Orchard.Core.Navigation.Controllers {
model = new NavigationManagementViewModel();
if (model.MenuItemEntries == null || model.MenuItemEntries.Count() < 1)
model.MenuItemEntries = _menuService.Get().Select(CreateMenuItemEntries).OrderBy(menuPartEntry => menuPartEntry.MenuItem.Position, new FlatPositionComparer()).ToList();
model.MenuItemEntries = _menuService.Get().Select(CreateMenuItemEntries).OrderBy(menuPartEntry => menuPartEntry.Position, new FlatPositionComparer()).ToList();
// need action name as this action is referenced from another action
return View("Index", model);
@@ -58,10 +58,10 @@ namespace Orchard.Core.Navigation.Controllers {
foreach (var menuItemEntry in menuItemEntries) {
MenuPart menuPart = _menuService.Get(menuItemEntry.MenuItemId);
menuPart.MenuText = menuItemEntry.MenuItem.Text;
menuPart.MenuPosition = menuItemEntry.MenuItem.Position;
menuPart.MenuText = menuItemEntry.Text;
menuPart.MenuPosition = menuItemEntry.Position;
if (menuPart.Is<MenuItemPart>())
menuPart.As<MenuItemPart>().Url = menuItemEntry.MenuItem.Url;
menuPart.As<MenuItemPart>().Url = menuItemEntry.Url;
}
}
@@ -70,16 +70,14 @@ namespace Orchard.Core.Navigation.Controllers {
private MenuItemEntry CreateMenuItemEntries(MenuPart menuPart) {
return new MenuItemEntry {
MenuItem = new MenuItem {
Text = menuPart.MenuText,
Position = menuPart.MenuPosition,
Url = menuPart.Is<MenuItemPart>()
? menuPart.As<MenuItemPart>().Url
: _navigationManager.GetUrl(null, _services.ContentManager.GetItemMetadata(menuPart).DisplayRouteValues)
},
MenuItemId = menuPart.Id,
IsMenuItem = menuPart.Is<MenuItemPart>()
};
MenuItemId = menuPart.Id,
IsMenuItem = menuPart.Is<MenuItemPart>(),
Text = menuPart.MenuText,
Position = menuPart.MenuPosition,
Url = menuPart.Is<MenuItemPart>()
? menuPart.As<MenuItemPart>().Url
: _navigationManager.GetUrl(null, _services.ContentManager.GetItemMetadata(menuPart).DisplayRouteValues),
};
}
public ActionResult Create() {
@@ -96,7 +94,7 @@ namespace Orchard.Core.Navigation.Controllers {
if (!ModelState.IsValid) {
_services.TransactionManager.Cancel();
return Index(new NavigationManagementViewModel {NewMenuItem = model});
return Index(new NavigationManagementViewModel { NewMenuItem = model });
}
if (string.IsNullOrEmpty(menuPart.MenuPosition))

View File

@@ -1,4 +1,5 @@
using JetBrains.Annotations;
using System.Web;
using JetBrains.Annotations;
using Orchard.ContentManagement;
using Orchard.Core.Navigation.Models;
using Orchard.Localization;
@@ -23,11 +24,11 @@ namespace Orchard.Core.Navigation.Services {
if (part.Is<MenuItemPart>())
builder.Add(
menu => menu.Add(new LocalizedString(part.MenuText), part.MenuPosition, nib => nib.Url(part.As<MenuItemPart>().Url)));
menu => menu.Add(new LocalizedString(HttpUtility.HtmlEncode(part.MenuText)), part.MenuPosition, nib => nib.Url(part.As<MenuItemPart>().Url)));
else
builder.Add(
menu =>
menu.Add(new LocalizedString(part.MenuText), part.MenuPosition,
menu.Add(new LocalizedString(HttpUtility.HtmlEncode(part.MenuText)), part.MenuPosition,
nib =>
nib.Action(_contentManager.GetItemMetadata(part.ContentItem).DisplayRouteValues)));
}

View File

@@ -2,8 +2,11 @@
namespace Orchard.Core.Navigation.ViewModels {
public class MenuItemEntry {
public MenuItem MenuItem { get; set; }
public int MenuItemId { get; set; }
public bool IsMenuItem { get; set; }
public string Text { get; set; }
public string Url { get; set; }
public string Position { get; set; }
}
}

View File

@@ -26,9 +26,9 @@
foreach (var menuPartEntry in Model.MenuItemEntries) {
var i = menuPartEntryIndex;
<tr>
<td><input type="text" class="text-box" name="@Html.NameOf(m => m.MenuItemEntries[i].MenuItem.Text)" value="@menuPartEntry.MenuItem.Text" /></td>
<td><input type="text" class="text-box" name="@Html.NameOf(m => m.MenuItemEntries[i].MenuItem.Position)" value="@menuPartEntry.MenuItem.Position" /></td>
<td>@if (!menuPartEntry.IsMenuItem) {<input type="text" class="text-box disabled" disabled="disabled" value="@menuPartEntry.MenuItem.Url" /> } else {<input type="text" class="text-box" name="@Html.NameOf(m => m.MenuItemEntries[i].MenuItem.Url)" value="@menuPartEntry.MenuItem.Url" />}</td>
<td><input type="text" class="text-box" name="@Html.NameOf(m => m.MenuItemEntries[i].Text)" value="@menuPartEntry.Text" /></td>
<td><input type="text" class="text-box" name="@Html.NameOf(m => m.MenuItemEntries[i].Position)" value="@menuPartEntry.Position" /></td>
<td>@if (!menuPartEntry.IsMenuItem) {<input type="text" class="text-box disabled" disabled="disabled" value="@menuPartEntry.Url" /> } else {<input type="text" class="text-box" name="@Html.NameOf(m => m.MenuItemEntries[i].Url)" value="@menuPartEntry.Url" />}</td>
<td><input type="hidden" name="@Html.NameOf(m => m.MenuItemEntries[i].MenuItemId)" value="@menuPartEntry.MenuItemId" /><a href="@Html.AntiForgeryTokenGetUrl(Url.Action("Delete", new {id = menuPartEntry.MenuItemId}))" class="remove">@T("Remove")</a></td>
</tr>
++menuPartEntryIndex;