Exemple #1
0
        public XrcUrl BuildUrl(UriSegmentParameterList segmentParameters = null)
        {
            string currentName = BuildSegmentUrl(segmentParameters);

            XrcUrl url;
            if (ItemType == ItemType.Directory)
            {
                if (Parent == null)
                    url = new XrcUrl(currentName);
                else
                    url = Parent.BuildUrl(segmentParameters).Append(currentName);

                url = url.AppendTrailingSlash();
            }
            else if (ItemType == ItemType.PageFile)
            {
                XrcUrl parentUrl;
                if (Parent == null)
                    parentUrl = new XrcUrl("~");
                else
                    parentUrl = Parent.BuildUrl(segmentParameters);

                if (((PageFile)this).IsIndex)
                    url = parentUrl;
                else
                    url = parentUrl.Append(currentName);
            }
            else
                throw new XrcException(string.Format("BuildUrl not supported on '{0}'.", ItemType));

            return url;
        }
        public PageLocatorResult Locate(XrcUrl url)
        {
            if (url == null)
                throw new ArgumentNullException("url");

            var urlSegmentParameters = new UriSegmentParameterList();

            var matchItem = MatchItem(_pageStructure.GetRoot(), url.Path, urlSegmentParameters);

            if (matchItem == null)
                return null;

            return new PageLocatorResult(matchItem, urlSegmentParameters);
        }
        public void It_Should_be_possible_get_a_not_found_page()
        {
            var url = new XrcUrl("~/test");
            var target = CreateTarget();

            SetupUrl(url, null, null);

            Assert.AreEqual(false, target.PageExists(url));

            var page = target.GetPage(url);

            Assert.IsNull(page);

            _pageLocator.Verify(p => p.Locate(url));
        }
Exemple #4
0
        public Page(string resourceLocation, 
                    XrcUrl url,
                    PageActionList actions,
                    PageParameterList parameters,
                    ModuleDefinitionList modules,
                    UriSegmentParameterList urlSegmentsParameters,
					Configuration.IHostingConfig hostingConfig)
        {
            _actions = actions;
            _parameters = parameters;
            _modules = modules;
            _urlSegmentsParameters = urlSegmentsParameters;
            _url = url;
            _resourceLocation = resourceLocation;
            _hostingConfig = hostingConfig;
        }
        public IPage GetPage(XrcUrl url)
        {
            PageLocatorResult locatorResult = _pageLocator.Locate(url);
            if (locatorResult == null)
                return null;

            PageFile page = locatorResult.Page;
            PageDefinition pageDefinition = GetPageDefinition(page);

            SetLayout(pageDefinition, page, locatorResult.UrlSegmentsParameters);

            var pageUrl = page.BuildUrl(locatorResult.UrlSegmentsParameters);

            return new Page(page.ResourceLocation,
                            pageUrl,
                            pageDefinition.Actions,
                            pageDefinition.Parameters,
                            pageDefinition.Modules,
                            locatorResult.UrlSegmentsParameters,
                            _hostingConfig);
        }
 public bool PageExists(XrcUrl url)
 {
     throw new NotImplementedException();
 }
 public Pages.IPage GetPage(XrcUrl url)
 {
     throw new NotImplementedException();
 }
        // TODO Valutare come e se fare cache del risultato di GetPage e IsDefined anche perchè condividono parte del codice.
        // Probabilmente si può mettere in cache l'intera IPage con dipendenza al file
        public bool PageExists(XrcUrl url)
        {
            PageLocatorResult locatorResult = _pageLocator.Locate(url);

            return locatorResult != null;
        }
        private void SetupUrl(XrcUrl url, PageLocatorResult locatorResult, PageDefinition parserResult)
        {
            _pageLocator.Setup(p => p.Locate(url)).Returns(locatorResult);

            if (locatorResult != null)
                _pageParser.Setup(p => p.Parse(locatorResult.Page.ResourceLocation)).Returns(parserResult);
        }