Ejemplo n.º 1
0
    /// <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;
    }
Ejemplo n.º 3
0
    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;
    }
Ejemplo n.º 4
0
    /// <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);
    }
Ejemplo n.º 5
0
    /// <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);
    }
Ejemplo n.º 6
0
    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;
    }
Ejemplo n.º 7
0
    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) + "&nbsp;<span class=\"UITreeSelectButton\">(<span onclick=\"" + (Enabled ? "SelectAllSubelements($j(this), " + root.ElementID + ", false); " + CallbackRef + ";" : "return false;") + "\" >" + GetString("uiprofile.selectall") + "</span>,&nbsp;<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();
            }
        }
    }
Ejemplo n.º 9
0
    /// <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;
    }
Ejemplo n.º 11
0
    /// <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);
    }
Ejemplo n.º 13
0
    /// <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);
    }
Ejemplo n.º 15
0
    /// <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;
    }
Ejemplo n.º 19
0
    /// <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;
    }
Ejemplo n.º 20
0
    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);
        }
    }
Ejemplo n.º 21
0
    /// <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;
    }
Ejemplo n.º 22
0
    /// <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);
    }
Ejemplo n.º 23
0
    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);
        }
    }
Ejemplo n.º 24
0
    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;
    }
Ejemplo n.º 26
0
    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);
    }
Ejemplo n.º 27
0
    /// <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;
    }
Ejemplo n.º 28
0
    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;
    }
Ejemplo n.º 30
0
    /// <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);
    }
Ejemplo n.º 32
0
    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()));
        }
    }
Ejemplo n.º 33
0
    /// <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();
    }
Ejemplo n.º 35
0
    /// <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) + "&nbsp;<span class=\"UITreeSelectButton\">(<span onclick=\"" + (Enabled ? "SelectAllSubelements($j(this), " + root.ElementID + ", false); " + CallbackRef + ";" : "return false;") + "\" >" + GetString("uiprofile.selectall") + "</span>,&nbsp;<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();
            }
        }
    }
Ejemplo n.º 37
0
    /// <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();
        }
    }
Ejemplo n.º 41
0
    /// <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;
    }
Ejemplo n.º 42
0
    /// <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;
    }