using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; using CMS.ExtendedControls.ActionsConfig; public partial class CMSModules_Settings_Development_CustomSettings_CustomSettings_List : SiteManagerPage { #region "Variables" /// /// Displayed category. /// private SettingsCategoryInfo mCategory = null; /// /// Root category name of displayed tree. /// private string mTreeRoot = "customsettings"; /// /// Id of the site;. /// private int mSiteId = 0; #endregion #region "Page events" 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(); } protected void Page_Load(object sender, EventArgs e) { if (mCategory != null) { // Disable inserting groups under root category if (mCategory.CategoryName != "CMS.Settings") { // Edit button HeaderAction newGroup = new HeaderAction() { Text = ResHelper.GetString("Development.CustomSettings.NewGroup"), RedirectUrl = URLHelper.ResolveUrl("~/CMSModules/Settings/Development/CustomSettings/CustomSettingsCategory_Edit.aspx?showtitle=1&treeroot=" + mTreeRoot + "&isgroup=1&parentid=" + mCategory.CategoryID), ImageUrl = GetImageUrl("Objects/CMS_CustomSettings/add.png"), UseImageButton = true }; CurrentMaster.HeaderActions.ActionsList.Add(newGroup); } } } #endregion #region "Events handling" /// /// Handles the whole category actions. /// /// Sender of event /// Event arguments protected void grpEdit_ActionPerformed(object sender, CommandEventArgs e) { int categoryId = ValidationHelper.GetInteger(e.CommandArgument, 0); switch (e.CommandName.ToLowerCSafe()) { case ("edit"): SettingsCategoryInfo sci = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(categoryId); if (sci != null) { URLHelper.Redirect("~/CMSModules/Settings/Development/CustomSettings/CustomSettingsCategory_Edit.aspx?treeroot=" + mTreeRoot + "&isgroup=1&categoryid=" + categoryId); } break; case ("delete"): try { SettingsCategoryInfo categoryObj = SettingsCategoryInfoProvider.GetSettingsCategoryInfo(categoryId); if (categoryObj.CategoryName != "CMS.CustomSettings") { SettingsCategoryInfoProvider.DeleteSettingsCategoryInfo(categoryObj); } } catch { lblError.Text = GetString("settings.group.deleteerror"); lblError.Visible = true; } grpEdit.ReloadData(); break; case ("moveup"): SettingsCategoryInfoProvider.MoveCategoryUp(categoryId); grpEdit.ReloadData(); break; case ("movedown"): SettingsCategoryInfoProvider.MoveCategoryDown(categoryId); grpEdit.ReloadData(); break; } } /// /// Handles creation of new settings key. /// private void grpEdit_OnNewKey(object sender, CommandEventArgs e) { URLHelper.Redirect("~/CMSModules/Settings/Development/CustomSettings/SettingsKey_Edit.aspx?treeroot=" + mTreeRoot + "&" + e.CommandArgument); } /// /// Handles the settings key action event. /// /// Name of item (button) that throws event /// ID (value of Primary key) of corresponding data row protected void grpEdit_OnKeyAction(string actionName, object actionArgument) { int keyId = ValidationHelper.GetInteger(actionArgument, 0); SettingsKeyInfo ski = SettingsKeyProvider.GetSettingsKeyInfo(keyId); switch (actionName.ToLowerCSafe()) { case ("edit"): // Redirect to key-editing page if (ski != null) { URLHelper.Redirect("~/CMSModules/Settings/Development/CustomSettings/SettingsKey_Edit.aspx?treeroot=" + mTreeRoot + "&keyname=" + ski.KeyName + "&siteid=" + mSiteId); } break; case ("delete"): try { // Delete all keys DataSet ds = SiteInfoProvider.GetSites(null, null, "[SiteName]"); if (!DataHelper.DataSourceIsEmpty(ds)) { DataTable tbl = ds.Tables[0]; foreach (DataRow row in tbl.Rows) { string siteName = ValidationHelper.GetString(row[0], ""); if (!string.IsNullOrEmpty(siteName)) { SettingsKeyProvider.DeleteKey(string.Format("{0}.{1}", siteName, ski.KeyName)); } } } SettingsKeyProvider.DeleteKey(ski.KeyName); } catch { lblError.Text = GetString("settingsedit.settingskey_edit.errordelete"); lblError.Visible = true; } break; case ("moveup"): SettingsKeyProvider.MoveSettingsKeyUp(ski.KeyName); break; case ("movedown"): SettingsKeyProvider.MoveSettingsKeyDown(ski.KeyName); break; } } #endregion }