using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using CMS.PortalControls; using CMS.GlobalHelper; using CMS.CMSHelper; using CMS.SettingsProvider; public partial class CMSWebParts_CommunityServices_Twitter_TwitterFollowButton : CMSAbstractWebPart { #region "Public properties" /// /// User to follow. /// public string UserToFollow { get { return ValidationHelper.GetString(GetValue("UserToFollow"), string.Empty); } set { SetValue("UserToFollow", value); } } /// /// Language for the button. /// public string Language { get { return ValidationHelper.GetString(GetValue("Language"), string.Empty); } set { SetValue("Language", value); } } /// /// Whether to display followers count or not. /// public bool DisplayFollowersCount { get { return ValidationHelper.GetBoolean(GetValue("DisplayFollowersCount"), false); } set { SetValue("DisplayFollowersCount", value); } } /// /// Whether to show screen name of the user to follow. /// public bool ShowScreenName { get { return ValidationHelper.GetBoolean(GetValue("ShowScreenName"), false); } set { SetValue("ShowScreenName", value); } } /// /// Alignment for the button. /// public string Alignment { get { return ValidationHelper.GetString(GetValue("Alignment"), string.Empty); } set { SetValue("Alignment", value); } } /// /// Size for the button. /// public string Size { get { return ValidationHelper.GetString(GetValue("Size"), string.Empty); } set { SetValue("Size", value); } } /// /// Width of the web part in pixels. /// public int Width { get { return ValidationHelper.GetInteger(GetValue("Width"), 300); } set { SetValue("Width", value); } } /// /// Indicates if HTML 5 output should be generated. /// public bool UseHTML5 { get { return ValidationHelper.GetBoolean(GetValue("UseHTML5"), false); } set { SetValue("UseHTML5", value); } } #endregion #region "Methods" /// /// Content loaded event handler. /// public override void OnContentLoaded() { base.OnContentLoaded(); SetupControl(); } /// /// Initializes the control properties. /// protected void SetupControl() { if (StopProcessing) { // Do not process } else { if (string.IsNullOrEmpty(Language)) { Language = CMSContext.CurrentDocumentCulture.CultureCode; } if (UseHTML5) { StringBuilder sb = new StringBuilder(); sb.Append(""); // Register Twitter widget API ltlFollowButtonCode.Text = sb.ToString(); ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "TwitterWidgetsAPI", ""); } else { // Build plugin code string query = null; string src = "//platform.twitter.com/widgets/follow_button.html"; int height = (Size.EqualsCSafe("m")) ? 20 : 28; // Set webpart parameters query = URLHelper.AddUrlParameter(query, "screen_name", UserToFollow); query = URLHelper.AddUrlParameter(query, "lang", Language); query = URLHelper.AddUrlParameter(query, "show_count", DisplayFollowersCount.ToString()); query = URLHelper.AddUrlParameter(query, "show_screen_name", ShowScreenName.ToString()); query = URLHelper.AddUrlParameter(query, "align", Alignment); query = URLHelper.AddUrlParameter(query, "size", Size); src = URLHelper.EncodeQueryString(URLHelper.AppendQuery(src, query)); // Output HTML code string output = ""; ltlFollowButtonCode.Text = String.Format(output, src, Width, height); } } } /// /// Reloads the control data. /// public override void ReloadData() { base.ReloadData(); SetupControl(); } #endregion }