using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.ExtendedControls; using CMS.GlobalHelper; using CMS.PortalEngine; using CMS.UIControls; public partial class CMSModules_PortalEngine_UI_WebParts_Development_WebPart_Tree : SiteManagerPage, IPostBackEventHandler { protected void Page_Load(object sender, EventArgs e) { // Register scripts ScriptHelper.RegisterJQuery(Page); RegisterExportScript(); treeElem.UseGlobalSettings = true; treeWireframes.UseGlobalSettings = true; // Images imgNewCategory.ImageUrl = GetImageUrl("Objects/CMS_WebPartCategory/add.png"); imgNewWebPart.ImageUrl = GetImageUrl("Objects/CMS_WebPart/add.png"); imgDeleteItem.ImageUrl = GetImageUrl("Objects/CMS_WebPart/delete.png"); imgExportObject.ImageUrl = GetImageUrl("Objects/CMS_WebPart/export.png"); imgCloneWebpart.ImageUrl = GetImageUrl("CMSModules/CMS_WebParts/clone.png"); // Resource strings lnkDeleteItem.Text = GetString("Development-WebPart_Tree.DeleteItem"); lnkNewCategory.Text = GetString("Development-WebPart_Tree.NewCategory"); lnkNewWebPart.Text = GetString("Development-WebPart_Tree.NewWebPart"); lnkExportObject.Text = GetString("Development-WebPart_Tree.ExportObject"); lnkCloneWebPart.Text = GetString("Development-WebPart_Tree.CloneWebpart"); // Setup menu action scripts lnkNewWebPart.Attributes.Add("onclick", "NewItem('webpart');"); lnkNewCategory.Attributes.Add("onclick", "NewItem('webpartcategory');"); lnkDeleteItem.Attributes.Add("onclick", "DeleteItem();"); lnkExportObject.Attributes.Add("onclick", "ExportObject();"); lnkCloneWebPart.Attributes.Add("onclick", "CloneWebPart();"); // Tooltips lnkDeleteItem.ToolTip = GetString("Development-WebPart_Tree.DeleteItem"); lnkNewCategory.ToolTip = GetString("Development-WebPart_Tree.NewCategory"); lnkNewWebPart.ToolTip = GetString("Development-WebPart_Tree.NewWebPart"); lnkExportObject.ToolTip = GetString("Development-WebPart_Tree.ExportObject"); lnkCloneWebPart.ToolTip = GetString("Development-WebPart_Tree.CloneWebpart"); string script = "var doNotReloadContent = false;\n"; // URLs for menu actions script += "var categoryURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/WebParts/Development/Category_Frameset.aspx") + "';\n"; script += "var categoryNewURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/WebParts/Development/WebPart_Category.aspx") + "';\n"; script += "var webpartURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/WebParts/Development/WebPart_Edit_Frameset.aspx") + "';\n"; script += "var newWebpartURL = '" + URLHelper.ResolveUrl("~/CMSModules/PortalEngine/UI/WebParts/Development/WebPart_New.aspx") + "';\n"; script += "var cloneURL = '" + URLHelper.ResolveUrl("~/CMSModules/Objects/Dialogs/CloneObjectDialog.aspx?objecttype=cms.webpart") + "';\n"; script += "var doNotReloadContent = false;\n"; // 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()) { int categoryId = QueryHelper.GetInteger("categoryid", 0); int webpartId = QueryHelper.GetInteger("webpartid", 0); bool reload = QueryHelper.GetBoolean("reload", false); // Select category if (categoryId > 0) { WebPartCategoryInfo wci = WebPartCategoryInfoProvider.GetWebPartCategoryInfoById(categoryId); if (wci != null) { // If not set explicitly stop reloading of right frame if (!reload) { script += "doNotReloadContent = true;"; } script += SelectAtferLoad(wci.CategoryPath, categoryId, "webpartcategory", wci.CategoryParentID); } } // Select webpart else if (webpartId > 0) { WebPartInfo wi = WebPartInfoProvider.GetWebPartInfo(webpartId); if (wi != null) { WebPartCategoryInfo wci = WebPartCategoryInfoProvider.GetWebPartCategoryInfoById(wi.WebPartCategoryID); if (wci != null) { // If not set explicitly stop reloading of right frame if (!reload) { script += "doNotReloadContent = true;"; } string path = wci.CategoryPath + "/" + wi.WebPartName; script += SelectAtferLoad(path, webpartId, "webpart", wi.WebPartCategoryID); } } } // Select root by default else { WebPartCategoryInfo wci = WebPartCategoryInfoProvider.GetWebPartCategoryInfoByCodeName("/"); if (wci != null) { script += SelectAtferLoad("/", wci.CategoryID, "webpartcategory", 0); } } } ltlScript.Text += ScriptHelper.GetScript(script); // Special browser class for RTL scrollbars correction pnlSubBox.CssClass = BrowserHelper.GetBrowserClass(); } /// /// Handles delete action. /// /// Objecttype(widget or widgetcategory);objectid 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; bool stayOnWebpart = false; switch (values[0]) { case "webpart": // Check if webpart has widgets DataSet dsWidgets = WidgetInfoProvider.GetWidgets("WidgetWebPartID = " + id, null, 0, "WidgetWebPartID"); if (!DataHelper.DataSourceIsEmpty(dsWidgets)) { string delPostback = ControlsHelper.GetPostBackEventReference(Page, "##"); script = "if (confirm('" + GetString("webparts.deletewithwidgets") + "')) {\n " + delPostback.Replace("'##'", "'webpartwidget;'+" + id + "+';'+" + parentId + "") + ";}\n"; stayOnWebpart = true; break; } WebPartInfoProvider.DeleteWebPartInfo(id); break; case "webpartcategory": try { WebPartCategoryInfoProvider.DeleteCategoryInfo(id); } catch (Exception ex) { // Make alert with exception message, most probable cause is deleting category with subcategories script = String.Format("alert('{0}');\n", ex.Message); // Current node stays selected parentId = id; } break; case "webpartwidget": WebPartInfoProvider.DeleteWebPartInfo(id); break; } // Select parent node after delete WebPartCategoryInfo wci = WebPartCategoryInfoProvider.GetWebPartCategoryInfoById(parentId); if (wci != null) { if (!stayOnWebpart) { // Select category script = SelectAtferLoad(wci.CategoryPath + "/", parentId, "webpartcategory", wci.CategoryParentID) + script; } else { // Stay on selected webpart script = SelectAtferLoad(wci.CategoryPath + "/", id, "webpart", wci.CategoryID) + script; } } ltlScript.Text += ScriptHelper.GetScript(script); treeElem.ReloadData(); treeWireframes.ReloadData(); } } /// /// 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 private string SelectAtferLoad(string path, int itemId, string type, int parentId) { if (path.StartsWith(treeWireframes.RootPath)) { treeWireframes.SelectPath = path; treeElem.ExpandPath = "/"; } else { treeElem.SelectPath = path; } string script = String.Format("SelectNode({0},'{1}',{2});", itemId, type, parentId); return script; } }