using System; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.OnlineMarketing; using CMS.PortalEngine; using CMS.SettingsProvider; using CMS.UIControls; using CMS.DocumentEngine; // Edited object [EditedObject(OnlineMarketingObjectType.CONTENTPERSONALIZATIONVARIANT, "variantid")] [ParentObject(PredefinedObjectType.PAGETEMPLATE, "templateid")] public partial class CMSModules_OnlineMarketing_Dialogs_ContentPersonalizationVariantEdit : CMSVariantDialogPage { #region "Variables" /// /// Indicates whether editing a web part or a zone variant. /// private VariantTypeEnum variantType = VariantTypeEnum.Zone; #endregion #region "Page methods" /// /// Raises the event. /// protected override void OnInit(EventArgs e) { if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.contentpersonalization", "Read")) { RedirectToAccessDenied(String.Format(GetString("general.permissionresource"), "Read", "Content personalization")); } // Set the ParentObject manually tor inherited templates if (editElem.UIFormControl.ParentObject == null) { string aliasPath = QueryHelper.GetString("aliaspath", string.Empty); // Get page info for the given document PageInfo pi = PageInfoProvider.GetPageInfo(CMSContext.CurrentSiteName, aliasPath, CMSContext.PreferredCultureCode, null, CMSContext.CurrentSite.CombineWithDefaultCulture); if (pi != null) { editElem.UIFormControl.ParentObject = pi.UsedPageTemplateInfo; } } // Get information whether the control is used for a web part or zone variant variantType = VariantTypeFunctions.GetVariantTypeEnum(QueryHelper.GetString("varianttype", string.Empty)); base.OnInit(e); // Check permissions and redirect OnlineMarketingContext.CheckPermissions(variantType); // Get the alias path of the current node if (Node == null) { editElem.StopProcessing = true; } editElem.UIFormControl.SubmitButton.Visible = false; editElem.UIFormControl.OnBeforeSave += UIFormControl_OnBeforeSaved; } /// /// Handles the Load event of the Page control. /// protected void Page_Load(object sender, EventArgs e) { // Setup the modal dialog SetCulture(); RegisterEscScript(); // Setup the title, image, help PageTitle title = CurrentMaster.Title; title.TitleText = GetString("contentpersonalizationvariant.edit"); title.TitleImage = GetImageUrl("Objects/OM_MVTVariant/object.png"); title.HelpName = "helpTopic"; // Must be set be to help icon created title.HelpTopicName = "cpvariant_edit"; // Set the dark header (+ dark help icon) CurrentMaster.PanelBody.CssClass += " DialogsPageHeader"; title.HelpIconUrl = GetImageUrl("General/HelpLargeDark.png"); ScriptHelper.RegisterDialogScript(this); ScriptHelper.RegisterWOpenerScript(this); } /// /// Raises the event. /// protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); // Setup the modal dialog RegisterModalPageScripts(); } /// /// Handles the OnSaved event of the editElem control. /// protected void UIFormControl_OnBeforeSaved(object sender, EventArgs e) { if (editElem.ValidateData()) { // Add the properties to the window helper Hashtable parameters = new Hashtable(); parameters.Add("displayname", ValidationHelper.GetString(editElem.UIFormControl.FieldControls["VariantDisplayName"].Value, string.Empty)); parameters.Add("codename", editElem.VariantCodeName); parameters.Add("description", ValidationHelper.GetString(editElem.UIFormControl.FieldControls["VariantDescription"].Value, string.Empty)); parameters.Add("enabled", ValidationHelper.GetBoolean(editElem.UIFormControl.FieldControls["VariantEnabled"].Value, false)); parameters.Add("condition", ValidationHelper.GetString(editElem.UIFormControl.FieldControls["VariantDisplayCondition"].Value, string.Empty)); WindowHelper.Add("variantProperties", parameters); // Set a script to open the web part properties modal dialog string query = URLHelper.GetQuery(URLHelper.CurrentURL); query = URLHelper.RemoveUrlParameter(query, "nodeid"); query = URLHelper.AddUrlParameter(query, "variantmode", VariantModeFunctions.GetVariantModeString(VariantModeEnum.ContentPersonalization)); // Choose the correct javascript method for opening web part/zone properties string functionName = string.Empty; switch (variantType) { case VariantTypeEnum.WebPart: functionName = "OnAddWebPartVariant"; break; case VariantTypeEnum.Widget: functionName = "OnAddWidgetVariant"; query = URLHelper.RemoveUrlParameter(query, "varianttype"); string widgetId = QueryHelper.GetString("webpartid", string.Empty); query = URLHelper.RemoveUrlParameter(query, "webpartid"); query = URLHelper.AddParameterToUrl(query, "widgetid", widgetId); break; case VariantTypeEnum.Zone: functionName = "OnAddWebPartZoneVariant"; break; } // Setup the script for opening web part/zone properties string script = @" function OpenVariantProperties() { if (wopener." + functionName + @") { wopener." + functionName + "('" + query + @"'); } CloseDialog(); } window.onload = OpenVariantProperties;"; ltrScript.Text = ScriptHelper.GetScript(script); } // Do not save the variant. Will be saved when saving the web part/zone properties. editElem.UIFormControl.StopProcessing = true; } #endregion #region "Control events" protected void btnSubmit_Click(object sender, EventArgs e) { editElem.UIFormControl.SaveData(null); } #endregion }