From 4bd6fbb866e499c2446f39c940aace7b3e4c6d8d Mon Sep 17 00:00:00 2001 From: Phil Haack Date: Thu, 10 Jun 2010 00:07:26 -0700 Subject: [PATCH] Updated UnorderedList to return IHtmlString and changed the relevant <%= blocks to <%: --HG-- branch : dev --- .../Mvc/Html/HtmlHelperExtensionsTests.cs | 27 +++++++++++++++++++ .../Core/Contents/Views/Item/Display.aspx | 2 +- .../Core/Contents/Views/Item/Preview.aspx | 2 +- .../Core/Routable/Views/Item/Display.aspx | 2 +- .../Core/Settings/Views/Admin/Culture.ascx | 2 +- .../Modules/Orchard.Blogs/Views/Archives.ascx | 4 +-- .../Orchard.Blogs/Views/Blog/Item.ascx | 2 +- .../Orchard.Blogs/Views/Blog/List.ascx | 2 +- .../Orchard.Blogs/Views/BlogAdmin/Item.ascx | 2 +- .../Orchard.Blogs/Views/BlogAdmin/List.ascx | 2 +- .../Orchard.Blogs/Views/BlogPost/Item.ascx | 2 +- .../Views/BlogPost/ListByArchive.ascx | 2 +- .../Parts/Blogs.BlogPost.List.ascx | 2 +- .../Views/Content/Details.aspx | 2 +- .../Orchard.Modules/Views/Admin/Features.ascx | 2 +- .../Views/Admin/Index.ascx | 2 +- .../Orchard.Pages/Views/Page/Item.ascx | 2 +- .../Orchard.Sandbox/Views/Page/Index.aspx | 2 +- .../Orchard.Sandbox/Views/Page/Show.aspx | 2 +- .../Orchard.Search/Views/Search/Index.ascx | 2 +- .../Orchard.Tags/Views/Home/Index.ascx | 2 +- .../Orchard.Tags/Views/Home/Search.ascx | 2 +- .../Parts/Blogs.BlogPost.List.ascx | 2 +- .../Parts/Blogs.BlogPost.List.ascx | 2 +- .../Items/Blogs.BlogPost.ListByArchive.ascx | 2 +- .../Parts/Blogs.BlogPost.List.ascx | 2 +- .../Items/Blogs.BlogPost.ListByArchive.ascx | 2 +- .../Parts/Blogs.BlogPost.List.ascx | 2 +- .../Themes/Green/Views/Archives.ascx | 4 +-- src/Orchard/Mvc/Html/HtmlHelperExtensions.cs | 10 +++---- 30 files changed, 62 insertions(+), 35 deletions(-) diff --git a/src/Orchard.Tests/Mvc/Html/HtmlHelperExtensionsTests.cs b/src/Orchard.Tests/Mvc/Html/HtmlHelperExtensionsTests.cs index fbaca012f..a2e757f5e 100644 --- a/src/Orchard.Tests/Mvc/Html/HtmlHelperExtensionsTests.cs +++ b/src/Orchard.Tests/Mvc/Html/HtmlHelperExtensionsTests.cs @@ -3,6 +3,7 @@ using System.Web.Mvc; using Moq; using NUnit.Framework; using Orchard.Mvc.Html; +using System.Collections.Generic; namespace Orchard.Tests.Mvc.Html { [TestFixture] @@ -133,6 +134,32 @@ namespace Orchard.Tests.Mvc.Html { Assert.AreEqual(@"", result.ToString()); } + [Test] + public void UnorderedListWithNullItemsReturnsEmptyHtmlString() { + //arrange + var viewContext = new ViewContext(); + var viewDataContainer = new Mock(); + var html = new HtmlHelper(viewContext, viewDataContainer.Object); + //act + var result = html.UnorderedList((IEnumerable)null, (a, b) => "", "test"); + + //assert + Assert.AreEqual(string.Empty, result.ToString()); + } + + [Test] + public void UnorderedListWithEmptyItemsReturnsEmptyHtmlString() { + //arrange + var viewContext = new ViewContext(); + var viewDataContainer = new Mock(); + var html = new HtmlHelper(viewContext, viewDataContainer.Object); + + //act + var result = html.UnorderedList(new string[]{}, (a, b) => "", "test"); + + //assert + Assert.AreEqual(string.Empty, result.ToString()); + } } } diff --git a/src/Orchard.Web/Core/Contents/Views/Item/Display.aspx b/src/Orchard.Web/Core/Contents/Views/Item/Display.aspx index 2eb28576d..0b4fe2b12 100644 --- a/src/Orchard.Web/Core/Contents/Views/Item/Display.aspx +++ b/src/Orchard.Web/Core/Contents/Views/Item/Display.aspx @@ -1,5 +1,5 @@ <%@ Page Language="C#" Inherits="Orchard.Mvc.ViewPage" %>
- <%=Html.DisplayForItem(m=>m.Content) %> + <%: Html.DisplayForItem(m=>m.Content) %>
diff --git a/src/Orchard.Web/Core/Contents/Views/Item/Preview.aspx b/src/Orchard.Web/Core/Contents/Views/Item/Preview.aspx index 9bb5300af..31d9c2274 100644 --- a/src/Orchard.Web/Core/Contents/Views/Item/Preview.aspx +++ b/src/Orchard.Web/Core/Contents/Views/Item/Preview.aspx @@ -1,3 +1,3 @@ <%@ Page Language="C#" Inherits="Orchard.Mvc.ViewPage" %> -<%=Html.DisplayForItem(m=>m.Content) %> +<%: Html.DisplayForItem(m=>m.Content) %> diff --git a/src/Orchard.Web/Core/Routable/Views/Item/Display.aspx b/src/Orchard.Web/Core/Routable/Views/Item/Display.aspx index c4878ad6d..6754283e7 100644 --- a/src/Orchard.Web/Core/Routable/Views/Item/Display.aspx +++ b/src/Orchard.Web/Core/Routable/Views/Item/Display.aspx @@ -1,3 +1,3 @@ <%@ Page Language="C#" Inherits="Orchard.Mvc.ViewPage" %> <% Html.AddTitleParts(Model.Routable.Item.Title); %> -<%=Html.DisplayForItem(m=>m.Routable) %> +<%: Html.DisplayForItem(m=>m.Routable) %> diff --git a/src/Orchard.Web/Core/Settings/Views/Admin/Culture.ascx b/src/Orchard.Web/Core/Settings/Views/Admin/Culture.ascx index 452c8091e..05917dcd7 100644 --- a/src/Orchard.Web/Core/Settings/Views/Admin/Culture.ascx +++ b/src/Orchard.Web/Core/Settings/Views/Admin/Culture.ascx @@ -3,7 +3,7 @@ Html.RegisterStyle("admin.css"); %>

<%:Html.TitleForPage(T("Manage Settings").ToString()) %>

<%:T("Cultures this site supports") %>

-<%=Html.UnorderedList( +<%: Html.UnorderedList( Model.SiteCultures.OrderBy(s => s), (s, i) => Html.DisplayFor(scvm => s, s == Model.CurrentCulture ? "CurrentCulture" : "RemovableCulture", "").ToString(), "site-cultures", "culture", "odd")%> diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Archives.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Archives.ascx index eb1be4679..fffbadd17 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Archives.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Archives.ascx @@ -23,13 +23,13 @@ <% } %> <% } else { %> - <%=Html.UnorderedList(Model.Archives, (t, i) => Html.Link(string.Format("{0:MMMM yyyy} ({1})", t.Key.ToDateTime(), t.Value), Url.BlogArchiveMonth(Model.Blog.Slug, t.Key.Year, t.Key.Month)), "archiveMonthList") %><% + <%: Html.UnorderedList(Model.Archives, (t, i) => Html.Link(string.Format("{0:MMMM yyyy} ({1})", t.Key.ToDateTime(), t.Value), Url.BlogArchiveMonth(Model.Blog.Slug, t.Key.Year, t.Key.Month)), "archiveMonthList") %><% } } else { %> diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/Item.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/Item.ascx index 56566178e..07c0d4fea 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/Item.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/Item.ascx @@ -1,3 +1,3 @@ <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> <%@ Import Namespace="Orchard.Blogs.ViewModels"%> -<%=Html.DisplayForItem(m => m.Blog) %> \ No newline at end of file +<%: Html.DisplayForItem(m => m.Blog) %> diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/List.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/List.ascx index cdf3f1172..144186f1e 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/List.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Blog/List.ascx @@ -1,7 +1,7 @@ <%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> <%@ Import Namespace="Orchard.Blogs.ViewModels"%> <%if (Model.Blogs.Count() > 0) { %> -<%=Html.UnorderedList(Model.Blogs, (b, i) => Html.DisplayForItem(b).ToHtmlString(), "blogs contentItems") %><% +<%: Html.UnorderedList(Model.Blogs, (b, i) => Html.DisplayForItem(b).ToHtmlString(), "blogs contentItems") %><% } else { %>

<%: T("No blogs found.") %>

<% diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Item.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Item.ascx index 1eafe5956..d5c557676 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Item.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Item.ascx @@ -1,4 +1,4 @@ <%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> <%@ Import Namespace="Orchard.Blogs.ViewModels"%> <% Html.AddTitleParts(T("Manage Blog").ToString()); %> -<%=Html.DisplayForItem(m => m.Blog) %> \ No newline at end of file +<%: Html.DisplayForItem(m => m.Blog) %> \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx index 7d4955817..8e6782583 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx @@ -5,7 +5,7 @@ <%-- todo: Add helper text here when ready.

<%: T("Possible text about setting up and managing a blog goes here.") %>

--%><% if (Model.Entries.Count() > 0) { %> -<%=Html.UnorderedList(Model.Entries, (entry, i) => { +<%: Html.UnorderedList(Model.Entries, (entry, i) => { // Add blog post count rendering into "meta" zone entry.ContentItemViewModel.Zones.AddAction("meta", html => { int draftCount = entry.TotalPostCount - entry.ContentItemViewModel.Item.PostCount; diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/Item.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/Item.ascx index a82ec30e9..f98896342 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/Item.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/Item.ascx @@ -1,4 +1,4 @@ <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> <%@ Import Namespace="Orchard.Blogs.ViewModels"%> <% Html.AddTitleParts(Model.Blog.Name); %> -<%=Html.DisplayForItem(m => m.BlogPost) %> \ No newline at end of file +<%: Html.DisplayForItem(m => m.BlogPost) %> diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/ListByArchive.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/ListByArchive.ascx index 1ef870044..1166d49d9 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/ListByArchive.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogPost/ListByArchive.ascx @@ -11,4 +11,4 @@ %> -<%=Html.UnorderedList(Model.BlogPosts, (c, i) => Html.DisplayForItem(c).ToHtmlString(), "blogPosts contentItems")%> \ No newline at end of file +<%: Html.UnorderedList(Model.BlogPosts, (c, i) => Html.DisplayForItem(c).ToHtmlString(), "blogPosts contentItems")%> diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx index cf95ecd8e..ce21cbb85 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx @@ -1,5 +1,5 @@ <%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl>>" %> <%@ Import Namespace="Orchard.Mvc.ViewModels"%> <%@ Import Namespace="Orchard.Blogs.Models"%> -<%=Html.UnorderedList(Model, (bp, i) => Html.DisplayForItem(bp).ToHtmlString(), "blogPosts contentItems") %> +<%: Html.UnorderedList(Model, (bp, i) => Html.DisplayForItem(bp).ToHtmlString(), "blogPosts contentItems") %> <% if (Model.Count() < 1) { %>
<%: T("There are no posts for this blog.") %>
<% } %> diff --git a/src/Orchard.Web/Modules/Orchard.DevTools/Views/Content/Details.aspx b/src/Orchard.Web/Modules/Orchard.DevTools/Views/Content/Details.aspx index 9d2e87d1d..2d1da670f 100644 --- a/src/Orchard.Web/Modules/Orchard.DevTools/Views/Content/Details.aspx +++ b/src/Orchard.Web/Modules/Orchard.DevTools/Views/Content/Details.aspx @@ -79,7 +79,7 @@ Zone:<%: display.ZoneName ?? "(null)" %> Position:<%: display.Position ?? "(null)" %>
- <%=Html.DisplayFor(x => display.Model, display.TemplateName, display.Prefix)%> + <%: Html.DisplayFor(x => display.Model, display.TemplateName, display.Prefix)%>
<% diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.ascx b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.ascx index 8a9dd5acb..42c12be5b 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.ascx +++ b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.ascx @@ -41,7 +41,7 @@ if (feature.Descriptor.Dependencies != null) { %>

<%: T("Depends on:")%>

- <%=Html.UnorderedList( + <%: Html.UnorderedList( feature.Descriptor.Dependencies.OrderBy(s => s), (s, i) => Html.Link(s, string.Format("#{0}", s.AsFeatureId(n => T(n)))), "", diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.ascx index 2a3b95c4f..9856b9d22 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.ascx +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.ascx @@ -17,7 +17,7 @@ -<%=Html.UnorderedList(Model.BlogPosts, (c, i) => Html.DisplayForItem(c).ToHtmlString(), "blogPosts contentItems")%> \ No newline at end of file +<%: Html.UnorderedList(Model.BlogPosts, (c, i) => Html.DisplayForItem(c).ToHtmlString(), "blogPosts contentItems")%> diff --git a/src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx b/src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx index d13c29631..89d7c5ba6 100644 --- a/src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx +++ b/src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx @@ -2,5 +2,5 @@ <%@ Import Namespace="Orchard.Mvc.ViewModels"%> <%@ Import Namespace="Orchard.Blogs.Models"%> -<%=Html.UnorderedList(Model, (bp, i) => Html.DisplayForItem(bp).ToHtmlString(), "blogPosts contentItems") %> +<%: Html.UnorderedList(Model, (bp, i) => Html.DisplayForItem(bp).ToHtmlString(), "blogPosts contentItems") %> <% if (Model.Count() < 1) { %>

<%: T("There are no posts for this blog.") %>

<% } %> diff --git a/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Items/Blogs.BlogPost.ListByArchive.ascx b/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Items/Blogs.BlogPost.ListByArchive.ascx index 1ef870044..1166d49d9 100644 --- a/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Items/Blogs.BlogPost.ListByArchive.ascx +++ b/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Items/Blogs.BlogPost.ListByArchive.ascx @@ -11,4 +11,4 @@ %>
-<%=Html.UnorderedList(Model.BlogPosts, (c, i) => Html.DisplayForItem(c).ToHtmlString(), "blogPosts contentItems")%> \ No newline at end of file +<%: Html.UnorderedList(Model.BlogPosts, (c, i) => Html.DisplayForItem(c).ToHtmlString(), "blogPosts contentItems")%> diff --git a/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx b/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx index d13c29631..89d7c5ba6 100644 --- a/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx +++ b/src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Blogs.BlogPost.List.ascx @@ -2,5 +2,5 @@ <%@ Import Namespace="Orchard.Mvc.ViewModels"%> <%@ Import Namespace="Orchard.Blogs.Models"%> -<%=Html.UnorderedList(Model, (bp, i) => Html.DisplayForItem(bp).ToHtmlString(), "blogPosts contentItems") %> +<%: Html.UnorderedList(Model, (bp, i) => Html.DisplayForItem(bp).ToHtmlString(), "blogPosts contentItems") %> <% if (Model.Count() < 1) { %>

<%: T("There are no posts for this blog.") %>

<% } %> diff --git a/src/Orchard.Web/Themes/Green/Views/Archives.ascx b/src/Orchard.Web/Themes/Green/Views/Archives.ascx index 92429a47f..d9c0a330f 100644 --- a/src/Orchard.Web/Themes/Green/Views/Archives.ascx +++ b/src/Orchard.Web/Themes/Green/Views/Archives.ascx @@ -23,13 +23,13 @@ <% } %> <% } else { %> - <%=Html.UnorderedList(Model.Archives, (t, i) => Html.Link(string.Format("{0:MMMM yyyy} ({1})", t.Key.ToDateTime(), t.Value), Url.BlogArchiveMonth(Model.Blog.Slug, t.Key.Year, t.Key.Month)), "archiveMonthList") %><% + <%: Html.UnorderedList(Model.Archives, (t, i) => Html.Link(string.Format("{0:MMMM yyyy} ({1})", t.Key.ToDateTime(), t.Value), Url.BlogArchiveMonth(Model.Blog.Slug, t.Key.Year, t.Key.Month)), "archiveMonthList") %><% } } else { %> diff --git a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs index ba6c95122..368c540e1 100644 --- a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs +++ b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs @@ -112,16 +112,16 @@ namespace Orchard.Mvc.Html { #region UnorderedList - public static string UnorderedList(this HtmlHelper htmlHelper, IEnumerable items, Func generateContent, string cssClass) { + public static IHtmlString UnorderedList(this HtmlHelper htmlHelper, IEnumerable items, Func generateContent, string cssClass) { return htmlHelper.UnorderedList(items, generateContent, cssClass, null, null); } - public static string UnorderedList(this HtmlHelper htmlHelper, IEnumerable items, Func generateContent, string cssClass, string itemCssClass, string alternatingItemCssClass) { + public static IHtmlString UnorderedList(this HtmlHelper htmlHelper, IEnumerable items, Func generateContent, string cssClass, string itemCssClass, string alternatingItemCssClass) { return UnorderedList(items, generateContent, cssClass, t => itemCssClass, t => alternatingItemCssClass); } - private static string UnorderedList(IEnumerable items, Func generateContent, string cssClass, Func generateItemCssClass, Func generateAlternatingItemCssClass) { - if (items == null || items.Count() == 0) return ""; + private static IHtmlString UnorderedList(IEnumerable items, Func generateContent, string cssClass, Func generateItemCssClass, Func generateAlternatingItemCssClass) { + if (items == null || !items.Any()) return new HtmlString(string.Empty); var sb = new StringBuilder(250); int counter = 0, count = items.Count() - 1; @@ -155,7 +155,7 @@ namespace Orchard.Mvc.Html { sb.Append(""); - return sb.ToString(); + return new HtmlString(sb.ToString()); } #endregion