using System;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.PortalEngine;
using CMS.DocumentEngine;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.WorkflowEngine;
public partial class CMSModules_ImportExport_SiteManager_NewSite_DefineSiteStructure_main : SiteManagerPage
{
#region "Variables"
private TreeProvider tree = null;
private TreeNode node = null;
private string action = string.Empty;
private string siteName = string.Empty;
private int nodeId = 0;
private string pageScript = null;
#endregion
#region "Page events"
protected void Page_Load(object sender, EventArgs e)
{
tree = new TreeProvider(CMSContext.CurrentUser);
// Register the dialog script
ScriptHelper.RegisterDialogScript(this);
// Initialize resources
btnInherit.Text = GetString("DefineSiteStructure.InheritFromParent");
reqItemName.ErrorMessage = GetString("DefineSiteStructure.PageNameRequired");
siteName = QueryHelper.GetString("sitename", string.Empty);
nodeId = QueryHelper.GetInteger("nodeid", 0);
// If action not specified, edit mode
action = QueryHelper.GetString("action", "edit");
if (nodeId > 0)
{
}
else
{
TreeNode rootNode = tree.SelectSingleNode(siteName, "/", TreeProvider.ALL_CULTURES);
if (rootNode != null)
{
nodeId = rootNode.NodeID;
AddScript("SetSelectedNodeId(" + nodeId + ")");
action = "edit";
}
}
bool isNewPage = false;
if (!RequestHelper.IsPostBack())
{
switch (action)
{
case "edit":
// Initialize PageTitle
SetTitle("CMSModules/CMS_ImportExport/PageProperties.png", GetString("DefineSiteStructure.PagePropertiesCaption"), null, null);
node = tree.SelectSingleNode(nodeId);
if (node != null)
{
txtPageName.Text = node.DocumentName;
hdnSelected.Value = node.GetUsedPageTemplateId().ToString();
// If root node is selected
if (node.NodeParentID == 0)
{
btnInherit.Text = GetString("DefineSiteStructure.RemoveTemplate");
txtPageTemplate.Text = GetString("Template.SelectorNoTemplate");
txtPageName.Enabled = false;
reqItemName.Enabled = false;
}
else
{
txtPageTemplate.Text = GetString("Template.Inherited");
}
}
break;
default:
// Initialize PageTitle
SetTitle("CMSModules/CMS_ImportExport/PageProperties.png", GetString("DefineSiteStructure.NewPagePropertiesCaption"), null, null);
txtPageName.Text = "";
txtPageTemplate.Text = GetString("Template.Inherited");
isNewPage = true;
break;
}
}
ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "SelectTemplate", ScriptHelper.GetScript(
@"
function OnSelectPageTemplate(templateId) {
document.getElementById('" + hdnSelected.ClientID + @"').value = templateId;
" + ClientScript.GetPostBackEventReference(btnSelect, null) + @"
}
"
));
// Modal dialog
btnSelect.Attributes.Add("onclick", "modalDialog('" + ResolveUrl("~/CMSModules/PortalEngine/UI/Layout/PageTemplateSelector.aspx?isnewpage=" + ValidationHelper.GetString(isNewPage, "") + "&nodeid=" + ValidationHelper.GetString(nodeId, "0")) + "', 'PageTemplateSelection', '90%', '85%');");
}
#endregion
#region "Button handling"
///
/// Fires after the template selection
///
protected void btnSelect_Click(object sender, EventArgs e)
{
}
///
/// Fires after the template selection
///
protected void btnInherit_Click(object sender, EventArgs e)
{
hdnSelected.Value = "";
node = tree.SelectSingleNode(nodeId);
if (node != null)
{
// If root node is selected
if (node.NodeParentID == 0)
{
txtPageTemplate.Text = GetString("Template.SelectorNoTemplate");
}
else
{
txtPageTemplate.Text = GetString("Template.Inherited");
}
}
}
///
/// PreRender event handler
///
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
int templateId = ValidationHelper.GetInteger(hdnSelected.Value, 0);
if (templateId > 0)
{
btnInherit.Enabled = true;
txtPageTemplate.Enabled = true;
PageTemplateInfo pi = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);
txtPageTemplate.Text = pi.DisplayName;
}
else
{
btnInherit.Enabled = false;
txtPageTemplate.Enabled = false;
}
if (!String.IsNullOrEmpty(pageScript))
{
ScriptHelper.RegisterStartupScript(this, typeof(string), "Script", pageScript);
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
int selectedPageTemplateId = ValidationHelper.GetInteger(hdnSelected.Value, 0);
// Inserts new document
if (action == "new")
{
try
{
string name = txtPageName.Text;
node = TreeNode.New(DataClassInfoProvider.DefaultPageClassName);
node.DocumentName = name;
node.SetDefaultPageTemplateID(selectedPageTemplateId);
node.DocumentCulture = CultureHelper.GetDefaultCulture(siteName);
DocumentHelper.InsertDocument(node, nodeId, tree);
AddScript("RefreshNode(" + node.NodeParentID + "," + node.NodeID + "); SelectNode(" + node.NodeID + ");");
ShowChangesSaved();
}
catch (Exception ex)
{
AddAlert(GetString("DefineSiteStructure.InsertFailed") + " : " + ex.Message);
}
}
else if (action == "edit")
{
// Updates node
try
{
node = tree.SelectSingleNode(nodeId);
node.SetValue("DocumentName", txtPageName.Text);
node.SetDefaultPageTemplateID(selectedPageTemplateId);
DocumentHelper.UpdateDocument(node, tree);
AddScript("RefreshNode(" + node.NodeParentID + "," + node.NodeID + "); SelectNode(" + node.NodeID + ");");
ShowChangesSaved();
}
catch (Exception ex)
{
AddAlert(GetString("DefineSiteStructure.UpdateFailed") + " : " + ex.Message);
}
}
}
#endregion
#region "Other methods"
///
/// Adds the alert message to the output request window.
///
/// Message to display
private void AddAlert(string message)
{
pageScript += ScriptHelper.GetAlertScript(message);
}
///
/// Adds the script to the output request window.
///
/// Script to add
public override void AddScript(string script)
{
pageScript += ScriptHelper.GetScript(script);
}
#endregion
}