Got menu items working with external packages to look for views by convention inside of their package folder.

This commit is contained in:
Shannon
2013-10-02 20:48:15 +10:00
parent 6560865f61
commit 92efd6d645
8 changed files with 90 additions and 31 deletions

View File

@@ -12,6 +12,7 @@ namespace Umbraco.Web.Trees.Menu
[DataContract(Name = "menuItems", Namespace = "")]
public class MenuItemCollection
{
private readonly string _packageFolderName;
private readonly List<MenuItem> _menuItems;
public MenuItemCollection()
@@ -24,6 +25,18 @@ namespace Umbraco.Web.Trees.Menu
_menuItems = new List<MenuItem>(items);
}
public MenuItemCollection(string packageFolderName)
: this()
{
_packageFolderName = packageFolderName;
}
public MenuItemCollection(string packageFolderName, IEnumerable<MenuItem> items)
{
_packageFolderName = packageFolderName;
_menuItems = new List<MenuItem>(items);
}
/// <summary>
/// Sets the default menu item alias to be shown when the menu is launched - this is optional and if not set then the menu will just be shown normally.
/// </summary>
@@ -50,7 +63,7 @@ namespace Umbraco.Web.Trees.Menu
DetectLegacyActionMenu(action.GetType(), item);
_menuItems.Add(item);
AddItemToCollection(item);
return item;
}
@@ -68,7 +81,7 @@ namespace Umbraco.Web.Trees.Menu
/// </summary>
public void AddMenuItem(MenuItem item)
{
_menuItems.Add(item);
AddItemToCollection(item);
}
/// <summary>
@@ -96,7 +109,7 @@ namespace Umbraco.Web.Trees.Menu
Action = item.Action
};
_menuItems.Add(customMenuItem);
AddItemToCollection(customMenuItem);
return customMenuItem;
}
@@ -139,7 +152,7 @@ namespace Umbraco.Web.Trees.Menu
var item = CreateMenuItem<T>(name, hasSeparator, additionalData);
if (item != null)
{
_menuItems.Add(item);
AddItemToCollection(item);
return item;
}
return null;
@@ -211,5 +224,18 @@ namespace Umbraco.Web.Trees.Menu
}
}
/// <summary>
/// This handles adding a menu item to the internal collection and will configure it accordingly
/// </summary>
/// <param name="menuItem"></param>
private void AddItemToCollection(MenuItem menuItem)
{
if (_packageFolderName.IsNullOrWhiteSpace() == false)
{
menuItem.SetPackageFolder(_packageFolderName);
}
_menuItems.Add(menuItem);
}
}
}