mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-22 20:13:50 +08:00
Some menu and navigation cleanup
--HG-- branch : dev
This commit is contained in:
@@ -22,19 +22,14 @@ namespace Orchard.Core.Navigation.Services {
|
|||||||
MenuPart part = menuPart;
|
MenuPart part = menuPart;
|
||||||
|
|
||||||
if (part.Is<MenuItem>())
|
if (part.Is<MenuItem>())
|
||||||
builder.Add(menu => menu.Add(part.MenuText, part.MenuPosition, part.As<MenuItem>().Url));
|
builder.Add(
|
||||||
|
menu => menu.Add(part.MenuText, part.MenuPosition, nib => nib.Url(part.As<MenuItem>().Url)));
|
||||||
else
|
else
|
||||||
builder.Add(
|
builder.Add(
|
||||||
menu =>
|
menu =>
|
||||||
menu.Add(part.MenuText, part.MenuPosition,
|
menu.Add(part.MenuText, part.MenuPosition,
|
||||||
nib =>
|
nib =>
|
||||||
nib.Action(
|
nib.Action(_contentManager.GetItemMetadata(part.ContentItem).DisplayRouteValues)));
|
||||||
part.ContentItem.ContentManager.GetItemMetadata(part.ContentItem).
|
|
||||||
DisplayRouteValues["action"] as string,
|
|
||||||
part.ContentItem.ContentManager.GetItemMetadata(part.ContentItem).
|
|
||||||
DisplayRouteValues["controller"] as string,
|
|
||||||
part.ContentItem.ContentManager.GetItemMetadata(part.ContentItem).
|
|
||||||
DisplayRouteValues)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -7,6 +7,9 @@ namespace Orchard.UI.Navigation {
|
|||||||
if (!string.Equals(x.Text, y.Text)) {
|
if (!string.Equals(x.Text, y.Text)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!string.Equals(x.Url, y.Url)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (x.RouteValues != null || y.RouteValues != null) {
|
if (x.RouteValues != null || y.RouteValues != null) {
|
||||||
if (x.RouteValues == null || y.RouteValues == null) {
|
if (x.RouteValues == null || y.RouteValues == null) {
|
||||||
return false;
|
return false;
|
||||||
@@ -32,6 +35,9 @@ namespace Orchard.UI.Navigation {
|
|||||||
if (obj.Text != null) {
|
if (obj.Text != null) {
|
||||||
hash ^= obj.Text.GetHashCode();
|
hash ^= obj.Text.GetHashCode();
|
||||||
}
|
}
|
||||||
|
if (obj.Url != null) {
|
||||||
|
hash ^= obj.Url.GetHashCode();
|
||||||
|
}
|
||||||
if (obj.RouteValues != null) {
|
if (obj.RouteValues != null) {
|
||||||
foreach (var item in obj.RouteValues) {
|
foreach (var item in obj.RouteValues) {
|
||||||
hash ^= item.Key.GetHashCode() ^ item.Value.GetHashCode();
|
hash ^= item.Key.GetHashCode() ^ item.Value.GetHashCode();
|
||||||
|
@@ -8,7 +8,7 @@ namespace Orchard.UI.Navigation {
|
|||||||
public class NavigationBuilder {
|
public class NavigationBuilder {
|
||||||
IEnumerable<MenuItem> Contained { get; set; }
|
IEnumerable<MenuItem> Contained { get; set; }
|
||||||
|
|
||||||
public NavigationBuilder Add(string caption, string position, string url, Action<NavigationItemBuilder> itemBuilder) {
|
public NavigationBuilder Add(string caption, string position, Action<NavigationItemBuilder> itemBuilder) {
|
||||||
var childBuilder = new NavigationItemBuilder();
|
var childBuilder = new NavigationItemBuilder();
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(caption))
|
if (!string.IsNullOrEmpty(caption))
|
||||||
@@ -17,31 +17,22 @@ namespace Orchard.UI.Navigation {
|
|||||||
if (!string.IsNullOrEmpty(position))
|
if (!string.IsNullOrEmpty(position))
|
||||||
childBuilder.Position(position);
|
childBuilder.Position(position);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(url))
|
|
||||||
childBuilder.Url(url);
|
|
||||||
|
|
||||||
itemBuilder(childBuilder);
|
itemBuilder(childBuilder);
|
||||||
Contained = (Contained ?? Enumerable.Empty<MenuItem>()).Concat(childBuilder.Build());
|
Contained = (Contained ?? Enumerable.Empty<MenuItem>()).Concat(childBuilder.Build());
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NavigationBuilder Add(string caption, string position, Action<NavigationItemBuilder> itemBuilder) {
|
|
||||||
return Add(caption, position, null, itemBuilder);
|
|
||||||
}
|
|
||||||
public NavigationBuilder Add(string caption, Action<NavigationItemBuilder> itemBuilder) {
|
public NavigationBuilder Add(string caption, Action<NavigationItemBuilder> itemBuilder) {
|
||||||
return Add(caption, null, null, itemBuilder);
|
return Add(caption, null, itemBuilder);
|
||||||
}
|
}
|
||||||
public NavigationBuilder Add(Action<NavigationItemBuilder> itemBuilder) {
|
public NavigationBuilder Add(Action<NavigationItemBuilder> itemBuilder) {
|
||||||
return Add(null, null, null, itemBuilder);
|
return Add(null, null, itemBuilder);
|
||||||
}
|
|
||||||
public NavigationBuilder Add(string caption, string position, string url) {
|
|
||||||
return Add(caption, position, url, x=> { });
|
|
||||||
}
|
}
|
||||||
public NavigationBuilder Add(string caption, string position) {
|
public NavigationBuilder Add(string caption, string position) {
|
||||||
return Add(caption, position, null, x=> { });
|
return Add(caption, position, x=> { });
|
||||||
}
|
}
|
||||||
public NavigationBuilder Add(string caption) {
|
public NavigationBuilder Add(string caption) {
|
||||||
return Add(caption, null, null, x => { });
|
return Add(caption, null, x => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<MenuItem> Build() {
|
public IEnumerable<MenuItem> Build() {
|
||||||
@@ -81,6 +72,12 @@ namespace Orchard.UI.Navigation {
|
|||||||
return new[] { _item };
|
return new[] { _item };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NavigationItemBuilder Action(RouteValueDictionary values) {
|
||||||
|
return values != null
|
||||||
|
? Action(values["action"] as string, values["controller"] as string, values)
|
||||||
|
: Action(null, null, new RouteValueDictionary());
|
||||||
|
}
|
||||||
|
|
||||||
public NavigationItemBuilder Action(string actionName) {
|
public NavigationItemBuilder Action(string actionName) {
|
||||||
return Action(actionName, null, new RouteValueDictionary());
|
return Action(actionName, null, new RouteValueDictionary());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user