/// <summary> /// Creates tree provider object for categories assigned to specified site or user. /// </summary> /// <param name="siteId">ID of the site.</param> /// <param name="userId">ID of the user.</param> private UniTreeProvider CreateTreeProvider(int siteId, int userId) { // Create and set category provider UniTreeProvider provider = new UniTreeProvider { UseCustomRoots = true, RootLevelOffset = -1, ObjectType = "cms.category", DisplayNameColumn = "CategoryDisplayName", IDColumn = "CategoryID", LevelColumn = "CategoryLevel", OrderColumn = "CategoryOrder", ParentIDColumn = "CategoryParentID", PathColumn = "CategoryIDPath", ValueColumn = "CategoryID", ChildCountColumn = "CategoryChildCount" }; // Prepare the parameters provider.Parameters = new QueryDataParameters(); provider.Parameters.Add("SiteID", siteId); provider.Parameters.Add("IncludeGlobal", AllowGlobalCategories); provider.Parameters.Add("UserID", userId); provider.Columns = "CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryUserID, CategorySiteID, (SELECT COUNT(C.CategoryID) FROM CMS_Category AS C WHERE (C.CategoryParentID = CMS_Category.CategoryID) AND (ISNULL(C.CategorySiteID, 0) = @SiteID OR (C.CategorySiteID IS NULL AND @IncludeGlobal = 1)) AND (ISNULL(C.CategoryUserID, 0) = @UserID)) AS CategoryChildCount"; provider.OrderBy = "CategoryUserID, CategorySiteID, CategoryOrder"; provider.WhereCondition = "ISNULL(CategoryUserID, 0) = " + userId + " AND (ISNULL(CategorySiteID, 0) = " + siteId; if (AllowGlobalCategories && (siteId > 0)) { provider.WhereCondition += " OR CategorySiteID IS NULL"; } provider.WhereCondition += ")"; return(provider); }
/// <summary> /// Set tree provider /// </summary> protected void SetTreeProvider() { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " (ElementLevel <= " + (root.ElementLevel + MaxRelativeLevel) + ")"); string levelColumn = "CASE ElementLevel WHEN " + (root.ElementLevel + MaxRelativeLevel) + " THEN 0 ELSE ElementChildCount END AS ElementChildCount"; UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = root.ElementLevel; provider.ObjectType = "cms.uielement"; provider.DisplayNameColumn = "ElementDisplayName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementName"; provider.ChildCountColumn = "ElementChildCount"; provider.WhereCondition = levelWhere; provider.CaptionColumn = "ElementCaption"; provider.Columns = "ElementID, ElementName, ElementDisplayName, ElementGuid, ElementLevel, ElementOrder, ElementIconClass, ElementParentID, ElementIDPath, ElementCaption, ElementIconPath, ElementTargetURL, ElementType, ElementFeature, ElementVisibilityCondition, ElementResourceID, " + levelColumn; provider.ImageColumn = "ElementIconPath"; provider.IconClassColumn = "ElementIconClass"; treeElem.ProviderObject = provider; }
protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { return; } ScriptHelper.RegisterJQuery(Page); // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "Reporting.ReportCategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel,CategoryOrder,ParentID, ObjectPath, CompleteChildCount,ObjectType,CategoryChildCount, CategoryImagePath"; categoryProvider.ImageColumn = "CategoryImagePath"; if (!ShowReports) { categoryProvider.WhereCondition = "ObjectType = 'reportcategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_WebPartCategory/list.png"); treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage.Execute += treeElem_OnGetImage; treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; } // Set up tree treeElem.ProviderObject = categoryProvider; treeElem.IsLiveSite = false; // Setup event handler treeElem.OnItemSelected += treeElem_OnItemSelected; treeElem.UsePostBack = false; treeElem.OnNodeCreated += treeElem_OnNodeCreated; }
/// <summary> /// Creates tree provider. /// </summary> private UniTreeProvider CreateTreeProvider(int siteId) { // Get root node level var rootPath = ECommerceSettings.ProductsStartingPath(siteId); var rootLevel = rootPath.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Length; // Create and set sku category provider var provider = new UniTreeProvider { RootLevelOffset = rootLevel, ObjectType = "cms.tree", DisplayNameColumn = "NodeName", IDColumn = "NodeID", LevelColumn = "NodeLevel", OrderColumn = "NodeOrder", ParentIDColumn = "NodeParentID", PathColumn = "NodeAliasPath", ValueColumn = "NodeID", ChildCountColumn = "NodeChildCount", Parameters = new QueryDataParameters { { "SiteID", siteId } } }; string selected = null; if (!string.IsNullOrEmpty(hidItem.Value)) { var splittedValues = hidItem.Value.Split(new[] { mValuesSeparator }, StringSplitOptions.RemoveEmptyEntries); selected = mReturnColumnName == "NodeGUID" ? string.Join(",", splittedValues.Select(x => $"'{ValidationHelper.GetGuid(x, Guid.Empty)}'")) : string.Join(",", splittedValues.Select(x => ValidationHelper.GetInteger(x, 0))); } // Subquery to obtain count of enabled child sku categories for specified user, site string childCountColumn = "(SELECT COUNT(T.NodeID) FROM CMS_Tree AS T INNER JOIN CMS_Class AS C ON T.NodeClassID = C.ClassID AND C.ClassIsProductSection = 1 WHERE (T.NodeParentID = CMS_Tree.NodeID) AND (T.NodeSiteID = @SiteID)) AS NodeChildCount"; // Subquery to obtain count of selected enabled child categories with no disabled parent. string checkedChildCountColumn = string.IsNullOrEmpty(selected) ? "(0) AS ChildChecked" : $"(SELECT COUNT(TT.NodeID) FROM CMS_Tree AS TT WHERE (TT.{mReturnColumnName} IN ({selected})) AND (TT.NodeAliasPath LIKE CMS_Tree.NodeAliasPath + '/%')) AS ChildChecked"; // Prepare provider.Columns = $"NodeID, NodeGUID, NodeName, NodeLevel, NodeOrder, NodeParentID, NodeAliasPath, {childCountColumn}, {checkedChildCountColumn}"; provider.OrderBy = "NodeAliasPath, NodeOrder"; provider.WhereCondition = "NodeSiteID = @SiteID AND NodeAliasPath LIKE N'" + rootPath + "%' AND NodeClassID IN (SELECT ClassID FROM CMS_Class WHERE ClassIsProductSection = 1)"; // Append explicit where condition provider.WhereCondition = SqlHelper.AddWhereCondition(provider.WhereCondition, mWhereCondition); return(provider); }
/// <summary> /// Creates tree provider. /// </summary> /// <param name="siteId">ID of the site to create provider for.</param> /// <param name="userId">ID of the user to create provider for.</param> private UniTreeProvider CreateTreeProvider(int siteId, int userId) { int rootOffset = -1; if (userId == 0) { rootOffset = (StartingCategoryObj != null) ? StartingCategoryObj.CategoryLevel : -1; } // Prepare where condition for child counting restriction string whereMaxLevel = ""; if (MaxRelativeLevel > 0) { whereMaxLevel = string.Format("(C.CategoryLevel <= {0}) AND", rootOffset + MaxRelativeLevel); } // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.UseCustomRoots = true; provider.RootLevelOffset = rootOffset; provider.ObjectType = "cms.category"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; provider.MaxRelativeLevel = MaxRelativeLevel; // Prepare the parameters provider.Parameters = new QueryDataParameters(); provider.Parameters.Add("SiteID", siteId); provider.Parameters.Add("UserID", userId); // Sub query to obtain count of enabled child categories for specified user, site and 'use global categories' setting string countSiteWhere = GetSiteWhere("C.CategorySiteID", siteId, userId); string ChildCountColumn = "(SELECT COUNT(C.CategoryID) FROM CMS_Category AS C WHERE " + whereMaxLevel + " (C.CategoryEnabled = 1) AND (C.CategoryParentID = CMS_Category.CategoryID) AND " + countSiteWhere + " AND (ISNULL(C.CategoryUserID, 0) = @UserID)) AS CategoryChildCount"; // Prepare columns provider.Columns = string.Format("CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryUserID, CategorySiteID, {0}", ChildCountColumn); provider.OrderBy = "CategoryUserID, CategorySiteID, CategoryOrder"; string mainSiteWhere = GetSiteWhere("CategorySiteID", siteId, userId); provider.WhereCondition = "ISNULL(CategoryUserID, 0) = " + userId + " AND (CategoryEnabled = 1)"; provider.WhereCondition = SqlHelper.AddWhereCondition(provider.WhereCondition, mainSiteWhere); return(provider); }
private void InitTree() { ScriptHelper.RegisterJQuery(Page); String prefix = String.Empty; if (objectType.ToLowerCSafe() == "cms.widget") { prefix = "Widget"; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = prefix + "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = categoryObjectType + ".selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel," + prefix + "CategoryOrder,ParentID, ObjectPath, CompleteChildCount,ObjectType," + prefix + "CategoryChildCount, " + prefix + "CategoryImagePath"; categoryProvider.ImageColumn = prefix + "CategoryImagePath"; if (!ShowItems) { categoryProvider.WhereCondition = "ObjectType LIKE '%category%'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; Tree.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; Tree.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; Tree.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; Tree.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; } // Set up tree Tree.ProviderObject = categoryProvider; Tree.IsLiveSite = false; // Setup event handler Tree.OnItemSelected += treeElem_OnItemSelected; Tree.UsePostBack = false; Tree.OnNodeCreated += treeElem_OnNodeCreated; }
private void InitTree() { ScriptHelper.RegisterJQuery(Page); String prefix = String.Empty; if (string.Equals(objectType, "cms.widget", StringComparison.OrdinalIgnoreCase)) { prefix = "Widget"; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = categoryObjectType + ".selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; // Create export and additional columns argument, allow export by default String additionalCols = String.Empty; String exportArg = "true"; if (!String.IsNullOrEmpty(ExportableColumn)) { exportArg = "'##PARAMETER##'"; additionalCols += "," + ExportableColumn; categoryProvider.ParameterColumn = ExportableColumn; } categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel,ParentID, ObjectPath, CompleteChildCount,ObjectType," + prefix + "CategoryChildCount, " + prefix + "CategoryImagePath" + additionalCols; categoryProvider.ImageColumn = prefix + "CategoryImagePath"; categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; Tree.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true, '', " + exportArg + ");\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; Tree.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true, '', " + exportArg + ");\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; // Set up tree Tree.ProviderObject = categoryProvider; Tree.IsLiveSite = false; // Setup event handler Tree.OnItemSelected += treeElem_OnItemSelected; Tree.UsePostBack = false; Tree.OnNodeCreated += treeElem_OnNodeCreated; }
/// <summary> /// Reloads the tree data. /// </summary> public void ReloadData() { ResourceInfo ri = ResourceInfoProvider.GetResourceInfo(this.ModuleID); if (ri != null) { // Get the info root = UIElementInfoProvider.GetRootUIElementInfo(ri.ResourceName); if (root != null) { // Prepare the parameters QueryDataParameters parameters = new QueryDataParameters(); parameters.Add("@ModuleID", this.ModuleID); parameters.Add("@RoleID", this.RoleID); // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.QueryName = "cms.uielement.selecttree"; provider.DisplayNameColumn = "ElementName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementID"; provider.ChildCountColumn = "ElementChildCount"; provider.Parameters = parameters; this.treeElem.ExpandTooltip = GetString("general.expand"); this.treeElem.CollapseTooltip = GetString("general.collapse"); this.treeElem.UsePostBack = false; this.treeElem.EnableRootAction = false; this.treeElem.ProviderObject = provider; this.treeElem.ExpandPath = root.ElementIDPath; string rootText = HTMLHelper.HTMLEncode(ri.ResourceDisplayName) + " <span class=\"UITreeSelectButton\">(<span onclick=\"" + (Enabled ? "SelectAllSubelements($j(this), " + root.ElementID + ", false); " + CallbackRef + ";" : "return false;") + "\" >" + GetString("uiprofile.selectall") + "</span>, <span onclick=\"" + (Enabled ? "DeselectAllSubelements($j(this), " + root.ElementID + ", false); " + CallbackRef + ";" : "return false;") + "\" >" + GetString("uiprofile.deselectall") + "</span>)</span>"; this.treeElem.SetRoot(rootText, root.ElementID.ToString(), ResolveUrl(root.ElementIconPath)); this.treeElem.ReloadData(); } } }
/// <summary> /// Set tree provider /// </summary> protected void SetTreeProvider() { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " AND (ElementLevel <= " + (root.ElementLevel + MaxRelativeLevel) + ")"); string levelColumn = "CASE ElementLevel WHEN " + (root.ElementLevel + MaxRelativeLevel) + " THEN 0 ELSE ElementChildCount END AS ElementChildCount"; UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = root.ElementLevel; provider.ObjectType = "cms.uielement"; provider.DisplayNameColumn = "ElementDisplayName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementName"; provider.ChildCountColumn = "ElementChildCount"; provider.WhereCondition = "((ElementLevel = 0) OR ((ElementCaption IS NOT NULL) AND NOT (ElementCaption = '')))" + levelWhere; provider.Columns = "ElementID, ElementName, ElementDisplayName, ElementLevel, ElementOrder, ElementParentID, ElementIDPath, ElementCaption, ElementIconPath, ElementTargetURL, ElementResourceID, " + levelColumn; treeElem.ProviderObject = provider; }
private void InitTree() { ScriptHelper.RegisterJQuery(Page); String prefix = String.Empty; if (objectType.ToLowerCSafe() == "cms.widget") { prefix = "Widget"; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = prefix + "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = categoryObjectType + ".selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; // Create export and additional columns argument, allow export by default String additionalCols = String.Empty; String exportArg = "true"; if (!String.IsNullOrEmpty(ExportableColumn)) { exportArg = "'##PARAMETER##'"; additionalCols += "," + ExportableColumn; categoryProvider.ParameterColumn = ExportableColumn; } categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel," + prefix + "CategoryOrder,ParentID, ObjectPath, CompleteChildCount,ObjectType," + prefix + "CategoryChildCount, " + prefix + "CategoryImagePath" + additionalCols; categoryProvider.ImageColumn = prefix + "CategoryImagePath"; if (!ShowItems) { categoryProvider.WhereCondition = "ObjectType LIKE '%category%'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; Tree.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true, '', " + exportArg + ");\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; Tree.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##, true, '', " + exportArg + ");\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; Tree.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true, '', " + exportArg + ");\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; Tree.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true, '', " + exportArg + ");\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; } // Set up tree Tree.ProviderObject = categoryProvider; Tree.IsLiveSite = false; // Setup event handler Tree.OnItemSelected += treeElem_OnItemSelected; Tree.UsePostBack = false; Tree.OnNodeCreated += treeElem_OnNodeCreated; }
/// <summary> /// Reloads the tree data. /// </summary> public void ReloadData() { // Prepare the parameters QueryDataParameters parameters = new QueryDataParameters(); parameters.Add("@RoleID", RoleID); // Create and set UIElements provider UniTreeProvider elementProvider = new UniTreeProvider(); elementProvider.QueryName = "cms.uielement.selecttree"; elementProvider.DisplayNameColumn = "ElementDisplayName"; elementProvider.IDColumn = "ElementID"; elementProvider.LevelColumn = "ElementLevel"; elementProvider.OrderColumn = "ElementOrder"; elementProvider.ParentIDColumn = "ElementParentID"; elementProvider.PathColumn = "ElementIDPath"; elementProvider.ValueColumn = "ElementID"; elementProvider.ChildCountColumn = "ElementChildCount"; elementProvider.ImageColumn = "ElementIconPath"; elementProvider.Parameters = parameters; elementProvider.IconClassColumn = "ElementIconClass"; treeElem.ExpandTooltip = GetString("general.expand"); treeElem.CollapseTooltip = GetString("general.collapse"); treeElem.UsePostBack = false; treeElem.EnableRootAction = false; treeElem.ProviderObject = elementProvider; if (SingleModule) { ResourceInfo ri = ResourceInfoProvider.GetResourceInfo(ModuleID); if (ri != null) { root = UIElementInfoProvider.GetModuleTopUIElement(ModuleID); if (root != null) { treeElem.ExpandPath = root.ElementIDPath; string links = null; if (Enabled) { links = string.Format(SELECT_DESELECT_LINKS, root.ElementID, "false", CallbackRef, GetString("uiprofile.selectall"), GetString("uiprofile.deselectall")); } string rootText = HTMLHelper.HTMLEncode(ri.ResourceDisplayName) + links; treeElem.SetRoot(rootText, root.ElementID.ToString(), ResolveUrl(root.ElementIconPath)); elementProvider.RootLevelOffset = root.ElementLevel; } elementProvider.WhereCondition = "ElementResourceID=" + ModuleID; } } else { if (ModuleID > 0) { String where = String.Format(@"ElementResourceID = {0} AND (ElementParentID IS NULL OR ElementParentID NOT IN (SELECT ElementID FROM CMS_UIElement WHERE ElementResourceID={0})) AND (NOT EXISTS (SELECT ElementIDPath FROM CMS_UIElement AS u WHERE CMS_UIElement.ElementIDPath LIKE u.ElementIDPath + '%' AND ElementResourceID = {0} AND u.ElementIDPath != CMS_UIElement.ElementIDPath))", ModuleID); DataSet ds = UIElementInfoProvider.GetUIElements(where, "ElementLevel ASC"); String expandedPath = String.Empty; if (!DataHelper.DataSourceIsEmpty(ds)) { foreach (DataRow dr in ds.Tables[0].Rows) { String path = ValidationHelper.GetString(dr["ElementIDPath"], String.Empty); if (path != String.Empty) { expandedPath += path + ";"; } } } treeElem.ExpandPath = expandedPath; } } treeElem.ReloadData(); }
protected void Page_Load(object sender, EventArgs e) { int moduleId = QueryHelper.GetInteger("moduleid", 0); int parentId = QueryHelper.GetInteger("parentId", 0); ScriptHelper.RegisterJQuery(this.Page); // Use images according to culture if (CultureHelper.IsUICultureRTL()) { this.uniTree.LineImagesFolder = GetImageUrl("RTL/Design/Controls/Tree", false, false); } else { this.uniTree.LineImagesFolder = GetImageUrl("Design/Controls/Tree", false, false); } if (!RequestHelper.IsPostBack()) { // Get module root element UIElementInfo elemInfo = UIElementInfoProvider.GetRootUIElementInfo(moduleId); if (elemInfo != null) { this.uniTree.SelectPath = elemInfo.ElementIDPath; this.uniTree.ExpandPath = elemInfo.ElementIDPath + "/"; this.menuElem.Value = elemInfo.ElementID + "|" + elemInfo.ElementParentID; } else { // Get current resource ResourceInfo resInfo = ResourceInfoProvider.GetResourceInfo(moduleId); if (resInfo != null) { // Create new UI element elemInfo = new UIElementInfo(); elemInfo.ElementResourceID = moduleId; elemInfo.ElementDisplayName = resInfo.ResourceDisplayName; elemInfo.ElementName = resInfo.ResourceName.ToLower().Replace(".", ""); elemInfo.ElementIsCustom = false; UIElementInfoProvider.SetUIElementInfo(elemInfo); this.uniTree.SelectPath = elemInfo.ElementIDPath; this.uniTree.ExpandPath = elemInfo.ElementIDPath; this.menuElem.Value = elemInfo.ElementID + "|0"; } } } this.menuElem.ResourceID = moduleId; this.menuElem.AfterAction += new OnActionEventHandler(menuElem_AfterAction); // Create and set UIElements provider UniTreeProvider elementProvider = new UniTreeProvider(); elementProvider.ObjectType = "CMS.UIElement"; elementProvider.DisplayNameColumn = "ElementDisplayName"; elementProvider.IDColumn = "ElementID"; elementProvider.LevelColumn = "ElementLevel"; elementProvider.OrderColumn = "ElementOrder"; elementProvider.ParentIDColumn = "ElementParentID"; elementProvider.PathColumn = "ElementIDPath"; elementProvider.ValueColumn = "ElementID"; elementProvider.ChildCountColumn = "ElementChildCount"; elementProvider.WhereCondition = "ElementResourceID = " + moduleId; elementProvider.Columns = "ElementID,ElementLevel,ElementOrder,ElementParentID,ElementIDPath,ElementChildCount,ElementDisplayName"; this.uniTree.UsePostBack = false; this.uniTree.ProviderObject = elementProvider; this.uniTree.ExpandTooltip = GetString("general.expand"); this.uniTree.CollapseTooltip = GetString("general.collapse"); this.uniTree.NodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + moduleId + "); return false;\" name=\"treeNode\" class=\"ContentTreeItem\"><span class=\"Name\">##NODENAME##</span></span>"; this.uniTree.SelectedNodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + moduleId + "); return false;\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\"><span class=\"Name\">##NODENAME##</span></span>"; if (!RequestHelper.IsPostBack()) { string selectedPath = QueryHelper.GetString("path", String.Empty); int elementId = QueryHelper.GetInteger("elementId", 0); if (!string.IsNullOrEmpty(selectedPath)) { this.uniTree.SelectPath = selectedPath; } if (elementId > 0) { this.menuElem.ElementID = elementId; this.menuElem.ParentID = parentId; this.menuElem.Value = elementId + "|" + parentId; } } // Load data this.uniTree.ReloadData(); string script = "var frameURL = '" + ResolveUrl("~/CMSModules/Modules/Pages/Development/Module_UI_EditFrameset.aspx") + "';"; script += "var newURL = '" + ResolveUrl("~/CMSModules/Modules/Pages/Development/Module_UI_New.aspx") + "';"; script += "var postParentId = " + parentId + ";"; this.ltlScript.Text = ScriptHelper.GetScript(script); }
/// <summary> /// Initializes the category provider /// </summary> private void InitCategoryProvider() { // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.pagetemplatecategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, CodeName, ObjectID, ObjectLevel, CategoryOrder, ParentID, ObjectPath, CompleteChildCount, ObjectType, CategoryChildCount, CategoryImagePath, Parameter"; categoryProvider.ImageColumn = "CategoryImagePath"; categoryProvider.ParameterColumn = "Parameter"; if (!SelectPageTemplates) { categoryProvider.WhereCondition = "ObjectType = 'pagetemplatecategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_PageTemplateCategory/list.png"); } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); } // Do not show AdHoc category if (!ShowAdHocCategory) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CodeName <> 'AdHoc'"); } // Do not show empty categories if (!ShowEmptyCategories) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CategoryTemplateChildCount > 0 OR CategoryChildCount > 0"); TreeProvider tp = new TreeProvider(CMSContext.CurrentUser); CMS.DocumentEngine.TreeNode node = DocumentHelper.GetDocument(DocumentID, tp); string culture = CMSContext.PreferredCultureCode; int level = 0; string path = string.Empty; if (node != null) { level = node.NodeLevel; path = node.NodeAliasPath; if (IsNewPage) { level++; path = path + "/%"; } else { culture = node.DocumentCulture; } } // Add where condition for scopes categoryProvider.WhereCondition += " AND (ObjectLevel = 0 OR (SELECT TOP 1 ObjectID FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS X WHERE X.ObjectType = 'pagetemplate' "; categoryProvider.WhereCondition += " AND (X.PageTemplateType IS NULL OR X.PageTemplateType <> N'" + PageTemplateInfoProvider.GetPageTemplateTypeCode(PageTemplateTypeEnum.Dashboard) + "')"; if (ShowOnlySiteTemplates) { categoryProvider.WhereCondition += " AND X.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.WhereCondition += " AND (" + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "X", "ObjectID") + ") "; } categoryProvider.WhereCondition += " AND (X.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) IS NOT NULL)"; // Add column count column - minimal number of children categoryProvider.Columns += @", (SELECT TOP 1 Count(*) FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS Y WHERE (Y.ObjectID = View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectID AND Y.ObjectLevel = 0) OR ( View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectType = 'PageTemplateCategory' AND View_CMS_PageTemplateCategoryPageTemplate_Joined.CategoryChildCount > 0 AND Y.ObjectType = 'PageTemplate' AND Y.ObjectLevel > View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectLevel + 1 "; if (ShowOnlySiteTemplates) { categoryProvider.Columns += "AND Y.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.Columns += " AND ( " + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "Y", "ObjectID") + " ) "; } categoryProvider.Columns += " AND Y.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) AS MinNumberOfChilds"; categoryProvider.ChildCountColumn = "MinNumberOfChilds"; } // Handle the root path if (!String.IsNullOrEmpty(RootPath) && (RootPath != "/")) { categoryProvider.RootLevelOffset = RootPath.Split('/').Length - 1; categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, String.Format("((ObjectPath = '{0}' OR ObjectPath LIKE '{0}/%'))", RootPath)); } treeElem.ProviderObject = categoryProvider; }
/// <summary> /// Creates tree provider. /// </summary> /// <param name="siteId">ID of the site to create provider for.</param> /// <param name="userId">ID of the user to create provider for.</param> /// <returns></returns> private UniTreeProvider CreateTreeProvider(int siteId, int userId) { // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.UseCustomRoots = true; provider.RootLevelOffset = -1; provider.ObjectType = "cms.category"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; // Prepare the parameters provider.Parameters = new QueryDataParameters(); provider.Parameters.Add("SiteID", siteId); provider.Parameters.Add("IncludeGlobal", AllowGlobalCategories); provider.Parameters.Add("UserID", userId); string selected = ""; string colName = "CategoryID"; if (!string.IsNullOrEmpty(hidItem.Value)) { // Selecting by ID if (returnColumnName == "CategoryID") { int[] valIds = ValidationHelper.GetIntegers(hidItem.Value.Split(new string[] { valuesSeparator }, StringSplitOptions.RemoveEmptyEntries), 0); selected = "0"; foreach (int i in valIds) { selected += "," + i; } } else { // Selecting by code name colName = "CategoryName"; string[] valNames = hidItem.Value.Split(new string[] { valuesSeparator }, StringSplitOptions.RemoveEmptyEntries); selected = "N''"; foreach (string name in valNames) { selected += ", N'" + SqlHelperClass.GetSafeQueryString(name, false) + "'"; } } } if (string.IsNullOrEmpty(selected)) { selected = (returnColumnName == "CategoryID") ? "0" : "N''"; } // Subquery to obtain count of enabled child categories for specified user, site and 'use global categories' setting string ChildCountColumn = "(SELECT COUNT(C.CategoryID) FROM CMS_Category AS C WHERE (C.CategoryEnabled = 1) AND (C.CategoryParentID = CMS_Category.CategoryID) AND (ISNULL(C.CategorySiteID, 0) = @SiteID OR (C.CategorySiteID IS NULL AND @IncludeGlobal = 1)) AND (ISNULL(C.CategoryUserID, 0) = @UserID)) AS CategoryChildCount"; // Subquery to obtain count of selected enabled child categories with no disabled parent. string CheckedChildCountColumn = "(SELECT COUNT(CategoryID) FROM CMS_Category AS cc WHERE (cc.CategoryEnabled = 1) AND (cc." + colName + " IN (" + selected + ")) AND (cc.CategoryIDPath LIKE CMS_Category.CategoryIDPath + '/%') AND (NOT EXISTS(SELECT CategoryID FROM CMS_Category AS pc WHERE (pc.CategoryEnabled = 0) AND (cc.CategoryIDPath like pc.CategoryIDPath+'/%')))) AS ChildChecked"; // Prepare provider.Columns = string.Format("CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryUserID, CategorySiteID, {0}, {1}", ChildCountColumn, CheckedChildCountColumn); provider.OrderBy = "CategoryUserID, CategorySiteID, CategoryOrder"; provider.WhereCondition = "ISNULL(CategoryUserID, 0) = " + userId + " AND (CategoryEnabled = 1) AND (ISNULL(CategorySiteID, 0) = " + siteId; if (AllowGlobalCategories && (siteId > 0)) { provider.WhereCondition += " OR CategorySiteID IS NULL"; } provider.WhereCondition += ")"; // Append explicit where condition provider.WhereCondition = SqlHelperClass.AddWhereCondition(provider.WhereCondition, whereCondition); return(provider); }
/// <summary> /// Page_Load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (this.StopProcessing) { return; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.webpartcategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel,CategoryOrder,ParentID, ObjectPath, CompleteChildCount,ObjectType,CategoryChildCount, CategoryImagePath"; categoryProvider.ImageColumn = "CategoryImagePath"; string where = null; if (!SelectWebParts) { // Select only categories where = "ObjectType = N'webpartcategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_WebPartCategory/list.png"); } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); } if (!ShowWidgetOnlyWebparts) { // Hide categories with "widget only" web parts where = SqlHelperClass.AddWhereCondition(where, "ObjectPath = '/' OR (SELECT Count(*) FROM View_CMS_WebPartCategoryWebpart_Joined AS X WHERE X.ObjectType = N'webpart' AND (X.WebPartType IS NULL OR X.WebPartType != " + Convert.ToInt32(WebPartTypeEnum.WidgetOnly) + ") AND X.ObjectPath LIKE View_CMS_WebPartCategoryWebpart_Joined.ObjectPath + '/%') > 0"); } // Add custom where condition if (!string.IsNullOrEmpty(RootPath)) { where = SqlHelperClass.AddWhereCondition(where, "ObjectPath = '" + SqlHelperClass.GetSafeQueryString(RootPath, false) + "' OR ObjectPath LIKE '" + SqlHelperClass.GetSafeQueryString(RootPath, false) + "/%'"); categoryProvider.RootLevelOffset = RootPath.Split('/').Length - 1; treeElem.ExpandPath = RootPath + "/"; } categoryProvider.WhereCondition = where; // Set up tree treeElem.ProviderObject = categoryProvider; if (SelectWebParts) { treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; } else { treeElem.NodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.DefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedDefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; // Register jquery ScriptHelper.RegisterJQuery(this.Page); string js = "var selectedItem = $j('.ContentTreeSelectedItem');" + "function SelectNode(nodeid, sender){" + "selectedItem.removeClass('ContentTreeSelectedItem'); " + "selectedItem.addClass('ContentTreeItem');" + "selectedItem = $j(sender);" + "selectedItem.removeClass('ContentTreeItem'); " + "selectedItem.addClass('ContentTreeSelectedItem'); " + "document.getElementById('" + this.treeElem.SelectedItemFieldId + "').value = nodeid;" + treeElem.GetOnSelectedItemBackEventReference() + "}"; ScriptHelper.RegisterStartupScript(this.Page, typeof(string), "SelectTreeNode", ScriptHelper.GetScript(js)); } // Add last recently used if (ShowRecentlyUsed) { treeElem.AddDefaultItem(GetString("webparts.recentlyused"), "recentlyused", ResolveUrl(GetImageUrl("Objects/CMS_WebPartCategory/recentlyused.png"))); } // Setup event handler treeElem.OnItemSelected += new CMSAdminControls_UI_Trees_UniTree.ItemSelectedEventHandler(treeElem_OnItemSelected); treeElem.OnNodeCreated += new CMSAdminControls_UI_Trees_UniTree.NodeCreatedEventHandler(treeElem_OnNodeCreated); }
/// <summary> /// Reloads the tree data. /// </summary> public void ReloadData() { var elementProvider = new UniTreeProvider { QueryName = "cms.uielement.selecttree", DisplayNameColumn = "ElementDisplayName", IDColumn = "ElementID", LevelColumn = "ElementLevel", OrderColumn = "ElementOrder", ParentIDColumn = "ElementParentID", PathColumn = "ElementIDPath", ValueColumn = "ElementID", ChildCountColumn = "ElementChildCount", ImageColumn = "ElementIconPath", Parameters = new QueryDataParameters { { "@RoleID", RoleID } }, IconClassColumn = "ElementIconClass" }; treeElem.ExpandTooltip = GetString("general.expand"); treeElem.CollapseTooltip = GetString("general.collapse"); treeElem.UsePostBack = false; treeElem.EnableRootAction = false; treeElem.ProviderObject = elementProvider; if (SingleModule) { ResourceInfo ri = ResourceInfoProvider.GetResourceInfo(ModuleID); if (ri != null) { root = UIElementInfoProvider.GetModuleTopUIElement(ModuleID); if (root != null) { treeElem.ExpandPath = root.ElementIDPath; string links = null; if (Enabled) { links = string.Format(SELECT_DESELECT_LINKS, root.ElementID, "false", CallbackRef, GetString("uiprofile.selectall"), GetString("uiprofile.deselectall")); } string rootText = HTMLHelper.HTMLEncode(ri.ResourceDisplayName) + links; treeElem.SetRoot(rootText, root.ElementID.ToString(), ResolveUrl(root.ElementIconPath)); elementProvider.RootLevelOffset = root.ElementLevel; } if (!ShowAllElementsFromModuleSection) { elementProvider.WhereCondition = "ElementResourceID = " + ModuleID; } } } else { if (ModuleID > 0) { var where = $@"ElementResourceID = {ModuleID} AND (ElementParentID IS NULL OR ElementParentID NOT IN (SELECT ElementID FROM CMS_UIElement WHERE ElementResourceID={ModuleID})) AND (NOT EXISTS (SELECT ElementIDPath FROM CMS_UIElement AS u WHERE CMS_UIElement.ElementIDPath LIKE u.ElementIDPath + '%' AND ElementResourceID = {ModuleID} AND u.ElementIDPath != CMS_UIElement.ElementIDPath))"; var idPaths = UIElementInfoProvider.GetUIElements() .Where(where) .WhereNotEmpty("ElementIDPath") .Columns("ElementIDPath") .OrderByAscending("ElementLevel") .GetListResult <string>(); var expandedPath = String.Empty; if (idPaths.Any()) { expandedPath = String.Join(";", idPaths) + ";"; } treeElem.ExpandPath = expandedPath; } } treeElem.ReloadData(); }
/// <summary> /// Initializes the category provider /// </summary> private void InitCategoryProvider() { // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.pagetemplatecategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, CodeName, ObjectID, ObjectLevel, CategoryOrder, ParentID, ObjectPath, CompleteChildCount, ObjectType, CategoryChildCount, CategoryImagePath, Parameter"; categoryProvider.ImageColumn = "CategoryImagePath"; categoryProvider.ParameterColumn = "Parameter"; if (!SelectPageTemplates) { categoryProvider.WhereCondition = "ObjectType = 'pagetemplatecategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_PageTemplateCategory/list.png"); } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); } // Do not show AdHoc category if (!ShowAdHocCategory) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CodeName <> 'AdHoc'"); } // Do not show empty categories if (!ShowEmptyCategories) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CategoryTemplateChildCount > 0 OR CategoryChildCount > 0"); TreeProvider tp = new TreeProvider(CMSContext.CurrentUser); CMS.DocumentEngine.TreeNode node = DocumentHelper.GetDocument(DocumentID, tp); string culture = CMSContext.PreferredCultureCode; int level = 0; string path = string.Empty; if (node != null) { level = node.NodeLevel; path = node.NodeAliasPath; if (IsNewPage) { level++; path = path + "/%"; } else { culture = node.DocumentCulture; } } // Add where condition for scopes categoryProvider.WhereCondition += " AND (ObjectLevel = 0 OR (SELECT TOP 1 ObjectID FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS X WHERE X.ObjectType = 'pagetemplate' "; categoryProvider.WhereCondition += " AND (X.PageTemplateType IS NULL OR X.PageTemplateType <> N'" + PageTemplateInfoProvider.GetPageTemplateTypeCode(PageTemplateTypeEnum.Dashboard) + "')"; if (ShowOnlySiteTemplates) { categoryProvider.WhereCondition += " AND X.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.WhereCondition += " AND (" + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "X", "ObjectID") + ") "; } categoryProvider.WhereCondition += " AND (X.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) IS NOT NULL)"; // Add column count column - minimal number of children categoryProvider.Columns += @", (SELECT TOP 1 Count(*) FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS Y WHERE (Y.ObjectID = View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectID AND Y.ObjectLevel = 0) OR ( View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectType = 'PageTemplateCategory' AND View_CMS_PageTemplateCategoryPageTemplate_Joined.CategoryChildCount > 0 AND Y.ObjectType = 'PageTemplate' AND Y.ObjectLevel > View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectLevel + 1 "; if (ShowOnlySiteTemplates) { categoryProvider.Columns += "AND Y.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.Columns += " AND ( " + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "Y", "ObjectID") + " ) "; } categoryProvider.Columns += " AND Y.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) AS MinNumberOfChilds"; categoryProvider.ChildCountColumn = "MinNumberOfChilds"; } // Handle the root path if (!String.IsNullOrEmpty(RootPath) && (RootPath != "/")) { categoryProvider.RootLevelOffset = RootPath.Split('/').Length - 1; categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, String.Format("((ObjectPath = '{0}' OR ObjectPath LIKE '{0}/%'))", RootPath)); } treeElem.ProviderObject = categoryProvider; }
/// <summary> /// Initializes the category provider /// </summary> private void InitCategoryProvider() { // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.pagetemplatecategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, CodeName, ObjectID, ObjectLevel, CategoryOrder, ParentID, ObjectPath, CompleteChildCount, ObjectType, CategoryChildCount, CategoryImagePath, Parameter"; categoryProvider.ImageColumn = "CategoryImagePath"; categoryProvider.ParameterColumn = "Parameter"; if (!SelectPageTemplates) { categoryProvider.WhereCondition = "ObjectType = 'pagetemplatecategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; } // Do not show AdHoc category if (!ShowAdHocCategory) { categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, "CodeName <> 'AdHoc' AND CodeName <> 'AdHocUI'"); } // Do not show empty categories if (!ShowEmptyCategories) { categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, "CategoryTemplateChildCount > 0 OR CategoryChildCount > 0"); TreeProvider tp = new TreeProvider(MembershipContext.AuthenticatedUser); CMS.DocumentEngine.TreeNode node = DocumentHelper.GetDocument(DocumentID, tp); string culture = LocalizationContext.PreferredCultureCode; int level = 0; string path = string.Empty; string className = String.Empty; if (node != null) { level = node.NodeLevel; path = node.NodeAliasPath; if (IsNewPage) { level++; path = path + "/%"; } else { culture = node.DocumentCulture; } className = node.NodeClassName; // Check if class id is in query string - then use it's value instead of document class name int classID = QueryHelper.GetInteger("classid", 0); if (classID != 0) { DataClassInfo dci = DataClassInfoProvider.GetDataClassInfo(classID); if (dci != null) { className = dci.ClassName; } } } // Add where condition for scopes categoryProvider.WhereCondition += " AND (ObjectLevel = 0 OR (SELECT TOP 1 ObjectID FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS X WHERE X.ObjectType = 'pagetemplate' "; categoryProvider.WhereCondition += " AND (X.PageTemplateType IS NULL OR X.PageTemplateType <> N'" + PageTemplateInfoProvider.GetPageTemplateTypeCode(PageTemplateTypeEnum.Dashboard) + "')"; if (ShowOnlySiteTemplates) { categoryProvider.WhereCondition += " AND X.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + SiteContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.WhereCondition += " AND (" + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, className, level, SiteContext.CurrentSiteName, "ObjectID") + ") "; } categoryProvider.WhereCondition += " AND (X.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) IS NOT NULL)"; // Add column count column - minimal number of children categoryProvider.Columns += @", (SELECT TOP 1 Count(*) FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS Y WHERE (Y.ObjectID = View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectID AND Y.ObjectLevel = 0) OR ( View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectType = 'PageTemplateCategory' AND View_CMS_PageTemplateCategoryPageTemplate_Joined.CategoryChildCount > 0 AND Y.ObjectType = 'PageTemplate' AND Y.ObjectLevel > View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectLevel + 1 "; if (ShowOnlySiteTemplates) { categoryProvider.Columns += "AND Y.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + SiteContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.Columns += " AND ( " + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, className, level, SiteContext.CurrentSiteName, "ObjectID") + " ) "; } categoryProvider.Columns += " AND Y.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) AS MinNumberOfChilds"; categoryProvider.ChildCountColumn = "MinNumberOfChilds"; } // Handle the root path if (!String.IsNullOrEmpty(RootPath)) { categoryProvider.RootLevelOffset = RootPath.Trim('/').Split('/').Length - 1; categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, String.Format("((ObjectPath = '{0}' OR ObjectPath LIKE '{0}/%'))", RootPath.Trim('/'))); } treeElem.ProviderObject = categoryProvider; }
/// <summary> /// Set tree provider /// </summary> protected void SetTreeProvider() { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " AND (ElementLevel <= " + (root.ElementLevel + MaxRelativeLevel) + ")"); string levelColumn = "CASE ElementLevel WHEN " + (root.ElementLevel + MaxRelativeLevel) + " THEN 0 ELSE ElementChildCount END AS ElementChildCount"; UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = root.ElementLevel; provider.ObjectType = "cms.uielement"; provider.DisplayNameColumn = "ElementDisplayName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementName"; provider.ChildCountColumn = "ElementChildCount"; provider.WhereCondition = "((ElementLevel = 0) OR ((ElementCaption IS NOT NULL) AND NOT (ElementCaption = '')))" + levelWhere; provider.Columns = "ElementID, ElementName, ElementDisplayName, ElementLevel, ElementOrder, ElementParentID, ElementIDPath, ElementCaption, ElementIconPath, ElementTargetURL, ElementResourceID, " + levelColumn; treeElem.ProviderObject = provider; }
protected void Page_Load(object sender, EventArgs e) { // Handle the preselection preselectedItem = QueryHelper.GetString(this.QueryParameterName, ""); if (preselectedItem.StartsWith("cms.", StringComparison.InvariantCultureIgnoreCase)) { preselectedItem = preselectedItem.Substring(4); } this.treeElem.SelectedItem = preselectedItem; // Use images according to culture if (CultureHelper.IsUICultureRTL()) { this.treeElem.LineImagesFolder = GetImageUrl("RTL/Design/Controls/Tree", false, false); } else { this.treeElem.LineImagesFolder = GetImageUrl("Design/Controls/Tree", false, false); } // Register JQuery ScriptHelper.RegisterJQuery(this.Page); // Get the info if (String.IsNullOrEmpty(this.ElementName)) { // Get the root UI element root = UIElementInfoProvider.GetRootUIElementInfo(this.ModuleName); } else { // Get the specified element root = UIElementInfoProvider.GetUIElementInfo(this.ModuleName, this.ElementName); } if (root != null) { string levelWhere = (this.MaxRelativeLevel <= 0 ? "" : " AND (ElementLevel <= " + (root.ElementLevel + this.MaxRelativeLevel) + ")"); string levelColumn = "CASE ElementLevel WHEN " + (root.ElementLevel + this.MaxRelativeLevel) + " THEN 0 ELSE ElementChildCount END AS ElementChildCount"; // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = root.ElementLevel; provider.ObjectType = "cms.uielement"; provider.DisplayNameColumn = "ElementDisplayName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementName"; provider.ChildCountColumn = "ElementChildCount"; provider.WhereCondition = "((ElementLevel = 0) OR ((ElementCaption IS NOT NULL) AND NOT (ElementCaption = '')))" + levelWhere; provider.Columns = "ElementID, ElementName, ElementDisplayName, ElementLevel, ElementOrder, ElementParentID, ElementIDPath, ElementCaption, ElementIconPath, ElementTargetURL, ElementResourceID, " + levelColumn; string redirectScript = ScriptHelper.GetScript("function redirectUrl(node,url,nodeCodeName) {SelectNode(nodeCodeName);if (" + this.JavaScriptHandler + ") { " + this.JavaScriptHandler + "(node, url); } return false;}"); ScriptHelper.RegisterClientScriptBlock(this.Page, typeof(string), "redirect", redirectScript); if (String.IsNullOrEmpty(this.JavaScriptHandler)) { if (EnableRootSelect) { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##'); return false;\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } this.treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"SelectNode('##NODECODENAME##'); return false;\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { if (EnableRootSelect) { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"return redirectUrl(##NODEJAVA##, '##NODETARGETURL##','##NODECODENAME##'); \">##ICON##<a class=\"Name\" href=\"##NODETARGETURL##\">##NODECUSTOMNAME##</a></span>"; } else { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } this.treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"return redirectUrl(##NODEJAVA##, '##NODETARGETURL##','##NODECODENAME##'); \">##ICON##<a class=\"Name\" href=\"##NODETARGETURL##\">##NODECUSTOMNAME##</a></span>"; } this.treeElem.UsePostBack = false; this.treeElem.ProviderObject = provider; this.treeElem.ExpandPath = root.ElementIDPath; this.treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); this.treeElem.OnNodeCreated += new CMSAdminControls_UI_Trees_UniTree.NodeCreatedEventHandler(treeElem_OnNodeCreated); // Create root node string rootName = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(String.IsNullOrEmpty(root.ElementCaption) ? root.ElementDisplayName : root.ElementCaption)); string rootIcon = "<img src=\"" + URLHelper.ResolveUrl(GetImageUrl("/General/DefaultRoot.png")) + "\" style=\"border:none;height:10px;width:1px;\" />"; string rootText = this.treeElem.ReplaceMacros(this.treeElem.SelectedNodeTemplate, root.ElementID, root.ElementChildCount, rootName, rootIcon, root.ElementParentID, null, null); rootText = rootText.Replace("##NODETARGETURL##", ScriptHelper.GetString(this.RootTargetURL, false)); rootText = rootText.Replace("##NODECUSTOMNAME##", rootName); rootText = rootText.Replace("##NODECODENAME##", root.ElementName); this.treeElem.SetRoot(rootText, root.ElementID.ToString(), (this.DisplayRootIcon ? UIHelper.GetImageUrl(this.Page, root.ElementIconPath) : ""), URLHelper.Url + "#", null); if (EnableRootSelect) { this.treeElem.CustomRootNode.SelectAction = TreeNodeSelectAction.None; } currentUser = CMSContext.CurrentUser; } // Reserve log item DataRow sdr = SecurityHelper.ReserveSecurityLogItem("LoadUIMenu"); this.treeElem.ReloadData(); // Log the security if (sdr != null) { SecurityHelper.SetLogItemData(sdr, currentUser.UserName, this.ModuleName, this.ElementName, totalNodes, CMSContext.CurrentSiteName); } }
/// <summary> /// Creates tree provider. /// </summary> /// <param name="siteId">ID of the site to create provider for.</param> /// <param name="userId">ID of the user to create provider for.</param> /// <returns></returns> private UniTreeProvider CreateTreeProvider(int siteId, int userId) { int rootOffset = -1; if (userId == 0) { rootOffset = (StartingCategoryObj != null) ? StartingCategoryObj.CategoryLevel : -1; } // Prepare where condition for child counting restriction string whereMaxLevel = ""; if (MaxRelativeLevel > 0) { whereMaxLevel = string.Format("(C.CategoryLevel <= {0}) AND", rootOffset + MaxRelativeLevel); } // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.UseCustomRoots = true; provider.RootLevelOffset = rootOffset; provider.ObjectType = "cms.category"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; provider.MaxRelativeLevel = MaxRelativeLevel; // Prepare the parameters provider.Parameters = new QueryDataParameters(); provider.Parameters.Add("SiteID", siteId); provider.Parameters.Add("UserID", userId); // Subquery to obtain count of enabled child categories for specified user, site and 'use global categories' setting string countSiteWhere = GetSiteWhere("C.CategorySiteID", siteId, userId); string ChildCountColumn = "(SELECT COUNT(C.CategoryID) FROM CMS_Category AS C WHERE " + whereMaxLevel + " (C.CategoryEnabled = 1) AND (C.CategoryParentID = CMS_Category.CategoryID) AND " + countSiteWhere + " AND (ISNULL(C.CategoryUserID, 0) = @UserID)) AS CategoryChildCount"; // Prepare columns provider.Columns = string.Format("CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryUserID, CategorySiteID, {0}", ChildCountColumn); provider.OrderBy = "CategoryUserID, CategorySiteID, CategoryOrder"; string mainSiteWhere = GetSiteWhere("CategorySiteID", siteId, userId); provider.WhereCondition = "ISNULL(CategoryUserID, 0) = " + userId + " AND (CategoryEnabled = 1)"; provider.WhereCondition = SqlHelperClass.AddWhereCondition(provider.WhereCondition, mainSiteWhere); return provider; }
/// <summary> /// Page_Load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (this.StopProcessing) { return; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.webpartcategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel,CategoryOrder,ParentID, ObjectPath, CompleteChildCount,ObjectType,CategoryChildCount, CategoryImagePath"; categoryProvider.ImageColumn = "CategoryImagePath"; string where = null; if (!SelectWebParts) { // Select only categories where = "ObjectType = N'webpartcategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_WebPartCategory/list.png"); } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); } if (!ShowWidgetOnlyWebparts) { // Hide categories with "widget only" web parts where = SqlHelperClass.AddWhereCondition(where, "ObjectPath = '/' OR (SELECT Count(*) FROM View_CMS_WebPartCategoryWebpart_Joined AS X WHERE X.ObjectType = N'webpart' AND (X.WebPartType IS NULL OR X.WebPartType != " + Convert.ToInt32(WebPartTypeEnum.WidgetOnly) + ") AND X.ObjectPath LIKE View_CMS_WebPartCategoryWebpart_Joined.ObjectPath + '/%') > 0"); } // Add custom where condition if (!string.IsNullOrEmpty(RootPath)) { where = SqlHelperClass.AddWhereCondition(where, "ObjectPath = '" + SqlHelperClass.GetSafeQueryString(RootPath, false) + "' OR ObjectPath LIKE '" + SqlHelperClass.GetSafeQueryString(RootPath, false) + "/%'"); categoryProvider.RootLevelOffset = RootPath.Split('/').Length - 1; treeElem.ExpandPath = RootPath + "/"; } categoryProvider.WhereCondition = where; // Set up tree treeElem.ProviderObject = categoryProvider; if (SelectWebParts) { treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; } else { treeElem.NodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.DefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedDefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; // Register jquery ScriptHelper.RegisterJQuery(this.Page); string js = "var selectedItem = $j('.ContentTreeSelectedItem');" + "function SelectNode(nodeid, sender){" + "selectedItem.removeClass('ContentTreeSelectedItem'); " + "selectedItem.addClass('ContentTreeItem');" + "selectedItem = $j(sender);" + "selectedItem.removeClass('ContentTreeItem'); " + "selectedItem.addClass('ContentTreeSelectedItem'); " + "document.getElementById('" + this.treeElem.SelectedItemFieldId + "').value = nodeid;" + treeElem.GetOnSelectedItemBackEventReference() + "}"; ScriptHelper.RegisterStartupScript(this.Page, typeof(string), "SelectTreeNode", ScriptHelper.GetScript(js)); } // Add last recently used if (ShowRecentlyUsed) { treeElem.AddDefaultItem(GetString("webparts.recentlyused"), "recentlyused", ResolveUrl(GetImageUrl("Objects/CMS_WebPartCategory/recentlyused.png"))); } // Setup event handler treeElem.OnItemSelected += new CMSAdminControls_UI_Trees_UniTree.ItemSelectedEventHandler(treeElem_OnItemSelected); treeElem.OnNodeCreated += new CMSAdminControls_UI_Trees_UniTree.NodeCreatedEventHandler(treeElem_OnNodeCreated); }
protected void Page_Load(object sender, EventArgs e) { // Handle the preselection preselectedItem = QueryHelper.GetString(this.QueryParameterName, ""); if (preselectedItem.StartsWith("cms.", StringComparison.InvariantCultureIgnoreCase)) { preselectedItem = preselectedItem.Substring(4); } this.treeElem.SelectedItem = preselectedItem; // Use images according to culture if (CultureHelper.IsUICultureRTL()) { this.treeElem.LineImagesFolder = GetImageUrl("RTL/Design/Controls/Tree", false, false); } else { this.treeElem.LineImagesFolder = GetImageUrl("Design/Controls/Tree", false, false); } // Register JQuery ScriptHelper.RegisterJQuery(this.Page); // Get the info if (String.IsNullOrEmpty(this.ElementName)) { // Get the root UI element root = UIElementInfoProvider.GetRootUIElementInfo(this.ModuleName); } else { // Get the specified element root = UIElementInfoProvider.GetUIElementInfo(this.ModuleName, this.ElementName); } if (root != null) { string levelWhere = (this.MaxRelativeLevel <= 0 ? "" : " AND (ElementLevel <= " + (root.ElementLevel + this.MaxRelativeLevel) + ")"); string levelColumn = "CASE ElementLevel WHEN " + (root.ElementLevel + this.MaxRelativeLevel) + " THEN 0 ELSE ElementChildCount END AS ElementChildCount"; // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = root.ElementLevel; provider.ObjectType = "cms.uielement"; provider.DisplayNameColumn = "ElementDisplayName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementName"; provider.ChildCountColumn = "ElementChildCount"; provider.WhereCondition = "((ElementLevel = 0) OR ((ElementCaption IS NOT NULL) AND NOT (ElementCaption = '')))" + levelWhere; provider.Columns = "ElementID, ElementName, ElementDisplayName, ElementLevel, ElementOrder, ElementParentID, ElementIDPath, ElementCaption, ElementIconPath, ElementTargetURL, ElementResourceID, " + levelColumn; string redirectScript = ScriptHelper.GetScript("function redirectUrl(node,url,nodeCodeName) {SelectNode(nodeCodeName);if (" + this.JavaScriptHandler + ") { " + this.JavaScriptHandler + "(node, url); } return false;}"); ScriptHelper.RegisterClientScriptBlock(this.Page, typeof(string), "redirect", redirectScript); if (String.IsNullOrEmpty(this.JavaScriptHandler)) { if (EnableRootSelect) { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##'); return false;\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } this.treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"SelectNode('##NODECODENAME##'); return false;\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { if (EnableRootSelect) { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"return redirectUrl(##NODEJAVA##, '##NODETARGETURL##','##NODECODENAME##'); \">##ICON##<a class=\"Name\" href=\"##NODETARGETURL##\">##NODECUSTOMNAME##</a></span>"; } else { this.treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } this.treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"return redirectUrl(##NODEJAVA##, '##NODETARGETURL##','##NODECODENAME##'); \">##ICON##<a class=\"Name\" href=\"##NODETARGETURL##\">##NODECUSTOMNAME##</a></span>"; } this.treeElem.UsePostBack = false; this.treeElem.ProviderObject = provider; this.treeElem.ExpandPath = root.ElementIDPath; this.treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); this.treeElem.OnNodeCreated += new CMSAdminControls_UI_Trees_UniTree.NodeCreatedEventHandler(treeElem_OnNodeCreated); // Create root node string rootName = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(String.IsNullOrEmpty(root.ElementCaption) ? root.ElementDisplayName : root.ElementCaption)); string rootIcon = "<img src=\"" + URLHelper.ResolveUrl(GetImageUrl("/General/DefaultRoot.png")) + "\" style=\"border:none;height:10px;width:1px;\" />"; string rootText = this.treeElem.ReplaceMacros(this.treeElem.SelectedNodeTemplate, root.ElementID, root.ElementChildCount, rootName, rootIcon, root.ElementParentID, null, null); rootText = rootText.Replace("##NODETARGETURL##", ScriptHelper.GetString(this.RootTargetURL, false)); rootText = rootText.Replace("##NODECUSTOMNAME##", rootName); rootText = rootText.Replace("##NODECODENAME##", root.ElementName); this.treeElem.SetRoot(rootText, root.ElementID.ToString(), (this.DisplayRootIcon ? UIHelper.GetImageUrl(this.Page, root.ElementIconPath) : ""), URLHelper.Url + "#", null); if (EnableRootSelect) { this.treeElem.CustomRootNode.SelectAction = TreeNodeSelectAction.None; } currentUser = CMSContext.CurrentUser; } // Reserve log item DataRow sdr = SecurityHelper.ReserveSecurityLogItem("LoadUIMenu"); this.treeElem.ReloadData(); // Log the security if (sdr != null) { SecurityHelper.SetLogItemData(sdr, currentUser.UserName, this.ModuleName, this.ElementName, totalNodes, CMSContext.CurrentSiteName); } }
protected void Page_Load(object sender, EventArgs e) { // Register JQuery ScriptHelper.RegisterJQuery(Page); // Use images according to culture if (CultureHelper.IsUICultureRTL()) { treeElem.LineImagesFolder = GetImageUrl("RTL/Design/Controls/Tree"); } else { treeElem.LineImagesFolder = GetImageUrl("Design/Controls/Tree"); } if (RootCategory != null) { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " AND (CategoryLevel <= " + (RootCategory.CategoryLevel + MaxRelativeLevel) + ")"); // Restrict CategoryChildCount to MaxRelativeLevel. If level < MaxRelativeLevel, use count of non-group children. string levelColumn = "CASE CategoryLevel WHEN " + MaxRelativeLevel + " THEN 0 ELSE (SELECT COUNT(*) AS CountNonGroup FROM CMS_SettingsCategory AS sc WHERE (sc.CategoryParentID = CMS_SettingsCategory.CategoryID) AND (sc.CategoryIsGroup = 0)) END AS CategoryChildCount"; // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = RootCategory.CategoryLevel; provider.ObjectType = "CMS.SettingsCategory"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; provider.WhereCondition = " ((CategoryIsGroup IS NULL) OR (CategoryIsGroup = 0)) " + levelWhere; if (!ShowEmptyCategories) { provider.WhereCondition = SqlHelperClass.AddWhereCondition(provider.WhereCondition, "CategoryID IN (SELECT CategoryParentID FROM CMS_SettingsCategory WHERE (CategoryIsGroup = 0) OR (CategoryIsGroup = 1 AND CategoryID IN (SELECT KeyCategoryID FROM CMS_SettingsKey WHERE ISNULL(SiteID, 0) = " + SiteID + ")))"); } provider.Columns = "CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryIconPath, " + levelColumn; if (String.IsNullOrEmpty(JavaScriptHandler)) { treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } treeElem.UsePostBack = false; treeElem.ProviderObject = provider; treeElem.ExpandPath = RootCategory.CategoryIDPath; treeElem.OnGetImage += treeElem_OnGetImage; treeElem.OnNodeCreated += treeElem_OnNodeCreated; // Create root node string rootName = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(String.IsNullOrEmpty(RootCategory.CategoryDisplayName) ? RootCategory.CategoryName : RootCategory.CategoryDisplayName)); string rootIconUrl = GetImageUrl("/General/DefaultRoot.png"); string rootIcon = "<img src=\"" + rootIconUrl + "\" style=\"border:none;height:10px;width:1px;\" />"; string rootText = ""; if (!RootIsClickable) { rootText = treeElem.ReplaceMacros("<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>", RootCategory.CategoryID, RootCategory.CategoryChildCount, HTMLHelper.HTMLEncode(rootName), rootIcon, RootCategory.CategoryParentID, null, null); } else { rootText = treeElem.ReplaceMacros(treeElem.SelectedNodeTemplate, RootCategory.CategoryID, RootCategory.CategoryChildCount, HTMLHelper.HTMLEncode(rootName), rootIcon, RootCategory.CategoryParentID, null, null); } rootText = rootText.Replace("##NODECUSTOMNAME##", HTMLHelper.HTMLEncode(rootName)); rootText = rootText.Replace("##NODECODENAME##", HTMLHelper.HTMLEncode(RootCategory.CategoryName)); rootText = rootText.Replace("##SITEID##", mSiteId.ToString()); rootText = rootText.Replace("##PARENTID##", RootCategory.CategoryParentID.ToString()); if (!String.IsNullOrEmpty(RootCategory.CategoryIconPath)) { rootIconUrl = GetImageUrl(RootCategory.CategoryIconPath); } treeElem.SetRoot(rootText, RootCategory.CategoryID.ToString(), rootIconUrl, URLHelper.Url + "#", null); currentUser = CMSContext.CurrentUser; } if (!RequestHelper.IsPostBack()) { treeElem.ReloadData(); } }
/// <summary> /// Page_Load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { return; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "ObjectType DESC"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.widgetcategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.ImageColumn = "WidgetCategoryImagePath"; categoryProvider.Columns = "ObjectID, DisplayName, ParentID, WidgetCategoryImagePath, ObjectPath, WidgetCategoryChildCount, ObjectLevel, CompleteChildCount, ObjectType"; // Build where condition var currentUser = MembershipContext.AuthenticatedUser; string securityWhere = String.Empty; // Security where condition if (!SelectGroupWidgets && !currentUser.IsGlobalAdministrator) { securityWhere = "(WidgetSecurity = 0)"; // Allowed for all if (AuthenticationHelper.IsAuthenticated()) { securityWhere += " OR (WidgetSecurity = 1)"; // Authenticated if (currentUser.IsGlobalAdministrator) { securityWhere += " OR (WidgetSecurity = 7)"; // Global admin } securityWhere += " OR ((WidgetSecurity = 2) AND (ObjectID IN ( SELECT WidgetID FROM CMS_WidgetRole WHERE RoleID IN (SELECT RoleID FROM View_CMS_UserRole_MembershipRole_ValidOnly_Joined WHERE UserID = " + currentUser.UserID + "))))"; // Authorized roles } } // Categories AND widgets if (SelectWidgets) { categoryProvider.WhereCondition = securityWhere; } else // Only Categories { categoryProvider.WhereCondition = "ObjectType = 'widgetcategory'"; categoryProvider.ChildCountColumn = "WidgetCategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; // Create WHERE condition which filters categories without widgets string where = ""; where = @"0 <>(SELECT TOP 1 ObjectID FROM (SELECT ObjectPath AS WidgetPath, ObjectType, WidgetForUser, WidgetForGroup, WidgetForEditor, WidgetSecurity, ObjectID, WidgetForInline, WidgetForDashboard FROM View_CMS_WidgetCategoryWidget_Joined) AS SUB WHERE SUB.ObjectType = 'widget' AND SUB.WidgetPath LIKE ObjectPath + '%'"; if (SelectEditorWidgets) { where += " AND SUB.WidgetForEditor = 1 "; } else if (SelectUserWidgets) { where += " AND SUB.WidgetForUser = 1 "; } else if (SelectGroupWidgets) { where += " AND SUB.WidgetForGroup = 1"; } else if (SelectInlineWidgets) { where += " AND SUB.WidgetForInline = 1 "; } else if (SelectDashboardWidgets) { where += " AND SUB.WidgetForDashboard = 1 "; } else { where += " AND 1 = 2 "; } if (!string.IsNullOrEmpty(securityWhere)) { where += " AND ( " + securityWhere + ")"; } categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, where + ")"); } // Set up tree treeElem.ProviderObject = categoryProvider; if (SelectWidgets) { string script = "onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);return false;\""; treeElem.NodeTemplate = String.Format("<span id=\"##OBJECTTYPE##_##NODEID##\" {0} name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>", script); treeElem.SelectedNodeTemplate = String.Format("<span id=\"##OBJECTTYPE##_##NODEID##\" {0} name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>", script); } else { treeElem.NodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);return false;\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.DefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);return false;\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedDefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);return false;\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);return false;\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; ScriptHelper.RegisterJQuery(Page); string js = "var selectedItem = $cmsj('.ContentTreeSelectedItem');" + "function SelectNode(nodeid, sender){" + "selectedItem.removeClass('ContentTreeSelectedItem'); " + "selectedItem.addClass('ContentTreeItem');" + "selectedItem = $cmsj(sender);" + "selectedItem.removeClass('ContentTreeItem'); " + "selectedItem.addClass('ContentTreeSelectedItem'); " + "document.getElementById('" + treeElem.SelectedItemFieldId + "').value = nodeid;" + treeElem.GetOnSelectedItemBackEventReference() + "}"; ScriptHelper.RegisterStartupScript(Page, typeof(string), "SelectTreeNode", ScriptHelper.GetScript(js)); } // Add last recently used if (ShowRecentlyUsed) { treeElem.AddDefaultItem(GetString("widgets.recentlyused"), "recentlyused", null); } // Setup event handler treeElem.OnItemSelected += treeElem_OnItemSelected; treeElem.OnNodeCreated += treeElem_OnNodeCreated; }
protected void Page_Load(object sender, EventArgs e) { int moduleId = QueryHelper.GetInteger("moduleid", 0); int parentId = QueryHelper.GetInteger("parentId", 0); ScriptHelper.RegisterJQuery(this.Page); // Use images according to culture if (CultureHelper.IsUICultureRTL()) { this.uniTree.LineImagesFolder = GetImageUrl("RTL/Design/Controls/Tree", false, false); } else { this.uniTree.LineImagesFolder = GetImageUrl("Design/Controls/Tree", false, false); } if (!RequestHelper.IsPostBack()) { // Get module root element UIElementInfo elemInfo = UIElementInfoProvider.GetRootUIElementInfo(moduleId); if (elemInfo != null) { this.uniTree.SelectPath = elemInfo.ElementIDPath; this.uniTree.ExpandPath = elemInfo.ElementIDPath + "/"; this.menuElem.Value = elemInfo.ElementID + "|" + elemInfo.ElementParentID; } else { // Get current resource ResourceInfo resInfo = ResourceInfoProvider.GetResourceInfo(moduleId); if (resInfo != null) { // Create new UI element elemInfo = new UIElementInfo(); elemInfo.ElementResourceID = moduleId; elemInfo.ElementDisplayName = resInfo.ResourceDisplayName; elemInfo.ElementName = resInfo.ResourceName.ToLower().Replace(".", ""); elemInfo.ElementIsCustom = false; UIElementInfoProvider.SetUIElementInfo(elemInfo); this.uniTree.SelectPath = elemInfo.ElementIDPath; this.uniTree.ExpandPath = elemInfo.ElementIDPath; this.menuElem.Value = elemInfo.ElementID + "|0"; } } } this.menuElem.ResourceID = moduleId; this.menuElem.AfterAction += new OnActionEventHandler(menuElem_AfterAction); // Create and set UIElements provider UniTreeProvider elementProvider = new UniTreeProvider(); elementProvider.ObjectType = "CMS.UIElement"; elementProvider.DisplayNameColumn = "ElementDisplayName"; elementProvider.IDColumn = "ElementID"; elementProvider.LevelColumn = "ElementLevel"; elementProvider.OrderColumn = "ElementOrder"; elementProvider.ParentIDColumn = "ElementParentID"; elementProvider.PathColumn = "ElementIDPath"; elementProvider.ValueColumn = "ElementID"; elementProvider.ChildCountColumn = "ElementChildCount"; elementProvider.WhereCondition = "ElementResourceID = " + moduleId; elementProvider.Columns = "ElementID,ElementLevel,ElementOrder,ElementParentID,ElementIDPath,ElementChildCount,ElementDisplayName"; this.uniTree.UsePostBack = false; this.uniTree.ProviderObject = elementProvider; this.uniTree.ExpandTooltip = GetString("general.expand"); this.uniTree.CollapseTooltip = GetString("general.collapse"); this.uniTree.NodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + moduleId + "); return false;\" name=\"treeNode\" class=\"ContentTreeItem\"><span class=\"Name\">##NODENAME##</span></span>"; this.uniTree.SelectedNodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + moduleId + "); return false;\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\"><span class=\"Name\">##NODENAME##</span></span>"; if (!RequestHelper.IsPostBack()) { string selectedPath = QueryHelper.GetString("path", String.Empty); int elementId = QueryHelper.GetInteger("elementId", 0); if (!string.IsNullOrEmpty(selectedPath)) { this.uniTree.SelectPath = selectedPath; } if (elementId > 0) { this.menuElem.ElementID = elementId; this.menuElem.ParentID = parentId; this.menuElem.Value = elementId + "|" + parentId; } } // Load data this.uniTree.ReloadData(); string script = "var frameURL = '" + ResolveUrl("~/CMSModules/Modules/Pages/Development/Module_UI_EditFrameset.aspx") + "';"; script += "var newURL = '" + ResolveUrl("~/CMSModules/Modules/Pages/Development/Module_UI_New.aspx") + "';"; script += "var postParentId = " + parentId + ";"; this.ltlScript.Text = ScriptHelper.GetScript(script); }
/// <summary> /// Page_Load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { return; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "ObjectType DESC"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.widgetcategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.ImageColumn = "WidgetCategoryImagePath"; categoryProvider.Columns = "ObjectID, DisplayName, ParentID, WidgetCategoryImagePath, ObjectPath, WidgetCategoryChildCount, ObjectLevel, CompleteChildCount, ObjectType"; // Build where condition var currentUser = MembershipContext.AuthenticatedUser; string securityWhere = String.Empty; // Security where condition if (!SelectGroupWidgets && !currentUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin)) { securityWhere = "(WidgetSecurity = 0)"; // Allowed for all if (AuthenticationHelper.IsAuthenticated()) { securityWhere += " OR (WidgetSecurity = 1)"; // Authenticated if (currentUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin)) { securityWhere += " OR (WidgetSecurity = 7)"; // Global admin } securityWhere += " OR ((WidgetSecurity = 2) AND (ObjectID IN ( SELECT WidgetID FROM CMS_WidgetRole WHERE RoleID IN (SELECT RoleID FROM View_CMS_UserRole_MembershipRole_ValidOnly_Joined WHERE UserID = " + currentUser.UserID + "))))"; // Authorized roles } } // Categories AND widgets if (SelectWidgets) { categoryProvider.WhereCondition = securityWhere; } else // Only Categories { categoryProvider.WhereCondition = "ObjectType = 'widgetcategory'"; categoryProvider.ChildCountColumn = "WidgetCategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; // Create WHERE condition which filters categories without widgets string where = ""; where = @"0 <>(SELECT TOP 1 ObjectID FROM (SELECT ObjectPath AS WidgetPath, ObjectType, WidgetForUser, WidgetForGroup, WidgetForEditor, WidgetSecurity, ObjectID, WidgetForInline, WidgetForDashboard FROM View_CMS_WidgetCategoryWidget_Joined) AS SUB WHERE SUB.ObjectType = 'widget' AND SUB.WidgetPath LIKE ObjectPath + '%'"; if (SelectEditorWidgets) { where += " AND SUB.WidgetForEditor = 1 "; } else if (SelectUserWidgets) { where += " AND SUB.WidgetForUser = 1 "; } else if (SelectGroupWidgets) { where += " AND SUB.WidgetForGroup = 1"; } else if (SelectInlineWidgets) { where += " AND SUB.WidgetForInline = 1 "; } else if (SelectDashboardWidgets) { where += " AND SUB.WidgetForDashboard = 1 "; } else { where += " AND 1 = 2 "; } if (!string.IsNullOrEmpty(securityWhere)) { where += " AND ( " + securityWhere + ")"; } categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, where + ")"); } // Set up tree treeElem.ProviderObject = categoryProvider; if (SelectWidgets) { string script = "onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);return false;\""; treeElem.NodeTemplate = String.Format("<span id=\"##OBJECTTYPE##_##NODEID##\" {0} name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>", script); treeElem.SelectedNodeTemplate = String.Format("<span id=\"##OBJECTTYPE##_##NODEID##\" {0} name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>", script); } else { treeElem.NodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);return false;\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.DefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);return false;\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedDefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);return false;\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);return false;\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; ScriptHelper.RegisterJQuery(Page); string js = "var selectedItem = $cmsj('.ContentTreeSelectedItem');" + "function SelectNode(nodeid, sender){" + "selectedItem.removeClass('ContentTreeSelectedItem'); " + "selectedItem.addClass('ContentTreeItem');" + "selectedItem = $cmsj(sender);" + "selectedItem.removeClass('ContentTreeItem'); " + "selectedItem.addClass('ContentTreeSelectedItem'); " + "document.getElementById('" + treeElem.SelectedItemFieldId + "').value = nodeid;" + treeElem.GetOnSelectedItemBackEventReference() + "}"; ScriptHelper.RegisterStartupScript(Page, typeof(string), "SelectTreeNode", ScriptHelper.GetScript(js)); } // Add last recently used if (ShowRecentlyUsed) { treeElem.AddDefaultItem(GetString("widgets.recentlyused"), "recentlyused", null); } // Setup event handler treeElem.OnItemSelected += treeElem_OnItemSelected; treeElem.OnNodeCreated += treeElem_OnNodeCreated; }
protected void Page_Load(object sender, EventArgs e) { SetupActionButtons(); // Select element and expand modules first level elements if (!RequestHelper.IsPostBack()) { // Select given element if (ElementInfo != null) { SelectNode(ElementInfo); ContentTree.SelectPath = ElementInfo.ElementIDPath; } // Expand all module elements var allModuleElements = UIElementInfoProvider.GetUIElements().Where("ElementResourceID", QueryOperator.Equals, ModuleId).Columns("ElementID"); var elementsToExpand = UIElementInfoProvider.GetUIElements() .Where("ElementResourceID", QueryOperator.Equals, ModuleId) .Where(new WhereCondition().WhereNull("ElementParentID").Or().WhereNotIn("ElementParentID", allModuleElements)); foreach (var uiElementInfo in elementsToExpand) { if (!String.IsNullOrEmpty(uiElementInfo.ElementIDPath)) { ContentTree.ExpandPath += uiElementInfo.ElementIDPath + ";"; // No element is selected, select first if (ElementInfo == null) { SelectNode(uiElementInfo); ContentTree.SelectPath = uiElementInfo.ElementIDPath; } } } } // Create and set UIElements provider var tree = new UniTreeProvider(); tree.ObjectType = "CMS.UIElement"; tree.DisplayNameColumn = "ElementDisplayName"; tree.IDColumn = "ElementID"; tree.LevelColumn = "ElementLevel"; tree.OrderColumn = "ElementOrder"; tree.ParentIDColumn = "ElementParentID"; tree.PathColumn = "ElementIDPath"; tree.ValueColumn = "ElementID"; tree.ChildCountColumn = "ElementChildCount"; tree.Columns = "ElementID,ElementLevel,ElementOrder,ElementParentID,ElementIDPath,ElementChildCount,ElementDisplayName,ElementResourceID,ElementName,ElementIconPath,ElementIconClass"; ContentTree.UsePostBack = false; ContentTree.ProviderObject = tree; ContentTree.OnNodeCreated += uniTree_OnNodeCreated; ContentTree.NodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + ModuleId + ", true); return false;\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; ContentTree.SelectedNodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + ModuleId + ", true); return false;\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; // Icons tree.ImageColumn = "ElementIconPath"; }
/// <summary> /// Creates tree provider. /// </summary> /// <param name="siteId">ID of the site to create provider for.</param> /// <param name="userId">ID of the user to create provider for.</param> /// <returns></returns> private UniTreeProvider CreateTreeProvider(int siteId, int userId) { // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.UseCustomRoots = true; provider.RootLevelOffset = -1; provider.ObjectType = "cms.category"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; // Prepare the parameters provider.Parameters = new QueryDataParameters(); provider.Parameters.Add("SiteID", siteId); provider.Parameters.Add("IncludeGlobal", AllowGlobalCategories); provider.Parameters.Add("UserID", userId); string selected = ""; string colName = "CategoryID"; if (!string.IsNullOrEmpty(hidItem.Value)) { // Selecting by ID if (returnColumnName == "CategoryID") { int[] valIds = ValidationHelper.GetIntegers(hidItem.Value.Split(new string[] { valuesSeparator }, StringSplitOptions.RemoveEmptyEntries), 0); selected = "0"; foreach (int i in valIds) { selected += "," + i; } } else { // Selecting by code name colName = "CategoryName"; string[] valNames = hidItem.Value.Split(new string[] { valuesSeparator }, StringSplitOptions.RemoveEmptyEntries); selected = "N''"; foreach (string name in valNames) { selected += ", N'" + SqlHelperClass.GetSafeQueryString(name, false) + "'"; } } } if (string.IsNullOrEmpty(selected)) { selected = (returnColumnName == "CategoryID") ? "0" : "N''"; } // Subquery to obtain count of enabled child categories for specified user, site and 'use global categories' setting string ChildCountColumn = "(SELECT COUNT(C.CategoryID) FROM CMS_Category AS C WHERE (C.CategoryEnabled = 1) AND (C.CategoryParentID = CMS_Category.CategoryID) AND (ISNULL(C.CategorySiteID, 0) = @SiteID OR (C.CategorySiteID IS NULL AND @IncludeGlobal = 1)) AND (ISNULL(C.CategoryUserID, 0) = @UserID)) AS CategoryChildCount"; // Subquery to obtain count of selected enabled child categories with no disabled parent. string CheckedChildCountColumn = "(SELECT COUNT(CategoryID) FROM CMS_Category AS cc WHERE (cc.CategoryEnabled = 1) AND (cc." + colName + " IN (" + selected + ")) AND (cc.CategoryIDPath LIKE CMS_Category.CategoryIDPath + '/%') AND (NOT EXISTS(SELECT CategoryID FROM CMS_Category AS pc WHERE (pc.CategoryEnabled = 0) AND (cc.CategoryIDPath like pc.CategoryIDPath+'/%')))) AS ChildChecked"; // Prepare provider.Columns = string.Format("CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryUserID, CategorySiteID, {0}, {1}", ChildCountColumn, CheckedChildCountColumn); provider.OrderBy = "CategoryUserID, CategorySiteID, CategoryOrder"; provider.WhereCondition = "ISNULL(CategoryUserID, 0) = " + userId + " AND (CategoryEnabled = 1) AND (ISNULL(CategorySiteID, 0) = " + siteId; if (AllowGlobalCategories && (siteId > 0)) { provider.WhereCondition += " OR CategorySiteID IS NULL"; } provider.WhereCondition += ")"; // Append explicit where condition provider.WhereCondition = SqlHelperClass.AddWhereCondition(provider.WhereCondition, whereCondition); return provider; }
/// <summary> /// Page_Load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (this.StopProcessing) { return; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.pagetemplatecategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, CodeName, ObjectID, ObjectLevel, CategoryOrder, ParentID, ObjectPath, CompleteChildCount, ObjectType, CategoryChildCount, CategoryImagePath, Parameter"; categoryProvider.ImageColumn = "CategoryImagePath"; categoryProvider.ParameterColumn = "Parameter"; if (!SelectPageTemplates) { categoryProvider.WhereCondition = "ObjectType = 'pagetemplatecategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_PageTemplateCategory/list.png"); } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); } // Do not show AdHoc category if (!this.ShowAdHocCategory) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CodeName <> 'AdHoc'"); } // Do not show empty categories if (!this.ShowEmptyCategories) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CategoryTemplateChildCount > 0 OR CategoryChildCount > 0"); TreeProvider tp = new TreeProvider(CMSContext.CurrentUser); TreeNode node = DocumentHelper.GetDocument(DocumentID, tp); string culture = CMSContext.PreferredCultureCode; int level = 0; string path = string.Empty; if (node != null) { level = node.NodeLevel; path = node.NodeAliasPath; if (IsNewPage) { level++; path = path + "/%"; } else { culture = node.DocumentCulture; } } // Add where condition for scopes categoryProvider.WhereCondition += " AND (ObjectLevel = 0 OR (SELECT TOP 1 ObjectID FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS X WHERE X.ObjectType = 'pagetemplate' "; categoryProvider.WhereCondition += " AND (X.PageTemplateType IS NULL OR X.PageTemplateType <> N'" + PageTemplateInfoProvider.GetPageTemplateTypeCode(PageTemplateTypeEnum.Dashboard) + "')"; if (ShowOnlySiteTemplates) { categoryProvider.WhereCondition += " AND X.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.WhereCondition += " AND (" + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "X", "ObjectID") + ") "; } categoryProvider.WhereCondition += " AND (X.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) IS NOT NULL)"; // Add column count column - minimal number of childs categoryProvider.Columns += @", (SELECT TOP 1 Count(*) FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS Y WHERE (Y.ObjectID = View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectID AND Y.ObjectLevel = 0) OR ( View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectType = 'PageTemplateCategory' AND View_CMS_PageTemplateCategoryPageTemplate_Joined.CategoryChildCount > 0 AND Y.ObjectType = 'PageTemplate' AND Y.ObjectLevel > View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectLevel + 1 "; if (ShowOnlySiteTemplates) { categoryProvider.Columns += "AND Y.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.Columns += " AND ( " + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "Y", "ObjectID") + " ) "; } categoryProvider.Columns += " AND Y.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) AS MinNumberOfChilds"; categoryProvider.ChildCountColumn = "MinNumberOfChilds"; } // Set up tree treeElem.ProviderObject = categoryProvider; if (SelectPageTemplates) { treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##, '##PARAMETER##');\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##, '##PARAMETER##');\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; } else { treeElem.NodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.DefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span><div style=\"clear:both\"></div>"; treeElem.SelectedDefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span><div style=\"clear:both\"></div>"; treeElem.SelectedNodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; // Register jquery ScriptHelper.RegisterJQuery(this.Page); string js = "function SelectNode(nodeid, sender){ " + "var selectedItem = $j('.ContentTreeSelectedItem'); " + "selectedItem.removeClass('ContentTreeSelectedItem'); " + "selectedItem.addClass('ContentTreeItem');" + "selectedItem = $j(sender);" + "selectedItem.removeClass('ContentTreeItem'); " + "selectedItem.addClass('ContentTreeSelectedItem'); " + "document.getElementById('" + this.treeElem.SelectedItemFieldId + "').value = nodeid;" + treeElem.GetOnSelectedItemBackEventReference() + "}"; ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "SelectTreeNode", ScriptHelper.GetScript(js)); } // Setup event handler treeElem.OnItemSelected += new CMSAdminControls_UI_Trees_UniTree.ItemSelectedEventHandler(treeElem_OnItemSelected); treeElem.OnNodeCreated += new CMSAdminControls_UI_Trees_UniTree.NodeCreatedEventHandler(treeElem_OnNodeCreated); }
protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { return; } ScriptHelper.RegisterJQuery(Page); // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "Reporting.ReportCategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel,CategoryOrder,ParentID, ObjectPath, CompleteChildCount,ObjectType,CategoryChildCount, CategoryImagePath"; categoryProvider.ImageColumn = "CategoryImagePath"; if (!ShowReports) { categoryProvider.WhereCondition = "ObjectType = 'reportcategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_WebPartCategory/list.png"); treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectReportNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##,true);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; } // Set up tree treeElem.ProviderObject = categoryProvider; treeElem.IsLiveSite = false; // Setup event handler treeElem.OnItemSelected += new CMSAdminControls_UI_Trees_UniTree.ItemSelectedEventHandler(treeElem_OnItemSelected); treeElem.UsePostBack = false; treeElem.OnNodeCreated += new CMSAdminControls_UI_Trees_UniTree.NodeCreatedEventHandler(treeElem_OnNodeCreated); }
protected void Page_Load(object sender, EventArgs e) { ScriptHelper.RegisterJQuery(Page); SitePanel.Visible = ShowHeaderPanel && ShowSiteSelector; ActionsPanel.Visible = ShowHeaderPanel && !SitePanel.Visible; plcActionSelectionScript.Visible = ShowHeaderPanel && !ShowSiteSelector; plcSelectionScript.Visible = !plcActionSelectionScript.Visible; if (RootCategory != null) { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " AND (CategoryLevel <= " + (RootCategory.CategoryLevel + MaxRelativeLevel) + ")"); // Restrict CategoryChildCount to MaxRelativeLevel. If level < MaxRelativeLevel, use count of non-group children. string levelColumn = "CASE CategoryLevel WHEN " + MaxRelativeLevel + " THEN 0 ELSE (SELECT COUNT(*) AS CountNonGroup FROM CMS_SettingsCategory AS sc WHERE (sc.CategoryParentID = CMS_SettingsCategory.CategoryID) AND (sc.CategoryIsGroup = 0)) END AS CategoryChildCount"; // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = RootCategory.CategoryLevel; provider.ObjectType = "CMS.SettingsCategory"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; provider.ImageColumn = "CategoryIconPath"; provider.WhereCondition = "((CategoryIsGroup IS NULL) OR (CategoryIsGroup = 0)) " + levelWhere; if (!ShowEmptyCategories) { var where = "CategoryID IN (SELECT CategoryParentID FROM CMS_SettingsCategory WHERE (CategoryIsGroup = 0) OR (CategoryIsGroup = 1 AND CategoryID IN (SELECT KeyCategoryID FROM CMS_SettingsKey WHERE ISNULL(SiteID, 0) = 0 AND ISNULL(KeyIsHidden, 0) = 0"; if (SiteID > 0) { where += " AND KeyIsGlobal = 0"; } where += ")))"; provider.WhereCondition = SqlHelper.AddWhereCondition(provider.WhereCondition, where); } provider.Columns = "CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryIconPath, CategoryResourceID, " + levelColumn; if (String.IsNullOrEmpty(JavaScriptHandler)) { Tree.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS## ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; Tree.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS##\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { Tree.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS## ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##, ##RESOURCEID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; Tree.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS##\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##, ##RESOURCEID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } Tree.UsePostBack = false; Tree.ProviderObject = provider; Tree.ExpandPath = RootCategory.CategoryIDPath; Tree.OnNodeCreated += Tree_OnNodeCreated; } GetExpandedPaths(); NewItemButton.ToolTip = GetString("settings.newelem"); DeleteItemButton.ToolTip = GetString("settings.deleteelem"); MoveUpItemButton.ToolTip = GetString("settings.modeupelem"); MoveDownItemButton.ToolTip = GetString("settings.modedownelem"); // Create new element javascript NewItemButton.OnClientClick = "return newItem();"; // Confirm delete DeleteItemButton.OnClientClick = "if(!deleteConfirm()) { return false; }"; var isPostback = RequestHelper.IsPostBack(); if (!isPostback) { Tree.ReloadData(); if (QueryHelper.GetBoolean("reloadtreeselect", false)) { var category = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(CategoryID); // Select requested category RegisterSelectNodeScript(category); } } if (ShowSiteSelector) { if (!isPostback) { if (QueryHelper.Contains("selectedSiteId")) { // Get from URL SiteID = QueryHelper.GetInteger("selectedSiteId", 0); SiteSelector.Value = SiteID; } } else { SiteID = ValidationHelper.GetInteger(SiteSelector.Value, 0); } // Style site selector SiteSelector.SetValue("AllowGlobal", true); SiteSelector.SetValue("GlobalRecordValue", 0); bool reload = QueryHelper.GetBoolean("reload", true); // URL for tree selection string script = "var categoryURL = '" + UIContextHelper.GetElementUrl(ModuleName.CMS, "Settings.Keys") + "';\n"; script += "var doNotReloadContent = false;\n"; // Select category SettingsCategoryInfo sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(CategoryID); if (sci != null) { // Stop reloading of right frame, if explicitly set if (!reload) { script += "doNotReloadContent = true;"; } script += SelectAtferLoad(sci.CategoryIDPath, sci.CategoryName, sci.CategoryID, sci.CategoryParentID); } ScriptHelper.RegisterStartupScript(Page, typeof(string), "SelectCat", ScriptHelper.GetScript(script)); } else { ResourceInfo resource = ResourceInfoProvider.GetResourceInfo(ModuleID); StringBuilder sb = new StringBuilder(); sb.Append(@" var frameURL = '", UIContextHelper.GetElementUrl(ModuleName.CMS, "EditSettingsCategory", false), @"'; var rootId = ", (RootCategory != null ? RootCategory.CategoryID : 0), @"; var selectedModuleId = ", ModuleID, @"; var developmentMode = ", SystemContext.DevelopmentMode ? "true" : "false", @"; var resourceInDevelopment = ", (resource != null) && resource.ResourceIsInDevelopment ? "true" : "false", @"; var postParentId = ", CategoryID, @"; function newItem() { var hidElem = document.getElementById('" + hidSelectedElem.ClientID + @"'); var ids = hidElem.value.split('|'); if (window.parent != null && window.parent.frames['settingsmain'] != null) { window.parent.frames['settingsmain'].location = '" + ResolveUrl("~/CMSModules/Modules/Pages/Settings/Category/Edit.aspx") + @"?moduleid=" + ModuleID + @"&parentId=' + ids[0]; } return false; } function deleteConfirm() { return confirm(" + ScriptHelper.GetString(GetString("settings.categorydeleteconfirmation")) + @"); } "); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "setupTreeScript", ScriptHelper.GetScript(sb.ToString())); } }
/// <summary> /// Page_Load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (this.StopProcessing) { return; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.pagetemplatecategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, CodeName, ObjectID, ObjectLevel, CategoryOrder, ParentID, ObjectPath, CompleteChildCount, ObjectType, CategoryChildCount, CategoryImagePath, Parameter"; categoryProvider.ImageColumn = "CategoryImagePath"; categoryProvider.ParameterColumn = "Parameter"; if (!SelectPageTemplates) { categoryProvider.WhereCondition = "ObjectType = 'pagetemplatecategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; treeElem.DefaultImagePath = GetImageUrl("Objects/CMS_PageTemplateCategory/list.png"); } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; treeElem.OnGetImage += new CMSAdminControls_UI_Trees_UniTree.GetImageEventHandler(treeElem_OnGetImage); } // Do not show AdHoc category if (!this.ShowAdHocCategory) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CodeName <> 'AdHoc'"); } // Do not show empty categories if (!this.ShowEmptyCategories) { categoryProvider.WhereCondition = SqlHelperClass.AddWhereCondition(categoryProvider.WhereCondition, "CategoryTemplateChildCount > 0 OR CategoryChildCount > 0"); TreeProvider tp = new TreeProvider(CMSContext.CurrentUser); TreeNode node = DocumentHelper.GetDocument(DocumentID, tp); string culture = CMSContext.PreferredCultureCode; int level = 0; string path = string.Empty; if (node != null) { level = node.NodeLevel; path = node.NodeAliasPath; if (IsNewPage) { level++; path = path + "/%"; } else { culture = node.DocumentCulture; } } // Add where condition for scopes categoryProvider.WhereCondition += " AND (ObjectLevel = 0 OR (SELECT TOP 1 ObjectID FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS X WHERE X.ObjectType = 'pagetemplate' "; categoryProvider.WhereCondition += " AND (X.PageTemplateType IS NULL OR X.PageTemplateType <> N'" + PageTemplateInfoProvider.GetPageTemplateTypeCode(PageTemplateTypeEnum.Dashboard) + "')"; if (ShowOnlySiteTemplates) { categoryProvider.WhereCondition += " AND X.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.WhereCondition += " AND (" + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "X", "ObjectID") + ") "; } categoryProvider.WhereCondition += " AND (X.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) IS NOT NULL)"; // Add column count column - minimal number of childs categoryProvider.Columns += @", (SELECT TOP 1 Count(*) FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS Y WHERE (Y.ObjectID = View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectID AND Y.ObjectLevel = 0) OR ( View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectType = 'PageTemplateCategory' AND View_CMS_PageTemplateCategoryPageTemplate_Joined.CategoryChildCount > 0 AND Y.ObjectType = 'PageTemplate' AND Y.ObjectLevel > View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectLevel + 1 "; if (ShowOnlySiteTemplates) { categoryProvider.Columns += "AND Y.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + CMSContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.Columns += " AND ( " + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, node.NodeClassName, level, CMSContext.CurrentSiteName, "Y", "ObjectID") + " ) "; } categoryProvider.Columns += " AND Y.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) AS MinNumberOfChilds"; categoryProvider.ChildCountColumn = "MinNumberOfChilds"; } // Set up tree treeElem.ProviderObject = categoryProvider; if (SelectPageTemplates) { treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##, '##PARAMETER##');\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##, '##PARAMETER##');\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; } else { treeElem.NodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; treeElem.DefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span><div style=\"clear:both\"></div>"; treeElem.SelectedDefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span><div style=\"clear:both\"></div>"; treeElem.SelectedNodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON## <span class=\"Name\">##NODENAME##</span></span>"; // Register jquery ScriptHelper.RegisterJQuery(this.Page); string js = "function SelectNode(nodeid, sender){ " + "var selectedItem = $j('.ContentTreeSelectedItem'); " + "selectedItem.removeClass('ContentTreeSelectedItem'); " + "selectedItem.addClass('ContentTreeItem');" + "selectedItem = $j(sender);" + "selectedItem.removeClass('ContentTreeItem'); " + "selectedItem.addClass('ContentTreeSelectedItem'); " + "document.getElementById('" + this.treeElem.SelectedItemFieldId + "').value = nodeid;" + treeElem.GetOnSelectedItemBackEventReference() + "}"; ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "SelectTreeNode", ScriptHelper.GetScript(js)); } // Setup event handler treeElem.OnItemSelected += new CMSAdminControls_UI_Trees_UniTree.ItemSelectedEventHandler(treeElem_OnItemSelected); treeElem.OnNodeCreated += new CMSAdminControls_UI_Trees_UniTree.NodeCreatedEventHandler(treeElem_OnNodeCreated); }
/// <summary> /// Reloads the tree data. /// </summary> public void ReloadData() { // Prepare the parameters QueryDataParameters parameters = new QueryDataParameters(); parameters.Add("@RoleID", RoleID); // Create and set UIElements provider UniTreeProvider elementProvider = new UniTreeProvider(); elementProvider.QueryName = "cms.uielement.selecttree"; elementProvider.DisplayNameColumn = "ElementDisplayName"; elementProvider.IDColumn = "ElementID"; elementProvider.LevelColumn = "ElementLevel"; elementProvider.OrderColumn = "ElementOrder"; elementProvider.ParentIDColumn = "ElementParentID"; elementProvider.PathColumn = "ElementIDPath"; elementProvider.ValueColumn = "ElementID"; elementProvider.ChildCountColumn = "ElementChildCount"; elementProvider.ImageColumn = "ElementIconPath"; elementProvider.Parameters = parameters; elementProvider.IconClassColumn = "ElementIconClass"; treeElem.ExpandTooltip = GetString("general.expand"); treeElem.CollapseTooltip = GetString("general.collapse"); treeElem.UsePostBack = false; treeElem.EnableRootAction = false; treeElem.ProviderObject = elementProvider; if (SingleModule) { ResourceInfo ri = ResourceInfoProvider.GetResourceInfo(ModuleID); if (ri != null) { root = UIElementInfoProvider.GetModuleTopUIElement(ModuleID); if (root != null) { treeElem.ExpandPath = root.ElementIDPath; string links = null; if (Enabled) { links = string.Format(SELECT_DESELECT_LINKS, root.ElementID, "false", CallbackRef, GetString("uiprofile.selectall"), GetString("uiprofile.deselectall")); } string rootText = HTMLHelper.HTMLEncode(ri.ResourceDisplayName) + links; treeElem.SetRoot(rootText, root.ElementID.ToString(), ResolveUrl(root.ElementIconPath)); elementProvider.RootLevelOffset = root.ElementLevel; } elementProvider.WhereCondition = "ElementResourceID=" + ModuleID; } } else { if (ModuleID > 0) { String where = String.Format(@"ElementResourceID = {0} AND (ElementParentID IS NULL OR ElementParentID NOT IN (SELECT ElementID FROM CMS_UIElement WHERE ElementResourceID={0})) AND (NOT EXISTS (SELECT ElementIDPath FROM CMS_UIElement AS u WHERE CMS_UIElement.ElementIDPath LIKE u.ElementIDPath + '%' AND ElementResourceID = {0} AND u.ElementIDPath != CMS_UIElement.ElementIDPath))", ModuleID); DataSet ds = UIElementInfoProvider.GetUIElements(where, "ElementLevel ASC"); String expandedPath = String.Empty; if (!DataHelper.DataSourceIsEmpty(ds)) { foreach (DataRow dr in ds.Tables[0].Rows) { String path = ValidationHelper.GetString(dr["ElementIDPath"], String.Empty); if (path != String.Empty) { expandedPath += path + ";"; } } } treeElem.ExpandPath = expandedPath; } } treeElem.ReloadData(); }
/// <summary> /// Initializes the category provider /// </summary> private void InitCategoryProvider() { // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.OrderColumn = "CategoryOrder"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.pagetemplatecategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, CodeName, ObjectID, ObjectLevel, CategoryOrder, ParentID, ObjectPath, CompleteChildCount, ObjectType, CategoryChildCount, CategoryImagePath, Parameter"; categoryProvider.ImageColumn = "CategoryImagePath"; categoryProvider.ParameterColumn = "Parameter"; if (!SelectPageTemplates) { categoryProvider.WhereCondition = "ObjectType = 'pagetemplatecategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; } // Do not show AdHoc category if (!ShowAdHocCategory) { categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, "CodeName <> 'AdHoc' AND CodeName <> 'AdHocUI'"); } // Do not show empty categories if (!ShowEmptyCategories) { categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, "CategoryTemplateChildCount > 0 OR CategoryChildCount > 0"); TreeProvider tp = new TreeProvider(MembershipContext.AuthenticatedUser); CMS.DocumentEngine.TreeNode node = DocumentHelper.GetDocument(DocumentID, tp); string culture = LocalizationContext.PreferredCultureCode; int level = 0; string path = string.Empty; string className = String.Empty; if (node != null) { level = node.NodeLevel; path = node.NodeAliasPath; if (IsNewPage) { level++; path = path + "/%"; } else { culture = node.DocumentCulture; } className = node.NodeClassName; // Check if class id is in query string - then use it's value instead of document class name int classID = QueryHelper.GetInteger("classid", 0); if (classID != 0) { DataClassInfo dci = DataClassInfoProvider.GetDataClassInfo(classID); if (dci != null) { className = dci.ClassName; } } } // Add where condition for scopes categoryProvider.WhereCondition += " AND (ObjectLevel = 0 OR (SELECT TOP 1 ObjectID FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS X WHERE X.ObjectType = 'pagetemplate' "; categoryProvider.WhereCondition += " AND (X.PageTemplateType IS NULL OR X.PageTemplateType <> N'" + PageTemplateInfoProvider.GetPageTemplateTypeCode(PageTemplateTypeEnum.Dashboard) + "')"; if (ShowOnlySiteTemplates) { categoryProvider.WhereCondition += " AND X.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + SiteContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.WhereCondition += " AND (" + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, className, level, SiteContext.CurrentSiteName, "X", "ObjectID") + ") "; } categoryProvider.WhereCondition += " AND (X.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) IS NOT NULL)"; // Add column count column - minimal number of children categoryProvider.Columns += @", (SELECT TOP 1 Count(*) FROM View_CMS_PageTemplateCategoryPageTemplate_Joined AS Y WHERE (Y.ObjectID = View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectID AND Y.ObjectLevel = 0) OR ( View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectType = 'PageTemplateCategory' AND View_CMS_PageTemplateCategoryPageTemplate_Joined.CategoryChildCount > 0 AND Y.ObjectType = 'PageTemplate' AND Y.ObjectLevel > View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectLevel + 1 "; if (ShowOnlySiteTemplates) { categoryProvider.Columns += "AND Y.ObjectID IN (SELECT PageTemplateID FROM CMS_PageTemplateSite WHERE SiteID = " + SiteContext.CurrentSiteID + ") "; } if (node != null) { categoryProvider.Columns += " AND ( " + PageTemplateScopeInfoProvider.GetScopeWhereCondition(path, culture, className, level, SiteContext.CurrentSiteName, "Y", "ObjectID") + " ) "; } categoryProvider.Columns += " AND Y.ObjectPath LIKE View_CMS_PageTemplateCategoryPageTemplate_Joined.ObjectPath + '/%')) AS MinNumberOfChilds"; categoryProvider.ChildCountColumn = "MinNumberOfChilds"; } // Handle the root path if (!String.IsNullOrEmpty(RootPath)) { categoryProvider.RootLevelOffset = RootPath.Trim('/').Split('/').Length - 1; categoryProvider.WhereCondition = SqlHelper.AddWhereCondition(categoryProvider.WhereCondition, String.Format("((ObjectPath = '{0}' OR ObjectPath LIKE '{0}/%'))", RootPath.Trim('/'))); } treeElem.ProviderObject = categoryProvider; }
/// <summary> /// Reloads the tree data. /// </summary> public void ReloadData() { ResourceInfo ri = ResourceInfoProvider.GetResourceInfo(this.ModuleID); if (ri != null) { // Get the info root = UIElementInfoProvider.GetRootUIElementInfo(ri.ResourceName); if (root != null) { // Prepare the parameters QueryDataParameters parameters = new QueryDataParameters(); parameters.Add("@ModuleID", this.ModuleID); parameters.Add("@RoleID", this.RoleID); // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.QueryName = "cms.uielement.selecttree"; provider.DisplayNameColumn = "ElementName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementID"; provider.ChildCountColumn = "ElementChildCount"; provider.Parameters = parameters; this.treeElem.ExpandTooltip = GetString("general.expand"); this.treeElem.CollapseTooltip = GetString("general.collapse"); this.treeElem.UsePostBack = false; this.treeElem.EnableRootAction = false; this.treeElem.ProviderObject = provider; this.treeElem.ExpandPath = root.ElementIDPath; string rootText = HTMLHelper.HTMLEncode(ri.ResourceDisplayName) + " <span class=\"UITreeSelectButton\">(<span onclick=\"" + (Enabled ? "SelectAllSubelements($j(this), " + root.ElementID + ", false); " + CallbackRef + ";" : "return false;") + "\" >" + GetString("uiprofile.selectall") + "</span>, <span onclick=\"" + (Enabled ? "DeselectAllSubelements($j(this), " + root.ElementID + ", false); " + CallbackRef + ";" : "return false;") + "\" >" + GetString("uiprofile.deselectall") + "</span>)</span>"; this.treeElem.SetRoot(rootText, root.ElementID.ToString(), ResolveUrl(root.ElementIconPath)); this.treeElem.ReloadData(); } } }
/// <summary> /// Creates tree provider object for categories assigned to specified site or user. /// </summary> /// <param name="siteId">ID of the site.</param> /// <param name="userId">ID of the user.</param> private UniTreeProvider CreateTreeProvider(int siteId, int userId) { // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.UseCustomRoots = true; provider.RootLevelOffset = -1; provider.ObjectType = "cms.category"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; // Prepare the parameters provider.Parameters = new QueryDataParameters(); provider.Parameters.Add("SiteID", siteId); provider.Parameters.Add("IncludeGlobal", AllowGlobalCategories); provider.Parameters.Add("UserID", userId); provider.Columns = "CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryUserID, CategorySiteID, (SELECT COUNT(C.CategoryID) FROM CMS_Category AS C WHERE (C.CategoryParentID = CMS_Category.CategoryID) AND (ISNULL(C.CategorySiteID, 0) = @SiteID OR (C.CategorySiteID IS NULL AND @IncludeGlobal = 1)) AND (ISNULL(C.CategoryUserID, 0) = @UserID)) AS CategoryChildCount"; provider.OrderBy = "CategoryUserID, CategorySiteID, CategoryOrder"; provider.WhereCondition = "ISNULL(CategoryUserID, 0) = " + userId + " AND (ISNULL(CategorySiteID, 0) = " + siteId; if (AllowGlobalCategories && (siteId > 0)) { provider.WhereCondition += " OR CategorySiteID IS NULL"; } provider.WhereCondition += ")"; return provider; }
protected void Page_Load(object sender, EventArgs e) { SetupActionButtons(); // Select element and expand modules first level elements if (!RequestHelper.IsPostBack()) { // Select given element if (ElementInfo != null) { SelectNode(ElementInfo); ContentTree.SelectPath = ElementInfo.ElementIDPath; } // Expand all module elements var allModuleElements = UIElementInfoProvider.GetUIElements().Where("ElementResourceID", QueryOperator.Equals, ModuleId).Columns("ElementID"); var elementsToExpand = UIElementInfoProvider.GetUIElements() .Where("ElementResourceID", QueryOperator.Equals, ModuleId) .Where(new WhereCondition().WhereNull("ElementParentID").Or().WhereNotIn("ElementParentID", allModuleElements)); foreach (var uiElementInfo in elementsToExpand) { if (!String.IsNullOrEmpty(uiElementInfo.ElementIDPath)) { ContentTree.ExpandPath += uiElementInfo.ElementIDPath + ";"; // No element is selected, select first if (ElementInfo == null) { SelectNode(uiElementInfo); ContentTree.SelectPath = uiElementInfo.ElementIDPath; } } } } // Create and set UIElements provider var tree = new UniTreeProvider(); tree.ObjectType = "CMS.UIElement"; tree.DisplayNameColumn = "ElementDisplayName"; tree.IDColumn = "ElementID"; tree.LevelColumn = "ElementLevel"; tree.OrderColumn = "ElementOrder"; tree.ParentIDColumn = "ElementParentID"; tree.PathColumn = "ElementIDPath"; tree.ValueColumn = "ElementID"; tree.ChildCountColumn = "ElementChildCount"; tree.Columns = "ElementID,ElementLevel,ElementOrder,ElementParentID,ElementIDPath,ElementChildCount,ElementDisplayName,ElementResourceID,ElementName,ElementIconPath,ElementIconClass"; ContentTree.UsePostBack = false; ContentTree.ProviderObject = tree; ContentTree.OnNodeCreated += uniTree_OnNodeCreated; ContentTree.NodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + ModuleId + ", true); return false;\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; ContentTree.SelectedNodeTemplate = "<span id=\"node_##NODEID##\" onclick=\"SelectNode(##NODEID##,##PARENTNODEID##," + ModuleId + ", true); return false;\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; // Icons tree.ImageColumn = "ElementIconPath"; }
protected void Page_Load(object sender, EventArgs e) { ScriptHelper.RegisterJQuery(Page); SitePanel.Visible = ShowSiteSelector; ActionsPanel.Visible = !ShowSiteSelector; plcSelectionScript.Visible = ShowSiteSelector; plcActionSelectionScript.Visible = !ShowSiteSelector; if (RootCategory != null) { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " AND (CategoryLevel <= " + (RootCategory.CategoryLevel + MaxRelativeLevel) + ")"); // Restrict CategoryChildCount to MaxRelativeLevel. If level < MaxRelativeLevel, use count of non-group children. string levelColumn = "CASE CategoryLevel WHEN " + MaxRelativeLevel + " THEN 0 ELSE (SELECT COUNT(*) AS CountNonGroup FROM CMS_SettingsCategory AS sc WHERE (sc.CategoryParentID = CMS_SettingsCategory.CategoryID) AND (sc.CategoryIsGroup = 0)) END AS CategoryChildCount"; // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = RootCategory.CategoryLevel; provider.ObjectType = "CMS.SettingsCategory"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; provider.ImageColumn = "CategoryIconPath"; provider.WhereCondition = "((CategoryIsGroup IS NULL) OR (CategoryIsGroup = 0)) " + levelWhere; if (!ShowEmptyCategories) { var where = "CategoryID IN (SELECT CategoryParentID FROM CMS_SettingsCategory WHERE (CategoryIsGroup = 0) OR (CategoryIsGroup = 1 AND CategoryID IN (SELECT KeyCategoryID FROM CMS_SettingsKey WHERE ISNULL(SiteID, 0) = 0"; if (SiteID > 0) { where += " AND KeyIsGlobal = 0"; } where += ")))"; provider.WhereCondition = SqlHelper.AddWhereCondition(provider.WhereCondition, where); } provider.Columns = "CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryIconPath, CategoryResourceID, " + levelColumn; if (String.IsNullOrEmpty(JavaScriptHandler)) { Tree.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS## ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; Tree.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS##\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { Tree.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS## ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##, ##RESOURCEID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; Tree.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ##NAMECSSCLASS##\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##, ##RESOURCEID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } Tree.UsePostBack = false; Tree.ProviderObject = provider; Tree.ExpandPath = RootCategory.CategoryIDPath; Tree.OnNodeCreated += Tree_OnNodeCreated; } GetExpandedPaths(); NewItemButton.ToolTip = GetString("settings.newelem"); DeleteItemButton.ToolTip = GetString("settings.deleteelem"); MoveUpItemButton.ToolTip = GetString("settings.modeupelem"); MoveDownItemButton.ToolTip = GetString("settings.modedownelem"); // Create new element javascript NewItemButton.OnClientClick = "return newItem();"; // Confirm delete DeleteItemButton.OnClientClick = "if(!deleteConfirm()) { return false; }"; var isPostback = RequestHelper.IsPostBack(); if (!isPostback) { Tree.ReloadData(); if (QueryHelper.GetBoolean("reloadtreeselect", false)) { var category = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(CategoryID); // Select requested category RegisterSelectNodeScript(category); } } if (ShowSiteSelector) { if (!isPostback) { if (QueryHelper.Contains("selectedSiteId")) { // Get from URL SiteID = QueryHelper.GetInteger("selectedSiteId", 0); SiteSelector.Value = SiteID; } } else { SiteID = ValidationHelper.GetInteger(SiteSelector.Value, 0); } // Style site selector SiteSelector.SetValue("AllowGlobal", true); SiteSelector.SetValue("GlobalRecordValue", 0); bool reload = QueryHelper.GetBoolean("reload", true); // URL for tree selection string script = "var categoryURL = '" + UIContextHelper.GetElementUrl(ModuleName.CMS, "Settings.Keys") + "';\n"; script += "var doNotReloadContent = false;\n"; // Select category SettingsCategoryInfo sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(CategoryID); if (sci != null) { // Stop reloading of right frame, if explicitly set if (!reload) { script += "doNotReloadContent = true;"; } script += SelectAtferLoad(sci.CategoryIDPath, sci.CategoryName, sci.CategoryID, sci.CategoryParentID); } ScriptHelper.RegisterStartupScript(Page, typeof(string), "SelectCat", ScriptHelper.GetScript(script)); } else { ResourceInfo resource = ResourceInfoProvider.GetResourceInfo(ModuleID); StringBuilder sb = new StringBuilder(); sb.Append(@" var frameURL = '", UIContextHelper.GetElementUrl(ModuleName.CMS, "EditSettingsCategory", false), @"'; var rootId = ", (RootCategory != null ? RootCategory.CategoryID : 0), @"; var selectedModuleId = ", ModuleID, @"; var developmentMode = ", SystemContext.DevelopmentMode ? "true" : "false", @"; var resourceInDevelopment = ", (resource != null) && resource.ResourceIsInDevelopment ? "true" : "false", @"; var postParentId = ", CategoryID, @"; function newItem() { var hidElem = document.getElementById('" + hidSelectedElem.ClientID + @"'); var ids = hidElem.value.split('|'); if (window.parent != null && window.parent.frames['settingsmain'] != null) { window.parent.frames['settingsmain'].location = '" + ResolveUrl("~/CMSModules/Modules/Pages/Settings/Category/Edit.aspx") + @"?moduleid=" + ModuleID + @"&parentId=' + ids[0]; } return false; } function deleteConfirm() { return confirm(" + ScriptHelper.GetString(GetString("settings.categorydeleteconfirmation")) + @"); } "); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "setupTreeScript", ScriptHelper.GetScript(sb.ToString())); } }
protected void Page_Load(object sender, EventArgs e) { // Register JQuery ScriptHelper.RegisterJQuery(Page); // Use images according to culture if (CultureHelper.IsUICultureRTL()) { treeElem.LineImagesFolder = GetImageUrl("RTL/Design/Controls/Tree"); } else { treeElem.LineImagesFolder = GetImageUrl("Design/Controls/Tree"); } if (RootCategory != null) { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " AND (CategoryLevel <= " + (RootCategory.CategoryLevel + MaxRelativeLevel) + ")"); // Restrict CategoryChildCount to MaxRelativeLevel. If level < MaxRelativeLevel, use count of non-group children. string levelColumn = "CASE CategoryLevel WHEN " + MaxRelativeLevel + " THEN 0 ELSE (SELECT COUNT(*) AS CountNonGroup FROM CMS_SettingsCategory AS sc WHERE (sc.CategoryParentID = CMS_SettingsCategory.CategoryID) AND (sc.CategoryIsGroup = 0)) END AS CategoryChildCount"; // Create and set category provider UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = RootCategory.CategoryLevel; provider.ObjectType = "CMS.SettingsCategory"; provider.DisplayNameColumn = "CategoryDisplayName"; provider.IDColumn = "CategoryID"; provider.LevelColumn = "CategoryLevel"; provider.OrderColumn = "CategoryOrder"; provider.ParentIDColumn = "CategoryParentID"; provider.PathColumn = "CategoryIDPath"; provider.ValueColumn = "CategoryID"; provider.ChildCountColumn = "CategoryChildCount"; provider.WhereCondition = " ((CategoryIsGroup IS NULL) OR (CategoryIsGroup = 0)) " + levelWhere; if (!ShowEmptyCategories) { provider.WhereCondition = SqlHelperClass.AddWhereCondition(provider.WhereCondition, "CategoryID IN (SELECT CategoryParentID FROM CMS_SettingsCategory WHERE (CategoryIsGroup = 0) OR (CategoryIsGroup = 1 AND CategoryID IN (SELECT KeyCategoryID FROM CMS_SettingsKey WHERE ISNULL(SiteID, 0) = " + SiteID + ")))"); } provider.Columns = "CategoryID, CategoryName, CategoryDisplayName, CategoryLevel, CategoryOrder, CategoryParentID, CategoryIDPath, CategoryIconPath, " + levelColumn; if (String.IsNullOrEmpty(JavaScriptHandler)) { treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"SelectNode('##NODECODENAME##');\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } else { treeElem.SelectedNodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; treeElem.NodeTemplate = "<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem\" onclick=\"SelectNode('##NODECODENAME##'); if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('##NODECODENAME##',##NODEID##, ##SITEID##, ##PARENTID##); }\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>"; } treeElem.UsePostBack = false; treeElem.ProviderObject = provider; treeElem.ExpandPath = RootCategory.CategoryIDPath; treeElem.OnGetImage += treeElem_OnGetImage; treeElem.OnNodeCreated += treeElem_OnNodeCreated; // Create root node string rootName = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(String.IsNullOrEmpty(RootCategory.CategoryDisplayName) ? RootCategory.CategoryName : RootCategory.CategoryDisplayName)); string rootIconUrl = GetImageUrl("/General/DefaultRoot.png"); string rootIcon = "<img src=\"" + rootIconUrl + "\" style=\"border:none;height:10px;width:1px;\" />"; string rootText = ""; if (!RootIsClickable) { rootText = treeElem.ReplaceMacros("<span id=\"node_##NODECODENAME##\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODECUSTOMNAME##</span></span>", RootCategory.CategoryID, RootCategory.CategoryChildCount, HTMLHelper.HTMLEncode(rootName), rootIcon, RootCategory.CategoryParentID, null, null); } else { rootText = treeElem.ReplaceMacros(treeElem.SelectedNodeTemplate, RootCategory.CategoryID, RootCategory.CategoryChildCount, HTMLHelper.HTMLEncode(rootName), rootIcon, RootCategory.CategoryParentID, null, null); } rootText = rootText.Replace("##NODECUSTOMNAME##", HTMLHelper.HTMLEncode(rootName)); rootText = rootText.Replace("##NODECODENAME##", HTMLHelper.HTMLEncode(RootCategory.CategoryName)); rootText = rootText.Replace("##SITEID##", mSiteId.ToString()); rootText = rootText.Replace("##PARENTID##", RootCategory.CategoryParentID.ToString()); if (!String.IsNullOrEmpty(RootCategory.CategoryIconPath)) { rootIconUrl = GetImageUrl(RootCategory.CategoryIconPath); } treeElem.SetRoot(rootText, RootCategory.CategoryID.ToString(), rootIconUrl, URLHelper.Url + "#", null); currentUser = CMSContext.CurrentUser; } if (!RequestHelper.IsPostBack()) { treeElem.ReloadData(); } }
/// <summary> /// Set tree provider /// </summary> protected void SetTreeProvider() { string levelWhere = (MaxRelativeLevel <= 0 ? "" : " (ElementLevel <= " + (root.ElementLevel + MaxRelativeLevel) + ")"); string levelColumn = "CASE ElementLevel WHEN " + (root.ElementLevel + MaxRelativeLevel) + " THEN 0 ELSE ElementChildCount END AS ElementChildCount"; UniTreeProvider provider = new UniTreeProvider(); provider.RootLevelOffset = root.ElementLevel; provider.ObjectType = "cms.uielement"; provider.DisplayNameColumn = "ElementDisplayName"; provider.IDColumn = "ElementID"; provider.LevelColumn = "ElementLevel"; provider.OrderColumn = "ElementOrder"; provider.ParentIDColumn = "ElementParentID"; provider.PathColumn = "ElementIDPath"; provider.ValueColumn = "ElementName"; provider.ChildCountColumn = "ElementChildCount"; provider.WhereCondition = levelWhere; provider.CaptionColumn = "ElementCaption"; provider.Columns = "ElementID, ElementName, ElementDisplayName, ElementGuid, ElementLevel, ElementOrder, ElementIconClass, ElementParentID, ElementIDPath, ElementCaption, ElementIconPath, ElementTargetURL, ElementType, ElementFeature, ElementVisibilityCondition, ElementResourceID, " + levelColumn; provider.ImageColumn = "ElementIconPath"; provider.IconClassColumn = "ElementIconClass"; treeElem.ProviderObject = provider; }
/// <summary> /// Page_Load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { return; } // Create and set category provider UniTreeProvider categoryProvider = new UniTreeProvider(); categoryProvider.DisplayNameColumn = "DisplayName"; categoryProvider.IDColumn = "ObjectID"; categoryProvider.LevelColumn = "ObjectLevel"; categoryProvider.ParentIDColumn = "ParentID"; categoryProvider.PathColumn = "ObjectPath"; categoryProvider.ValueColumn = "ObjectID"; categoryProvider.ChildCountColumn = "CompleteChildCount"; categoryProvider.QueryName = "cms.webpartcategory.selectallview"; categoryProvider.ObjectTypeColumn = "ObjectType"; categoryProvider.Columns = "DisplayName, ObjectID, ObjectLevel,ParentID, ObjectPath, CompleteChildCount,ObjectType,CategoryChildCount, CategoryImagePath"; categoryProvider.ImageColumn = "CategoryImagePath"; categoryProvider.RootLevelOffset = 0; string where = null; if (!SelectWebParts) { // Select only categories where = "ObjectType = N'webpartcategory'"; categoryProvider.ChildCountColumn = "CategoryChildCount"; categoryProvider.ObjectTypeColumn = ""; } else { categoryProvider.OrderBy = "ObjectType DESC, DisplayName ASC"; } // Add custom where condition if (!string.IsNullOrEmpty(RootPath)) { where = SqlHelper.AddWhereCondition(where, "ObjectPath = '" + SqlHelper.EscapeQuotes(RootPath) + "' OR ObjectPath LIKE '" + SqlHelper.EscapeLikeText(SqlHelper.EscapeQuotes(RootPath)) + "/%'"); categoryProvider.RootLevelOffset = RootPath.Split('/').Length - 1; treeElem.ExpandPath = RootPath.TrimEnd() + "/"; } categoryProvider.WhereCondition = where; // Set up tree treeElem.ProviderObject = categoryProvider; if (SelectWebParts) { treeElem.NodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);\" name=\"treeNode\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span id=\"##OBJECTTYPE##_##NODEID##\" onclick=\"SelectNode(##NODEID##,'##OBJECTTYPE##', ##PARENTNODEID##);\" name=\"treeNode\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; } else { treeElem.NodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.DefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedDefaultItemTemplate = "<span onclick=\"SelectNode('recentlyused', this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; treeElem.SelectedNodeTemplate = "<span onclick=\"SelectNode(##NODEID##, this);\" class=\"ContentTreeItem ContentTreeSelectedItem\">##ICON##<span class=\"Name\">##NODENAME##</span></span>"; ScriptHelper.RegisterJQuery(Page); string js = "var selectedItem = $cmsj('.ContentTreeSelectedItem');" + "function SelectNode(nodeid, sender){" + "selectedItem.removeClass('ContentTreeSelectedItem'); " + "selectedItem.addClass('ContentTreeItem');" + "selectedItem = $cmsj(sender);" + "selectedItem.removeClass('ContentTreeItem'); " + "selectedItem.addClass('ContentTreeSelectedItem'); " + "document.getElementById('" + treeElem.SelectedItemFieldId + "').value = nodeid;" + treeElem.GetOnSelectedItemBackEventReference() + "}"; ScriptHelper.RegisterStartupScript(Page, typeof(string), "SelectTreeNode", ScriptHelper.GetScript(js)); } // Add last recently used if (ShowRecentlyUsed) { treeElem.AddDefaultItem(GetString("webparts.recentlyused"), "recentlyused", null); } // Setup event handler treeElem.OnItemSelected += treeElem_OnItemSelected; treeElem.OnNodeCreated += treeElem_OnNodeCreated; }