File: D:/HostingSpaces/RMourik/bassol.nl/CMS/CMSModules/Content/CMSDesk/Properties/Alias_Edit.aspx.cs
using System;
using CMS.Helpers;
using CMS.Membership;
using CMS.DocumentEngine;
using CMS.SiteProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
using CMS.ExtendedControls.ActionsConfig;
using CMS.DataEngine;
using CMS.FormEngine;
using CMS.PortalEngine;
public partial class CMSModules_Content_CMSDesk_Properties_Alias_Edit : CMSPropertiesPage
{
#region "Private variables"
protected int aliasId = 0;
int defaultNodeID;
private DocumentAliasInfo mDocumentAlias;
#endregion
#region "Private properties"
/// <summary>
/// Document alias
/// </summary>
private DocumentAliasInfo DocumentAlias
{
get
{
return mDocumentAlias ?? (mDocumentAlias = aliasId > 0 ? DocumentAliasInfoProvider.GetDocumentAliasInfo(aliasId) : new DocumentAliasInfo());
}
}
#endregion
#region "Page events"
protected override void OnPreInit(EventArgs e)
{
aliasId = QueryHelper.GetInteger("aliasid", 0);
if (IsDialog)
{
MasterPageFile = "~/CMSMasterPages/UI/Dialogs/ModalDialogPage.master";
}
// Must be called after the master page file is set
base.OnPreInit(e);
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerUIElement("CMS.Content", "Properties.URLs"))
{
RedirectToUIElementAccessDenied("CMS.Content", "Properties.URLs");
}
if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerUIElement("CMS.Content", "URLs.Aliases"))
{
RedirectToUIElementAccessDenied("CMS.Content", "URLs.Aliases");
}
ControlsHelper.FillListControlWithEnum<AliasActionModeEnum>(drpAction, "aliasaction", useStringRepresentation: true);
// Disable document manager events
DocumentManager.RegisterEvents = false;
}
protected void Page_Load(object sender, EventArgs e)
{
ScriptHelper.RegisterDialogScript(Page);
btnOk.OnClientClick = DocumentManager.GetAllowSubmitScript();
EditedObject = DocumentAlias;
if (IsDialog)
{
PageTitle.TitleText = GetString("content.ui.urlsaliases");
}
else
{
HeaderActions.AddAction(new HeaderAction
{
Text = GetString("doc.urls.addnewalias"),
RedirectUrl = ResolveUrl("Alias_Edit.aspx?nodeid=" + NodeID),
ButtonStyle = ButtonStyle.Default
});
HeaderActions.AddAction(new HeaderAction
{
Text = GetString("doc.urls.viewallalias"),
OnClientClick = "modalDialog('" + ResolveUrl("~/CMSModules/Content/CMSDesk/Properties/Alias_AliasList.aspx") + "?nodeid=" + NodeID + "&dialog=1" + "','AliasManagement','90%','85%');",
ButtonStyle = ButtonStyle.Default
});
}
if (Node != null)
{
lblUrlInfoText.Text = Node.NodeAliasPath;
// Check modify permissions
if (!DocumentUIHelper.CheckDocumentPermissions(Node, PermissionsEnum.Modify))
{
ShowInformation(String.Format(GetString("cmsdesk.notauthorizedtoeditdocument"), Node.NodeAliasPath));
usSelectCampaign.Enabled = false;
txtURLExtensions.Enabled = false;
ctrlURL.Enabled = false;
cultureSelector.Enabled = false;
}
if (!RequestHelper.IsPostBack() && QueryHelper.GetInteger("saved", 0) == 1)
{
ShowChangesSaved();
}
lblDocumentCulture.Text = GetString("general.culture") + ResHelper.Colon;
lblTrackCampaign.Text = GetString("doc.urls.trackcampaign") + ResHelper.Colon;
lblURLExtensions.Text = GetString("doc.urls.urlextensions") + ResHelper.Colon;
// Show path of document alias only if dialog mode edit
pnlUrlInfo.Visible = IsDialog;
// For dialog mode use DefaultNodeID
defaultNodeID = (IsDialog) ? QueryHelper.GetInteger("defaultNodeID", 0) : NodeID;
CreateBreadcrumbs();
cultureSelector.AllowDefault = false;
cultureSelector.UniSelector.SpecialFields.Add(new SpecialField
{
Text = GetString("general.selectall"),
Value = String.Empty
});
if (!RequestHelper.IsPostBack())
{
cultureSelector.Value = Node.DocumentCulture;
// Edit existing alias
if (DocumentAlias != null && DocumentAlias.AliasID > 0)
{
usSelectCampaign.Value = DocumentAlias.AliasCampaign;
txtURLExtensions.Text = DocumentAlias.AliasExtensions;
ctrlURL.URLPath = DocumentAlias.AliasURLPath;
cultureSelector.Value = DocumentAlias.AliasCulture;
PageBreadcrumbs.Items[1].Text = TreePathUtils.GetURLPathDisplayName(DocumentAlias.AliasURLPath);
drpAction.SelectedValue = DocumentAlias.AliasActionMode.ToStringRepresentation();
}
}
// Register js synchronization script for split mode
if (QueryHelper.GetBoolean("refresh", false) && UIContext.DisplaySplitMode)
{
RegisterSplitModeSync(true, false, true);
}
}
}
#endregion
#region "Private methods"
/// <summary>
/// Creates page breadcrumbs
/// </summary>
private void CreateBreadcrumbs()
{
// Initialize breadcrumbs
string urls = GetString("Properties.Urls");
string urlsUrl = string.Format("~/CMSModules/Content/CMSDesk/Properties/Alias_List.aspx?nodeid={0}&compare=1", defaultNodeID);
string addAlias = GetString("doc.urls.addnewalias");
string aliasManagement = GetString("content.ui.urlsaliases");
string managementUrl = "~/CMSModules/Content/CMSDesk/Properties/Alias_AliasList.aspx?nodeid=" + defaultNodeID;
PageBreadcrumbs.Items.Add(new BreadcrumbItem
{
Text = (IsDialog ? aliasManagement : urls),
RedirectUrl = ResolveUrl(IsDialog ? managementUrl : urlsUrl)
});
PageBreadcrumbs.Items.Add(new BreadcrumbItem
{
Text = addAlias
});
}
protected void btnOK_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(ctrlURL.PlainURLPath))
{
ShowError(GetString("doc.urls.requiresurlpath"));
return;
}
if (!usSelectCampaign.IsValid())
{
ShowError(GetString("campaign.validcodename"));
return;
}
// Validate URL path
if (!ctrlURL.IsValid())
{
ShowError(ctrlURL.ValidationError);
return;
}
if (Node != null)
{
// Check modify permissions
if (!DocumentUIHelper.CheckDocumentPermissions(Node, PermissionsEnum.Modify))
{
ShowError(String.Format(GetString("cmsdesk.notauthorizedtoreaddocument"), Node.NodeAliasPath));
return;
}
// Check whether
if (!DocumentAliasInfoProvider.IsUnique(ctrlURL.URLPath, DocumentAlias.AliasID, Convert.ToString(cultureSelector.Value), txtURLExtensions.Text.Trim(), SiteContext.CurrentSiteName, true, NodeID))
{
ShowError(GetString("doc.urls.doacaliasnotunique"));
return;
}
// Set object properties
DocumentAlias.AliasURLPath = TreePathUtils.GetSafeUrlPath(ctrlURL.URLPath, Node.NodeSiteName);
DocumentAlias.AliasCampaign = ValidationHelper.GetString(usSelectCampaign.Value, String.Empty).Trim();
DocumentAlias.AliasExtensions = txtURLExtensions.Text.Trim();
DocumentAlias.AliasCulture = ValidationHelper.GetString(cultureSelector.Value, "");
DocumentAlias.AliasSiteID = Node.NodeSiteID;
DocumentAlias.AliasActionMode = drpAction.SelectedValue.ToEnum<AliasActionModeEnum>();
DocumentAlias.AliasNodeID = NodeID;
// Insert into database
DocumentAliasInfoProvider.SetDocumentAliasInfo(DocumentAlias, Node.NodeSiteName);
// Log synchronization
DocumentSynchronizationHelper.LogDocumentChange(Node, TaskTypeEnum.UpdateDocument, Tree);
aliasId = DocumentAlias.AliasID;
string url = "Alias_Edit.aspx?saved=1&nodeid=" + NodeID + "&aliasid=" + aliasId + "&dialog=" + IsDialog;
if (IsDialog)
{
url += "&defaultNodeID=" + defaultNodeID;
}
// Refresh the second frame in split mode
if (UIContext.DisplaySplitMode)
{
url += "&refresh=1";
}
URLHelper.Redirect(url);
}
}
#endregion
}