using System;
using System.Web.UI;
using CMS.ExtendedControls;
using CMS.GlobalHelper;
using CMS.PortalEngine;
using CMS.UIControls;
public partial class CMSModules_PortalEngine_UI_PageTemplates_PageTemplate_Tree : SiteManagerPage, IPostBackEventHandler
{
#region "Variables"
protected bool nodeIsSelected = false;
protected int pageTemplateId = 0;
protected int categoryId = 0;
protected bool expand = false;
#endregion
#region "Page events"
///
/// Handles the Load event of the Page control.
///
protected void Page_Load(object sender, EventArgs e)
{
treeElem.UseGlobalSettings = true;
// Register scripts
ScriptHelper.RegisterJQuery(Page);
RegisterExportScript();
// Images
imgNewCategory.ImageUrl = GetImageUrl("Objects/CMS_PageTemplateCategory/new.png");
imgNewTemplate.ImageUrl = GetImageUrl("CMSModules/CMS_PageTemplates/addpagetemplate.png");
imgDeleteItem.ImageUrl = GetImageUrl("CMSModules/CMS_PageTemplates/delete.png");
imgExportObject.ImageUrl = GetImageUrl("CMSModules/CMS_PageTemplates/exportobject.png");
// Resource strings
lnkDeleteItem.Text = GetString("Development-PageTemplates_Tree.DeleteSelectedItem");
lnkNewCategory.Text = GetString("Development-PageTemplates_Tree.NewCategory");
lnkNewTemplate.Text = GetString("Development-PageTemplates_Tree.NewTemplate");
lnkExportObject.Text = GetString("Development-PageTemplates_Tree.ExportObject");
// Setup menu action scripts
lnkNewTemplate.Attributes.Add("onclick", "NewItem('pagetemplate');");
lnkNewCategory.Attributes.Add("onclick", "NewItem('pagetemplatecategory');");
lnkDeleteItem.Attributes.Add("onclick", "DeleteItem();");
lnkExportObject.Attributes.Add("onclick", "ExportObject();");
// Tooltips
lnkDeleteItem.ToolTip = GetString("Development-PageTemplates_Tree.DeleteSelectedItem");
lnkNewCategory.ToolTip = GetString("Development-PageTemplates_Tree.NewCategory");
lnkNewTemplate.ToolTip = GetString("Development-PageTemplates_Tree.NewTemplate");
lnkExportObject.ToolTip = GetString("Development-PageTemplates_Tree.ExportObject");
string script = "var doNotReloadContent = false;\n";
// URLs for menu actions
script += " var pageTemplateCategoryURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/PageTemplates/Category_Frameset.aspx") + "';";
script += " var pageTemplateCategoryNewURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/PageTemplates/PageTemplate_Category.aspx") + "';";
script += " var pageTemplateURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/PageTemplates/PageTemplate_Edit.aspx") + "';";
script += " var pageTemplateNewURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/PageTemplates/PageTemplate_New.aspx") + "';";
script += " var pageTemplateTreeURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/PageTemplates/PageTemplate_Tree.aspx") + "';";
// Setup tree element
treeElem.SelectPageTemplates = true;
treeElem.UsePostBack = false;
// Script for deleting widget or category
string delPostback = ControlsHelper.GetPostBackEventReference(Page, "##");
string deleteScript = "function DeleteItem() { \n" +
" if ((selectedItemId > 0) && (selectedItemParent > 0) && " +
" confirm('" + GetString("general.deleteconfirmation") + "')) {\n " +
delPostback.Replace("'##'", "selectedItemType+';'+selectedItemId+';'+selectedItemParent") + ";\n" +
"}\n" +
"}\n";
script += deleteScript;
// Preselect tree item
if (!RequestHelper.IsPostBack())
{
// If template was edited select this template
pageTemplateId = QueryHelper.GetInteger("templateid", 0);
// Category
categoryId = QueryHelper.GetInteger("categoryid", 0);
// Parent category
categoryId = QueryHelper.GetInteger("parentcategoryid", categoryId);
bool reload = QueryHelper.GetBoolean("reload", false);
// Select category
if (categoryId > 0)
{
PageTemplateCategoryInfo ptci = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfo(categoryId);
if (ptci != null)
{
// If not set explicitly stop reloading of right frame
if (!reload)
{
script += "doNotReloadContent = true;";
}
script += SelectAtferLoad(ptci.CategoryPath, categoryId, "pagetemplatecategory", ptci.ParentId, true);
}
}
// Select widget
else if (pageTemplateId > 0)
{
PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(pageTemplateId);
if (pti != null)
{
PageTemplateCategoryInfo ptci = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfo(pti.CategoryID);
if (ptci != null)
{
// If not set explicitly stop reloading of right frame
if (!reload)
{
script += "doNotReloadContent = true;";
}
string path = ptci.CategoryPath + "/" + pti.CodeName;
script += SelectAtferLoad(path, pageTemplateId, "pagetemplate", pti.CategoryID, pti.IsReusable);
}
}
}
// Select root by default
else
{
PageTemplateCategoryInfo ptci = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfoByCodeName("/");
if (ptci != null)
{
script += SelectAtferLoad("/", ptci.CategoryId, "pagetemplatecategory", 0, true);
}
}
}
ltlScript.Text += ScriptHelper.GetScript(script);
// Special browser class for RTL scrollbars correction
pnlSubBox.CssClass = BrowserHelper.GetBrowserClass();
}
#endregion
#region "Other methods"
///
/// Expands tree at specified path and selects tree item by javascript.
///
/// Selected path
/// ID of selected tree item
/// Type of tree item
/// ID of parent
/// Idnicates if page template is reusable
private string SelectAtferLoad(string path, int itemId, string type, int parentId, bool isReusable)
{
treeElem.SelectPath = path;
string script = String.Format("SelectNode({0},'{1}',{2},'{3}');", itemId, type, parentId, isReusable ? "1" : "0");
return script;
}
public void RaisePostBackEvent(string eventArgument)
{
string[] values = eventArgument.Split(';');
if ((values != null) && (values.Length == 3))
{
int id = ValidationHelper.GetInteger(values[1], 0);
int parentId = ValidationHelper.GetInteger(values[2], 0);
string script = String.Empty;
switch (values[0])
{
case "pagetemplate":
PageTemplateInfoProvider.DeletePageTemplate(id);
break;
case "pagetemplatecategory":
// Recursively delete template category and all its descendants
PageTemplateCategoryInfoProvider.DeletePageTemplateCategory(id);
break;
}
// Select parent node after delete
PageTemplateCategoryInfo ptci = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfo(parentId);
if (ptci != null)
{
script = SelectAtferLoad(ptci.CategoryPath, parentId, "pagetemplatecategory", ptci.ParentId, true) + script;
ltlScript.Text += ScriptHelper.GetScript(script);
}
treeElem.ReloadData();
}
}
#endregion
}