mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-11-24 16:53:10 +08:00
Merge pull request #6050 from Codinlab/fixes/6023
Fixes #6023 : Ellipsize can spilt an HTML encoded character
This commit is contained in:
@@ -193,5 +193,35 @@ namespace Orchard.Tests.Mvc.Html {
|
||||
Assert.AreEqual(@"<label for=""prefix_SomeString"">bar</label>", result.ToString());
|
||||
}
|
||||
private class FooController : Controller { }
|
||||
|
||||
[Test]
|
||||
public void Ellipsize_DontCutHtmlEncodedChars() {
|
||||
//arrange
|
||||
var viewContext = new ViewContext();
|
||||
var viewDataContainer = new Mock<IViewDataContainer>();
|
||||
var html = new HtmlHelper(viewContext, viewDataContainer.Object);
|
||||
|
||||
//act
|
||||
var result = html.Ellipsize("foo & bar", 5);
|
||||
|
||||
//assert
|
||||
Assert.AreEqual("foo & \u2026", result.ToString());
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Excerpt_DontCutHtmlEncodedChars() {
|
||||
//arrange
|
||||
var viewContext = new ViewContext();
|
||||
var viewDataContainer = new Mock<IViewDataContainer>();
|
||||
var html = new HtmlHelper(viewContext, viewDataContainer.Object);
|
||||
|
||||
//act
|
||||
var result = html.Excerpt("<p>foo & bar</p>", 7);
|
||||
|
||||
//assert
|
||||
Assert.AreEqual("foo & \u2026", result.ToString());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace Orchard.Tests.Utility.Extensions {
|
||||
[Test]
|
||||
public void Ellipsize_LongStringTruncatedToNearestWord() {
|
||||
const string toEllipsize = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed purus quis purus orci aliquam.";
|
||||
Assert.That(toEllipsize.Ellipsize(46), Is.StringMatching("Lorem ipsum dolor sit amet, consectetur …"));
|
||||
Assert.That(toEllipsize.Ellipsize(46), Is.StringMatching("Lorem ipsum dolor sit amet, consectetur\u00A0\u2026"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -175,11 +175,11 @@ namespace Orchard.Mvc.Html {
|
||||
#region Ellipsize
|
||||
|
||||
public static IHtmlString Ellipsize(this HtmlHelper htmlHelper, string text, int characterCount) {
|
||||
return new HtmlString(htmlHelper.Encode(text).Ellipsize(characterCount));
|
||||
return new HtmlString(htmlHelper.Encode(text.Ellipsize(characterCount)));
|
||||
}
|
||||
|
||||
public static IHtmlString Ellipsize(this HtmlHelper htmlHelper, string text, int characterCount, string ellipsis) {
|
||||
return new HtmlString(htmlHelper.Encode(text).Ellipsize(characterCount, ellipsis));
|
||||
return new HtmlString(htmlHelper.Encode(text.Ellipsize(characterCount, ellipsis)));
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -187,8 +187,7 @@ namespace Orchard.Mvc.Html {
|
||||
#region Excerpt
|
||||
|
||||
public static MvcHtmlString Excerpt(this HtmlHelper html, string markup, int length) {
|
||||
|
||||
return MvcHtmlString.Create(markup.RemoveTags().Ellipsize(length));
|
||||
return MvcHtmlString.Create(html.Encode(HttpUtility.HtmlDecode(markup.RemoveTags()).Ellipsize(length)));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Orchard.Utility.Extensions {
|
||||
}
|
||||
|
||||
public static string Ellipsize(this string text, int characterCount) {
|
||||
return text.Ellipsize(characterCount, " …");
|
||||
return text.Ellipsize(characterCount, "\u00A0\u2026");
|
||||
}
|
||||
|
||||
public static string Ellipsize(this string text, int characterCount, string ellipsis, bool wordBoundary = false) {
|
||||
|
||||
Reference in New Issue
Block a user