/// <summary>
        /// Gets the navigation menu.
        /// </summary>
        /// <returns></returns>
        public static PartialNavigationMenuModel GetNavigationMenu(ICorePrincipal user, NavigationMenuWidget widget)
        {
            var pageService = ServiceLocator.Current.GetInstance<IPageService>();
            var pages = pageService.GetAllowedPagesByOperation(user, (int)PageOperations.View).OrderBy(page => page.OrderNumber);
          
            var menuItems = new List<PartialNavigationMenuItemModel>();

            List<PartialNavigationMenuItemModel> items = pages.Select(page => new PartialNavigationMenuItemModel
            {
                Page = page
            }).ToList();

            foreach (var item in items)
            {
                if (item.Page.ParentPageId == null)
                {
                    item.Children = Flatten(item, items, 2);
                    menuItems.Add(item);
                }
            }

            return new PartialNavigationMenuModel
            {
                MenuItems = menuItems,
                WidgetId = widget.Id,
                Orientation = widget.Orientation
            };
        }
        public virtual ActionResult EditWidget(ICoreWidgetInstance instance)
        {
            if (instance != null)
            {
                var widget = new NavigationMenuWidget();

                if (instance.InstanceId != null)
                {
                    var widgetService = ServiceLocator.Current.GetInstance<INavigationMenuWidgetService>();
                    var existingWidget = widgetService.Find((long)instance.InstanceId);

                    if (existingWidget != null)
                        widget = existingWidget;
                }
                return PartialView(new NavigationMenuWidgetModel().MapFrom(widget));
            }

            return Content(String.Empty);
        }