summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-11-05 21:05:38 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2009-11-05 21:05:38 -0800
commit7899dc1d5e76db21fc6f6497539cbef0845f277f (patch)
tree2031f5a440781fd11e11b98cc87438d06ed0b6c3 /src
parent63b00e5c9aba245e02e6f68d6db7323275dc9d4f (diff)
downloadDotNetOpenAuth-7899dc1d5e76db21fc6f6497539cbef0845f277f.zip
DotNetOpenAuth-7899dc1d5e76db21fc6f6497539cbef0845f277f.tar.gz
DotNetOpenAuth-7899dc1d5e76db21fc6f6497539cbef0845f277f.tar.bz2
Moved InfoCardSelector control out of the OpenIdSelector and into the SelectorInfoCardButton class so that ASPX pages can customize the InfoCardSelector properties more.
Diffstat (limited to 'src')
-rw-r--r--src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdSelector.cs20
-rw-r--r--src/DotNetOpenAuth/OpenId/RelyingParty/SelectorInfoCardButton.cs36
2 files changed, 44 insertions, 12 deletions
diff --git a/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdSelector.cs b/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdSelector.cs
index c0d0c0f..653bd97 100644
--- a/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdSelector.cs
+++ b/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdSelector.cs
@@ -161,11 +161,6 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
}
/// <summary>
- /// Gets or sets the InfoCard selector which may be displayed alongside the OP buttons.
- /// </summary>
- public InfoCardSelector InfoCardSelector { get; set; }
-
- /// <summary>
/// Gets the name of the open id auth data form key (for the value as stored at the user agent as a FORM field).
/// </summary>
/// <value>
@@ -181,12 +176,15 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
protected override void CreateChildControls() {
base.CreateChildControls();
- this.InfoCardSelector = new InfoCardSelector();
- this.InfoCardSelector.ClaimsRequested.Add(new ClaimType { Name = ClaimTypes.PPID });
- this.InfoCardSelector.ImageSize = InfoCardImageSize.Size60x42;
- this.InfoCardSelector.ReceivedToken += this.InfoCardSelector_ReceivedToken;
- this.InfoCardSelector.TokenProcessingError += this.InfoCardSelector_TokenProcessingError;
- this.Controls.Add(this.InfoCardSelector);
+ var selectorButton = this.Buttons.OfType<SelectorInfoCardButton>().FirstOrDefault();
+ if (selectorButton != null) {
+ var selector = selectorButton.InfoCardSelector;
+ selector.ClaimsRequested.Add(new ClaimType { Name = ClaimTypes.PPID });
+ selector.ImageSize = InfoCardImageSize.Size60x42;
+ selector.ReceivedToken += this.InfoCardSelector_ReceivedToken;
+ selector.TokenProcessingError += this.InfoCardSelector_TokenProcessingError;
+ this.Controls.Add(selector);
+ }
this.textBox = new OpenIdAjaxTextBox();
this.textBox.ID = "openid_identifier";
diff --git a/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorInfoCardButton.cs b/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorInfoCardButton.cs
index 8fac58f..d9b785c 100644
--- a/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorInfoCardButton.cs
+++ b/src/DotNetOpenAuth/OpenId/RelyingParty/SelectorInfoCardButton.cs
@@ -5,20 +5,54 @@
//-----------------------------------------------------------------------
namespace DotNetOpenAuth.OpenId.RelyingParty {
+ using System;
+ using System.Collections.ObjectModel;
+ using System.ComponentModel;
+ using System.Diagnostics.Contracts;
using System.Web.UI;
+ using DotNetOpenAuth.InfoCard;
/// <summary>
/// A button that appears in the <see cref="OpenIdSelector"/> control that
/// activates the Information Card selector on the browser, if one is available.
/// </summary>
+ [Serializable]
public class SelectorInfoCardButton : SelectorButton {
/// <summary>
+ /// The backing field for the <see cref="InfoCardSelector"/> property.
+ /// </summary>
+ private InfoCardSelector infoCardSelector;
+
+ /// <summary>
/// Initializes a new instance of the <see cref="SelectorInfoCardButton"/> class.
/// </summary>
public SelectorInfoCardButton() {
}
/// <summary>
+ /// Gets or sets the InfoCard selector which may be displayed alongside the OP buttons.
+ /// </summary>
+ [PersistenceMode(PersistenceMode.InnerProperty)]
+ public InfoCardSelector InfoCardSelector {
+ get {
+ if (this.infoCardSelector == null) {
+ this.infoCardSelector = new InfoCardSelector();
+ }
+
+ return this.infoCardSelector;
+ }
+
+ set {
+ Contract.Requires<ArgumentNullException>(value != null);
+ if (this.infoCardSelector != null) {
+ Logger.Library.WarnFormat("{0}.InfoCardSelector property is being set multiple times.", GetType().Name);
+ }
+
+ this.infoCardSelector = value;
+ }
+ }
+
+ /// <summary>
/// Ensures that this button has been initialized to a valid state.
/// </summary>
internal override void EnsureValid() {
@@ -38,7 +72,7 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
/// <param name="writer">The writer.</param>
/// <param name="selector">The containing selector control.</param>
protected internal override void RenderButtonContent(HtmlTextWriter writer, OpenIdSelector selector) {
- selector.InfoCardSelector.RenderControl(writer);
+ this.InfoCardSelector.RenderControl(writer);
}
}
}