protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        mCategoryId = QueryHelper.GetInteger("categoryid", 0);
        mTreeRoot = QueryHelper.GetText("treeroot", "customsettings");
        mWholeSettings = mTreeRoot == "settings";
        mRootName = mWholeSettings ? "CMS.Settings" : "CMS.CustomSettings";

        if (mCategoryId > 0)
        {
            mCategoryInfo = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(mCategoryId);
        }
        else
        {
            mCategoryInfo = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(mRootName);
        }

        if (mCategoryInfo != null)
        {
            mCategoryId = mCategoryInfo.CategoryID;
        }

        // Intialize the control
        SetupControl();
    }
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        mCategoryId = QueryHelper.GetInteger("categoryid", 0);
        mTreeRoot = QueryHelper.GetText("treeroot", "customsettings");
        mWholeSettings = mTreeRoot == "settings";
        mRootName = mWholeSettings ? "CMS.Settings" : "CMS.CustomSettings";

        if (mCategoryId > 0)
        {
            mCategoryInfo = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(mCategoryId);
        }
        else
        {
            mCategoryInfo = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(mRootName);
        }

        if (mCategoryInfo != null)
        {
            mCategoryId = mCategoryInfo.CategoryID;
        }

        // Intialize the control
        SetupControl();
    }
Exemplo n.º 3
0
    /// <summary>
    /// Gets path containing display names of all predecessors of given category and name of category itself.
    /// </summary>
    /// <param name="child">Category to get path from</param>
    /// <returns>String containing path to given Category</returns>
    private string GetCategoryPathNames(SettingsCategoryInfo child)
    {
        // Convert IDPath to be suitable for IN-clause of SQL query
        string inClause = child.CategoryIDPath.Remove(0, 1).Replace('/', ',');

        StringBuilder sb = new StringBuilder("");

        if (!string.IsNullOrEmpty(inClause))
        {
            // Get display names of all categories from path, order by nesting level
            DataSet ds = SettingsCategoryInfoProvider.GetSettingsCategories(string.Format("CategoryID IN ({0}) AND CategoryLevel > 0", inClause), "CategoryLevel", -1, "CategoryDisplayName");

            if (!DataHelper.DataSourceIsEmpty(ds))
            {
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    // No slash before first name
                    if (sb.Length > 0)
                    {
                        sb.Append(" / ");
                    }
                    sb.Append(ValidationHelper.GetString(row["CategoryDisplayName"], ""));
                }
            }
        }

        return(sb.ToString());
    }
Exemplo n.º 4
0
    /// <summary>
    /// Gets and bulk updates settings categories. Called when the "Get and bulk update categories" button is pressed.
    /// Expects the CreateSettingsCategory method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateSettingsCategories()
    {
        // Prepare the parameters
        string where = "CategoryName LIKE 'MyNew%' AND CategoryIsGroup = 0";

        // Get the settings categories
        DataSet categories = SettingsCategoryInfoProvider.GetSettingsCategories(where, null);

        if (!DataHelper.DataSourceIsEmpty(categories))
        {
            // Loop through the individual items
            foreach (DataRow categoryDr in categories.Tables[0].Rows)
            {
                // Create object from DataRow
                SettingsCategoryInfo modifyCategory = new SettingsCategoryInfo(categoryDr);

                // Update the property
                modifyCategory.CategoryDisplayName = modifyCategory.CategoryDisplayName.ToUpper();

                // Update the settings category
                SettingsCategoryInfoProvider.SetSettingsCategoryInfo(modifyCategory);
            }

            return(true);
        }

        return(false);
    }
Exemplo n.º 5
0
    /// <summary>
    /// Creates settings group. Called when the "Create group" button is pressed.
    /// Expects the CreateSettingsCategory method to be run first.
    /// </summary>
    private bool CreateSettingsGroup()
    {
        // Get the settings category
        SettingsCategoryInfo settingsCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("MyNewSettingsCategory");

        if (settingsCategory != null)
        {
            // Create new settings group object
            SettingsCategoryInfo newGroup = new SettingsCategoryInfo();

            // Set the properties
            newGroup.CategoryDisplayName = "My New Settings Group";
            newGroup.CategoryName        = "MyNewSettingsGroup";
            newGroup.CategoryOrder       = 0;
            newGroup.CategoryParentID    = settingsCategory.CategoryID;
            newGroup.CategoryIsGroup     = true;
            newGroup.CategoryIsCustom    = true;

            // Create the settings group
            SettingsCategoryInfoProvider.SetSettingsCategoryInfo(newGroup);

            return(true);
        }

        return(false);
    }
Exemplo n.º 6
0
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        string[,] breadcrumbs = new string[2, 4];
        breadcrumbs[0, 2]     = "_parent";
        breadcrumbs[1, 1]     = "";

        // Set bradcrumbs for editing
        if (skeEditKey.SettingsKeyObj != null)
        {
            SettingsCategoryInfo sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(skeEditKey.SettingsKeyObj.KeyCategoryID);

            breadcrumbs[0, 0] = sci.CategoryDisplayName;
            breadcrumbs[0, 1] = ResolveUrl("CustomSettingsCategory_Default.aspx?treeroot=" + mTreeRoot + "&categoryid=" + sci.CategoryParentID + "&siteid=" + mSiteId);
            breadcrumbs[1, 0] = skeEditKey.SettingsKeyObj.KeyDisplayName;
        }
        // Set bradcrumbs for creating new key
        else
        {
            if (mParentGroup != null)
            {
                SettingsCategoryInfo parentCat = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(mParentGroup);
                if (parentCat != null)
                {
                    breadcrumbs[0, 0] = parentCat.CategoryDisplayName;
                    breadcrumbs[0, 1] = ResolveUrl("CustomSettingsCategory_Default.aspx?treeroot=" + mTreeRoot + "&categoryid=" + parentCat.CategoryParentID + "&siteid=" + mSiteId);
                    breadcrumbs[1, 0] = GetString("Development.CustomSettings.NewKey");
                }
            }
        }
        CurrentMaster.Title.Breadcrumbs = breadcrumbs;
    }
Exemplo n.º 7
0
    /// <summary>
    /// Creates settings key. Called when the "Create key" button is pressed.
    /// </summary>
    private bool CreateSettingsKey()
    {
        // Get the settings group
        SettingsCategoryInfo settingsGroup = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("MyNewSettingsGroup");

        if (settingsGroup != null)
        {
            // Create new settings key object
            SettingsKeyInfo newKey = new SettingsKeyInfo();

            // Set the properties
            newKey.KeyDisplayName  = "My new key";
            newKey.KeyName         = "MyNewKey";
            newKey.KeyDescription  = "My new key description";
            newKey.KeyType         = "string";
            newKey.KeyValue        = "My new value";
            newKey.KeyCategoryID   = settingsGroup.CategoryID;
            newKey.KeyDefaultValue = null;

            // Set Site ID for site specific settings key (for global settings key is default value 0).
            newKey.SiteID = CMSContext.CurrentSiteID;

            // Create the settings key
            SettingsKeyProvider.SetValue(newKey);

            return(true);
        }

        return(false);
    }
Exemplo n.º 8
0
    /// <summary>
    /// Gets and bulk updates settings groups. Called when the "Get and bulk update groups" button is pressed.
    /// Expects the CreateSettingsGroup method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateSettingsGroups()
    {
        // Prepare the parameters
        string where = "CategoryName LIKE 'MyNew%' AND CategoryIsGroup = 1";
        string orderBy = "CategoryName";

        // Get the data
        DataSet groups = SettingsCategoryInfoProvider.GetSettingsCategories(where, orderBy);

        if (!DataHelper.DataSourceIsEmpty(groups))
        {
            // Loop through the individual items
            foreach (DataRow groupDr in groups.Tables[0].Rows)
            {
                // Create object from DataRow
                SettingsCategoryInfo modifyGroup = new SettingsCategoryInfo(groupDr);

                // Update the property
                modifyGroup.CategoryDisplayName = modifyGroup.CategoryDisplayName.ToUpper();

                // Update settings group
                SettingsCategoryInfoProvider.SetSettingsCategoryInfo(modifyGroup);
            }

            return(true);
        }

        return(false);
    }
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        // Get query string parameters
        int    siteId              = QueryHelper.GetInteger("siteid", 0);
        int    categoryId          = QueryHelper.GetInteger("categoryid", 0);
        string searchForText       = QueryHelper.GetString("search", "");
        bool   searchInDescription = QueryHelper.GetBoolean("description", false);

        // Get category
        SettingsCategoryInfo category = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(categoryId);

        // Either category or search text needs to be set
        if ((category == null) && (!string.IsNullOrEmpty(searchForText)))
        {
            return;
        }

        // Get site
        SiteInfo site = SiteInfoProvider.GetSiteInfo(siteId);

        // Export settings
        Export(category, searchForText, searchInDescription, site);
    }
Exemplo n.º 10
0
    /// <summary>
    /// Creates settings category. Called when the "Create category" button is pressed.
    /// </summary>
    private bool CreateSettingsCategory()
    {
        // Get parent category ID
        SettingsCategoryInfo parentCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("CMS.CustomSettings");

        if (parentCategory != null)
        {
            // Create new settings category object
            SettingsCategoryInfo newCategory = new SettingsCategoryInfo();

            // Set the properties
            newCategory.CategoryDisplayName = "My New Settings Category";
            newCategory.CategoryName        = "MyNewSettingsCategory";
            newCategory.CategoryOrder       = 0;
            newCategory.CategoryParentID    = parentCategory.CategoryID;
            newCategory.CategoryIsGroup     = false;
            newCategory.CategoryIsCustom    = true;

            // Create settings category
            SettingsCategoryInfoProvider.SetSettingsCategoryInfo(newCategory);

            return(true);
        }

        return(false);
    }
    /// <summary>
    /// Creates SettingsGroup panel for a specified category.
    /// </summary>
    /// <param name="category">Non-group category</param>
    protected CMSUserControl CreatePanelForCategory(SettingsCategoryInfo category)
    {
        if (category == null)
        {
            return(null);
        }

        // Create new Category bar and initialize it
        SettingsGroup group = Page.LoadUserControl("~/CMSModules/Modules/Controls/Settings/Category/SettingsGroup.ascx") as SettingsGroup;

        if (group != null)
        {
            group.Category         = category;
            group.ModuleID         = ModuleID;
            group.ActionPerformed += group_ActionPerformed;
            group.OnNewKey        += group_OnNewKey;
            group.OnKeyAction     += group_OnKeyAction;

            ResourceInfo resource = ResourceInfoProvider.GetResourceInfo(ModuleID);

            group.AllowEdit = (resource != null) && ((resource.ResourceIsInDevelopment && (resource.ResourceID == category.CategoryResourceID)) || SystemContext.DevelopmentMode);
        }

        return(group);
    }
Exemplo n.º 12
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!RequestHelper.IsPostBack())
        {
            treeSettings.SelectPath = "/";

            int categoryId = QueryHelper.GetInteger("categoryid", -1);
            SettingsCategoryInfo category = SettingsCategoryInfo.Provider.Get(categoryId);
            // Select requested category
            if (category != null)
            {
                treeSettings.SelectPath       = category.CategoryIDPath;
                treeSettings.CategoryID       = category.CategoryID;
                treeSettings.ParentID         = category.CategoryParentID;
                treeSettings.CategoryModuleID = category.CategoryResourceID;
                treeSettings.Value            = category.CategoryID + "|" + category.CategoryParentID;
            }
            else
            {
                //  Select root
                SettingsCategoryInfo rootCat = treeSettings.RootCategory;
                if (rootCat != null)
                {
                    treeSettings.CategoryID = rootCat.CategoryID;
                    treeSettings.ParentID   = rootCat.CategoryParentID;
                    treeSettings.Value      = rootCat.CategoryID + "|" + rootCat.CategoryParentID;
                }
            }
        }
    }
        public static ScopeNode BuildSettingsCategoryNode(
            string displayName,
            string formViewDescriptionDisplayName,
            SettingsCategoryInfo settingsCategoryInfo,
            Nullable <int> imageIndex,
            Nullable <int> selectedImageIndex,
            bool hideExpandIcon)
        {
            ScopeNode result = new ScopeNode(hideExpandIcon)
            {
                DisplayName = displayName
            };

            ValidateMandatoryNodeFields(result);
            result.ViewDescriptions.Add(new FormViewDescription() //Tells the snap-in how to construct a form and what control to to add it to.
            {
                DisplayName = formViewDescriptionDisplayName,
                ViewType    = typeof(SettingsFormViewWindows), //The Type of the form to instantiate.
                ControlType = typeof(SettingsControlWindows),  //The Type of the control to instantiate and place onto the form.
                Tag         = settingsCategoryInfo,            //Informs the SettingsControl which CATEGORY of settings to display i.e. i.e. the properties of the Settings class which have an attribute with the same Category name set.
            });
            result.ViewDescriptions.DefaultIndex = 0;
            SetImageIndices(result, imageIndex, selectedImageIndex);
            return(result);
        }
Exemplo n.º 14
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ScriptHelper.RegisterJQuery(Page);

        // URL for tree selection
        string script = "var categoryURL = '" + ResolveUrl("keys.aspx") + "';\n";

        script += "var doNotReloadContent = false;\n";

        // Get selected site id
        mSiteId = ValidationHelper.GetInteger(siteSelector.Value, 0);
        TreeViewCategories.SiteID          = mSiteId;
        TreeViewCategories.RootIsClickable = true;

        int categoryId = 0;

        if (Request.Params["selectedCategoryId"] != null)
        {
            // Selected category
            categoryId = ValidationHelper.GetInteger(Request.Params["selectedCategoryId"], 0);
        }
        else
        {
            // First request to Settings
            categoryId = SettingsCategoryInfoProvider.GetRootSettingsCategoryInfo().CategoryID;
        }


        bool reload = QueryHelper.GetBoolean("reload", true);

        // 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));

        // Style site selector
        siteSelector.DropDownSingleSelect.CssClass = "";
        siteSelector.DropDownSingleSelect.Attributes.Add("style", "width: 100%");
        lblSite.Text = GetString("general.site") + ResHelper.Colon;

        // Set site selector
        siteSelector.DropDownSingleSelect.AutoPostBack = true;
        siteSelector.AllowAll = false;
        siteSelector.UniSelector.SpecialFields = new string[1, 2] {
            { GetString("general.global"), "0" }
        };
        siteSelector.OnlyRunningSites = false;
    }
Exemplo n.º 15
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get query strings
        mCategoryId = QueryHelper.GetInteger("categoryid", 0);
        mSiteId     = QueryHelper.GetInteger("siteid", 0);

        // Assign category id, site id
        SettingsGroupViewer.CategoryID = mCategoryId;
        SettingsGroupViewer.SiteID     = mSiteId;

        if (SettingsGroupViewer.SettingsCategoryInfo == null)
        {
            // Get root category info
            SettingsCategoryInfo sci = SettingsCategoryInfoProvider.GetRootSettingsCategoryInfo();
            SettingsGroupViewer.CategoryID = sci.CategoryID;
        }

        // Get search text if exist
        string search = QueryHelper.GetString("search", String.Empty).Trim();

        // If root selected show search controls
        if ((SettingsKeyProvider.DevelopmentMode) && (SettingsGroupViewer.CategoryName == "CMS.Settings"))
        {
            pnlSearch.Visible            = true;
            lblNoSettings.ResourceString = "Development.Settings.SearchSettings";
            if (!string.IsNullOrEmpty(search))
            {
                // Set searched values
                if (!URLHelper.IsPostback())
                {
                    txtSearch.Text         = search;
                    chkDescription.Checked = QueryHelper.GetBoolean("description", true);
                }
            }
            RegisterSearchScript();
        }

        // Set master title
        CurrentMaster.Title.TitleText     = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(SettingsGroupViewer.SettingsCategoryInfo.CategoryDisplayName));
        CurrentMaster.Title.TitleImage    = GetImageUrlForHeader(SettingsGroupViewer.SettingsCategoryInfo.CategoryName);
        CurrentMaster.Title.HelpTopicName = GetHelpTopicName();

        // Check, if there are any groups
        DataSet ds = SettingsCategoryInfoProvider.GetSettingsCategories("CategoryIsGroup = 1 AND CategoryParentID = " + mCategoryId, null, -1, "CategoryID");

        if ((!DataHelper.DataSourceIsEmpty(ds)) || (!string.IsNullOrEmpty(search)))
        {
            CurrentMaster.HeaderActions.Actions          = GetHeaderActions();
            CurrentMaster.HeaderActions.ActionPerformed += HeaderActions_ActionPerformed;
        }
        else
        {
            lblNoSettings.Visible = true;
        }

        ScriptHelper.RegisterSaveShortcut(this, "save", false);
    }
Exemplo n.º 16
0
    /// <summary>
    /// Deletes settings category. Called when the "Delete category" button is pressed.
    /// Expects the CreateSettingsCategory method to be run first.
    /// </summary>
    private bool DeleteSettingsCategory()
    {
        // Get the settings category
        SettingsCategoryInfo deleteCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("MyNewSettingsCategory");

        // Delete the settings category
        SettingsCategoryInfoProvider.DeleteSettingsCategoryInfo(deleteCategory);

        return(deleteCategory != null);
    }
Exemplo n.º 17
0
    /// <summary>
    /// Deletes settings group. Called when the "Delete group" button is pressed.
    /// Expects the CreateSettingsGroup method to be run first.
    /// </summary>
    private bool DeleteSettingsGroup()
    {
        // Get the settings group
        SettingsCategoryInfo deleteGroup = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("MyNewSettingsGroup");

        // Delete the settings group
        SettingsCategoryInfoProvider.DeleteSettingsCategoryInfo(deleteGroup);

        return(deleteGroup != null);
    }
Exemplo n.º 18
0
    /// <summary>
    /// Handles the whole category actions.
    /// </summary>
    /// <param name="sender">Sender of event</param>
    /// <param name="e">Event arguments</param>
    protected void grpEdit_ActionPerformed(object sender, CommandEventArgs e)
    {
        int categoryId = ValidationHelper.GetInteger(e.CommandArgument, 0);

        switch (e.CommandName.ToLowerCSafe())
        {
        case ("edit"):
            // Redirect to category edit page
            SettingsCategoryInfo sci = SettingsCategoryInfo.Provider.Get(categoryId);
            if (sci != null)
            {
                URLHelper.Redirect(URLHelper.AppendQuery(UIContextHelper.GetElementUrl(ModuleName.CMS, "Modules.Settings.EditCategory", false), "isgroup=1&categoryid=" + categoryId + "&moduleid=" + moduleId));
            }
            break;

        case ("delete"):
            try
            {
                SettingsCategoryInfo settingGroup = SettingsCategoryInfo.Provider.Get(categoryId);
                if (settingGroup != null)
                {
                    // Register refresh tree script
                    StringBuilder sb = new StringBuilder();
                    sb.Append("if (window.parent != null) {");
                    sb.Append("if (window.parent.parent.frames['settingstree'] != null) {");
                    sb.Append("window.parent.parent.frames['settingstree'].location = '" + ResolveUrl("~/CMSModules/Modules/Pages/Settings/Tree.aspx") + "?categoryid=" + settingGroup.CategoryParentID + "&moduleid=" + moduleId + "&reloadtreeselect=1';");
                    sb.Append("}");
                    sb.Append("if (window.parent.frames['settingstree'] != null) {");
                    sb.Append("window.parent.frames['settingstree'].location =  '" + ResolveUrl("~/CMSModules/Modules/Pages/Settings/Tree.aspx") + "?categoryid=" + settingGroup.CategoryParentID + "&moduleid=" + moduleId + "&reloadtreeselect=1';");
                    sb.Append("}");
                    sb.Append("}");

                    ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "treeGroupRefresh", ScriptHelper.GetScript(sb.ToString()));

                    SettingsCategoryInfo.Provider.Delete(settingGroup);
                }
            }
            catch
            {
                ShowError(GetString("settings.group.deleteerror"));
            }
            grpEdit.ReloadData();
            break;

        case ("moveup"):
            SettingsCategoryInfoProvider.MoveCategoryUp(categoryId);
            grpEdit.ReloadData();
            break;

        case ("movedown"):
            SettingsCategoryInfoProvider.MoveCategoryDown(categoryId);
            grpEdit.ReloadData();
            break;
        }
    }
Exemplo n.º 19
0
    /// <summary>
    /// Initialization of controls.
    /// </summary>
    private void InitControls()
    {
        // Init validations
        rfvKeyDisplayName.ErrorMessage = ResHelper.GetString("general.requiresdisplayname");
        rfvKeyName.ErrorMessage        = ResHelper.GetString("general.requirescodename");

        // Display of LoadGeneration table row
        trLoadGeneration.Visible = SystemContext.DevelopmentMode;

        // Set the root category
        if (RootCategoryID > 0)
        {
            drpCategory.RootCategoryId = RootCategoryID;
        }

        // Enable only groups which belong to selected module
        drpCategory.EnabledCondition = "{% " + (!SystemContext.DevelopmentMode ? "(CategoryResourceID == " + ModuleID + ") && " : String.Empty) + "(CategoryIsGroup)%}";

        // If category specified programmatically
        if (mSelectedGroupId >= 0)
        {
            // Set category selector value
            if (!RequestHelper.IsPostBack())
            {
                drpCategory.SelectedCategory = mSelectedGroupId;
            }

            // Hide category selector
            trCategory.Visible = false;
        }
        else
        {
            // Set category selector value
            if (!URLHelper.IsPostback() && (SettingsKeyObj != null) && (SettingsKeyObj.KeyCategoryID > 0))
            {
                drpCategory.SelectedCategory = SettingsKeyObj.KeyCategoryID;
            }
        }

        if (!URLHelper.IsPostback())
        {
            LoadKeyTypes();
        }

        // Disable editing for keys not assigned to current module
        if (SettingsKeyObj != null)
        {
            SettingsCategoryInfo parentCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(SettingsKeyObj.KeyCategoryID);
            ResourceInfo         resource       = ResourceInfoProvider.GetResourceInfo(ModuleID);
            plnEdit.Enabled = btnOk.Enabled = (resource != null) && (((parentCategory != null) && (parentCategory.CategoryResourceID == resource.ResourceId) && resource.ResourceIsInDevelopment) || SystemContext.DevelopmentMode);
        }

        ucControlSettings.BasicForm.EnsureMessagesPlaceholder(MessagesPlaceHolder);
    }
Exemplo n.º 20
0
    /// <summary>
    /// Get path to the given settings category.
    /// </summary>
    /// <param name="settingsKeyCategoryInfo">The key that path is generated for</param>
    /// <returns>Path to the given settings category</returns>
    private IEnumerable <SettingsCategoryInfo> GetCategoryPath(SettingsCategoryInfo settingsKeyCategoryInfo)
    {
        var sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(settingsKeyCategoryInfo.CategoryParentID);

        while (sci != null)
        {
            yield return(sci);

            sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(sci.CategoryParentID);
        }
    }
Exemplo n.º 21
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //Get parameters
        mKeyName     = QueryHelper.GetString("keyname", "");
        mSiteId      = QueryHelper.GetInteger("siteid", -1);
        mParentGroup = QueryHelper.GetString("parentgroup", null);
        mTreeRoot    = QueryHelper.GetText("treeroot", "customsettings");

        skeEditKey.IsCustomSetting = mTreeRoot.EqualsCSafe("customsettings", true);
        skeEditKey.OnSaved        += new EventHandler(skeEditKey_OnSaved);

        if (skeEditKey.IsCustomSetting)
        {
            SettingsCategoryInfo root = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("CMS.CustomSettings");
            if (root != null)
            {
                skeEditKey.RootCategoryID = root.CategoryID;
            }
        }

        // Set up editing mode
        if ((mSiteId >= 0) && !string.IsNullOrEmpty(mKeyName))
        {
            mEditedKey = SettingsKeyProvider.GetSettingsKeyInfo(mKeyName, mSiteId);

            // Set id of key
            if (mEditedKey != null)
            {
                skeEditKey.SettingsKeyID = mEditedKey.KeyID;
            }
        }
        // Set up creating mode
        else
        {
            if (mParentGroup != null)
            {
                SettingsCategoryInfo parentCat = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(mParentGroup);
                if (parentCat != null)
                {
                    skeEditKey.SelectedGroupID = parentCat.CategoryID;
                }
            }
        }

        // Check if there is something right created to edit.
        if (ViewState["newId"] != null)
        {
            skeEditKey.SettingsKeyID = ValidationHelper.GetInteger(ViewState["newId"], 0);
        }

        skeEditKey.TreeRefreshUrl   = "~/CMSModules/Settings/Development/CustomSettings/CustomSettings_Menu.aspx?treeroot=" + mTreeRoot + "&";
        skeEditKey.HeaderRefreshUrl = "~/CMSModules/Settings/Development/CustomSettings/CustomSettingsCategory_Tabs.aspx?selectedtab=keys&treeroot=" + mTreeRoot + "&";
    }
Exemplo n.º 22
0
    /// <summary>
    /// Raised after menu action (new, delete, up or down) has been taken.
    /// </summary>
    protected void menuElem_AfterAction(string actionName, object actionArgument)
    {
        string[] split      = actionArgument.ToString().Split('|');
        int      categoryId = ValidationHelper.GetInteger(split[0], 0);

        SettingsCategoryInfo category = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(categoryId);

        if (category != null)
        {
            treeSettings.SelectPath   = category.CategoryIDPath;
            treeSettings.SelectedItem = category.CategoryName;
            switch (actionName.ToLower())
            {
            case "delete":
                treeSettings.ExpandPath = category.CategoryIDPath + "/";
                // Reload header and content after save
                StringBuilder sb = new StringBuilder();

                sb.Append("if (window.parent != null) {");
                sb.Append("if (window.parent.frames['customsettingsmain'] != null) {");
                sb.Append("window.parent.frames['customsettingsmain'].location = '" + ResolveUrl("CustomSettingsCategory_Default.aspx") + "?categoryid=" + categoryId + "';");
                sb.Append("}");
                sb.Append("}");

                this.ltlScript.Text    += ScriptHelper.GetScript(sb.ToString());
                treeSettings.ExpandPath = category.CategoryIDPath + "/";

                // Update menu actions parameters
                this.menuElem.Value = category.CategoryID + "|" + category.CategoryParentID;
                break;

            case "moveup":
                if (split.Length == 2)
                {
                    this.ltlScript.Text += ScriptHelper.GetScript("window.tabIndex = " + split[1] + ";");
                }
                break;

            case "movedown":
                if (split.Length == 2)
                {
                    this.ltlScript.Text += ScriptHelper.GetScript("window.tabIndex = " + split[1] + ";");
                }
                break;
            }
            this.ltlScript.Text += ScriptHelper.GetScript("SelectNode(" + ScriptHelper.GetString(category.CategoryName) + ");");
            this.ltlScript.Text += ScriptHelper.GetScript("var postParentId = " + category.CategoryParentID + ";");

            // Load data
            treeSettings.ReloadData();
        }
    }
Exemplo n.º 23
0
 private IEnumerable <SettingsCategoryInfo> GetGroups(SettingsCategoryInfo category)
 {
     if (IsSearchTextValid)
     {
         var groups = SettingsCategoryInfoProvider.GetSettingsCategories("CategoryIsGroup = 1", "CategoryName");
         return(groups);
     }
     else
     {
         var groups = SettingsCategoryInfoProvider.GetChildSettingsCategories(category.CategoryName, Where);
         return(groups.Where(c => c.CategoryIsGroup));
     }
 }
 private IEnumerable <SettingsCategoryInfo> GetGroups(SettingsCategoryInfo category, bool isSearch)
 {
     if (isSearch)
     {
         var groups = SettingsCategoryInfoProvider.GetSettingsCategories("CategoryIsGroup = 1", "CategoryName");
         return(groups);
     }
     else
     {
         var groups = SettingsCategoryInfoProvider.GetChildSettingsCategories(category.CategoryID);
         return(groups.Cast <SettingsCategoryInfo>().Where(c => c.CategoryIsGroup).OrderBy(c => c.CategoryOrder));
     }
 }
Exemplo n.º 25
0
    /// <summary>
    /// Generate info text for given setting key
    /// </summary>
    /// <param name="ski">Setting key object</param>
    private String GenerateInfoText(SettingsKeyInfo ski)
    {
        // Get setting's group
        SettingsCategoryInfo sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(ski.KeyCategoryID);

        // Get resource name from group
        ResourceInfo ri = ResourceInfoProvider.GetResourceInfo(sci.CategoryResourceID);

        string resourceName = ResHelper.LocalizeString(ri.ResourceDisplayName);
        string path         = string.Join(" -> ", GetCategoryPath(sci).Reverse().Select(s => ResHelper.LocalizeString(s.CategoryDisplayName)));

        return(String.Format(GetString("ui.moduledisabled.general"), resourceName, path, ResHelper.GetString(ski.KeyDisplayName)));
    }
        public void CreateCategory(Category category)
        {
            var parentCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(category.CategoryParentName);
            var newCategory    = new SettingsCategoryInfo
            {
                CategoryDisplayName = category.DisplayName,
                CategoryName        = category.Name,
                CategoryParentID    = parentCategory.CategoryID,
                CategoryIsGroup     = false,
                CategoryIsCustom    = true,
                CategoryResourceID  = parentCategory.CategoryResourceID
            };

            SettingsCategoryInfoProvider.SetSettingsCategoryInfo(newCategory);
        }
        public void CreateGroup(Group group)
        {
            var parentCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(group.Category.Name);
            var newGroup       = new SettingsCategoryInfo
            {
                CategoryDisplayName = group.DisplayName,
                CategoryName        = Guid.NewGuid().ToString(),
                CategoryParentID    = parentCategory.CategoryID,
                CategoryIsGroup     = true,
                CategoryIsCustom    = true,
                CategoryResourceID  = parentCategory.CategoryResourceID
            };

            SettingsCategoryInfoProvider.SetSettingsCategoryInfo(newGroup);
        }
Exemplo n.º 28
0
 protected void btnDeleteElem_Click(object sender, EventArgs e)
 {
     GetHiddenValues();
     if ((ElementID > 0) && (ParentID > 0))
     {
         SettingsCategoryInfo categoryObj = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(ElementID);
         if (categoryObj.CategoryName != "CMS.CustomSettings")
         {
             SettingsCategoryInfoProvider.DeleteSettingsCategoryInfo(categoryObj);
             if (AfterAction != null)
             {
                 AfterAction("delete", ParentID);
             }
         }
     }
 }
Exemplo n.º 29
0
    /// <summary>
    /// Registers calling the SelectNode script for selected category.
    /// </summary>
    /// <param name="category">Category to select</param>
    private void RegisterSelectNodeScript(SettingsCategoryInfo category)
    {
        if (category == null)
        {
            return;
        }

        string script = "SelectNode('" + category.CategoryName + "'); ";

        if (!String.IsNullOrEmpty(JavaScriptHandler))
        {
            script += "if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('" + category.CategoryName + "'," + category.CategoryID + "," + SiteID + ", " + category.CategoryParentID + ", " + category.CategoryResourceID + "); }";
        }

        ScriptHelper.RegisterStartupScript(Page, typeof(string), "refreshAfterAction", ScriptHelper.GetScript(script));
    }
Exemplo n.º 30
0
        /// <summary>
        /// Populate the list with sample data
        /// </summary>
        /// <param name="users">array of user data to add to the list</param>
        public void RefreshData()
        {
            lstvSettings.Items.Clear();
            SettingsCategoryInfo settingsCategoryInfo = _settingsFormView.ViewDescriptionTag as SettingsCategoryInfo; //Provides the settings and the category in the settings to be used to populate the list view.

            if (settingsCategoryInfo == null)
            {
                throw new NullReferenceException(string.Format(
                                                     "Expected a {0} in the tag of the {1}, but none was supplied.",
                                                     typeof(SettingsCategoryInfo).FullName,
                                                     typeof(SettingsFormViewWindows).FullName));
            }
            foreach (SettingItem s in settingsCategoryInfo.Settings.GetSettingsByCategory(settingsCategoryInfo, this))
            {
                lstvSettings.Items.Add(s.ListViewItem);
            }
        }
    private IEnumerable <SettingsKeyInfo> GetKeys(SettingsCategoryInfo group, bool isSite, string searchText, bool searchInDescription)
    {
        bool isSearch = !string.IsNullOrEmpty(searchText);

        IEnumerable <SettingsKeyInfo> keys = SettingsKeyInfoProvider.GetSettingsKeys(group.CategoryID).OrderBy("KeyOrder", "KeyDisplayName");

        if (isSearch)
        {
            keys = keys.Where(k => SettingsKeyInfoProvider.SearchSettingsKey(k, searchText, searchInDescription));
        }

        if (isSite)
        {
            keys = keys.Where(k => !k.KeyIsGlobal);
        }

        return(keys);
    }
    /// <summary>
    /// Reloads data.
    /// </summary>
    public void ReloadData()
    {
        // Get data
        DataSet ds = SettingsCategoryInfoProvider.GetChildSettingsCategories(CategoryName, "CategoryIsGroup = 1");

        Controls.Clear();

        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            DataRowCollection rows = ds.Tables[0].Rows;
            foreach (DataRow row in rows)
            {
                // Create new panel with info about subcategory
                var sci = new SettingsCategoryInfo(row);
                CMSUserControl catPanel = CreatePanelForCategory(sci);

                catPanel.ID = ControlsHelper.GetUniqueID(this, "CategoryPanel_" + ValidationHelper.GetIdentifier(sci.CategoryName));
                Controls.Add(catPanel);
            }
        }
    }
    /// <summary>
    /// Creates SettingsGroup panel for a specified category.
    /// </summary>
    /// <param name="category">Non-group category</param>
    protected CMSUserControl CreatePanelForCategory(SettingsCategoryInfo category)
    {
        if (category == null)
        {
            return null;
        }

        // Create new Category bar and initialize it
        SettingsGroup group = Page.LoadUserControl("~/CMSModules/Modules/Controls/Settings/Category/SettingsGroup.ascx") as SettingsGroup;
        if (group != null)
        {
            group.Category = category;
            group.ModuleID = ModuleID;
            group.ActionPerformed += group_ActionPerformed;
            group.OnNewKey += group_OnNewKey;
            group.OnKeyAction += group_OnKeyAction;

            ResourceInfo resource = ResourceInfoProvider.GetResourceInfo(ModuleID);

            group.AllowEdit = (resource != null) && ((resource.ResourceIsInDevelopment && (resource.ResourceId == category.CategoryResourceID)) || SystemContext.DevelopmentMode);
        }

        return group;
    }
    /// <summary>
    /// Gets and bulk updates settings groups. Called when the "Get and bulk update groups" button is pressed.
    /// Expects the CreateSettingsGroup method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateSettingsGroups()
    {
        // Prepare the parameters
        string where = "CategoryName LIKE 'MyNew%' AND CategoryIsGroup = 1";
        string orderBy = "CategoryName";

        // Get the data
        DataSet groups = SettingsCategoryInfoProvider.GetSettingsCategories(where, orderBy);
        if (!DataHelper.DataSourceIsEmpty(groups))
        {
            // Loop through the individual items
            foreach (DataRow groupDr in groups.Tables[0].Rows)
            {
                // Create object from DataRow
                SettingsCategoryInfo modifyGroup = new SettingsCategoryInfo(groupDr);

                // Update the property
                modifyGroup.CategoryDisplayName = modifyGroup.CategoryDisplayName.ToUpper();

                // Update settings group
                SettingsCategoryInfoProvider.SetSettingsCategoryInfo(modifyGroup);
            }

            return true;
        }

        return false;
    }
    /// <summary>
    /// Gets and bulk updates settings categories. Called when the "Get and bulk update categories" button is pressed.
    /// Expects the CreateSettingsCategory method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateSettingsCategories()
    {
        // Prepare the parameters
        string where = "CategoryName LIKE 'MyNew%' AND CategoryIsGroup = 0";

        // Get the settings categories
        DataSet categories = SettingsCategoryInfoProvider.GetSettingsCategories(where, null);
        if (!DataHelper.DataSourceIsEmpty(categories))
        {
            // Loop through the individual items
            foreach (DataRow categoryDr in categories.Tables[0].Rows)
            {
                // Create object from DataRow
                SettingsCategoryInfo modifyCategory = new SettingsCategoryInfo(categoryDr);

                // Update the property
                modifyCategory.CategoryDisplayName = modifyCategory.CategoryDisplayName.ToUpper();

                // Update the settings category
                SettingsCategoryInfoProvider.SetSettingsCategoryInfo(modifyCategory);
            }

            return true;
        }

        return false;
    }
    /// <summary>
    /// Creates settings group. Called when the "Create group" button is pressed.
    /// Expects the CreateSettingsCategory method to be run first.
    /// </summary>
    private bool CreateSettingsGroup()
    {
        // Get the settings category
        SettingsCategoryInfo settingsCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("MyNewSettingsCategory");
        if (settingsCategory != null)
        {
            // Create new settings group object
            SettingsCategoryInfo newGroup = new SettingsCategoryInfo();

            // Set the properties
            newGroup.CategoryDisplayName = "My New Settings Group";
            newGroup.CategoryName = "MyNewSettingsGroup";
            newGroup.CategoryOrder = 0;
            newGroup.CategoryParentID = settingsCategory.CategoryID;
            newGroup.CategoryIsGroup = true;
            newGroup.CategoryIsCustom = true;

            // Create the settings group
            SettingsCategoryInfoProvider.SetSettingsCategoryInfo(newGroup);

            return true;
        }

        return false;
    }
    private IEnumerable<SettingsKeyInfo> GetKeys(SettingsCategoryInfo group, bool isSite, string searchText, bool searchInDescription)
    {
        bool isSearch = !string.IsNullOrEmpty(searchText);

        IEnumerable<SettingsKeyInfo> keys = SettingsKeyInfoProvider.GetSettingsKeys(group.CategoryID).OrderBy("KeyOrder", "KeyDisplayName");

        if (isSearch)
        {
            keys = keys.Where(k => SettingsKeyInfoProvider.SearchSettingsKey(k, searchText, searchInDescription));
        }

        if (isSite)
        {
            keys = keys.Where(k => !k.KeyIsGlobal);
        }

        return keys;
    }
 private IEnumerable<SettingsCategoryInfo> GetGroups(SettingsCategoryInfo category)
 {
     if (IsSearchTextValid)
     {
         var groups = SettingsCategoryInfoProvider.GetSettingsCategories("CategoryIsGroup = 1", "CategoryName");
         return groups;
     }
     else
     {
         var groups = SettingsCategoryInfoProvider.GetChildSettingsCategories(category.CategoryName, Where);
         return groups.Cast<SettingsCategoryInfo>().Where(c => c.CategoryIsGroup);
     }
 }
    /// <summary>
    /// Registers calling the SelectNode script for selected category.
    /// </summary>
    /// <param name="category">Category to select</param>
    private void RegisterSelectNodeScript(SettingsCategoryInfo category)
    {
        if (category == null)
        {
            return;
        }

        string script = "SelectNode('" + category.CategoryName + "'); ";
        if (!String.IsNullOrEmpty(JavaScriptHandler))
        {
            script += "if (" + JavaScriptHandler + ") { " + JavaScriptHandler + "('" + category.CategoryName + "'," + category.CategoryID + "," + SiteID + ", " + category.CategoryParentID + ", " + category.CategoryResourceID + "); }";
        }

        ScriptHelper.RegisterStartupScript(Page, typeof(string), "refreshAfterAction", ScriptHelper.GetScript(script));
    }
    /// <summary>
    /// Raised after menu action (new, delete, up or down) has been taken.
    /// </summary>
    protected void AfterAction(string actionName, int categoryId, int tabIndex = 0)
    {
        SettingsCategoryInfo category = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(categoryId);
        if ((category.CategoryResourceID != ModuleID) && !SystemContext.DevelopmentMode)
        {
            // If parent doesn't belong to current module, try find first module category
            DataSet ds = SettingsCategoryInfoProvider.GetSettingsCategories("CategoryResourceID = " + ModuleID, "CategoryLevel, CategoryOrder", 1);
            if (!DataHelper.DataSourceIsEmpty(ds))
            {
                category = new SettingsCategoryInfo(ds.Tables[0].Rows[0]);
            }
        }
        SelectPath = category.CategoryIDPath;
        SelectedItem = category.CategoryName;

        string scriptAction = String.Empty;
        switch (actionName.ToLowerCSafe())
        {
            case "delete":
                ExpandPath = category.CategoryIDPath + "/";
                // Update menu actions parameters
                Value = category.CategoryID + "|" + category.CategoryParentID;
                break;

            case "moveup":
                scriptAction = "window.tabIndex = " + tabIndex + ";";
                break;

            case "movedown":
                scriptAction = "window.tabIndex = " + tabIndex + ";";
                break;
        }

        RegisterSelectNodeScript(category);

        scriptAction += "var postParentId = " + category.CategoryParentID + ";";

        ScriptHelper.RegisterStartupScript(this, typeof(string), "afterActionScript", ScriptHelper.GetScript(scriptAction));

        // Load data
        ReloadData();
    }
    /// <summary>
    /// Handles OnClick event of btnOk.
    /// </summary>
    /// <param name="sender">Asp Button instance</param>
    /// <param name="e">EventArgs instance</param>
    protected void btnOk_Click(object sender, EventArgs e)
    {
        if (IsValid())
        {
            // Get category by name
            SettingsCategoryInfo categoryObj = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(txtCategoryName.Text.Trim());
            // If name is unique OR ids are same
            if ((categoryObj == null) || (categoryObj.CategoryID == mSettingsCategoryId))
            {
                SettingsCategoryInfo sci = SettingsCategoryObj;
                if (sci == null)
                {
                    sci = new SettingsCategoryInfo();
                    sci.CategoryOrder = mCategoryOrder;
                }

                if (sci.CategoryParentID != drpCategory.SelectedCategory)
                {
                    // When parent has been changed set the order for the category as the last possible order
                    sci.CategoryOrder = SettingsCategoryInfoProvider.GetLastSettingsCategoryOrder(drpCategory.SelectedCategory) + 1;
                }
                sci.CategoryName = txtCategoryName.Text.Trim();
                sci.CategoryDisplayName = txtCategoryDisplayName.Text.Trim();
                sci.CategoryIconPath = txtIconPath.Text.Trim();
                sci.CategoryParentID = drpCategory.SelectedCategory;
                sci.CategoryIsGroup = mIsGroupEdit;
                sci.CategoryIsCustom = mIsCustom || chkIsCustom.Checked;

                SettingsCategoryInfoProvider.SetSettingsCategoryInfo(sci);
                SettingsCategoryObj = sci;
                RaiseOnSaved();

                // Set the info message
                if (ContentRefreshUrl == null)
                {
                    lblInfo.Text = GetString("general.changessaved");
                }

                // Reload header and content after save
                int categoryIdToShow = sci.CategoryIsGroup ? sci.CategoryParentID : sci.CategoryID;
                StringBuilder sb = new StringBuilder();
                sb.Append("if (window.parent != null) {");
                if (HeaderRefreshUrl != null)
                {
                    sb.Append("if (window.parent.parent.frames['customsettingscategorytabs'] != null) {");
                    sb.Append("window.parent.parent.frames['customsettingscategorytabs'].location = '" + ResolveUrl(HeaderRefreshUrl) + "categoryid=" + categoryIdToShow + "';");
                    sb.Append("}");
                    sb.Append("if (window.parent.frames['customsettingscategorytabs'] != null) {");
                    sb.Append("window.parent.frames['customsettingscategorytabs'].location = '" + ResolveUrl(HeaderRefreshUrl) + "categoryid=" + categoryIdToShow + "';");
                    sb.Append("}");
                }
                if (TreeRefreshUrl != null)
                {
                    sb.Append("if (window.parent.parent.frames['customsettingstree'] != null) {");
                    sb.Append("window.parent.parent.frames['customsettingstree'].location = '" + ResolveUrl(TreeRefreshUrl) + "categoryid=" + categoryIdToShow + "';");
                    sb.Append("}");
                    sb.Append("if (window.parent.frames['customsettingstree'] != null) {");
                    sb.Append("window.parent.frames['customsettingstree'].location =  '" + ResolveUrl(TreeRefreshUrl) + "categoryid=" + categoryIdToShow + "';");
                    sb.Append("}");
                }
                if (ContentRefreshUrl != null)
                {
                    sb.Append("window.location =  '" + ResolveUrl(ContentRefreshUrl) + "categoryid=" + sci.CategoryID + "';");
                }
                sb.Append("}");
                ltlScript.Text = ScriptHelper.GetScript(sb.ToString());
            }
            else
            {
                lblError.Text = GetString("general.codenameexists");
            }
        }
    }
    /// <summary>
    /// Gets <c>CategoryPanel</c> instance for the input settings group.
    /// </summary>
    /// <param name="group"><c>SettingsCategoryInfo</c> instance representing settings group</param>
    /// <param name="groupNo">Number representing index of the proccesing settings group</param>
    /// <returns><c>CategoryPanel</c> object.</returns>
    private CategoryPanel GetCategoryPanel(SettingsCategoryInfo group, int groupNo)
    {
        CategoryPanel p = new CategoryPanel();
        p.ID = string.Format(@"CategoryPanel{0}", groupNo);
        p.DisplayActions = false;
        p.AllowCollapsing = false;

        if ((!string.IsNullOrEmpty(mSearchText)) && (mSearchText.Length >= mSearchLimit))
        {
            p.Text = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(GetCategoryNames(group.CategoryIDPath)));
        }
        else
        {
            p.Text = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(group.CategoryDisplayName));
        }
        return p;
    }
Exemplo n.º 43
0
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        int categoryId = QueryHelper.GetInteger("categoryid", -1);

        // Find category
        if (categoryId >= 0)
        {
            mCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(categoryId);
        }

        // Use root category for Settings if category not found or specified
        if ((categoryId == -1) || (mCategory == null))
        {
            mCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("CMS.Settings");
        }

        // Set edited object
        EditedObject = mCategory;

        if (mCategory.CategoryParentID != 0)
        {
            grpEdit.CategoryName = mCategory.CategoryName;
            grpEdit.ModuleID = moduleId;
            grpEdit.ActionPerformed += grpEdit_ActionPerformed;
            grpEdit.OnNewKey += grpEdit_OnNewKey;
            grpEdit.OnKeyAction += grpEdit_OnKeyAction;

            // Read data
            grpEdit.ReloadData();
        }

        if (!Resource.ResourceIsInDevelopment && !SystemContext.DevelopmentMode)
        {
            // Show information about installed module
            ShowInformation(GetString("settingcategory.installedmodule"));
        }
        else if ((mCategory.CategoryID == categoryId) && (mCategory.CategoryParentID == 0))
        {
            // Show information about creating module categories and groups
            ShowInformation(GetString("settingcategory.createmodulecategory"));
        }
    }
 private IEnumerable<SettingsCategoryInfo> GetGroups(SettingsCategoryInfo category, bool isSearch)
 {
     if (isSearch)
     {
         var groups = SettingsCategoryInfoProvider.GetSettingsCategories("CategoryIsGroup = 1", "CategoryName");
         return groups;
     }
     else
     {
         var groups = SettingsCategoryInfoProvider.GetChildSettingsCategories(category.CategoryID);
         return groups.Cast<SettingsCategoryInfo>().Where(c => c.CategoryIsGroup).OrderBy(c => c.CategoryOrder);
     }
 }
    /// <summary>
    /// Gets all groups for the current SettingsCategoryInfo.
    /// </summary>
    /// <returns><c>IEnumerable</c> of <c>SettingsCategoryInfo</c>.</returns>
    private IEnumerable<SettingsCategoryInfo> GetGroups()
    {
        if (SettingsCategoryInfo != null)
        {
            DataSet groupsSet = null;

            if ((!string.IsNullOrEmpty(mSearchText)) && (mSearchText.Length >= mSearchLimit))
            {
                groupsSet = SettingsCategoryInfoProvider.GetSettingsCategories("CategoryIsGroup = 1", "CategoryName");
            }
            else
            {
                groupsSet = SettingsCategoryInfoProvider.GetChildSettingsCategories(SettingsCategoryInfo.CategoryName, Where);
            }

            if (!DataHelper.DataSourceIsEmpty(groupsSet))
            {
                DataTable groupTable = groupsSet.Tables[0];
                foreach (DataRow groupRow in groupTable.Rows)
                {
                    SettingsCategoryInfo sci = new SettingsCategoryInfo(groupRow);
                    if (sci.CategoryIsGroup)
                    {
                        yield return sci;
                    }
                }
            }
        }
    }
 /// <summary>
 /// Get path to the given settings category.
 /// </summary>
 /// <param name="settingsKeyCategoryInfo">The key that path is generated for</param>
 /// <returns>Path to the given settings category</returns>
 private IEnumerable<SettingsCategoryInfo> GetCategoryPath(SettingsCategoryInfo settingsKeyCategoryInfo)
 {
     var sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(settingsKeyCategoryInfo.CategoryParentID);
     while (sci != null)
     {
         yield return sci;
         sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(sci.CategoryParentID);
     }
 }
    /// <summary>
    /// Creates settings category. Called when the "Create category" button is pressed.
    /// </summary>
    private bool CreateSettingsCategory()
    {
        // Get parent category ID
        SettingsCategoryInfo parentCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName("CMS.Settings");
        if (parentCategory != null)
        {
            // Create new settings category object
            SettingsCategoryInfo newCategory = new SettingsCategoryInfo();

            // Set the properties
            newCategory.CategoryDisplayName = "My New Settings Category";
            newCategory.CategoryName = "MyNewSettingsCategory";
            newCategory.CategoryOrder = 0;
            newCategory.CategoryParentID = parentCategory.CategoryID;
            newCategory.CategoryIsGroup = false;
            newCategory.CategoryIsCustom = true;

            // Create settings category
            SettingsCategoryInfoProvider.SetSettingsCategoryInfo(newCategory);

            return true;
        }

        return false;
    }
    /// <summary>
    /// Gets path containing display names of all predecessors of given category and name of category itself.
    /// </summary>
    /// <param name="child">Category to get path from</param>
    /// <returns>String containing path to given Category</returns>
    private string GetCategoryPathNames(SettingsCategoryInfo child)
    {
        // Convert IDPath to be suitable for IN-clause of SQL query
        string inClause = child.CategoryIDPath.Remove(0, 1).Replace('/', ',');

        StringBuilder sb = new StringBuilder("");
        if (!string.IsNullOrEmpty(inClause))
        {
            // Get display names of all categories from path, order by nesting level
            DataSet ds = SettingsCategoryInfoProvider.GetSettingsCategories(string.Format("CategoryID IN ({0}) AND CategoryLevel > 0", inClause), "CategoryLevel", -1, "CategoryDisplayName");

            if (!DataHelper.DataSourceIsEmpty(ds))
            {
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    // No slash before first name
                    if (sb.Length > 0)
                    {
                        sb.Append(" / ");
                    }
                    sb.Append(SqlHelperClass.GetString(row["CategoryDisplayName"], ""));
                }
            }
        }

        return sb.ToString();
    }
    /// <summary>
    /// Handles OnClick event of btnOk.
    /// </summary>
    /// <param name="sender">Asp Button instance</param>
    /// <param name="e">EventArgs instance</param>
    protected void btnOk_Click(object sender, EventArgs e)
    {
        if (IsValid())
        {
            // Get category by name
            SettingsCategoryInfo categoryObj = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(txtCategoryName.Text.Trim());
            // If name is unique OR ids are same
            if ((categoryObj == null) || (categoryObj.CategoryID == SettingsCategoryID))
            {
                SettingsCategoryInfo sci = SettingsCategoryObj;
                if (sci == null)
                {
                    sci = new SettingsCategoryInfo();
                    sci.CategoryOrder = CategoryOrder;
                }

                if (sci.CategoryParentID != drpCategory.SelectedCategory)
                {
                    // When parent has been changed set the order for the category as the last possible order
                    sci.CategoryOrder = SettingsCategoryInfoProvider.GetLastSettingsCategoryOrder(drpCategory.SelectedCategory) + 1;
                }

                sci.CategoryName = txtCategoryName.Text.Trim();
                sci.CategoryDisplayName = txtCategoryDisplayName.Text.Trim();
                sci.CategoryIconPath = txtIconPath.Text.Trim();
                sci.CategoryParentID = SelectedParentCategory;
                sci.CategoryIsGroup = IsGroupEdit;
                sci.CategoryResourceID = ValidationHelper.GetInteger(ucSelectModule.Value, ModuleID);

                SettingsCategoryInfoProvider.SetSettingsCategoryInfo(sci);
                SettingsCategoryObj = sci;
                RaiseOnSaved();

                // Set the info message
                if (ContentRefreshUrl == null)
                {
                    ShowChangesSaved();
                }

                // Reload header and content after save
                int categoryIdToShow = sci.CategoryIsGroup ? sci.CategoryParentID : sci.CategoryID;

                StringBuilder sb = new StringBuilder();
                sb.Append("if (window.parent != null) {");
                if (!String.IsNullOrEmpty(TreeRefreshUrl))
                {
                    sb.AppendFormat(@"if (window.parent.parent.frames['settingstree'] != null) {{
           window.parent.parent.frames['settingstree'].location = '{0}&categoryid={1}';
        }}
        if (window.parent.frames['settingstree'] != null) {{
           window.parent.frames['settingstree'].location = '{0}&categoryid={1}';
        }}", ResolveUrl(TreeRefreshUrl), categoryIdToShow);
                }
                if (!String.IsNullOrEmpty(ContentRefreshUrl))
                {
                    sb.AppendFormat("window.location = '{0}&categoryid={1}';", ResolveUrl(ContentRefreshUrl), sci.CategoryID);
                }

                sb.Append("}");
                ltlScript.Text = ScriptHelper.GetScript(sb.ToString());
            }
            else
            {
                ShowError(GetString("general.codenameexists"));
            }
        }
    }
    protected TreeNode Tree_OnNodeCreated(DataRow itemData, TreeNode defaultNode)
    {
        if (itemData != null)
        {
            if (MembershipContext.AuthenticatedUser != null)
            {
                SettingsCategoryInfo category = new SettingsCategoryInfo(itemData);

                string currentIdPath = category.CategoryIDPath;

                defaultNode.Expanded = category.CategoryParentID == 0 ? true : defaultNode.Expanded;

                if (!String.IsNullOrEmpty(mExpandedPaths) || (ModuleID > 0))
                {
                    bool selected = false;

                    foreach (string idPath in mExpandedPaths.Split(';'))
                    {
                        if (idPath == currentIdPath)
                        {
                            // End node
                            defaultNode.Expanded = true;

                            defaultNode.Text = defaultNode.Text.Replace("##NAMECSSCLASS##", "highlighted ");
                            selected = true;
                            break;
                        }

                        if (currentIdPath.StartsWith(idPath) && (ModuleID == category.CategoryResourceID))
                        {
                            // Child node
                            defaultNode.Expanded = true;
                            defaultNode.Text = defaultNode.Text.Replace("##NAMECSSCLASS##", "");
                            selected = true;
                            break;
                        }

                        if (idPath.StartsWith(currentIdPath))
                        {
                            // Parent node
                            defaultNode.Expanded = true;
                            defaultNode.Text = defaultNode.Text.Replace("##NAMECSSCLASS##", "highlighted" + (SystemContext.DevelopmentMode ? "" : " disabled"));
                            selected = true;
                            break;
                        }
                    }

                    if (!defaultNode.Expanded.Value || String.IsNullOrEmpty(mExpandedPaths) || !selected)
                    {
                        // Nodes which doesn't belong to selected module have no current module's group
                        defaultNode.Text = defaultNode.Text.Replace("##NAMECSSCLASS##", SystemContext.DevelopmentMode ? "" : "disabled");
                    }
                }
                else
                {
                    // Keep everything same as before and remove css class macro
                    defaultNode.Text = defaultNode.Text.Replace("##NAMECSSCLASS##", "");

                    if (RootCategory.CategoryIDPath == currentIdPath)
                    {
                        // Expand root node
                        defaultNode.Expanded = true;
                    }
                }

                defaultNode.Text = defaultNode.Text.Replace("##NODECUSTOMNAME##", HTMLHelper.HTMLEncode(ResHelper.LocalizeString(category.CategoryDisplayName)));
                defaultNode.Text = defaultNode.Text.Replace("##NODECODENAME##", HTMLHelper.HTMLEncode(category.CategoryName));
                defaultNode.Text = defaultNode.Text.Replace("##SITEID##", SiteID.ToString());
                defaultNode.Text = defaultNode.Text.Replace("##PARENTID##", category.CategoryParentID.ToString());
                defaultNode.Text = defaultNode.Text.Replace("##RESOURCEID##", category.CategoryResourceID.ToString());

                if (OnNodeCreated != null)
                {
                    return OnNodeCreated(category, defaultNode);
                }

                return defaultNode;
            }
        }

        return null;
    }
Exemplo n.º 51
0
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        int categoryId = QueryHelper.GetInteger("categoryid", -1);
        // Get root of tree
        mTreeRoot = QueryHelper.GetString("treeroot", "customsettings");
        // Get site id
        mSiteId = QueryHelper.GetInteger("siteid", 0);

        // Find category
        if (categoryId >= 0)
        {
            mCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(categoryId);
        }

        // Use root category for CustomSettings or Settings if category not found or specified
        if((categoryId == -1) || (mCategory == null))
        {
            switch (mTreeRoot)
            {
                case ("customsettings"):
                    grpEdit.CategoryName = "CMS.CustomSettings";
                    break;
                case ("settings"):
                default:
                    grpEdit.CategoryName = "CMS.Settings";
                    break;
            }

            mCategory = SettingsCategoryInfoProvider.GetSettingsCategoryInfoByName(grpEdit.CategoryName);
        }

        grpEdit.CategoryName = mCategory.CategoryName;
        grpEdit.SiteID = mSiteId;
        grpEdit.ActionPerformed += new CommandEventHandler(grpEdit_ActionPerformed);
        grpEdit.OnNewKey += new CommandEventHandler(grpEdit_OnNewKey);
        grpEdit.OnKeyAction += new OnActionEventHandler(grpEdit_OnKeyAction);

        // Read data
        grpEdit.ReloadData();
    }
    /// <summary>
    /// Gets <c>CategoryPanel</c> instance for the input settings group.
    /// </summary>
    /// <param name="group"><c>SettingsCategoryInfo</c> instance representing settings group</param>
    /// <param name="groupNo">Number representing index of the processing settings group</param>
    private CategoryPanel GetCategoryPanel(SettingsCategoryInfo group, int groupNo)
    {
        string title;
        if (IsSearchTextValid)
        {
            var categories = SettingsCategoryInfoProvider.GetCategoriesOnPath(group.CategoryIDPath);
            var categoryNames = categories.Cast<SettingsCategoryInfo>().Select(c =>
            {
                var displayName = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(c.CategoryDisplayName));
                if (c.CategoryIsGroup)
                {
                    return displayName;
                }

                var url = string.Format("~/CMSModules/Settings/Pages/Categories.aspx?selectedCategoryId={0}&selectedSiteId={1}", c.CategoryID, SiteID);
                url = ResolveUrl(url);

                var name = string.Format("<a href=\"\" onclick=\"selectCategory('{0}');\">{1}</a>", url, displayName);
                return name;
            });
            title = categoryNames.Join(" > ");
        }
        else
        {
            title = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(group.CategoryDisplayName));
        }

        var panel = new CategoryPanel
        {
            ID = string.Format(@"CategoryPanel{0}", groupNo),
            DisplayRightPanel = false,
            AllowCollapsing = false,
            Text = title,
            RenderAs = HtmlTextWriterTag.Div
        };

        return panel;
    }
    /// <summary>
    /// Reloads data.
    /// </summary>
    public void ReloadData()
    {
        CMSUserControl catPanel;
        // Get data
        DataSet ds = SettingsCategoryInfoProvider.GetChildSettingsCategories(mCategoryName, "CategoryIsGroup = 1");

        Controls.Clear();

        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            DataRowCollection rows = ds.Tables[0].Rows;
            foreach (DataRow row in rows)
            {
                // Create new panel with info about subcategory
                SettingsCategoryInfo sci = new SettingsCategoryInfo(row);
                catPanel = CreatePanelForCategory(sci);
                catPanel.ID = "CategoryPanel_" + sci.CategoryName.Replace(".", "_");
                Controls.Add(catPanel);
            }
        }
    }
    /// <summary>
    /// Creates SettingsGroup panel for a specified category.
    /// </summary>
    /// <param name="category">Non-group category</param>
    protected CMSUserControl CreatePanelForCategory(SettingsCategoryInfo category)
    {
        if (category == null)
        {
            return null;
        }

        // Create new Category bar and initialize it
        SettingsGroup group = Page.LoadUserControl("~/CMSModules/Settings/Controls/SettingsGroup.ascx") as SettingsGroup;
        group.Category = category;
        group.SiteID = mSiteId;
        group.ActionPerformed += new CommandEventHandler(group_ActionPerformed);
        group.OnNewKey += new CommandEventHandler(group_OnNewKey);
        group.OnKeyAction += new OnActionEventHandler(group_OnKeyAction);

        return group;
    }
    /// <summary>
    /// Builds the export file and writes it to the response.
    /// </summary>
    /// <param name="category">Settings category</param>
    /// <param name="searchText">Text to search for</param>
    /// <param name="searchInDescription">True, if key description should be included in the search</param>
    /// <param name="site">Site</param>
    private void Export(SettingsCategoryInfo category, string searchText, bool searchInDescription, SiteInfo site = null)
    {
        var isSearch = !string.IsNullOrEmpty(searchText);

        var isSite = site != null;
        var siteName = isSite ? TranslationHelper.GetCodeNameFromDB(SiteInfo.OBJECT_TYPE, site.SiteID, "SiteName") : null;

        var sb = new StringBuilder();

        // Append file title
        if (isSite)
        {
            sb.Append("Settings for site \"", site.DisplayName, "\"");
        }
        else
        {
            sb.Append("Global settings");
        }
        sb.Append(", ");
        if (isSearch)
        {
            sb.Append("search text \"", searchText, "\"");
        }
        else
        {
            string categoryNames = ResHelper.LocalizeString(FormatCategoryPathNames(category.CategoryIDPath));
            sb.Append("category \"", categoryNames, "\"");
        }
        sb.AppendLine();
        sb.AppendLine();

        // Get groups
        var groups = GetGroups(category, isSearch);

        // Append groups and keys
        foreach (var group in groups)
        {
            // Get keys
            var keys = GetKeys(group, isSite, searchText, searchInDescription).ToArray();
            if (!keys.Any())
            {
                // Skip empty groups
                continue;
            }

            // Get formatted keys
            string keysFormatted = FormatKeys(keys, siteName);
            if (string.IsNullOrEmpty(keysFormatted))
            {
                // Skip empty groups
                continue;
            }

            // Append group title
            sb.AppendLine();
            if (isSearch)
            {
                string categoryNames = ResHelper.LocalizeString(FormatCategoryPathNames(group.CategoryIDPath));
                sb.Append(categoryNames);
            }
            else
            {
                string groupDisplayNameLocalized = ResHelper.LocalizeString(group.CategoryDisplayName);
                sb.Append(groupDisplayNameLocalized);
            }
            sb.AppendLine();
            sb.Append("--------------------------------------------------");
            sb.AppendLine();
            sb.AppendLine();

            // Append group keys
            sb.Append(keysFormatted);
        }

        // Write to response
        var fileName = string.Format("{0}_{1}.txt", (site == null ? "Global" : site.DisplayName), ValidationHelper.GetIdentifier(category.CategoryName, "_"));
        Response.AddHeader("Content-disposition", string.Format("attachment; filename=\"{0}\"", HTTPHelper.GetDispositionFilename(fileName)));
        Response.ContentType = "text/plain";
        Response.Write(sb.ToString());
        RequestHelper.EndResponse();
    }