public ActionResult Index(DemoPage currentPage)
        {
            // Andrahandsalternativ till Constructor Injection
            // var loader1 = ServiceLocator.Current.GetInstance<IContentLoader>();

            var currentPageId = currentPage.ContentLink; // ID of a page is always in ContentLink property

            var startPageId = ContentReference.StartPage;
            IEnumerable <IContent> pages = loader.GetChildren <IContent>(startPageId);

            //Tvättar bort sidor som man inte får eller kan länka till
            IEnumerable <PageData> filteredListOfPages = FilterForVisitor.Filter(pages).Cast <PageData>();

            //Tvätta bort sidor som inte ska synas i navigeringen.
            IEnumerable <PageData> listWithPagesVisibleInNavigation = filteredListOfPages.Where(p => p.VisibleInMenu == true);

            // Ladda in alla föräldrar
            var allAncestors = loader.GetAncestors(currentPageId);

            // Bygg en lista med MenuItem som view model för menyn.
            var list = new List <MenuItem>();

            foreach (var page in listWithPagesVisibleInNavigation)
            {
                var item = new MenuItem();
                item.Page   = page;
                item.Active = allAncestors.Contains(page);

                list.Add(item);
            }

            // Laddar nyheter med GetChildren
            IEnumerable <PageData> myListOfPages = new List <PageData>();

            // Hämta sidor under sidan som egenskapen IdOfParentPageToList pekar ut
            if (!ContentReference.IsNullOrEmpty(currentPage.IdOfParentPageToList))
            {
                myListOfPages = loader.GetChildren <PageData>(currentPage.IdOfParentPageToList);
            }

            // Ladda nyheter med databas sök
            PageReference startPageForSearch = new PageReference(startPageId);
            var           criterias          = new PropertyCriteriaCollection
            {
                new PropertyCriteria
                {
                    Type      = PropertyDataType.String,
                    Name      = "PageName",
                    Condition = CompareCondition.Contained,
                    Value     = "alloy"
                }
            };
            var result = query.FindPagesWithCriteria(startPageForSearch, criterias);

            var model = new DemoPageViewModel();

            model.CurrentPage             = currentPage;
            model.MainMenuList            = listWithPagesVisibleInNavigation;
            model.MainMenuListWithItems   = list;
            model.MyListOfPages           = myListOfPages;
            model.RootPageOfMyListOfPages = loader.Get <PageData>(currentPage.IdOfParentPageToList);
            model.SearchResult            = result;

            return(View(model));
        }
Beispiel #2
0
 public DemoPage(SearchableNavigationWindow window)
 {
     InitializeComponent();
     DataContext = new DemoPageViewModel(window);
 }