using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.FormControls;
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_MVTVariantEdit : 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.mvtest", "Read"))
{
RedirectToAccessDenied(String.Format(GetString("general.permissionresource"), "Read", "MVT testing"));
}
// Turn off update document for this page
EnsureDocumentManager = false;
// 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.OnBeforeSave += new EventHandler(UIFormControl_OnBeforeSaved);
}
///
/// Handles the Load event of the Page control.
///
protected void Page_Load(object sender, EventArgs e)
{
// Setup the modal dialog
SetCulture();
RegisterEscScript();
ScriptHelper.RegisterDialogScript(this);
ScriptHelper.RegisterWOpenerScript(this);
// Setup the title, image, help
PageTitle title = CurrentMaster.Title;
title.HelpName = "helpTopic";
title.TitleText = GetString("mvtvariant.edit");
title.TitleImage = GetImageUrl("Objects/OM_MVTVariant/object.png");
// Must be set be to help icon created
title.HelpTopicName = "mvtvariant_edit";
// Set the dark header (+ dark help icon)
CurrentMaster.PanelBody.CssClass += " DialogsPageHeader";
title.HelpIconUrl = GetImageUrl("General/HelpLargeDark.png");
}
///
/// 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(((FormEngineUserControl)editElem.UIFormControl.FieldControls["MVTVariantDisplayName"]).Value, string.Empty));
parameters.Add("codename", editElem.VariantCodeName);
parameters.Add("description", ValidationHelper.GetString(((FormEngineUserControl)editElem.UIFormControl.FieldControls["MVTVariantDescription"]).Value, string.Empty));
parameters.Add("enabled", ValidationHelper.GetBoolean(((FormEngineUserControl)editElem.UIFormControl.FieldControls["MVTVariantEnabled"]).Value, false));
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.MVT));
// 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()
{
CloseDialog();
if (wopener." + functionName + @")
{
wopener." + functionName + "('" + query + @"');
}
}
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
}