Exemple #1
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var request = httpContext.Request;

            if (request.Path.ContainsUpper() || request.Url.Host.ContainsUpper())
            {
                var builder = new UriBuilder(request.Url)
                {
                    Path = request.Path.ToLowerInvariant(),
                    Host = request.Url.Host.ToLowerInvariant()
                };
                var destinationUrl = builder.Uri.ToString();
                var routeData      = routeUtilities.CreateRouteData(this);
                return(routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext));
            }
            return(null);
        }
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var request = httpContext.Request;
            //if (!request.Path.EndsWith("/"))
            //{
            //    var builder = new UriBuilder(request.Url)
            //    {
            //        Path = request.Path + "/"
            //    };
            //    var destinationUrl = builder.Uri.ToString();
            //    var routeData = routeUtilities.CreateRouteData(this);
            //    return routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext);
            //}

            string destinationUrl = string.Empty;

            // NOTE: It is more user friendly (although technically incorrect) to
            // remove the trailing slash than to add it. This also means less characters
            // to work with, so it is more efficient too.
            if (request.Path.Length > 1 && request.Path.EndsWith("/"))
            {
                var builder = new UriBuilder(request.Url)
                {
                    Path = request.Path.Substring(0, request.Path.Length - 1)
                };
                destinationUrl = builder.Uri.ToString();
            }
            else if (request.Path.Length == 0)
            {
                // Home page is a special case - always use a trailing slash
                var builder = new UriBuilder(request.Url)
                {
                    Path = "/"
                };
                destinationUrl = builder.Uri.ToString();
            }
            if (!string.IsNullOrEmpty(destinationUrl))
            {
                var routeData = routeUtilities.CreateRouteData(this);
                return(routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext));
            }
            return(null);
        }
Exemple #3
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var tenant = appContext.CurrentTenant;
            var url    = httpContext.Request.Url;

            // Get the culture name
            var cultureName = contextUtilities.GetCultureNameFromUrl(url).ToLowerInvariant();

            if (this.IsDefaultUICulture(cultureName, tenant))
            {
                var request = httpContext.Request;
                var builder = new UriBuilder(request.Url)
                {
                    Path = request.Path.Substring(cultureName.Length + 1)
                };
                var destinationUrl = builder.Uri.ToString();
                var routeData      = routeUtilities.CreateRouteData(this);
                return(routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext));
            }
            return(null);
        }
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            RouteData result   = null;
            var       tenant   = appContext.CurrentTenant;
            var       localeId = appContext.CurrentLocaleId;

            if (tenant.TenantType == TenantTypeEnum.Store)
            {
                // Get all of the pages
                var path       = httpContext.Request.Path;
                var pathLength = path.Length;

                var page = routeUrlProductListFactory
                           .GetRouteUrlProductList(tenant.Id)
                           .Where(x => x.UrlPath.Length.Equals(pathLength))
                           .Where(x => x.UrlPath.Equals(path))
                           .FirstOrDefault();

                if (page != null)
                {
                    result = routeUtilities.CreateRouteData(this);

                    routeUtilities.AddQueryStringParametersToRouteData(result, httpContext);

                    // TODO: Add area for different tenant types
                    result.Values["controller"] = "Product";
                    result.Values["action"]     = "Details";
                    result.Values["localeId"]   = localeId;
                    //result.Values["id"] = page.ProductXTenantLocaleId;

                    // TODO: May need a compound key here (ProductXTenantLocaleID and
                    // CategoryId) to allow product to be hosted on pages that are not
                    // below categories.
                    result.Values["id"] = page.CategoryXProductId;
                }
            }
            return(result);
        }
Exemple #5
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            RouteData result   = null;
            var       tenant   = appContext.CurrentTenant;
            var       localeId = appContext.CurrentLocaleId;

            // Get all of the pages
            var path       = httpContext.Request.Path;
            var pathLength = path.Length;

            var page = routeUrlPageListFactory
                       .GetRouteUrlPageList(tenant.Id)
                       .Where(x => x.UrlPath.Length.Equals(pathLength))
                       .Where(x => x.UrlPath.Equals(path))
                       .FirstOrDefault();

            if (page != null)
            {
                result = routeUtilities.CreateRouteData(this);

                routeUtilities.AddQueryStringParametersToRouteData(result, httpContext);

                // TODO: Add area for different tenant types
                result.Values["controller"] = page.ContentType.ToString();
                result.Values["localeId"]   = localeId;
                if (!page.ContentId.Equals(Guid.Empty))
                {
                    result.Values["action"] = "Details";
                    result.Values["id"]     = page.ContentId;
                }
                else
                {
                    result.Values["action"] = "Index";
                }
            }
            return(result);
        }