/// <summary> /// Used when binding the lists to the MailChimp actual subscribers. It will use the /// API to dynamically query each potential subscriber against each configured list. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void dlLists_ItemDataBound( object sender, RepeaterItemEventArgs e ) { if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem ) { MailChimpLookup item = new MailChimpLookup( e.Item.DataItem as Lookup ); if ( item.ImageUrl != string.Empty ) { Image image = e.Item.FindControl( "imgBG" ) as Image; image.ImageUrl = item.ImageUrl; } else { Literal itemName = e.Item.FindControl( "liListName" ) as Literal; itemName.Text = item.Name; } ImageButton btnSubscribe = e.Item.FindControl( "btnSubscribe" ) as ImageButton; btnSubscribe.CommandName = "Subscribe"; btnSubscribe.CommandArgument = item.ListID; ImageButton btnUnsubscribe = e.Item.FindControl( "btnUnsubscribe" ) as ImageButton; btnUnsubscribe.CommandName = "Unsubscribe"; btnUnsubscribe.CommandArgument = item.ListID; LinkButton lbSaveGroups = e.Item.FindControl( "lbSaveGroups" ) as LinkButton; lbSaveGroups.CommandName = "SaveGroups"; lbSaveGroups.CommandArgument = item.ListID; CheckBoxList cblGroups = e.Item.FindControl( "cblGroups" ) as CheckBoxList; try { // Create a checkbox for each Interest group if MC Groups is enabled. if ( EnableMCGroupsSetting ) { lbSaveGroups.Visible = false; try { MCInterestGroups mcGroups = api.listInterestGroups( item.ListID ); cblGroups.Visible = true; cblGroups.RepeatColumns = ( MaxColumnsSetting ) ? NumRowsColsSetting : ( mcGroups.groups.Count() + NumRowsColsSetting - 1 ) / NumRowsColsSetting; cblGroups.DataSource = mcGroups.groups; cblGroups.DataBind(); } catch ( XmlRpcFaultException ex ) { if ( ex.FaultCode != MailChimpErrorCodes.List_InterestGroups_NotEnabled ) { AddMsg( string.Format( " {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode ) ); } } } // Try to determine if the email address is subscribed/unsubscribed from the MailChimp list MCMemberInfo info = api.listMemberInfo( item.ListID, GetPerson().Emails.FirstActive ); // Set the user's groups if "MailChimp groups" is enabled. if ( EnableMCGroupsSetting ) { lbSaveGroups.Visible = true; // now check the interests that are selected for this user string interests = (from m in info.merges where m.tag == "INTERESTS" select m).FirstOrDefault().val; if ( !string.IsNullOrEmpty( interests ) ) { foreach ( ListItem interestCheckbox in cblGroups.Items ) { if ( interests.Contains( interestCheckbox.Value ) ) { interestCheckbox.Selected = true; } } } } string hoverInfo = string.Format( " {0}: {1} on {2} EST/EDT", item.Name, info.status, info.timestamp ); if ( "subscribed".Equals( info.status ) ) { btnUnsubscribe.ToolTip = hoverInfo; btnUnsubscribe.Visible = true; } else { btnSubscribe.ToolTip = hoverInfo; btnSubscribe.Visible = true; } } catch ( XmlRpcFaultException ex ) { if ( ex.FaultCode == MailChimpErrorCodes.Email_NotExists ) { btnSubscribe.Visible = true; } else if ( ex.FaultCode == MailChimpErrorCodes.List_NotSubscribed ) { btnSubscribe.ToolTip = "Person no longer subscribed."; btnSubscribe.Visible = true; } else { AddMsg( string.Format( " {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode ) ); } } } }
/// <summary> /// Used when binding the lists to the MailChimp actual subscribers. It will use the /// API to dynamically query each potential subscriber against each configured list. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void dlLists_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { MailChimpLookup item = new MailChimpLookup(e.Item.DataItem as Lookup); if (item.ImageUrl != string.Empty) { Image image = e.Item.FindControl("imgBG") as Image; image.ImageUrl = item.ImageUrl; } else { Literal itemName = e.Item.FindControl("liListName") as Literal; itemName.Text = item.Name; } ImageButton btnSubscribe = e.Item.FindControl("btnSubscribe") as ImageButton; btnSubscribe.CommandName = "Subscribe"; btnSubscribe.CommandArgument = item.ListID; ImageButton btnUnsubscribe = e.Item.FindControl("btnUnsubscribe") as ImageButton; btnUnsubscribe.CommandName = "Unsubscribe"; btnUnsubscribe.CommandArgument = item.ListID; LinkButton lbSaveGroups = e.Item.FindControl("lbSaveGroups") as LinkButton; lbSaveGroups.CommandName = "SaveGroups"; lbSaveGroups.CommandArgument = item.ListID; CheckBoxList cblGroups = e.Item.FindControl("cblGroups") as CheckBoxList; try { // Create a checkbox for each Interest group if MC Groups is enabled. if (EnableMCGroupsSetting) { lbSaveGroups.Visible = false; try { MCInterestGroups mcGroups = api.listInterestGroups(item.ListID); cblGroups.Visible = true; cblGroups.RepeatColumns = (MaxColumnsSetting) ? NumRowsColsSetting : (mcGroups.groups.Count() + NumRowsColsSetting - 1) / NumRowsColsSetting; cblGroups.DataSource = mcGroups.groups; cblGroups.DataBind(); } catch (XmlRpcFaultException ex) { if (ex.FaultCode != MailChimpErrorCodes.List_InterestGroups_NotEnabled) { AddMsg(string.Format(" {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode)); } } } // Try to determine if the email address is subscribed/unsubscribed from the MailChimp list MCMemberInfo info = api.listMemberInfo(item.ListID, GetPerson().Emails.FirstActive); // Set the user's groups if "MailChimp groups" is enabled. if (EnableMCGroupsSetting) { lbSaveGroups.Visible = true; // now check the interests that are selected for this user string interests = (from m in info.merges where m.tag == "INTERESTS" select m).FirstOrDefault().val; if (!string.IsNullOrEmpty(interests)) { foreach (ListItem interestCheckbox in cblGroups.Items) { if (interests.Contains(interestCheckbox.Value)) { interestCheckbox.Selected = true; } } } } string hoverInfo = string.Format(" {0}: {1} on {2} EST/EDT", item.Name, info.status, info.timestamp); if ("subscribed".Equals(info.status)) { btnUnsubscribe.ToolTip = hoverInfo; btnUnsubscribe.Visible = true; } else { btnSubscribe.ToolTip = hoverInfo; btnSubscribe.Visible = true; } } catch (XmlRpcFaultException ex) { if (ex.FaultCode == MailChimpErrorCodes.Email_NotExists) { btnSubscribe.Visible = true; } else if (ex.FaultCode == MailChimpErrorCodes.List_NotSubscribed) { btnSubscribe.ToolTip = "Person no longer subscribed."; btnSubscribe.Visible = true; } else { AddMsg(string.Format(" {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode)); } } } }