using System.Text; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.PortalControls; public partial class CMSWebParts_CommunityServices_Facebook_FacebookLikeBox : CMSAbstractWebPart { #region "Constants" private const int heightDefault = 63; private const int heightStream = 392; private const int heightStreamFaces = 555; private const int heightFaces = 255; #endregion #region "Properties" /// /// Facebook page URL. /// public string FBPageUrl { get { return ValidationHelper.GetString(GetValue("FBPageUrl"), ""); } set { SetValue("FBPageUrl", value); } } /// /// Width of the web part in pixels. /// public int Width { get { return ValidationHelper.GetInteger(GetValue("Width"), 292); } set { SetValue("Width", value); } } /// /// Color scheme of the web part. /// public string ColorScheme { get { return ValidationHelper.GetString(GetValue("ColorScheme"), ""); } set { SetValue("ColorScheme", value); } } /// /// Indicates whether to show profile photos or not. /// public bool ShowFaces { get { return ValidationHelper.GetBoolean(GetValue("ShowFaces"), true); } set { SetValue("ShowFaces", value); } } /// /// Indicates whether to display a stream of the latest posts. /// public bool ShowStream { get { return ValidationHelper.GetBoolean(GetValue("ShowStream"), true); } set { SetValue("ShowStream", value); } } /// /// Indicates whether to show Facebook header or not. /// public bool ShowHeader { get { return ValidationHelper.GetBoolean(GetValue("ShowHeader"), true); } set { SetValue("ShowHeader", value); } } /// /// Specifies whether or not to show a border around the plugin. Set to false to style the iframe with your custom CSS. /// public bool ShowBorder { get { return ValidationHelper.GetBoolean(GetValue("ShowBorder"), true); } set { SetValue("ShowBorder", value); } } /// /// For Places, specifies whether the stream contains posts from the Place's wall or just checkins from friends. /// public bool ForceWall { get { return ValidationHelper.GetBoolean(GetValue("ForceWall"), false); } set { SetValue("ForceWall", 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 { // Default height if nothing additional is shown int height = heightDefault; // If faces and stream are shown if (ShowFaces && ShowStream) { height = heightStreamFaces; } // If only stream is shown else if (ShowStream) { height = heightStream; } // If only faces are shown else if (ShowFaces) { height = heightFaces; } // If stream or faces are shown and header is too if (ShowHeader && (ShowFaces || ShowStream)) { height = height + 35; } if (UseHTML5) { StringBuilder sb = new StringBuilder(); sb.Append("
"); // Register Facebook javascript SDK ScriptHelper.RegisterFacebookJavascriptSDK(Page, CMSContext.PreferredCultureCode); ltlLikeBox.Text = sb.ToString(); } else { // Iframe code string src = "http://www.facebook.com/plugins/likebox.php"; string query = URLHelper.AddUrlParameter(null, "href", FBPageUrl); query = URLHelper.AddUrlParameter(query, "header", ShowHeader.ToString()); query = URLHelper.AddUrlParameter(query, "width", Width.ToString()); query = URLHelper.AddUrlParameter(query, "show_faces", ShowFaces.ToString()); query = URLHelper.AddUrlParameter(query, "stream", ShowStream.ToString()); query = URLHelper.AddUrlParameter(query, "colorscheme", ColorScheme); query = URLHelper.AddUrlParameter(query, "height", height.ToString()); query = URLHelper.AddUrlParameter(query, "force_wall", ForceWall.ToString()); query = URLHelper.AddUrlParameter(query, "show_border", ShowBorder.ToString()); src = URLHelper.EncodeQueryString(URLHelper.AppendQuery(src, query)); ltlLikeBox.Text = ""; } } } /// /// Reloads the control data. /// public override void ReloadData() { base.ReloadData(); SetupControl(); } #endregion }