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.FormControls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.ExtendedControls; using CMS.EventLog; using CMS.SocialNetworking; public partial class CMSFormControls_Documents_SocialMediaPublishing_LinkedInAccessToken : FormEngineUserControl { #region "Public properties" /// /// Gets or sets enabled state. /// public override bool Enabled { get { return txtToken.Enabled; } set { txtToken.Enabled = value; btnSelect.Enabled = value; } } /// /// Gets or sets the value of access token. /// public override object Value { get { return txtToken.Text; } set { txtToken.Text = value.ToString(); } } /// /// Gets ClientID of the control from which the Value is retrieved or /// null if such a control can't be specified. /// public override string ValueElementID { get { return txtToken.ClientID; } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { string apiKeyCid = null, apiSecretCid = null; // Try to get values from other controls try { var controls = this.Parent.Parent.Controls; for (int i = 0; i < controls.Count; i++) { if (controls[i] is Label) { Label labelLI = (Label)controls[i]; // Try to get api key client ID if (labelLI.Text.EqualsCSafe(ResHelper.GetString("settingskey.cmslinkedinapikey"))) { apiKeyCid = ((CMSTextBox)controls[i + 6].Controls[0]).ClientID; } // Try to get application secret client ID if (labelLI.Text.EqualsCSafe(ResHelper.GetString("settingskey.cmslinkedinapplicationsecret"))) { apiSecretCid = ((CMSTextBox)controls[i + 6].Controls[0]).ClientID; } } } } catch (Exception ex) { // Something went wrong - log exception EventLogProvider ev = new EventLogProvider(); ev.LogEvent("LinkedIn", "ACCESSTOKEN", ex); // Set message txtToken.Visible = false; btnSelect.Visible = false; return; } this.btnSelect.OnClientClick = "tagSelect('" + txtToken.ClientID + "', '" + apiKeyCid + "', '" + apiSecretCid + "'); return false;"; // Build script with modal dialog opener and set textbox value functions string scriptString = @" function tagSelect(id, apikeycid, apisecretcid) {{ var txtToken = document.getElementById(id); var apiKey = document.getElementById(apikeycid).value; var apiSecret = document.getElementById(apisecretcid).value; if (txtToken != null) {{ modalDialog('{0}?txtToken=' + id + '&apiKey=' + apiKey + '&apiSecret=' + apiSecret, 'LinkedInAccessToken', '550', '200', null, null, null, true); }} }} function setAccessTokenToTextBox(textBoxId, accessTokenString, accessTokenSecretString) {{ if (textBoxId != '') {{ var textbox = document.getElementById(textBoxId); if (textbox != null) {{ textbox.value = accessTokenString + ';' + accessTokenSecretString; }} }} }}"; StringBuilder builder = new StringBuilder(); builder.AppendFormat(scriptString, URLHelper.GetAbsoluteUrl(LinkedInProvider.ACCESS_TOKEN_PAGE)); // Register the dialog script ScriptHelper.RegisterDialogScript(this.Page); // Register tag script ScriptHelper.RegisterStartupScript(this, typeof(string), "accessTokenScript", ScriptHelper.GetScript(builder.ToString())); } #endregion }