using System; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.UIControls; public partial class CMSModules_CustomTables_CustomTable_Edit_General : CMSCustomTablesPage { #region "Private fields" private int mClassId = 0; private DataClassInfo mCurrentClass = null; #endregion #region "Private properties" /// /// ID of the current class. /// private int ClassID { get { if (mClassId == 0) { mClassId = QueryHelper.GetInteger("customtableid", 0); } return mClassId; } } /// /// Indicates whether the changes were saved. /// private bool WasSaved { get { return !String.IsNullOrEmpty(QueryHelper.GetString("saved", String.Empty)); } } /// /// Gets the info on current class. /// private DataClassInfo CurrentClass { get { if (mCurrentClass == null) { if (ClassID > 0) { mCurrentClass = DataClassInfoProvider.GetDataClass(ClassID); // Set edited object EditedObject = mCurrentClass; } } return mCurrentClass; } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { // Initialize controls SetupControl(); revCodeNameName.ErrorMessage = GetString("customtable.newwizzard.CodeNameIdentifier"); revNameNamespace.ErrorMessage = GetString("customtable.newwizzard.NamespaceNameIdentifier"); revCodeNameName.ValidationExpression = ValidationHelper.IdentifierRegExp.ToString(); revNameNamespace.ValidationExpression = ValidationHelper.IdentifierRegExp.ToString(); if (!RequestHelper.IsPostBack()) { // Fills the existing class data LoadData(); if (WasSaved) { // Display information on success to the user ShowChangesSaved(); // Refresh parent frame header (due to data list page) ScriptHelper.RefreshTabHeader(Page, null); } } } #endregion #region "Event handling" protected void btnOk_Click(object sender, EventArgs e) { if (CurrentClass != null) { // Validate the form entries string errMsg = ValidateForm(); if (errMsg == String.Empty) { CurrentClass.ClassDisplayName = txtDisplayName.Text; CurrentClass.ClassName = txtCodeNameNamespace.Text + "." + txtCodeNameName.Text; mCurrentClass.ClassNewPageURL = txtNewPage.Text; mCurrentClass.ClassViewPageUrl = txtViewPage.Text; mCurrentClass.ClassEditingPageURL = txtEditingPage.Text; mCurrentClass.ClassListPageURL = txtListPage.Text; DataClassInfoProvider.SetDataClass(CurrentClass); string editUrl = "~/CMSModules/CustomTables/CustomTable_Edit_General.aspx?customtableid=" + ClassID + "&saved=1"; URLHelper.Redirect(editUrl); } else { // Display error message to the user ShowError(errMsg); } } } #endregion #region "Private methods" /// /// Initializes the controls on the page. /// private void SetupControl() { // Set the validators' error messages rfvDisplayName.ErrorMessage = GetString("sysdev.class_edit_gen.displayname"); rfvCodeNameNamespace.ErrorMessage = GetString("sysdev.class_edit_gen.namespace"); rfvCodeNameName.ErrorMessage = GetString("sysdev.class_edit_gen.name"); } /// /// Obtain the class data and fill the appropriate fields. /// private void LoadData() { if (CurrentClass != null) { txtDisplayName.Text = CurrentClass.ClassDisplayName; // Fill class name info int classNameIndex = CurrentClass.ClassName.IndexOfCSafe('.'); txtCodeNameNamespace.Text = CurrentClass.ClassName.Substring(0, classNameIndex); txtCodeNameName.Text = CurrentClass.ClassName.Substring(classNameIndex + 1); lblTableNameValue.Text = CurrentClass.ClassTableName; txtNewPage.Text = mCurrentClass.ClassNewPageURL; txtViewPage.Text = mCurrentClass.ClassViewPageUrl; txtEditingPage.Text = mCurrentClass.ClassEditingPageURL; txtListPage.Text = mCurrentClass.ClassListPageURL; } } /// /// Validates entries. /// /// Returns empty string on success and error message otherwise private string ValidateForm() { string errMsg = String.Empty; if (CurrentClass != null) { // Validate using validators errMsg = new Validator().NotEmpty(txtCodeNameName.Text, rfvCodeNameName.ErrorMessage).NotEmpty(txtCodeNameNamespace.Text, rfvCodeNameNamespace.ErrorMessage). NotEmpty(txtDisplayName.Text, rfvDisplayName.ErrorMessage).IsIdentifier(txtCodeNameNamespace.Text, GetString("general.invalidcodename")). IsCodeName(txtCodeNameName.Text, GetString("general.invalidcodename")).Result; string classFullName = txtCodeNameNamespace.Text + "." + txtCodeNameName.Text; // Check if class with specified code name already exist DataClassInfo existingDataClass = DataClassInfoProvider.GetDataClass(classFullName); if (existingDataClass != null) { if (CurrentClass.ClassID != existingDataClass.ClassID) { errMsg = ResHelper.GetString("sysdev.class_edit_gen.codenameunique"); } } } return errMsg; } #endregion }