Improving absolute urls construction

This commit is contained in:
Sebastien Ros
2014-02-19 16:15:57 -08:00
parent 78c5515336
commit 8463034c47
7 changed files with 21 additions and 10 deletions

View File

@@ -7,6 +7,7 @@ using System.Xml.Linq;
using JetBrains.Annotations;
using Orchard.ContentManagement;
using Orchard.Core.Feeds.Models;
using Orchard.Mvc.Extensions;
using Orchard.Services;
using Orchard.Utility.Extensions;
@@ -45,7 +46,7 @@ namespace Orchard.Core.Feeds.StandardBuilders {
context.Response.Contextualize(requestContext => {
var urlHelper = new UrlHelper(requestContext, _routes);
var uriBuilder = new UriBuilder(urlHelper.RequestContext.HttpContext.Request.ToRootUrlString()) { Path = urlHelper.RouteUrl(inspector.Link) };
var uriBuilder = new UriBuilder(urlHelper.MakeAbsolute("/")) { Path = urlHelper.RouteUrl(inspector.Link) };
link.Add(uriBuilder.Uri.OriginalString);
guid.Add(uriBuilder.Uri.OriginalString);
});

View File

@@ -7,6 +7,7 @@ using Orchard.ContentManagement;
using Orchard.Core.Common.Models;
using Orchard.Core.Feeds.Models;
using Orchard.Core.Feeds.StandardBuilders;
using Orchard.Mvc.Extensions;
using Orchard.Services;
using Orchard.Utility.Extensions;
@@ -62,7 +63,7 @@ namespace Orchard.Core.Feeds.StandardQueries {
context.Response.Contextualize(requestContext => {
var urlHelper = new UrlHelper(requestContext);
var uriBuilder = new UriBuilder(urlHelper.RequestContext.HttpContext.Request.ToRootUrlString()) { Path = urlHelper.RouteUrl(inspector.Link) };
var uriBuilder = new UriBuilder(urlHelper.MakeAbsolute("/")) { Path = urlHelper.RouteUrl(inspector.Link) };
link.Add(uriBuilder.Uri.OriginalString);
});
}
@@ -71,7 +72,7 @@ namespace Orchard.Core.Feeds.StandardQueries {
context.Builder.AddProperty(context, null, "description", inspector.Description);
context.Response.Contextualize(requestContext => {
var urlHelper = new UrlHelper(requestContext);
context.Builder.AddProperty(context, null, "link", urlHelper.RouteUrl(inspector.Link));
context.Builder.AddProperty(context, null, "link",urlHelper.MakeAbsolute(urlHelper.RouteUrl(inspector.Link)));
});
}

View File

@@ -1,5 +1,6 @@
@model Orchard.Autoroute.ViewModels.AutoroutePartEditViewModel
@using Orchard.Autoroute
@using Orchard.Mvc.Extensions
@using Orchard.Utility.Extensions;
@using Orchard.Environment.Configuration
@@ -20,11 +21,11 @@
<fieldset class="permalink">
<label>@T("Permalink")</label>
@if (Model.Settings.AllowCustomPattern) {
<span>@ViewContext.RequestContext.HttpContext.Request.ToApplicationRootUrlString()/@urlPrefix</span>
<span>@Url.MakeAbsolute("/")@urlPrefix</span>
<span>@Html.TextBoxFor(m => m.CurrentUrl, new {@class = "text"})</span>
}
else {
<span>@ViewContext.RequestContext.HttpContext.Request.ToApplicationRootUrlString()/@urlPrefix</span>
<span>@Url.MakeAbsolute("/")@urlPrefix</span>
}
<span class="hint">@T("Save the current item and leave the input empty to have it automatically generated using the pattern {0} e.g., {1}", defaultPattern.Name, defaultPattern.Description)</span>

View File

@@ -9,6 +9,7 @@ using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Orchard.Mvc.Extensions;
using Orchard.OutputCache.Models;
using Orchard.OutputCache.Services;
using Orchard.Caching;
@@ -421,7 +422,7 @@ namespace Orchard.OutputCache.Filters {
var redirectUrl = ((RedirectResult)(filterContext.Result)).Url ;
if (!VirtualPathUtility.IsAbsolute(redirectUrl)) {
var applicationRoot = filterContext.HttpContext.Request.ToRootUrlString();
var applicationRoot = new UrlHelper(filterContext.HttpContext.Request.RequestContext).MakeAbsolute("/");
if (redirectUrl.StartsWith(applicationRoot, StringComparison.OrdinalIgnoreCase)) {
redirectUrl = redirectUrl.Substring(applicationRoot.Length);
}
@@ -515,7 +516,7 @@ namespace Orchard.OutputCache.Filters {
private string ComputeCacheKey(ControllerContext controllerContext, IEnumerable<KeyValuePair<string, object>> parameters) {
var url = controllerContext.HttpContext.Request.RawUrl;
if (!VirtualPathUtility.IsAbsolute(url)) {
var applicationRoot = controllerContext.HttpContext.Request.ToRootUrlString();
var applicationRoot = new UrlHelper(controllerContext.HttpContext.Request.RequestContext).MakeAbsolute("/");
if (url.StartsWith(applicationRoot, StringComparison.OrdinalIgnoreCase)) {
url = url.Substring(applicationRoot.Length);
}

View File

@@ -7,6 +7,7 @@ using Orchard.ContentManagement;
using Orchard.Core.Feeds;
using Orchard.Core.Feeds.Models;
using Orchard.Core.Feeds.StandardBuilders;
using Orchard.Mvc.Extensions;
using Orchard.Projections.Models;
using Orchard.Projections.Services;
using Orchard.Services;
@@ -63,7 +64,7 @@ namespace Orchard.Projections.StandardQueries {
context.Response.Contextualize(requestContext => {
var urlHelper = new UrlHelper(requestContext);
var uriBuilder = new UriBuilder(urlHelper.RequestContext.HttpContext.Request.ToRootUrlString()) { Path = urlHelper.RouteUrl(inspector.Link) };
var uriBuilder = new UriBuilder(urlHelper.MakeAbsolute("/")) { Path = urlHelper.RouteUrl(inspector.Link) };
link.Add(uriBuilder.Uri.OriginalString);
});
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Web.Mvc;
using System.Xml.Linq;
using Orchard.Mvc.Extensions;
using Orchard.Taxonomies.Models;
using Orchard.Taxonomies.Services;
using JetBrains.Annotations;
@@ -55,7 +56,7 @@ namespace Orchard.Taxonomies.StandardQueries {
context.Response.Contextualize(requestContext => {
var urlHelper = new UrlHelper(requestContext);
var uriBuilder = new UriBuilder(urlHelper.RequestContext.HttpContext.Request.ToRootUrlString()) { Path = urlHelper.RouteUrl(inspector.Link) };
var uriBuilder = new UriBuilder(urlHelper.MakeAbsolute("/")) { Path = urlHelper.RouteUrl(inspector.Link) };
link.Add(uriBuilder.Uri.OriginalString);
});
}

View File

@@ -30,7 +30,12 @@ namespace Orchard.Mvc.Extensions {
}
if(String.IsNullOrEmpty(baseUrl)) {
baseUrl = urlHelper.RequestContext.HttpContext.Request.ToApplicationRootUrlString();
var workContextAccessor = urlHelper.RequestContext.GetWorkContext();
baseUrl = workContextAccessor.CurrentSite.BaseUrl;
if (String.IsNullOrWhiteSpace(baseUrl)) {
baseUrl = urlHelper.RequestContext.HttpContext.Request.ToApplicationRootUrlString();
}
}
if(String.IsNullOrEmpty(url)) {