using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.PortalControls; using CMS.SettingsProvider; public partial class CMSModules_OnlineMarketing_Controls_Content_MenuContentPersonalizationVariants : CMSAbstractPortalUserControl { #region "Variables" private string columnVariantID = "VariantID"; private string columnVariantDisplayName = "VariantDisplayName"; private string columnVariantZoneID = "VariantZoneID"; private string columnVariantPageTemplateID = "VariantPageTemplateID"; private string columnVariantInstanceGUID = "VariantInstanceGUID"; private bool isZone = false; #endregion #region "Page events" /// /// Handles the Load event of the Page control. /// protected void Page_Load(object sender, EventArgs e) { pnlWebPartMenu.Attributes.Add("onmouseover", "ActivateParentBorder();"); pnlWebPartMenu.Attributes.Add("onmouseout", "DeactivateParentBorder();"); menuWebPartCPVariants.LoadingContent = "
" + ResHelper.GetString("ContextMenu.Loading") + "
"; menuWebPartCPVariants.OnReloadData += menuWebPartCPVariants_OnReloadData; repWebPartCPVariants.ItemDataBound += repWebPartCPVariants_ItemDataBound; } /// /// Handles the OnReloadData event of the menuWebPartCPVariants control. /// protected void menuWebPartCPVariants_OnReloadData(object sender, EventArgs e) { // Check permissions if ((CMSContext.CurrentUser == null) || (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.ContentPersonalization", "Read"))) { return; } string parameters = ValidationHelper.GetString(menuWebPartCPVariants.Parameter, string.Empty); string[] items = parameters.Split(new char[] { ',' }, 7); isZone = (items.Length == 4); if ((items == null)) { return; } string zoneId = string.Empty; string webpartName = string.Empty; string aliasPath = string.Empty; Guid instanceGuid = Guid.Empty; if (isZone) { zoneId = ValidationHelper.GetString(items[0], string.Empty); aliasPath = ValidationHelper.GetString(items[1], string.Empty); } else { zoneId = ValidationHelper.GetString(items[0], string.Empty); webpartName = ValidationHelper.GetString(items[1], string.Empty); aliasPath = ValidationHelper.GetString(items[2], string.Empty); instanceGuid = ValidationHelper.GetGuid(items[3], Guid.Empty); } if ((CMSContext.CurrentPageInfo != null) && (CMSContext.CurrentPageInfo.TemplateInstance != null)) { int templateId = CMSContext.CurrentPageInfo.UsedPageTemplateInfo.PageTemplateId; DataSet ds = ModuleCommands.OnlineMarketingGetContentPersonalizationVariants(templateId, zoneId, instanceGuid, 0); DataTable resultTable = null; 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(isZone ? "ZoneMenu.OriginalZone" : "WebPartMenu.OriginalWebPart"); originalVariant[columnVariantZoneID] = zoneId; originalVariant[columnVariantPageTemplateID] = templateId; originalVariant[columnVariantInstanceGUID] = instanceGuid; table.Rows.InsertAt(originalVariant, 0); resultTable = table.DefaultView.ToTable(); } repWebPartCPVariants.DataSource = resultTable; repWebPartCPVariants.DataBind(); } } /// /// Handles the ItemDataBound event of the repWebPartVariants control. /// protected void repWebPartCPVariants_ItemDataBound(object sender, RepeaterItemEventArgs e) { Panel pnlVariantItem = (Panel)e.Item.FindControl("pnlVariantItem"); if (pnlVariantItem != null) { Label lblVariantName = pnlVariantItem.FindControl("lblVariantItem") as Label; if (lblVariantName != null) { lblVariantName.Text = HTMLHelper.HTMLEncode(ResHelper.LocalizeString((((DataRowView)e.Item.DataItem)[columnVariantDisplayName]).ToString())); } // Get unique web part code Guid instanceGuid = ValidationHelper.GetGuid(((DataRowView)e.Item.DataItem)[columnVariantInstanceGUID], Guid.Empty); int variantId = ValidationHelper.GetInteger(((DataRowView)e.Item.DataItem)[columnVariantID], 0); string itemCode = string.Empty; if (isZone) { string zoneId = ValidationHelper.GetString(((DataRowView)e.Item.DataItem)[columnVariantZoneID], string.Empty); itemCode = "Variant_Zone_" + zoneId; } else { itemCode = "Variant_WP_" + instanceGuid.ToString("N"); } // Display the web part variant when clicked pnlVariantItem.Attributes.Add("onclick", "variantSliderChanged=true; UpdateVariantPosition('" + itemCode + "', " + variantId + "); RefreshPage();"); } // Display web part icon for each of the web part variants Image imgVariantItem = (Image)e.Item.FindControl("imgVariantItem"); if (imgVariantItem != null) { imgVariantItem.ImageUrl = GetImageUrl("CMSModules/CMS_PortalEngine/ContextMenu/Variants/" + (isZone ? "zone.png" : "webPart.png")); } } #endregion }