using System; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using CMS.ExtendedControls; using CMS.GlobalHelper; using CMS.UIControls; public partial class CMSModules_Content_Controls_Dialogs_Properties_BBLinkProperties : ItemProperties { protected void Page_Load(object sender, EventArgs e) { if (!StopProcessing) { tabGeneral.HeaderText = GetString("general.general"); lblEmpty.Text = NoSelectionText; btnHidden.Click += btnHidden_Click; string postBackRef = ControlsHelper.GetPostBackEventReference(btnHidden, ""); string postBackKeyDownRef = "var keynum;if(window.event){keynum = event.keyCode;}else if(event.which){keynum = event.which;}if(keynum == 13){" + postBackRef + "; return false;}"; urlSelectElem.TextBoxLinkText.Attributes["onchange"] = postBackRef; urlSelectElem.TextBoxLinkText.Attributes["onkeydown"] = postBackKeyDownRef; urlSelectElem.TextBoxUrl.Attributes["onchange"] = postBackRef; urlSelectElem.TextBoxUrl.Attributes["onkeydown"] = postBackKeyDownRef; urlSelectElem.DropDownProtocol.Attributes["onchange"] = postBackRef; urlSelectElem.DropDownProtocol.Attributes["onkeydown"] = postBackKeyDownRef; } } private void btnHidden_Click(object sender, EventArgs e) { SaveSession(); } #region "Private methods" /// /// Save current properties into session. /// private void SaveSession() { Hashtable savedProperties = SessionHelper.GetValue("DialogSelectedParameters") as Hashtable ?? new Hashtable(); Hashtable properties = GetItemProperties(); foreach (DictionaryEntry entry in properties) { savedProperties[entry.Key] = entry.Value; } SessionHelper.SetValue("DialogSelectedParameters", savedProperties); } #endregion #region "Overridden methods" /// /// Loads given link parameters. /// public override void LoadSelectedItems(MediaItem item, Hashtable properties) { LoadProperties(properties); if (item.Url != null) { string shortUrl = URLHelper.RemoveProtocol(item.Url); string protocol = item.Url.Substring(0, item.Url.Length - shortUrl.Length); if ((protocol == "http://") || (protocol == "https://") || (protocol == "ftp://") || (protocol == "news://")) { urlSelectElem.LinkProtocol = protocol; urlSelectElem.LinkURL = shortUrl; } else { urlSelectElem.LinkProtocol = "other"; urlSelectElem.LinkURL = item.Url; } urlSelectElem.LinkText = item.Name; if (item.MediaType == MediaTypeEnum.Flash) { urlSelectElem.LinkURL = URLHelper.UpdateParameterInUrl(urlSelectElem.LinkURL, "ext", "." + item.Extension.TrimStart('.')); } } SaveSession(); } /// /// Loads the properites into control. /// /// Collection of properties public override void LoadItemProperties(Hashtable properties) { LoadProperties(properties); } /// /// Loads the properites into control. /// /// Collection of properties public override void LoadProperties(Hashtable properties) { if (properties != null) { // Display the properties pnlEmpty.Visible = false; pnlTabs.CssClass = "Dialog_Tabs"; #region "General tab" string linkText = ValidationHelper.GetString(properties[DialogParameters.LINK_TEXT], ""); string linkProtocol = ValidationHelper.GetString(properties[DialogParameters.LINK_PROTOCOL], "other"); string linkUrl = ValidationHelper.GetString(properties[DialogParameters.LINK_URL], ""); urlSelectElem.LinkText = linkText; urlSelectElem.LinkURL = linkUrl; urlSelectElem.LinkProtocol = linkProtocol; #endregion #region "General items" EditorClientID = ValidationHelper.GetString(properties[DialogParameters.EDITOR_CLIENTID], ""); #endregion } SaveSession(); } /// /// Returns all parameters of the selected item as name – value collection. /// public override Hashtable GetItemProperties() { Hashtable retval = new Hashtable(); #region "General tab" string url = urlSelectElem.LinkURL.Trim(); retval[DialogParameters.LINK_TEXT] = HttpUtility.HtmlEncode(urlSelectElem.LinkText); retval[DialogParameters.LINK_URL] = url.StartsWith("~/") ? URLHelper.ResolveUrl(url) : url; retval[DialogParameters.LINK_PROTOCOL] = urlSelectElem.LinkProtocol; #endregion #region "General items" retval[DialogParameters.EDITOR_CLIENTID] = EditorClientID; #endregion return retval; } /// /// Clears the properties form. /// public override void ClearProperties(bool hideProperties) { // Hide the properties pnlEmpty.Visible = hideProperties; pnlTabs.CssClass = (hideProperties ? "DialogElementHidden" : "Dialog_Tabs"); urlSelectElem.LinkText = ""; urlSelectElem.LinkURL = ""; urlSelectElem.LinkProtocol = "other"; } #endregion }