using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using CMS.GlobalHelper; using CMS.SiteProvider; using CMS.UIControls; using CMS.ExtendedControls; public partial class CMSModules_Settings_Controls_SettingsGroupEdit : CMSUserControl { #region "Variables" /// /// Code name of displayed category. This category is NOT group (CategoryIsGroup = false). /// private string mCategoryName = null; /// /// Allows filtering for specific site. /// private int mSiteId = 0; #endregion #region "Properties" /// /// Code name of displayed category. This category is NOT group (CategoryIsGroup = false). /// public string CategoryName { get { return mCategoryName; } set { mCategoryName = value; } } /// /// Allows filtering of keys only for specific site. Set SiteID = 0 for all sites (dafault). /// public int SiteID { get { return mSiteId; } set { mSiteId = value; } } #endregion #region "Events" /// /// Event raised, when edit/delete/moveUp/moveDown category button is clicked. /// public event CommandEventHandler ActionPerformed; /// /// Event raised, when asked to add new key. /// public event CommandEventHandler OnNewKey; /// /// Event raised, when unigrid's button is clicked. /// public event OnActionEventHandler OnKeyAction; #endregion #region "Control events" /// /// Handles the whole category actions. /// /// Sender of event /// Event arguments protected void group_ActionPerformed(object sender, CommandEventArgs e) { if (ActionPerformed != null) { ActionPerformed(sender, e); } } /// /// Handles request for creating of new settings key. /// /// Sender of event /// Event arguments protected void group_OnNewKey(object sender, CommandEventArgs e) { if (OnNewKey != null) { OnNewKey(sender, e); } } /// /// Handles settings keys actions (delete, edit, move up, move down). /// /// Name of the action /// Argument of the action protected void group_OnKeyAction(string actionName, object actionArgument) { if (OnKeyAction != null) { OnKeyAction(actionName, actionArgument); } } #endregion #region "Methods" protected override void OnInit(EventArgs e) { base.OnInit(e); // Reload data; ReloadData(); } /// /// Creates SettingsGroup panel for a specified category. /// /// Non-group category 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; } /// /// Reloads data. /// 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 var sci = new SettingsCategoryInfo(row); catPanel = CreatePanelForCategory(sci); catPanel.ID = ControlsHelper.GetUniqueID(this, "CategoryPanel_" + ValidationHelper.GetIdentifier(sci.CategoryName)); Controls.Add(catPanel); } } } #endregion }