Adding AddCurrentPage and AddHomePage option in the navigation widget

--HG--
branch : 1.x
This commit is contained in:
Sebastien Ros
2012-06-20 16:17:35 -07:00
parent bc96982127
commit 17f35c76f8
6 changed files with 60 additions and 1 deletions

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web.Routing;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Aspects;
using Orchard.ContentManagement.Drivers;
@@ -124,7 +125,29 @@ namespace Orchard.Core.Navigation.Drivers {
menuItems = topLevelItems;
}
}
var result = new List<MenuItem>(menuItems);
// inject the home page
if(part.AddHomePage) {
result.Insert(0, new MenuItem {
Href = _navigationManager.GetUrl("~/", null),
Text = T("Home")
});
}
// inject the current page
if (!part.AddCurrentPage) {
result.RemoveAt(result.Count - 1);
}
// prevent the home page to be added as the home page and the current page
if(result.Count == 2 && String.Equals(result[0].Href, result[1].Href, StringComparison.OrdinalIgnoreCase)) {
result.RemoveAt(1);
}
menuItems = result;
menuShape.MenuName(menuName);
NavigationHelper.PopulateMenu(shapeHelper, menuShape, menuShape, menuItems);
@@ -139,6 +162,8 @@ namespace Orchard.Core.Navigation.Drivers {
StartLevel = part.StartLevel,
StopLevel = part.Levels,
Breadcrumb = part.Breadcrumb,
AddCurrentPage = part.AddCurrentPage,
AddHomePage = part.AddHomePage,
Menus = _menuService.GetMenus(),
};
@@ -153,6 +178,8 @@ namespace Orchard.Core.Navigation.Drivers {
part.StartLevel = model.StartLevel;
part.Levels = model.StopLevel;
part.Breadcrumb = model.Breadcrumb;
part.AddHomePage = model.AddHomePage;
part.AddCurrentPage = model.AddCurrentPage;
part.Menu = _contentManager.Get(model.CurrentMenuId).Record;
}

View File

@@ -43,6 +43,8 @@ namespace Orchard.Core.Navigation {
.Column<int>("StartLevel")
.Column<int>("Levels")
.Column<bool>("Breadcrumb")
.Column<bool>("AddHomePage")
.Column<bool>("AddCurrentPage")
.Column<int>("Menu_id")
);
@@ -123,6 +125,8 @@ namespace Orchard.Core.Navigation {
.Column<int>("StartLevel")
.Column<int>("Levels")
.Column<bool>("Breadcrumb")
.Column<bool>("AddHomePage")
.Column<bool>("AddCurrentPage")
.Column<int>("Menu_id")
);

View File

@@ -18,6 +18,16 @@ namespace Orchard.Core.Navigation.Models {
set { Record.Breadcrumb = value; }
}
public bool AddHomePage {
get { return Record.AddHomePage; }
set { Record.AddHomePage = value; }
}
public bool AddCurrentPage {
get { return Record.AddCurrentPage; }
set { Record.AddCurrentPage = value; }
}
public ContentItemRecord Menu {
get { return Record.Menu; }
set { Record.Menu = value; }

View File

@@ -5,6 +5,8 @@ namespace Orchard.Core.Navigation.Models {
public virtual int StartLevel { get; set; }
public virtual int Levels { get; set; }
public virtual bool Breadcrumb { get; set; }
public virtual bool AddHomePage { get; set; }
public virtual bool AddCurrentPage { get; set; }
public virtual ContentItemRecord Menu { get; set; }
}

View File

@@ -9,5 +9,7 @@ namespace Orchard.Core.Navigation.ViewModels {
public int StartLevel { get; set; }
public int StopLevel { get; set; }
public bool Breadcrumb { get; set; }
public bool AddHomePage { get; set; }
public bool AddCurrentPage { get; set; }
}
}

View File

@@ -29,3 +29,17 @@
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.Breadcrumb)">@T("Display as Breadcrumb")</label>
<span class="hint">@T("Check to render the path to the current content item.")</span>
</fieldset>
<div data-controllerid="@Html.FieldIdFor(m => m.Breadcrumb)">
<fieldset>
@Html.EditorFor(m => m.AddHomePage)
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.AddHomePage)">@T("Add the home page as the first element")</label>
<span class="hint">@T("Check to render the home page as the first element of the breadcrumb.")</span>
</fieldset>
<fieldset>
@Html.EditorFor(m => m.AddCurrentPage)
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.AddCurrentPage)">@T("Add the current content item as the last element")</label>
<span class="hint">@T("Check to render the current content item as the last element.")</span>
</fieldset>
</div>