summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2010-03-10 07:19:05 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2010-03-10 07:19:05 -0800
commitbaf4ef7d267c5e24b9915309601ac802b689e9fd (patch)
tree531ecb43eae1904ab077c87e3cc63bffecb84535 /src
parent9c85db4a272e0b7ad3ce9f4d0513c0c733d49117 (diff)
downloadDotNetOpenAuth-baf4ef7d267c5e24b9915309601ac802b689e9fd.zip
DotNetOpenAuth-baf4ef7d267c5e24b9915309601ac802b689e9fd.tar.gz
DotNetOpenAuth-baf4ef7d267c5e24b9915309601ac802b689e9fd.tar.bz2
Replaced the rest of the HTML content with a helper method.
Diffstat (limited to 'src')
-rw-r--r--src/DotNetOpenAuth/Mvc/OpenIdHelper.cs37
-rw-r--r--src/DotNetOpenAuth/OpenId/RelyingParty/SelectorOpenIdButton.cs12
-rw-r--r--src/DotNetOpenAuth/OpenId/RelyingParty/SelectorProviderButton.cs15
3 files changed, 64 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs b/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs
index b5ade50..8ee1781 100644
--- a/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs
+++ b/src/DotNetOpenAuth/Mvc/OpenIdHelper.cs
@@ -151,6 +151,43 @@ window.openid_trace = {1}; // causes lots of messages",
return OpenIdSelectorButton(html, page, "OpenIDButton", "OpenIDButton", imageUrl);
}
+ public static string OpenIdSelector(this HtmlHelper html, Page page, params SelectorButton[] buttons) {
+ Contract.Requires<ArgumentNullException>(html != null);
+ Contract.Requires<ArgumentNullException>(page != null);
+ Contract.Requires<ArgumentNullException>(buttons != null);
+ Contract.Ensures(Contract.Result<string>() != null);
+
+ var writer = new StringWriter();
+ var h = new HtmlTextWriter(writer);
+
+ h.AddAttribute(HtmlTextWriterAttribute.Class, "OpenIdProviders");
+ h.RenderBeginTag(HtmlTextWriterTag.Ul);
+
+ foreach (SelectorButton button in buttons) {
+ var op = button as SelectorProviderButton;
+ if (op != null) {
+ h.Write(OpenIdSelectorOPButton(html, page, op.OPIdentifier, op.Image));
+ continue;
+ }
+
+ var openid = button as SelectorOpenIdButton;
+ if (openid != null) {
+ h.Write(OpenIdSelectorOpenIdButton(html, page, openid.Image));
+ continue;
+ }
+
+ ErrorUtilities.VerifySupported(false, "The {0} button is not yet supported for MVC.", button.GetType().Name);
+ }
+
+ h.RenderEndTag(); // ul
+
+ if (buttons.OfType<SelectorOpenIdButton>().Any()) {
+ h.Write(OpenIdAjaxTextBox(html));
+ }
+
+ return writer.ToString();
+ }
+
public static string OpenIdAjaxTextBox(this HtmlHelper html) {
return @"<div style='display: none' id='OpenIDForm'>
<span class='OpenIdAjaxTextBox' style='display: inline-block; position: relative; font-size: 16px'>
diff --git a/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorOpenIdButton.cs b/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorOpenIdButton.cs
index 15b6ca7..ac4dcbf 100644
--- a/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorOpenIdButton.cs
+++ b/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorOpenIdButton.cs
@@ -5,6 +5,7 @@
//-----------------------------------------------------------------------
namespace DotNetOpenAuth.OpenId.RelyingParty {
+ using System;
using System.ComponentModel;
using System.Diagnostics.Contracts;
using System.Drawing.Design;
@@ -24,6 +25,17 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
}
/// <summary>
+ /// Initializes a new instance of the <see cref="SelectorOpenIdButton"/> class.
+ /// </summary>
+ /// <param name="imageUrl">The image to display on the button.</param>
+ public SelectorOpenIdButton(string imageUrl)
+ : this() {
+ Contract.Requires<ArgumentException>(!string.IsNullOrEmpty(imageUrl));
+
+ this.Image = imageUrl;
+ }
+
+ /// <summary>
/// Gets or sets the path to the image to display on the button's surface.
/// </summary>
/// <value>The virtual path to the image.</value>
diff --git a/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorProviderButton.cs b/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorProviderButton.cs
index 3a05287..2195e73 100644
--- a/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorProviderButton.cs
+++ b/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorProviderButton.cs
@@ -5,6 +5,7 @@
//-----------------------------------------------------------------------
namespace DotNetOpenAuth.OpenId.RelyingParty {
+ using System;
using System.ComponentModel;
using System.Diagnostics.Contracts;
using System.Drawing.Design;
@@ -25,6 +26,20 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
}
/// <summary>
+ /// Initializes a new instance of the <see cref="SelectorProviderButton"/> class.
+ /// </summary>
+ /// <param name="providerIdentifier">The OP Identifier.</param>
+ /// <param name="imageUrl">The image to display on the button.</param>
+ public SelectorProviderButton(Identifier providerIdentifier, string imageUrl)
+ : this() {
+ Contract.Requires<ArgumentNullException>(providerIdentifier != null);
+ Contract.Requires<ArgumentException>(!string.IsNullOrEmpty(imageUrl));
+
+ this.OPIdentifier = providerIdentifier;
+ this.Image = imageUrl;
+ }
+
+ /// <summary>
/// Gets or sets the path to the image to display on the button's surface.
/// </summary>
/// <value>The virtual path to the image.</value>