using System;
using System.Xml;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.PortalEngine;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.DocumentEngine;
using CMS.ExtendedControls;
public partial class CMSModules_PortalEngine_UI_WebParts_WebPartProperties_code : CMSWebPartPropertiesPage
{
#region "Variables"
///
/// Current page info.
///
private PageInfo pi = null;
///
/// Page template info.
///
private PageTemplateInfo pti = null;
///
/// Current web part.
///
private WebPartInstance webPart = null;
#endregion
#region "Properties"
///
/// Messages placeholder
///
public override MessagesPlaceHolder MessagesPlaceHolder
{
get
{
return plcMess;
}
}
#endregion
#region "Methods"
///
/// OnInit
///
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
// Check permissions for web part properties UI
CurrentUserInfo currentUser = CMSContext.CurrentUser;
if (!currentUser.IsAuthorizedPerUIElement("CMS.Content", "WebPartProperties.Code"))
{
RedirectToCMSDeskUIElementAccessDenied("CMS.Content", "WebPartProperties.Code");
}
if (webpartId != "")
{
// Get page info
pi = GetPageInfo(aliasPath, templateId, cultureCode);
if (pi == null)
{
Visible = false;
return;
}
pti = pi.UsedPageTemplateInfo;
if ((pti != null) && ((pti.TemplateInstance != null)))
{
// Get web part instance
webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.GetWebPart(webpartId);
if (webPart != null)
{
txtCode.Text = ValidationHelper.GetString(webPart.GetValue("WebPartCode"), "");
}
EditedObject = webPart;
}
}
}
///
/// Handles the Load event of the Page control.
///
protected void Page_Load(object sender, EventArgs e)
{
if (!SettingsKeyProvider.UsingVirtualPathProvider)
{
lblInfo.Text = GetString("WebPartCode.ProviderNotRunning");
lblInfo.CssClass = "ErrorLabel";
txtCode.Enabled = false;
}
else
{
lblInfo.Text = GetString("WebPartCode.Info");
// Register the OnSave event handler
OnSave += OnSaveEventHandler;
}
}
///
/// PreRender event handler
///
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Design", "EditCode"))
{
txtCode.ReadOnly = true;
lblInfo.Text = GetString("EditCode.NotAllowedNoHtml");
}
}
///
/// Raised when the Save action is required.
///
protected bool OnSaveEventHandler(object sender, EventArgs e)
{
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Design", "EditCode"))
{
return false;
}
webPart.SetValue("WebPartCode", txtCode.Text);
bool isWebPartVariant = (variantId > 0) || (zoneVariantId > 0) || isNewVariant;
if (!isWebPartVariant)
{
// Update page template
PageTemplateInfoProvider.SetPageTemplateInfo(pti);
}
else
{
// Save the variant properties
if ((webPart != null)
&& (webPart.ParentZone != null)
&& (webPart.ParentZone.ParentTemplateInstance != null)
&& (webPart.ParentZone.ParentTemplateInstance.ParentPageTemplate != null))
{
XmlDocument doc = new XmlDocument();
XmlNode xmlWebParts = null;
if (zoneVariantId > 0)
{
// This webpart is in a zone variant therefore save the whole variant webparts
xmlWebParts = webPart.ParentZone.GetXmlNode(doc);
if (webPart.VariantMode == VariantModeEnum.MVT)
{
ModuleCommands.OnlineMarketingSaveMVTVariantWebParts(zoneVariantId, xmlWebParts);
}
else if (webPart.VariantMode == VariantModeEnum.ContentPersonalization)
{
ModuleCommands.OnlineMarketingSaveContentPersonalizationVariantWebParts(zoneVariantId, xmlWebParts);
}
}
else if (variantId > 0)
{
// This webpart is a web part variant
xmlWebParts = webPart.GetXmlNode(doc);
if (webPart.VariantMode == VariantModeEnum.MVT)
{
ModuleCommands.OnlineMarketingSaveMVTVariantWebParts(variantId, xmlWebParts);
}
else if (webPart.VariantMode == VariantModeEnum.ContentPersonalization)
{
ModuleCommands.OnlineMarketingSaveContentPersonalizationVariantWebParts(variantId, xmlWebParts);
}
}
}
}
string parameters = aliasPath + "/" + zoneId + "/" + webpartId;
string cacheName = "CMSVirtualWebParts|" + parameters.ToLowerCSafe().TrimStart('/');
CacheHelper.Remove(cacheName);
ShowChangesSaved();
return true;
}
#endregion
}