/// <summary> /// PreInit event handler /// </summary> protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); // Disable check save changes script DocumentManager.RegisterSaveChangesScript = false; // Check UI elements for web part zone var currentUser = MembershipContext.AuthenticatedUser; if (!currentUser.IsAuthorizedPerUIElement("CMS.Design", new string[] { "Design", "Design.WebPartZoneProperties" }, SiteContext.CurrentSiteName)) { RedirectToUIElementAccessDenied("CMS.Design", "Design;Design.WebPartZoneProperties"); } // When displaying an existing variant of a web part, get the variant mode for its original web part if ((variantId > 0) || (zoneVariantId > 0)) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original webpart and retrieve its variant mode WebPartInstance webpartInstance = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, 0); if (webpartInstance != null) { variantMode = webpartInstance.VariantMode; } } } }
/// <summary> /// Handles the OnReloadData event of the menuZoneVariants control. /// </summary> protected void menuMoveToZoneVariants_OnReloadData(object sender, EventArgs e) { // Check permissions if (currentUser == null) { return; } if ((DocumentContext.CurrentPageInfo != null) && (DocumentContext.CurrentPageInfo.TemplateInstance != null)) { VariantModeEnum currentVariantMode = VariantModeEnum.None; string targetZoneId = ValidationHelper.GetString(menuMoveToZoneVariants.Parameter, string.Empty); int pageTemplateId = DocumentContext.CurrentPageInfo.UsedPageTemplateInfo.PageTemplateId; // Get selected zone variant mode if ((DocumentContext.CurrentPageInfo != null) && (DocumentContext.CurrentPageInfo.TemplateInstance != null)) { WebPartZoneInstance targetZone = DocumentContext.CurrentPageInfo.TemplateInstance.GetZone(targetZoneId); if (targetZone != null) { currentVariantMode = targetZone.VariantMode; } } SetColumnNames(currentVariantMode); // Get all zone variants of the current web part DataTable resultTable = null; DataSet ds = VariantHelper.GetVariants(currentVariantMode, pageTemplateId, targetZoneId, Guid.Empty, 0); if (!DataHelper.DataSourceIsEmpty(ds)) { DataTable table = ds.Tables[0].Copy(); table.DefaultView.Sort = columnVariantID; // Add the original web part as the first item in the variant list DataRow originalVariant = table.NewRow(); originalVariant[columnVariantID] = 0; originalVariant[columnVariantDisplayName] = ResHelper.GetString("ZoneMenu.OriginalZone", UICulture); originalVariant[columnVariantZoneID] = targetZoneId; originalVariant[columnVariantPageTemplateID] = pageTemplateId; originalVariant[columnVariantInstanceGUID] = Guid.Empty; table.Rows.InsertAt(originalVariant, 0); resultTable = table.DefaultView.ToTable(); if (DataHelper.DataSourceIsEmpty(resultTable)) { pnlNoZoneVariants.Visible = true; ltlNoZoneVariants.Text = ResHelper.GetString("Content.NoPermissions", UICulture); } } repMoveToZoneVariants.DataSource = resultTable; repMoveToZoneVariants.DataBind(); } }
/// <summary> /// Init event handler. /// </summary> protected override void OnInit(EventArgs e) { // When displaying an existing variant of a zone, get the variant mode for its original zone if (variantId > 0) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original zone and retrieve its variant mode WebPartZoneInstance zoneInstance = pti.TemplateInstance.GetZone(zoneId); if ((zoneInstance != null) && (zoneInstance.VariantMode != VariantModeEnum.None)) { variantMode = zoneInstance.VariantMode; } } } base.OnInit(e); }
/// <summary> /// PreInit event handler /// </summary> protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); // When displaying an existing variant of a web part, get the variant mode for its original web part if ((variantId > 0) || (zoneVariantId > 0)) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original webpart and retrieve its variant mode WebPartInstance webpartInstance = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, 0); if (webpartInstance != null) { variantMode = webpartInstance.VariantMode; } } } }
/// <summary> /// Init event handler. /// </summary> protected override void OnInit(EventArgs e) { // When displaying an existing variant of a zone, get the variant mode for its original zone if (variantId > 0) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original zone and retrieve its variant mode WebPartZoneInstance zoneInstance = pti.TemplateInstance.GetZone(zoneId); if ((zoneInstance != null) && (zoneInstance.VariantMode != VariantModeEnum.None)) { variantMode = zoneInstance.VariantMode; } } } base.OnInit(e); }
/// <summary> /// Init event handler. /// </summary> protected override void OnInit(EventArgs e) { // When displaying an existing variant of a zone, get the variant mode for its original zone if (variantId > 0) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original zone and retrieve its variant mode WebPartZoneInstance zoneInstance = pti.TemplateInstance.GetZone(zoneId); if ((zoneInstance != null) && (zoneInstance.VariantMode != VariantModeEnum.None)) { variantMode = zoneInstance.VariantMode; } } } if (variantMode == VariantModeEnum.MVT) { // Display MVT edit dialog mvtEditElem.UIFormControl.EditedObject = BaseAbstractInfoProvider.GetInfoById(MVTVariantInfo.OBJECT_TYPE, QueryHelper.GetInteger("variantid", 0)); mvtEditElem.UIFormControl.ParentObject = BaseAbstractInfoProvider.GetInfoById(PageTemplateInfo.OBJECT_TYPE, QueryHelper.GetInteger("templateid", 0)); mvtEditElem.Visible = true; mvtEditElem.UIFormControl.SubmitButton.Visible = false; mvtEditElem.UIFormControl.ReloadData(); } else if (variantMode == VariantModeEnum.ContentPersonalization) { // Display Content personalization edit dialog cpEditElem.UIFormControl.EditedObject = BaseAbstractInfoProvider.GetInfoById(ContentPersonalizationVariantInfo.OBJECT_TYPE, QueryHelper.GetInteger("variantid", 0)); cpEditElem.UIFormControl.ParentObject = BaseAbstractInfoProvider.GetInfoById(PageTemplateInfo.OBJECT_TYPE, QueryHelper.GetInteger("templateid", 0)); cpEditElem.Visible = true; cpEditElem.UIFormControl.SubmitButton.Visible = false; cpEditElem.UIFormControl.ReloadData(); } base.OnInit(e); }
/// <summary> /// Init event handler. /// </summary> protected override void OnInit(EventArgs e) { // When displaying an existing variant of a zone, get the variant mode for its original zone if (variantId > 0) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original zone and retrieve its variant mode WebPartZoneInstance zoneInstance = pti.TemplateInstance.GetZone(zoneId); if ((zoneInstance != null) && (zoneInstance.VariantMode != VariantModeEnum.None)) { variantMode = zoneInstance.VariantMode; } } } if (variantMode == VariantModeEnum.MVT) { // Display MVT edit dialog mvtEditElem.UIFormControl.EditedObject = BaseAbstractInfoProvider.GetInfoById(MVTVariantInfo.OBJECT_TYPE, QueryHelper.GetInteger("variantid", 0)); mvtEditElem.UIFormControl.ParentObject = BaseAbstractInfoProvider.GetInfoById(PageTemplateInfo.OBJECT_TYPE, QueryHelper.GetInteger("templateid", 0)); mvtEditElem.Visible = true; mvtEditElem.UIFormControl.SubmitButton.Visible = false; mvtEditElem.UIFormControl.ReloadData(); } else if (variantMode == VariantModeEnum.ContentPersonalization) { // Display Content personalization edit dialog cpEditElem.UIFormControl.EditedObject = BaseAbstractInfoProvider.GetInfoById(ContentPersonalizationVariantInfo.OBJECT_TYPE, QueryHelper.GetInteger("variantid", 0)); cpEditElem.UIFormControl.ParentObject = BaseAbstractInfoProvider.GetInfoById(PageTemplateInfo.OBJECT_TYPE, QueryHelper.GetInteger("templateid", 0)); cpEditElem.Visible = true; cpEditElem.UIFormControl.SubmitButton.Visible = false; cpEditElem.UIFormControl.ReloadData(); } base.OnInit(e); }
/// <summary> /// Sets the column names according to the variant mode. /// </summary> private void SetColumnNames(VariantModeEnum variantMode) { if (variantMode == VariantModeEnum.MVT) { // MVT column names columnVariantID = "MVTVariantID"; columnVariantDisplayName = "MVTVariantDisplayName"; columnVariantZoneID = "MVTVariantZoneID"; columnVariantPageTemplateID = "MVTVariantPageTemplateID"; columnVariantInstanceGUID = "MVTVariantInstanceGUID"; updateCombinationPanelScript = "UpdateCombinationPanel();"; } else if (variantMode == VariantModeEnum.ContentPersonalization) { // Content personalization column names columnVariantID = "VariantID"; columnVariantDisplayName = "VariantDisplayName"; columnVariantZoneID = "VariantZoneID"; columnVariantPageTemplateID = "VariantPageTemplateID"; columnVariantInstanceGUID = "VariantInstanceGUID"; updateCombinationPanelScript = String.Empty; } }
/// <summary> /// Init event handler. /// </summary> protected override void OnInit(EventArgs e) { base.OnInit(e); // Load settings if (!string.IsNullOrEmpty(Request.Form[hdnIsNewWebPart.UniqueID])) { IsNewWebPart = ValidationHelper.GetBoolean(Request.Form[hdnIsNewWebPart.UniqueID], false); } if (!string.IsNullOrEmpty(Request.Form[hdnInstanceGUID.UniqueID])) { InstanceGUID = ValidationHelper.GetGuid(Request.Form[hdnInstanceGUID.UniqueID], Guid.Empty); } // Try to find the web part variant in the database and set its VariantID if (IsNewVariant) { Hashtable properties = WindowHelper.GetItem("variantProperties") as Hashtable; if (properties != null) { // Get the variant code name from the WindowHelper string variantName = ValidationHelper.GetString(properties["codename"], string.Empty); // Check if the variant exists in the database int variantIdFromDB = 0; if (VariantMode == VariantModeEnum.MVT) { variantIdFromDB = ModuleCommands.OnlineMarketingGetMVTVariantId(PageTemplateId, variantName); } else if (VariantMode == VariantModeEnum.ContentPersonalization) { variantIdFromDB = ModuleCommands.OnlineMarketingGetContentPersonalizationVariantId(PageTemplateId, variantName); } // Set the variant id from the database if (variantIdFromDB > 0) { VariantID = variantIdFromDB; IsNewVariant = false; } } } if (!String.IsNullOrEmpty(WebpartId)) { // Get the page info pi = CMSWebPartPropertiesPage.GetPageInfo(this.AliasPath, this.PageTemplateId); if (pi != null) { // Get template pti = pi.PageTemplateInfo; // Get template instance templateInstance = pti.TemplateInstance; // Parent webpart WebPartInfo parentWpi = null; //Before FormInfo FormInfo beforeFI = null; //After FormInfo FormInfo afterFI = null; // Webpart form info FormInfo fi = null; if (!IsNewWebPart) { // Standard zone webPartInstance = pti.GetWebPart(InstanceGUID, WebpartId); // If the web part not found, try to find it among the MVT/CP variants if (webPartInstance == null) { // MVT/CP variant templateInstance.LoadVariants(false, VariantModeEnum.None); webPartInstance = templateInstance.GetWebPart(InstanceGUID, true); // Set the VariantMode according to the selected web part/zone variant if ((webPartInstance != null) && (webPartInstance.ParentZone != null)) { VariantMode = (webPartInstance.VariantMode != VariantModeEnum.None) ? webPartInstance.VariantMode : webPartInstance.ParentZone.VariantMode; } else { VariantMode = VariantModeEnum.None; } } else { // Ensure that the ZoneVarianID is not set when the web part was found in a regural zone. ZoneVariantID = 0; } if ((VariantID > 0) && (webPartInstance != null) && (webPartInstance.PartInstanceVariants != null)) { // Check OnlineMarketing permissions. if (CheckPermissions("Read")) { webPartInstance = webPartInstance.FindVariant(VariantID); } else { // Not authorised for OnlineMarketing - Manage. RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (VariantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest")); } } if (webPartInstance == null) { lblInfo.Text = GetString("WebPartProperties.WebPartNotFound"); pnlFormArea.Visible = false; return; } wpi = WebPartInfoProvider.GetWebPartInfo(webPartInstance.WebPartType); form.Mode = FormModeEnum.Update; } // Webpart instance hasn't created yet else { wpi = WebPartInfoProvider.GetWebPartInfo(ValidationHelper.GetInteger(WebpartId, 0)); form.Mode = FormModeEnum.Insert; } // Load parent if (wpi != null) { if (wpi.WebPartParentID > 0) { parentWpi = WebPartInfoProvider.GetWebPartInfo(wpi.WebPartParentID); } } // Get the form definition string wpProperties = "<form></form>"; if (wpi != null) { wpProperties = wpi.WebPartProperties; // Use parent webpart if is defined if (parentWpi != null) { wpProperties = parentWpi.WebPartProperties; } // Get before FormInfo if (BeforeFormDefinition == null) { beforeFI = PortalHelper.GetPositionFormInfo((WebPartTypeEnum)wpi.WebPartType, PropertiesPosition.Before); } else { beforeFI = new FormInfo(BeforeFormDefinition); } // Get after FormInfo if (AfterFormDefinition == null) { afterFI = PortalHelper.GetPositionFormInfo((WebPartTypeEnum)wpi.WebPartType, PropertiesPosition.After); } else { afterFI = new FormInfo(AfterFormDefinition); } } // Add 'General' category at the beginning if no one is specified if (!string.IsNullOrEmpty(wpProperties) && (!wpProperties.StartsWith("<form><category", StringComparison.InvariantCultureIgnoreCase))) { wpProperties = wpProperties.Insert(6, "<category name=\"" + GetString("general.general") + "\" />"); } // Get merged web part FormInfo fi = FormHelper.GetWebPartFormInfo(wpi.WebPartName, wpProperties, beforeFI, afterFI, true); // Get datarow with required columns DataRow dr = fi.GetDataRow(); if (IsNewWebPart) { // Load default properties values fi.LoadDefaultValues(dr); // Load overriden system values fi.LoadDefaultValues(dr, wpi.WebPartDefaultValues); // Set control ID FormFieldInfo ffi = fi.GetFormField("WebPartControlID"); if (ffi != null) { ffi.DefaultValue = WebPartZoneInstance.GetUniqueWebPartId(wpi.WebPartName, templateInstance); fi.UpdateFormField("WebPartControlID", ffi); } } // Load values from existing webpart LoadDataRowFromWebPart(dr, webPartInstance); // Set a unique WebPartControlID for athe new variant if (IsNewVariant) { // Set control ID dr["WebPartControlID"] = WebPartZoneInstance.GetUniqueWebPartId(wpi.WebPartName, templateInstance); } // Init the form InitForm(form, dr, fi); AddExportLink(); } } }
/// <summary> /// PreInit event handler /// </summary> protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); // When displaying an existing variant of a web part, get the variant mode for its original web part if ((variantId > 0) || (zoneVariantId > 0)) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original webpart and retrieve its variant mode WebPartInstance webpartInstance = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, 0); if (webpartInstance != null) { variantMode = webpartInstance.VariantMode; } } } }
/// <summary> /// Loads the web part form. /// </summary> protected void LoadForm() { // Load settings if (!string.IsNullOrEmpty(Request.Form[hdnIsNewWebPart.UniqueID])) { IsNewWebPart = ValidationHelper.GetBoolean(Request.Form[hdnIsNewWebPart.UniqueID], false); } if (!string.IsNullOrEmpty(Request.Form[hdnInstanceGUID.UniqueID])) { InstanceGUID = ValidationHelper.GetGuid(Request.Form[hdnInstanceGUID.UniqueID], Guid.Empty); } // Indicates whether the new variant should be chosen when closing this dialog selectNewVariant = IsNewVariant; // Try to find the web part variant in the database and set its VariantID if (IsNewVariant) { Hashtable varProperties = WindowHelper.GetItem("variantProperties") as Hashtable; if (varProperties != null) { // Get the variant code name from the WindowHelper string variantName = ValidationHelper.GetString(varProperties["codename"], string.Empty); // Check if the variant exists in the database int variantIdFromDB = VariantHelper.GetVariantID(VariantMode, PageTemplateID, variantName, true); // Set the variant id from the database if (variantIdFromDB > 0) { VariantID = variantIdFromDB; IsNewVariant = false; } } } if (!String.IsNullOrEmpty(WebPartID)) { // Get the page info pi = CMSWebPartPropertiesPage.GetPageInfo(AliasPath, PageTemplateID, CultureCode); if (pi == null) { ShowError(GetString("general.pagenotfound")); pnlExport.Visible = false; return; } // Get template pti = pi.UsedPageTemplateInfo; // Get template instance templateInstance = pti.TemplateInstance; if (!IsNewWebPart) { // Standard zone webPartInstance = templateInstance.GetWebPart(InstanceGUID, WebPartID); // If the web part not found, try to find it among the MVT/CP variants if (webPartInstance == null) { // MVT/CP variant // Clone templateInstance to avoid caching of the temporary template instance loaded with CP/MVT variants var tempTemplateInstance = templateInstance.Clone(); tempTemplateInstance.LoadVariants(false, VariantModeEnum.None); webPartInstance = tempTemplateInstance.GetWebPart(InstanceGUID, -1); // Set the VariantMode according to the selected web part/zone variant if (webPartInstance?.ParentZone != null) { VariantMode = (webPartInstance.VariantMode != VariantModeEnum.None) ? webPartInstance.VariantMode : webPartInstance.ParentZone.VariantMode; } else { VariantMode = VariantModeEnum.None; } } else { // Ensure that the ZoneVariantID is not set when the web part was found in a regular zone ZoneVariantID = 0; } if ((VariantID > 0) && webPartInstance?.PartInstanceVariants != null) { // Check OnlineMarketing permissions. if (CheckPermissions("Read")) { webPartInstance = webPartInstance.FindVariant(VariantID); } else { // Not authorized for OnlineMarketing - Manage. RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (VariantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest")); } } if (webPartInstance == null) { UIContext.EditedObject = null; return; } } // Keep xml version if (webPartInstance != null) { xmlVersion = webPartInstance.XMLVersion; } // Get the form info FormInfo fi = GetWebPartFormInfo(); // Get the form definition if (fi != null) { fi.ContextResolver.Settings.RelatedObject = templateInstance; form.AllowMacroEditing = true; // Get data row with required columns DataRow dr = fi.GetDataRow(); if (IsNewWebPart || (xmlVersion > 0)) { fi.LoadDefaultValues(dr); } // Load values from existing web part LoadDataRowFromWebPart(dr, webPartInstance, fi); // Set a unique WebPartControlID for the new variant if (IsNewVariant || IsNewWebPart) { dr["WebPartControlID"] = GetUniqueWebPartId(); } // Init the form InitForm(form, dr, fi); DisplayExportPropertiesButton(); } else { UIContext.EditedObject = null; } } }
/// <summary> /// OnInit event (BasicForm initialization). /// </summary> protected override void OnInit(EventArgs e) { base.OnInit(e); string zoneId = QueryHelper.GetString("zoneid", ""); string aliasPath = QueryHelper.GetString("aliaspath", ""); int templateId = QueryHelper.GetInteger("templateid", 0); string culture = QueryHelper.GetString("culture", LocalizationContext.PreferredCultureCode); mZoneVariantID = QueryHelper.GetInteger("variantid", 0); mIsNewVariant = QueryHelper.GetBoolean("isnewvariant", false); variantMode = VariantModeFunctions.GetVariantModeEnum(QueryHelper.GetString("variantmode", string.Empty)); // When displaying an existing variant of a web part, get the variant mode for its original web part if (ZoneVariantID > 0) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original webpart and retrieve its variant mode WebPartZoneInstance zoneInstance = pti.TemplateInstance.GetZone(zoneId); if ((zoneInstance != null) && (zoneInstance.VariantMode != VariantModeEnum.None)) { variantMode = zoneInstance.VariantMode; } } } // Try to find the zone variant in the database and set its VariantID if (IsNewVariant) { Hashtable properties = WindowHelper.GetItem("variantProperties") as Hashtable; if (properties != null) { // Get the variant code name from the WindowHelper string variantName = ValidationHelper.GetString(properties["codename"], string.Empty); // Check if the variant exists in the database int variantIdFromDB = VariantHelper.GetVariantID(variantMode, templateId, variantName, true); // Set the variant id from the database if (variantIdFromDB > 0) { mZoneVariantID = variantIdFromDB; mIsNewVariant = false; } } } if (!String.IsNullOrEmpty(zoneId)) { // Get page info pi = CMSWebPartPropertiesPage.GetPageInfo(aliasPath, templateId, culture); if (pi == null) { ShowInformation(GetString("webpartzone.notfound")); pnlFormArea.Visible = false; return; } // Get template pti = pi.UsedPageTemplateInfo; if (pti != null) { // Get web part zone pti.TemplateInstance.EnsureZone(zoneId); webPartZone = pti.TemplateInstance.GetZone(zoneId); if ((ZoneVariantID > 0) && (webPartZone != null) && (webPartZone.ZoneInstanceVariants != null)) { // Check OnlineMarketing permissions if (CheckPermissions("Read")) { webPartZone = webPartZone.ZoneInstanceVariants.Find(v => v.VariantID.Equals(ZoneVariantID)); } else { // Not authorized for OnlineMarketing - Manage. RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (variantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest")); } } if (webPartZone == null) { ShowInformation(GetString("webpartzone.notfound")); pnlFormArea.Visible = false; return; } FormInfo fi = BuildFormInfo(webPartZone); // Get the DataRow and fill the data row with values DataRow dr = fi.GetDataRow(); foreach (DataColumn column in dr.Table.Columns) { try { DataHelper.SetDataRowValue(dr, column.ColumnName, webPartZone.GetValue(column.ColumnName)); } catch { } } // Initialize Form formElem.DataRow = dr; formElem.MacroTable = webPartZone.MacroTable; formElem.SubmitButton.Visible = false; formElem.SiteName = SiteContext.CurrentSiteName; formElem.FormInformation = fi; formElem.ShowPrivateFields = true; formElem.OnAfterDataLoad += formElem_OnAfterDataLoad; // HTML editor toolbar if (fi.UsesHtmlArea()) { plcToolbarPadding.Visible = true; plcToolbar.Visible = true; pnlFormArea.Height = 285; } } } }
/// <summary> /// Sets the column names according to the variant mode. /// </summary> private void SetColumnNames(VariantModeEnum variantMode) { if (variantMode == VariantModeEnum.MVT) { // MVT column names columnVariantID = "MVTVariantID"; columnVariantDisplayName = "MVTVariantDisplayName"; columnVariantZoneID = "MVTVariantZoneID"; columnVariantPageTemplateID = "MVTVariantPageTemplateID"; columnVariantInstanceGUID = "MVTVariantInstanceGUID"; updateCombinationPanelScript = "UpdateCombinationPanel();"; } else if (variantMode == VariantModeEnum.ContentPersonalization) { // Content personalization column names columnVariantID = "VariantID"; columnVariantDisplayName = "VariantDisplayName"; columnVariantZoneID = "VariantZoneID"; columnVariantPageTemplateID = "VariantPageTemplateID"; columnVariantInstanceGUID = "VariantInstanceGUID"; updateCombinationPanelScript = string.Empty; } }
/// <summary> /// Handles the OnReloadData event of the menuZoneVariants control. /// </summary> protected void menuMoveToZoneVariants_OnReloadData(object sender, EventArgs e) { if ((CMSContext.CurrentPageInfo != null) && (CMSContext.CurrentPageInfo.TemplateInstance != null)) { string targetZoneId = ValidationHelper.GetString(menuMoveToZoneVariants.Parameter, string.Empty); int pageTemplateId = CMSContext.CurrentPageInfo.UsedPageTemplateInfo.PageTemplateId; VariantModeEnum currentVariantMode = VariantModeEnum.None; // Get selected zone variant mode if ((CMSContext.CurrentPageInfo != null) && (CMSContext.CurrentPageInfo.TemplateInstance != null)) { WebPartZoneInstance targetZone = CMSContext.CurrentPageInfo.TemplateInstance.GetZone(targetZoneId); if (targetZone != null) { currentVariantMode = targetZone.VariantMode; } } SetColumnNames(currentVariantMode); // Get all zone variants of the current web part DataSet ds = null; DataTable resultTable = null; if (currentVariantMode == VariantModeEnum.MVT) { if (currentUser.IsAuthorizedPerResource("CMS.MVTest", "Read")) { // Get all MVT zone variants of the current web part ds = ModuleCommands.OnlineMarketingGetMVTVariants(pageTemplateId, targetZoneId, Guid.Empty, 0); } } else if (currentVariantMode == VariantModeEnum.ContentPersonalization) { if (currentUser.IsAuthorizedPerResource("CMS.ContentPersonalization", "Read")) { // Content personalization variants ds = ModuleCommands.OnlineMarketingGetContentPersonalizationVariants(pageTemplateId, targetZoneId, Guid.Empty, 0); } } if (!DataHelper.DataSourceIsEmpty(ds)) { DataTable table = ds.Tables[0].Copy(); table.DefaultView.Sort = columnVariantID; // Add the original web part as the first item in the variant list DataRow originalVariant = table.NewRow(); originalVariant[columnVariantID] = 0; originalVariant[columnVariantDisplayName] = ResHelper.GetString("ZoneMenu.OriginalZone"); originalVariant[columnVariantZoneID] = targetZoneId; originalVariant[columnVariantPageTemplateID] = pageTemplateId; originalVariant[columnVariantInstanceGUID] = Guid.Empty; table.Rows.InsertAt(originalVariant, 0); resultTable = table.DefaultView.ToTable(); if (DataHelper.DataSourceIsEmpty(resultTable)) { pnlNoZoneVariants.Visible = true; ltlNoZoneVariants.Text = ResHelper.GetString("Content.NoPermissions"); } } repMoveToZoneVariants.DataSource = resultTable; repMoveToZoneVariants.DataBind(); } }
/// <summary> /// Loads the web part form. /// </summary> protected void LoadForm() { // Load settings if (!string.IsNullOrEmpty(Request.Form[hdnIsNewWebPart.UniqueID])) { IsNewWebPart = ValidationHelper.GetBoolean(Request.Form[hdnIsNewWebPart.UniqueID], false); } if (!string.IsNullOrEmpty(Request.Form[hdnInstanceGUID.UniqueID])) { InstanceGUID = ValidationHelper.GetGuid(Request.Form[hdnInstanceGUID.UniqueID], Guid.Empty); } // Indicates whether the new variant should be chosen when closing this dialog selectNewVariant = IsNewVariant; // Try to find the web part variant in the database and set its VariantID if (IsNewVariant) { Hashtable properties = WindowHelper.GetItem("variantProperties") as Hashtable; if (properties != null) { // Get the variant code name from the WindowHelper string variantName = ValidationHelper.GetString(properties["codename"], string.Empty); // Check if the variant exists in the database int variantIdFromDB = 0; if (VariantMode == VariantModeEnum.MVT) { variantIdFromDB = ModuleCommands.OnlineMarketingGetMVTVariantId(PageTemplateId, variantName); } else if (VariantMode == VariantModeEnum.ContentPersonalization) { variantIdFromDB = ModuleCommands.OnlineMarketingGetContentPersonalizationVariantId(PageTemplateId, variantName); } // Set the variant id from the database if (variantIdFromDB > 0) { VariantID = variantIdFromDB; IsNewVariant = false; } } } if (!String.IsNullOrEmpty(WebpartId)) { // Get the page info pi = CMSWebPartPropertiesPage.GetPageInfo(AliasPath, PageTemplateId, CultureCode); if (pi != null) { // Get template pti = pi.UsedPageTemplateInfo; // Get template instance templateInstance = pti.TemplateInstance; if (!IsNewWebPart) { // Standard zone webPartInstance = templateInstance.GetWebPart(InstanceGUID, WebpartId); // If the web part not found, try to find it among the MVT/CP variants if (webPartInstance == null) { // MVT/CP variant templateInstance.LoadVariants(false, VariantModeEnum.None); webPartInstance = templateInstance.GetWebPart(InstanceGUID, true); // Set the VariantMode according to the selected web part/zone variant if ((webPartInstance != null) && (webPartInstance.ParentZone != null)) { VariantMode = (webPartInstance.VariantMode != VariantModeEnum.None) ? webPartInstance.VariantMode : webPartInstance.ParentZone.VariantMode; } else { VariantMode = VariantModeEnum.None; } } else { // Ensure that the ZoneVarianID is not set when the web part was found in a regular zone ZoneVariantID = 0; } if ((VariantID > 0) && (webPartInstance != null) && (webPartInstance.PartInstanceVariants != null)) { // Check OnlineMarketing permissions. if (CheckPermissions("Read")) { webPartInstance = webPartInstance.FindVariant(VariantID); } else { // Not authorized for OnlineMarketing - Manage. RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (VariantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest")); } } if (webPartInstance == null) { CMSPage.EditedObject = null; return; } } // Keep xml version if (webPartInstance != null) { xmlVersion = webPartInstance.XMLVersion; } // Get the form info FormInfo fi = GetWebPartFormInfo(); // Get the form definition if (fi != null) { form.AllowMacroEditing = ((WebPartTypeEnum)wpi.WebPartType != WebPartTypeEnum.Wireframe); // Get data row with required columns DataRow dr = fi.GetDataRow(true, wpi.WebPartDefaultValues); if (IsNewWebPart || (xmlVersion > 0)) { fi.LoadDefaultValues(dr); // Load overridden system values fi.LoadDefaultValues(dr, wpi.WebPartDefaultValues); } if (IsNewWebPart) { // Set control ID FormFieldInfo ffi = fi.GetFormField("WebPartControlID"); if (ffi != null) { ffi.DefaultValue = WebPartZoneInstance.GetUniqueWebPartId(wpi.WebPartName, templateInstance); fi.UpdateFormField("WebPartControlID", ffi); } } // Load values from existing web part LoadDataRowFromWebPart(dr, webPartInstance, fi); // Set a unique WebPartControlID for the new variant if (IsNewVariant) { // Set control ID dr["WebPartControlID"] = WebPartZoneInstance.GetUniqueWebPartId(wpi.WebPartName, templateInstance); } // Init the form InitForm(form, dr, fi); AddExportLink(); } else { CMSPage.EditedObject = null; } } } }
/// <summary> /// Initializes menu. /// </summary> protected void InitalizeMenu() { string zoneId = QueryHelper.GetString("zoneid", ""); bool isNewWidget = QueryHelper.GetBoolean("isnew", false); WidgetZoneTypeEnum zoneType = WidgetZoneTypeEnum.None; if (!String.IsNullOrEmpty(widgetId) || !String.IsNullOrEmpty(widgetName)) { WidgetInfo wi = null; // get pageinfo PageInfo pi = null; try { pi = CMSWebPartPropertiesPage.GetPageInfo(aliasPath, templateId); } catch (PageNotFoundException) { // Do not throw exception if page info not found (e.g. bad alias path) } if (pi == null) { this.Visible = false; return; } // Get template instance PageTemplateInstance templateInstance = CMSPortalManager.GetTemplateInstanceForEditing(pi); if (templateInstance != null) { // Get zone type WebPartZoneInstance zoneInstance = templateInstance.GetZone(zoneId); if (zoneInstance != null) { zoneType = zoneInstance.WidgetZoneType; } if (!isNewWidget) { // Get web part WebPartInstance widget = templateInstance.GetWebPart(instanceGuid, widgetId); if ((widget != null) && widget.IsWidget) { // WebPartType = codename, get widget by codename wi = WidgetInfoProvider.GetWidgetInfo(widget.WebPartType); // Set the variant mode (MVT/Content personalization) variantMode = widget.VariantMode; } } } // New widget if (isNewWidget) { int id = ValidationHelper.GetInteger(widgetId, 0); if (id > 0) { wi = WidgetInfoProvider.GetWidgetInfo(id); } else if (!String.IsNullOrEmpty(widgetName)) { wi = WidgetInfoProvider.GetWidgetInfo(widgetName); } } // Get widget info from name if not found yet if ((wi == null) && (!String.IsNullOrEmpty(widgetName))) { wi = WidgetInfoProvider.GetWidgetInfo(widgetName); } if (wi != null) { PageTitle.TitleText = GetString("Widgets.Properties.Title") + " (" + HTMLHelper.HTMLEncode(ResHelper.LocalizeString(wi.WidgetDisplayName)) + ")"; } // Use live or non live dialogs string documentationUrl = String.Empty; // If no zonetype defined or not inline dont show documentation switch (zoneType) { case WidgetZoneTypeEnum.Dashboard: case WidgetZoneTypeEnum.Editor: case WidgetZoneTypeEnum.Group: case WidgetZoneTypeEnum.User: documentationUrl = ResolveUrl("~/CMSModules/Widgets/Dialogs/WidgetDocumentation.aspx"); break; // If no zone set dont create documentation link default: if (isInline) { documentationUrl = ResolveUrl("~/CMSModules/Widgets/Dialogs/WidgetDocumentation.aspx"); } else { return; } break; } // Generate documentation link Literal ltr = new Literal(); PageTitle.RightPlaceHolder.Controls.Add(ltr); // Ensure correct parameters in documentation url documentationUrl += URLHelper.GetQuery(URLHelper.CurrentURL); if (!String.IsNullOrEmpty(widgetName)) { documentationUrl = URLHelper.UpdateParameterInUrl(documentationUrl, "widgetname", widgetName); } if (!String.IsNullOrEmpty(widgetId)) { documentationUrl = URLHelper.UpdateParameterInUrl(documentationUrl, "widgetid", widgetId); } string docScript = "NewWindow('" + documentationUrl + "', 'WebPartPropertiesDocumentation', 800, 800); return false;"; ltr.Text = "<table cellpadding=\"0\" cellspacing=\"0\"><tr><td>"; ltr.Text += "<a onclick=\"" + docScript + "\" href=\"#\"><img src=\"" + ResolveUrl(GetImageUrl("CMSModules/CMS_PortalEngine/Documentation.png")) + "\" style=\"border-width: 0px;\"></a>"; ltr.Text += "</td>"; ltr.Text += "<td>"; ltr.Text += "<a onclick=\"" + docScript + "\" href=\"#\">" + GetString("WebPartPropertie.DocumentationLink") + "</a>"; ltr.Text += "</td></tr></table>"; tabsElem.OnTabCreated += new UITabs.TabCreatedEventHandler(tabElem_OnTabCreated); tabsElem.UrlTarget = "widgetpropertiescontent"; tabsElem.OpenTabContentAfterLoad = !isInline; } }
/// <summary> /// OnInit event (BasicForm initialization). /// </summary> protected override void OnInit(EventArgs e) { base.OnInit(e); string zoneId = QueryHelper.GetString("zoneid", ""); string aliasPath = QueryHelper.GetString("aliaspath", ""); int templateId = QueryHelper.GetInteger("templateid", 0); string culture = QueryHelper.GetString("culture", LocalizationContext.PreferredCultureCode); mZoneVariantID = QueryHelper.GetInteger("variantid", 0); mIsNewVariant = QueryHelper.GetBoolean("isnewvariant", false); variantMode = VariantModeFunctions.GetVariantModeEnum(QueryHelper.GetString("variantmode", string.Empty)); // When displaying an existing variant of a web part, get the variant mode for its original web part if (ZoneVariantID > 0) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original webpart and retrieve its variant mode WebPartZoneInstance zoneInstance = pti.TemplateInstance.GetZone(zoneId); if ((zoneInstance != null) && (zoneInstance.VariantMode != VariantModeEnum.None)) { variantMode = zoneInstance.VariantMode; } } } // Try to find the zone variant in the database and set its VariantID if (IsNewVariant) { Hashtable properties = WindowHelper.GetItem("variantProperties") as Hashtable; if (properties != null) { // Get the variant code name from the WindowHelper string variantName = ValidationHelper.GetString(properties["codename"], string.Empty); // Check if the variant exists in the database int variantIdFromDB = VariantHelper.GetVariantID(variantMode, templateId, variantName, true); // Set the variant id from the database if (variantIdFromDB > 0) { mZoneVariantID = variantIdFromDB; mIsNewVariant = false; } } } if (!String.IsNullOrEmpty(zoneId)) { // Get page info pi = CMSWebPartPropertiesPage.GetPageInfo(aliasPath, templateId, culture); if (pi == null) { ShowInformation(GetString("webpartzone.notfound")); pnlFormArea.Visible = false; return; } // Get template pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if (pti != null) { // Get web part zone pti.TemplateInstance.EnsureZone(zoneId); webPartZone = pti.TemplateInstance.GetZone(zoneId); if ((ZoneVariantID > 0) && (webPartZone != null) && (webPartZone.ZoneInstanceVariants != null)) { // Check OnlineMarketing permissions if (CheckPermissions("Read")) { webPartZone = webPartZone.ZoneInstanceVariants.Find(v => v.VariantID.Equals(ZoneVariantID)); } else { // Not authorized for OnlineMarketing - Manage. RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (variantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest")); } } if (webPartZone == null) { ShowInformation(GetString("webpartzone.notfound")); pnlFormArea.Visible = false; return; } FormInfo fi = BuildFormInfo(webPartZone); // Get the DataRow and fill the data row with values DataRow dr = fi.GetDataRow(); foreach (DataColumn column in dr.Table.Columns) { try { DataHelper.SetDataRowValue(dr, column.ColumnName, webPartZone.GetValue(column.ColumnName)); } catch { } } // Initialize Form formElem.DataRow = dr; formElem.MacroTable = webPartZone.MacroTable; formElem.SubmitButton.Visible = false; formElem.SiteName = SiteContext.CurrentSiteName; formElem.FormInformation = fi; formElem.OnAfterDataLoad += formElem_OnAfterDataLoad; // HTML editor toolbar if (fi.UsesHtmlArea()) { plcToolbarPadding.Visible = true; plcToolbar.Visible = true; pnlFormArea.Height = 285; } } } }
/// <summary> /// Initializes menu. /// </summary> protected void InitalizeMenu() { string zoneId = QueryHelper.GetString("zoneid", ""); bool isNewWidget = QueryHelper.GetBoolean("isnew", false); WidgetZoneTypeEnum zoneType = WidgetZoneTypeEnum.None; if (!String.IsNullOrEmpty(widgetId) || !String.IsNullOrEmpty(widgetName)) { WidgetInfo wi = null; // get pageinfo PageInfo pi = null; try { pi = CMSWebPartPropertiesPage.GetPageInfo(aliasPath, templateId); } catch (PageNotFoundException) { // Do not throw exception if page info not found (e.g. bad alias path) } if (pi == null) { this.Visible = false; return; } // Get template instance PageTemplateInstance templateInstance = CMSPortalManager.GetTemplateInstanceForEditing(pi); if (templateInstance != null) { // Get zone type WebPartZoneInstance zoneInstance = templateInstance.GetZone(zoneId); if (zoneInstance != null) { zoneType = zoneInstance.WidgetZoneType; } if (!isNewWidget) { // Get web part WebPartInstance widget = templateInstance.GetWebPart(instanceGuid, widgetId); if ((widget != null) && widget.IsWidget) { // WebPartType = codename, get widget by codename wi = WidgetInfoProvider.GetWidgetInfo(widget.WebPartType); // Set the variant mode (MVT/Content personalization) variantMode = widget.VariantMode; } } } // New widget if (isNewWidget) { int id = ValidationHelper.GetInteger(widgetId, 0); if (id > 0) { wi = WidgetInfoProvider.GetWidgetInfo(id); } else if (!String.IsNullOrEmpty(widgetName)) { wi = WidgetInfoProvider.GetWidgetInfo(widgetName); } } // Get widget info from name if not found yet if ((wi == null) && (!String.IsNullOrEmpty(widgetName))) { wi = WidgetInfoProvider.GetWidgetInfo(widgetName); } if (wi != null) { PageTitle.TitleText = GetString("Widgets.Properties.Title") + " (" + HTMLHelper.HTMLEncode(ResHelper.LocalizeString(wi.WidgetDisplayName)) + ")"; } // Use live or non live dialogs string documentationUrl = String.Empty; // If no zonetype defined or not inline dont show documentation switch (zoneType) { case WidgetZoneTypeEnum.Dashboard: case WidgetZoneTypeEnum.Editor: case WidgetZoneTypeEnum.Group: case WidgetZoneTypeEnum.User: documentationUrl = ResolveUrl("~/CMSModules/Widgets/Dialogs/WidgetDocumentation.aspx"); break; // If no zone set dont create documentation link default: if (isInline) { documentationUrl = ResolveUrl("~/CMSModules/Widgets/Dialogs/WidgetDocumentation.aspx"); } else { return; } break; } // Generate documentation link Literal ltr = new Literal(); PageTitle.RightPlaceHolder.Controls.Add(ltr); // Ensure correct parameters in documentation url documentationUrl += URLHelper.GetQuery(URLHelper.CurrentURL); if (!String.IsNullOrEmpty(widgetName)) { documentationUrl = URLHelper.UpdateParameterInUrl(documentationUrl, "widgetname", widgetName); } if (!String.IsNullOrEmpty(widgetId)) { documentationUrl = URLHelper.UpdateParameterInUrl(documentationUrl, "widgetid", widgetId); } string docScript = "NewWindow('" + documentationUrl + "', 'WebPartPropertiesDocumentation', 800, 800); return false;"; ltr.Text = "<table cellpadding=\"0\" cellspacing=\"0\"><tr><td>"; ltr.Text += "<a onclick=\"" + docScript + "\" href=\"#\"><img src=\"" + ResolveUrl(GetImageUrl("CMSModules/CMS_PortalEngine/Documentation.png")) + "\" style=\"border-width: 0px;\"></a>"; ltr.Text += "</td>"; ltr.Text += "<td>"; ltr.Text += "<a onclick=\"" + docScript + "\" href=\"#\">" + GetString("WebPartPropertie.DocumentationLink") + "</a>"; ltr.Text += "</td></tr></table>"; tabsElem.OnTabCreated += new UITabs.TabCreatedEventHandler(tabElem_OnTabCreated); tabsElem.UrlTarget = "widgetpropertiescontent"; tabsElem.OpenTabContentAfterLoad = !isInline; } }
/// <summary> /// PreInit event handler /// </summary> protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); // Disable check save changes script DocumentManager.RegisterSaveChangesScript = false; // Check UI elements for web part zone var currentUser = MembershipContext.AuthenticatedUser; if (!currentUser.IsAuthorizedPerUIElement("CMS.Design", new string[] { "Design", "Design.WebPartZoneProperties" }, SiteContext.CurrentSiteName)) { RedirectToUIElementAccessDenied("CMS.Design", "Design;Design.WebPartZoneProperties"); } // When displaying an existing variant of a web part, get the variant mode for its original web part if ((variantId > 0) || (zoneVariantId > 0)) { PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId); if ((pti != null) && ((pti.TemplateInstance != null))) { // Get the original webpart and retrieve its variant mode WebPartInstance webpartInstance = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, 0); if (webpartInstance != null) { variantMode = webpartInstance.VariantMode; } } } }