protected void fieldEditor_AfterItemDeleted(object sender, FieldEditorEventArgs e) { // Update parameters of inherited form user controls if a field or a category was deleted if ((e != null)) { // Details of item which was deleted string itemName = e.ItemName; FieldEditorSelectedItemEnum itemType = e.ItemType; int itemOrder = e.ItemOrder; // Get form controls inherited from edited one var inheritedControls = FormUserControlInfoProvider.GetFormUserControls().WhereEquals("UserControlParentID", FormControlID); foreach (FormUserControlInfo control in inheritedControls) { // Remove deleted item (field/category) from inherited form control parameters switch (itemType) { case FieldEditorSelectedItemEnum.Field: control.UserControlParameters = FormHelper.RemoveFieldFromAlternativeDefinition(control.UserControlParameters, itemName, itemOrder); break; case FieldEditorSelectedItemEnum.Category: control.UserControlParameters = FormHelper.RemoveCategoryFromAlternativeDefinition(control.UserControlParameters, itemName, itemOrder); break; } // Update inherited form control FormUserControlInfoProvider.SetFormUserControlInfo(control); } } }
/// <summary> /// Fill attribute list. /// </summary> /// <param name="selectedValue">Selected value in attribute list, null if first item is selected</param> private void LoadAttributesList(string selectedValue) { ListItem li = null; // Reload list only if new item is not edited if (!IsNewItemEdited) { // Clear item list lstAttributes.Items.Clear(); // Get all list items (fields and categories) var itemList = FormInfo.GetFormElements(true, true); if (itemList != null) { MacroResolver resolver = MacroResolverStorage.GetRegisteredResolver(ResolverName); foreach (IField item in itemList) { string itemDisplayName; string itemCodeName; if (item is FormFieldInfo) { FormFieldInfo formField = ((FormFieldInfo)(item)); itemDisplayName = formField.Name; if (!formField.AllowEmpty) { itemDisplayName += ResHelper.RequiredMark; } itemCodeName = fieldPreffix + formField.Name; li = new ListItem(itemDisplayName, itemCodeName); } else if (item is FormCategoryInfo) { FormCategoryInfo formCategory = ((FormCategoryInfo)(item)); itemDisplayName = ResHelper.LocalizeString(formCategory.GetPropertyValue(FormCategoryPropertyEnum.Caption, resolver)); itemCodeName = categPreffix + formCategory.CategoryName; li = new ListItem(itemDisplayName, itemCodeName); } // Load list box if (li != null) { lstAttributes.Items.Add(li); } } } // Set selected item if (lstAttributes.Items.Count > 0) { if (!string.IsNullOrEmpty(selectedValue) && lstAttributes.Items.FindByValue(selectedValue) != null) { lstAttributes.SelectedValue = selectedValue; } else { // Select first item of the list lstAttributes.SelectedIndex = 0; } } // Default values - list is empty SelectedItemName = null; SelectedItemType = 0; // Save selected item info if (lstAttributes.SelectedValue != null) { if (lstAttributes.SelectedValue.StartsWithCSafe(fieldPreffix)) { SelectedItemName = lstAttributes.SelectedValue.Substring(preffixLength); SelectedItemType = FieldEditorSelectedItemEnum.Field; } else if (lstAttributes.SelectedValue.StartsWithCSafe(categPreffix)) { SelectedItemName = lstAttributes.SelectedValue.Substring(preffixLength); SelectedItemType = FieldEditorSelectedItemEnum.Category; } } } }
/// <summary> /// Creates new attribute. /// </summary> private void NewAttribute() { if (Mode == FieldEditorModeEnum.BizFormDefinition) { // Check 'EditForm' permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.form", "EditForm")) { RedirectToAccessDenied("cms.form", "EditForm"); } } if (IsNewItemEdited) { // Only one new item can be edited ShowMessage(GetString("TemplateDesigner.ErrorCannotCreateAnotherNewItem")); return; } IsNewItemEdited = true; HandleInherited(false); FieldDetailsVisible = true; // Set field type fieldTypeSelector.Reload(); SetFieldType(); // Clear settings controlSettings.Settings = new Hashtable(); controlSettings.BasicForm.Mode = FormModeEnum.Insert; // Create #new# attribute in attribute list ListItem newListItem = new ListItem(GetString("TemplateDesigner.NewAttribute"), newFieldPreffix); if ((lstAttributes.Items.Count > 0) && (lstAttributes.SelectedIndex >= 0)) { // Add behind the selected item lstAttributes.Items.Insert(lstAttributes.SelectedIndex + 1, newListItem); } else { // Add at the end of the item collection lstAttributes.Items.Add(newListItem); } // Select new item lstAttributes.SelectedIndex = lstAttributes.Items.IndexOf(newListItem); // Get type of previously selected item FieldEditorSelectedItemEnum oldItemType = SelectedItemType; // Initialize currently selected item type and name SelectedItemType = FieldEditorSelectedItemEnum.Field; SelectedItemName = newFieldPreffix; databaseConfiguration.AttributeName = string.Empty; bool newItemBlank = ValidationHelper.GetBoolean(SettingsHelper.AppSettings["CMSClearFieldEditor"], true); if (newItemBlank || (oldItemType != FieldEditorSelectedItemEnum.Field)) { LoadDefaultAttributeEditForm(false); } LoadControlSettings(); DisplaySelectedTabContent(); PrepareResetButton(); }
/// <summary> /// New category button clicked. /// </summary> protected void btnNewCategory_Click(Object sender, EventArgs e) { if (Mode == FieldEditorModeEnum.BizFormDefinition) { // Check 'EditForm' permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.form", "EditForm")) { RedirectToAccessDenied("cms.form", "EditForm"); } } IsDummyField = IsAlternativeForm; IsExtraField = IsInheritedForm; if (IsNewItemEdited) { // Display error - Only one new item can be edited ShowMessage(GetString("TemplateDesigner.ErrorCannotCreateAnotherNewItem")); } else { HandleInherited(false); // Create #categ##new# item in list ListItem newListItem = new ListItem(GetString("TemplateDesigner.NewCategory"), newCategPreffix); if ((lstAttributes.Items.Count > 0) && (lstAttributes.SelectedIndex >= 0)) { // Add behind the selected item lstAttributes.Items.Insert(lstAttributes.SelectedIndex + 1, newListItem); } else { // Add at the end of the item collection lstAttributes.Items.Add(newListItem); } // Select new item lstAttributes.SelectedIndex = lstAttributes.Items.IndexOf(newListItem); SelectedItemType = FieldEditorSelectedItemEnum.Category; SelectedItemName = newCategPreffix; LoadDefaultCategoryEditForm(); IsNewItemEdited = true; } PrepareResetButton(); }