diff options
4 files changed, 55 insertions, 7 deletions
diff --git a/projecttemplates/MvcRelyingParty/Views/Account/Edit.aspx b/projecttemplates/MvcRelyingParty/Views/Account/Edit.aspx index 7dae05c..25ba2a8 100644 --- a/projecttemplates/MvcRelyingParty/Views/Account/Edit.aspx +++ b/projecttemplates/MvcRelyingParty/Views/Account/Edit.aspx @@ -8,8 +8,7 @@ Edit </asp:Content> <asp:Content ContentPlaceHolderID="Head" runat="server"> - <link rel="Stylesheet" type="text/css" href="<%=Page.ClientScript.GetWebResourceUrl(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), "DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector.css")%>" /> - <link rel="Stylesheet" type="text/css" href="<%=Page.ClientScript.GetWebResourceUrl(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), "DotNetOpenAuth.OpenId.RelyingParty.OpenIdAjaxTextBox.css")%>" /> + <%= Html.OpenIdSelectorStyles(this.Page) %> </asp:Content> <asp:Content ContentPlaceHolderID="ScriptsArea" runat="server"> <script type="text/javascript" src='<%= Url.Content("~/Scripts/MicrosoftAjax.js") %>'></script> diff --git a/projecttemplates/MvcRelyingParty/Views/Auth/LogOn.aspx b/projecttemplates/MvcRelyingParty/Views/Auth/LogOn.aspx index 4709507..02913f1 100644 --- a/projecttemplates/MvcRelyingParty/Views/Auth/LogOn.aspx +++ b/projecttemplates/MvcRelyingParty/Views/Auth/LogOn.aspx @@ -1,8 +1,7 @@ <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> - +<%@ Import Namespace="DotNetOpenAuth.Mvc" %> <asp:Content ContentPlaceHolderID="Head" runat="server"> - <link rel="Stylesheet" type="text/css" href="<%=Page.ClientScript.GetWebResourceUrl(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), "DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector.css")%>" /> - <link rel="Stylesheet" type="text/css" href="<%=Page.ClientScript.GetWebResourceUrl(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), "DotNetOpenAuth.OpenId.RelyingParty.OpenIdAjaxTextBox.css")%>" /> + <%= Html.OpenIdSelectorStyles(this.Page) %> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <% Html.RenderPartial("LogOnContent"); %> diff --git a/projecttemplates/MvcRelyingParty/Views/Auth/LogOnPopup.aspx b/projecttemplates/MvcRelyingParty/Views/Auth/LogOnPopup.aspx index 465e7a0..bfc33e9 100644 --- a/projecttemplates/MvcRelyingParty/Views/Auth/LogOnPopup.aspx +++ b/projecttemplates/MvcRelyingParty/Views/Auth/LogOnPopup.aspx @@ -1,11 +1,11 @@ <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> +<%@ Import Namespace="DotNetOpenAuth.Mvc" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Login</title> - <link rel="Stylesheet" type="text/css" href="<%=Page.ClientScript.GetWebResourceUrl(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), "DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector.css")%>" /> - <link rel="Stylesheet" type="text/css" href="<%=Page.ClientScript.GetWebResourceUrl(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), "DotNetOpenAuth.OpenId.RelyingParty.OpenIdAjaxTextBox.css")%>" /> + <%= Html.OpenIdSelectorStyles(this.Page) %> <link rel="stylesheet" type="text/css" href='<%= Url.Content("~/Content/loginpopup.css") %>' /> </head> <body> diff --git a/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs b/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs index cc03a49..55af17d 100644 --- a/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs +++ b/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs @@ -27,6 +27,23 @@ namespace DotNetOpenAuth.Mvc { /// </summary> public static class OpenIdHelper { /// <summary> + /// Emits a series of stylesheet import tags to support the AJAX OpenID Selector. + /// </summary> + /// <param name="html">The <see cref="HtmlHelper"/> on the view.</param> + /// <param name="page">The page being rendered.</param> + /// <returns>HTML that should be sent directly to the browser.</returns> + public static string OpenIdSelectorStyles(this HtmlHelper html, Page page) { + Contract.Requires<ArgumentNullException>(html != null); + Contract.Requires<ArgumentNullException>(page != null); + Contract.Ensures(Contract.Result<string>() != null); + + StringWriter result = new StringWriter(); + result.WriteStylesheetLink(page, OpenId.RelyingParty.OpenIdSelector.EmbeddedStylesheetResourceName); + result.WriteStylesheetLink(page, OpenId.RelyingParty.OpenIdAjaxTextBox.EmbeddedStylesheetResourceName); + return result.ToString(); + } + + /// <summary> /// Emits a series of script import tags and some inline script to support the AJAX OpenID Selector. /// </summary> /// <param name="html">The <see cref="HtmlHelper"/> on the view.</param> @@ -344,6 +361,10 @@ window.openid_trace = {1}; // causes lots of messages"; /// <param name="page">The page being rendered.</param> /// <param name="resourceName">Name of the resource.</param> private static void WriteScriptTags(this TextWriter writer, Page page, string resourceName) { + Contract.Requires<ArgumentNullException>(writer != null); + Contract.Requires<ArgumentNullException>(page != null); + Contract.Requires<ArgumentException>(!string.IsNullOrEmpty(resourceName)); + WriteScriptTags(writer, page, new[] { resourceName }); } @@ -367,10 +388,39 @@ window.openid_trace = {1}; // causes lots of messages"; /// <param name="writer">The writer to emit the tags to.</param> /// <param name="script">The script to inline on the page.</param> private static void WriteScriptBlock(this TextWriter writer, string script) { + Contract.Requires<ArgumentNullException>(writer != null); + Contract.Requires<ArgumentException>(!string.IsNullOrEmpty(script)); + writer.WriteLine("<script type='text/javascript' language='javascript'><!--"); writer.WriteLine("//<![CDATA["); writer.WriteLine(script); writer.WriteLine("//]]>--></script>"); } + + /// <summary> + /// Writes a given CSS link. + /// </summary> + /// <param name="writer">The writer to emit the tags to.</param> + /// <param name="page">The page being rendered.</param> + /// <param name="resourceName">Name of the resource containing the CSS content.</param> + private static void WriteStylesheetLink(this TextWriter writer, Page page, string resourceName) { + Contract.Requires<ArgumentNullException>(writer != null); + Contract.Requires<ArgumentNullException>(page != null); + Contract.Requires<ArgumentException>(!string.IsNullOrEmpty(resourceName)); + + WriteStylesheetLink(writer, page.ClientScript.GetWebResourceUrl(typeof(OpenIdRelyingPartyAjaxControlBase), resourceName)); + } + + /// <summary> + /// Writes a given CSS link. + /// </summary> + /// <param name="writer">The writer to emit the tags to.</param> + /// <param name="stylesheet">The stylesheet to link in.</param> + private static void WriteStylesheetLink(this TextWriter writer, string stylesheet) { + Contract.Requires<ArgumentNullException>(writer != null); + Contract.Requires<ArgumentException>(!string.IsNullOrEmpty(stylesheet)); + + writer.WriteLine("<link rel='stylesheet' type='text/css' href='{0}' />", stylesheet); + } } } |