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
}