コード例 #1
0
        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            VirtualPathData   result = null;
            IRouteUrlPageInfo page   = null;
            var tenant = appContext.CurrentTenant;

            // Get all of the pages
            var pages = routeUrlPageListFactory.GetRouteUrlPageList(tenant.Id);

            if (TryFindMatch(pages, values, out page))
            {
                result = routeUtilities.CreateVirtualPathData(this, page.VirtualPath);
            }

            return(result);
        }
コード例 #2
0
        private bool TryFindMatch(IEnumerable<IRouteUrlPageInfo> pages, RouteValueDictionary values, out IRouteUrlPageInfo page)
        {
            page = null;
            Guid contentId = Guid.Empty;

            var action = Convert.ToString(values["action"]);
            var controller = Convert.ToString(values["controller"]);
            var localeId = (int?)values["localeId"];

            if (localeId == null)
            {
                return false;
            }

            if (!Guid.TryParse(Convert.ToString(values["id"]), out contentId))
            {
                // TODO: Make home page based on tenant/area

                // Special case for homepage
                if (action == "Index" && controller == "Home")
                {
                    page = pages
                        .Where(x => x.ContentType == ContentTypeEnum.Home)
                        .Where(x => x.LocaleId.Equals(localeId))
                        .FirstOrDefault();

                    if (page != null)
                    {
                        return true;
                    }
                }
            }

            if (action == "Details")
            {
                page = pages
                    .Where(x => x.ContentId.Equals(contentId) &&
                        x.ContentType.ToString().Equals(controller, StringComparison.InvariantCultureIgnoreCase))
                    .Where(x => x.LocaleId.Equals(localeId))
                    .FirstOrDefault();

                if (page != null)
                {
                    return true;
                }
            }
            return false;
        }
コード例 #3
0
        private bool TryFindMatch(IEnumerable <IRouteUrlPageInfo> pages, RouteValueDictionary values, out IRouteUrlPageInfo page)
        {
            page = null;
            Guid contentId = Guid.Empty;

            var action     = Convert.ToString(values["action"]);
            var controller = Convert.ToString(values["controller"]);
            var localeId   = (int?)values["localeId"];

            if (localeId == null)
            {
                return(false);
            }

            if (!Guid.TryParse(Convert.ToString(values["id"]), out contentId))
            {
                // TODO: Make home page based on tenant/area

                // Special case for homepage
                if (action == "Index" && controller == "Home")
                {
                    page = pages
                           .Where(x => x.ContentType == ContentTypeEnum.Home)
                           .Where(x => x.LocaleId.Equals(localeId))
                           .FirstOrDefault();

                    if (page != null)
                    {
                        return(true);
                    }
                }
            }

            if (action == "Details")
            {
                page = pages
                       .Where(x => x.ContentId.Equals(contentId) &&
                              x.ContentType.ToString().Equals(controller, StringComparison.InvariantCultureIgnoreCase))
                       .Where(x => x.LocaleId.Equals(localeId))
                       .FirstOrDefault();

                if (page != null)
                {
                    return(true);
                }
            }
            return(false);
        }