public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { var fieldToken = (FormFieldEntityToken)entityToken; var definition = DynamicFormsFacade.GetFormByName(fieldToken.FormName); var field = definition.Model.Fields.Get(fieldToken.FieldName); definition.Model.Fields.Remove(field); if (RenderingLayoutFacade.HasCustomRenderingLayout(fieldToken.FormName)) { var layout = RenderingLayoutFacade.GetRenderingLayout(fieldToken.FormName); var fieldElement = layout.Body.Descendants().SingleOrDefault(el => el.Name == Namespaces.Xhtml + "p" && el.Value.Trim() == "%" + field.Name + "%"); if (fieldElement != null) { fieldElement.Remove(); } RenderingLayoutFacade.SaveRenderingLayout(fieldToken.FormName, layout); } DynamicFormsFacade.SaveForm(definition); LocalizationsFacade.DeleteNamespace(Localization.GenerateKey(fieldToken.FormName, fieldToken.FieldName)); new ParentTreeRefresher(flowControllerServicesContainer).PostRefreshMessages(entityToken); return(null); }
public override void OnFinish(object sender, EventArgs e) { var folderToken = (FormFolderEntityToken)EntityToken; var fieldName = GetBinding <string>("FieldName"); var addFieldToRenderingLayout = GetBinding <bool>("AddFieldToRenderingLayout"); var definition = DynamicFormsFacade.GetFormByName(folderToken.FormName); var field = new FormFieldModel(definition.Model, fieldName, typeof(string), new List <Attribute>()); var elementType = Type.GetType(GetBinding <string>("InputElementType")); var inputTypeAttribute = (InputElementTypeAttribute)Activator.CreateInstance(elementType); field.Attributes.Add(inputTypeAttribute); definition.Model.Fields.Add(field); DynamicFormsFacade.SaveForm(definition); if (RenderingLayoutFacade.HasCustomRenderingLayout(folderToken.FormName) && addFieldToRenderingLayout) { var layut = RenderingLayoutFacade.GetRenderingLayout(folderToken.FormName); layut.Body.Add(new XElement(Namespaces.Xhtml + "p", String.Format("%{0}%", fieldName))); RenderingLayoutFacade.SaveRenderingLayout(folderToken.FormName, layut); } var fieldToken = new FormFieldEntityToken(folderToken.FormName, fieldName); var workflowToken = new WorkflowActionToken(typeof(EditFormFieldWorkflow)); CreateAddNewTreeRefresher(EntityToken).PostRefreshMessages(fieldToken); ExecuteAction(fieldToken, workflowToken); }
public override void OnFinish(object sender, EventArgs e) { var token = (FormFieldEntityToken)EntityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); DataSourceAttribute attribute; var datasourceType = Type.GetType(GetBinding <string>("DataSourceType")); if (datasourceType == typeof(StringBasedDataSourceAttribute)) { attribute = (DataSourceAttribute)Activator.CreateInstance(datasourceType, new string[0]); } else { attribute = (DataSourceAttribute)Activator.CreateInstance(datasourceType); } field.Attributes.Add(attribute); field.EnsureValueType(); DynamicFormsFacade.SaveForm(definition); var treeRefresher = CreateSpecificTreeRefresher(); treeRefresher.PostRefreshMessages(EntityToken); }
public override bool Validate() { var fieldToken = (FormFieldEntityToken)EntityToken; var fieldName = GetBinding <string>("FieldName"); if (fieldName != fieldToken.FieldName) { if (!FormFieldModel.IsValidName(fieldName)) { ShowFieldMessage("FieldName", "Field name is invalid, only a-z and 0-9 is allowed"); return(false); } var definition = DynamicFormsFacade.GetFormByName(fieldToken.FormName); var field = definition.Model.Fields.Get(fieldName); if (field != null) { ShowFieldMessage("FieldName", "Field name already exists"); return(false); } } return(true); }
public override void OnFinish(object sender, EventArgs e) { var formToken = GetBinding <DataEntityToken>("BoundToken"); var modelReference = (IModelReference)formToken.Data; var definition = DynamicFormsFacade.GetFormByName(modelReference.Name); var submitButtonLabel = GetBinding <string>("SubmitButtonLabel"); SwitchAttribute <RequiresCaptchaAttribute>("RequiresCaptcha", definition.Model.Attributes); SwitchAttribute <ForceHttpsConnectionAttribute>("ForceHttpsConnection", definition.Model.Attributes); var submitButtonLabelAttr = definition.Model.Attributes.OfType <SubmitButtonLabelAttribute>().SingleOrDefault(); if (submitButtonLabel != null) { definition.Model.Attributes.Remove(submitButtonLabelAttr); } if (!String.IsNullOrEmpty(submitButtonLabel)) { submitButtonLabelAttr = new SubmitButtonLabelAttribute(submitButtonLabel); definition.Model.Attributes.Add(submitButtonLabelAttr); using (var writer = ResourceFacade.GetResourceWriter()) { writer.AddResource(GetKey("SubmitButtonLabel"), submitButtonLabel); } } Save(definition); }
public override void OnInitialize(object sender, EventArgs e) { if (BindingExist("BoundToken")) { return; } var fieldToken = (FormFieldEntityToken)EntityToken; var definition = DynamicFormsFacade.GetFormByName(fieldToken.FormName); var field = definition.Model.Fields.Get(fieldToken.FieldName); var defaultValue = String.Empty; XElement el; if (definition.DefaultValues.TryGetValue(field.Name, out el)) { defaultValue = el.ToString(); } Bindings.Add("FieldName", field.Name); Bindings.Add("Label", GetValue("Label") ?? field.Label); Bindings.Add("PlaceholderText", GetValue("PlaceholderText") ?? field.PlaceholderText); Bindings.Add("Help", GetValue("Help") ?? field.Help); Bindings.Add("DefaultValue", defaultValue); Bindings.Add("ValueType", field.ValueType); Bindings.Add("InputElementType", field.InputElementType.GetType().AssemblyQualifiedName); Bindings.Add("IsReadOnly", field.IsReadOnly); SetupFormData(field); Bindings.Add("BoundToken", fieldToken); }
public override void OnFinish(object sender, EventArgs e) { var token = (FieldValidatorsEntityToken)EntityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var validatorType = Type.GetType(GetBinding <string>("ValidatorType")); var message = GetBinding <string>("Message"); var attribute = (FormValidationAttribute)Activator.CreateInstance(validatorType, message); field.Attributes.Add(attribute); DynamicFormsFacade.SaveForm(definition); using (var writer = ResourceFacade.GetResourceWriter()) { var setting = token.FieldName + ".Validation." + attribute.GetType().Name; var key = Localization.GenerateKey(token.FormName, setting); writer.AddResource(key, message); } var editToken = new FieldValidatorsEntityToken(token.FormName, token.FieldName, validatorType); var workflowToken = new WorkflowActionToken(typeof(EditFieldValidatorWorkflow)); CreateSpecificTreeRefresher().PostRefreshMessages(EntityToken); ExecuteAction(editToken, workflowToken); }
public override bool Validate() { var token = (FieldDependencyEntityToken)EntityToken; var value = GetBinding <string>("Value"); var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var fromField = definition.Model.Fields.Get(token.FromFieldName); var dependency = field.DependencyAttributes.Single(d => d.ReadFromFieldName == token.FromFieldName); var valueType = fromField.ValueType == typeof(IEnumerable <string>) ? typeof(string) : fromField.ValueType; try { var objectValue = Convert.ChangeType(value, valueType); } catch (Exception e) { ShowFieldMessage("Value", e.Message); return(false); } if (dependency.ResolveRequiredFieldValues().Any(v => (string)v == value)) { ShowFieldMessage("Value", "Value is not unique"); return(false); } return(true); }
public IEnumerable <Element> Provide(ElementProviderContext context, EntityToken token) { var validatorToken = (FieldValidatorsEntityToken)token; var form = DynamicFormsFacade.GetFormByName(validatorToken.FormName); if (String.IsNullOrEmpty(validatorToken.Type)) { if (form != null) { var field = form.Model.Fields.Get(validatorToken.FieldName); if (field != null) { foreach (var validator in field.ValidationAttributes) { var validatorType = validator.GetType(); var fieldValidatorElementHandle = context.CreateElementHandle(new FieldValidatorsEntityToken(form.Name, field.Name, validator.GetType())); var fieldValidatorElement = new Element(fieldValidatorElementHandle) { VisualData = new ElementVisualizedData { Label = validator.AttributeName(), ToolTip = validator.AttributeName(), HasChildren = false, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var editActionToken = new WorkflowActionToken(typeof(EditFieldValidatorWorkflow)); fieldValidatorElement.AddAction(new ElementAction(new ActionHandle(editActionToken)) { VisualData = new ActionVisualizedData { Label = "Edit", ToolTip = "Edit", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); var deleteActionToken = new ConfirmWorkflowActionToken("Delete: " + validator.AttributeName(), typeof(DeleteFieldValidatorActionToken)); fieldValidatorElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete", ToolTip = "Delete", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-delete"), ActionLocation = ActionLocation } }); yield return(fieldValidatorElement); } } } } }
public override void Submit() { var def = DynamicFormsFacade.GetFormByName(ModelInstance.Name); foreach (var handler in def.SubmitHandlers) { handler.Submit(ModelInstance); } base.Submit(); }
public static Dictionary <string, string> GetFromFields(FieldDependencyEntityToken entityToken) { var definition = DynamicFormsFacade.GetFormByName(entityToken.FormName); var field = definition.Model.Fields.Get(entityToken.FieldName); return(definition.Model.Fields.Where(f => f.Name != entityToken.FieldName && (f.ValueType == typeof(string) || f.ValueType == typeof(bool) || f.ValueType == typeof(IEnumerable <string>)) && field.DependencyAttributes.All(d => d.ReadFromFieldName != f.Name || d.ReadFromFieldName == entityToken.FromFieldName) ).ToDictionary(f => f.Name, f => f.Name)); }
public static void UpdateOrder(string formName, string consoleId, string entityToken, string serializedOrder) { var formDefinition = DynamicFormsFacade.GetFormByName(formName); UpdateOrder(formDefinition, serializedOrder); var serializedEntityToken = HttpUtility.UrlDecode(entityToken); if (!String.IsNullOrEmpty(serializedEntityToken)) { UpdateParents(serializedEntityToken, consoleId); } }
public override void OnInitialize(object sender, EventArgs e) { if (BindingExist("BoundToken")) { return; } Bindings.Add("BoundToken", EntityToken); Bindings.Add("SubmitButtonLabel", GetValue("SubmitButtonLabel")); var modelReference = (IModelReference)((DataEntityToken)EntityToken).Data; var definition = DynamicFormsFacade.GetFormByName(modelReference.Name); SetupFormData(definition, definition.Model); }
public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { var token = (FieldDependencyEntityToken)entityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var keyToRemove = field.DependencyAttributes.Single(itm => itm.ReadFromFieldName == token.FromFieldName); field.Attributes.Remove(keyToRemove); DynamicFormsFacade.SaveForm(definition); new ParentTreeRefresher(flowControllerServicesContainer).PostRefreshMessages(entityToken); return(null); }
public override void OnInitialize(object sender, EventArgs e) { if (BindingExist("Message")) { return; } var token = (FieldValidatorsEntityToken)EntityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var validator = field.ValidationAttributes.Single(v => v.GetType().AssemblyQualifiedName == token.Type); Bindings.Add("FieldName", token.FieldName); Bindings.Add("Message", validator.GetValidationMessage(field)); }
public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { var token = (FieldDependencyValueEntityToken)entityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var dependency = (DependsOnConstantAttribute)field.DependencyAttributes.Single(d => d.ReadFromFieldName == token.FromFieldName); var valueToRemove = dependency.RequiredFieldValues.Single(v => v.ToString() == token.Value); dependency.RequiredFieldValues.Remove(valueToRemove); DynamicFormsFacade.SaveForm(definition); new ParentTreeRefresher(flowControllerServicesContainer).PostRefreshMessages(entityToken); return(null); }
public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { var entryToken = (DataSourceEntityToken)entityToken; var definition = DynamicFormsFacade.GetFormByName(entryToken.FormName); var field = definition.Model.Fields.Get(entryToken.FieldName); var dataSourceAttribute = field.Attributes.OfType <DataSourceAttribute>().First(); field.Attributes.Remove(dataSourceAttribute); field.EnsureValueType(); DynamicFormsFacade.SaveForm(definition); new ParentTreeRefresher(flowControllerServicesContainer).PostRefreshMessages(entityToken); return(null); }
public override void OnFinish(object sender, EventArgs e) { var token = (FieldDependencyEntityToken)EntityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var fromFieldName = GetBinding <string>("FromFieldName"); var attribute = new DependsOnConstantAttribute(fromFieldName); field.Attributes.Add(attribute); DynamicFormsFacade.SaveForm(definition); CreateSpecificTreeRefresher().PostRefreshMessages(EntityToken); }
public override bool Validate() { var token = (FieldValidatorsEntityToken)EntityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var validatorType = Type.GetType(GetBinding <string>("ValidatorType")); if (field.ValidationAttributes.Any(f => f.GetType() == validatorType)) { ShowFieldMessage("ValidatorType", "Validator already exists"); return(false); } return(true); }
public override bool Validate() { var dataSourceToken = (DataSourceEntityToken)EntityToken; var entryValue = GetBinding <string>("EntryValue"); var definition = DynamicFormsFacade.GetFormByName(dataSourceToken.FormName); var field = definition.Model.Fields.Get(dataSourceToken.FieldName); var datasSource = field.DataSource.Select(itm => itm.Key).ToList(); if (datasSource.Any(itm => itm == entryValue)) { ShowFieldMessage("Entry value", "Entry value is not unique"); return(false); } return(true); }
public override void OnFinish(object sender, EventArgs e) { var token = (FieldDependencyEntityToken)EntityToken; var value = GetBinding <string>("Value"); var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var fromField = definition.Model.Fields.Get(token.FromFieldName); var dependency = (DependsOnConstantAttribute)field.DependencyAttributes.Single(d => d.ReadFromFieldName == token.FromFieldName); var valueType = fromField.ValueType == typeof(IEnumerable <string>) ? typeof(string) : fromField.ValueType; var objectValue = Convert.ChangeType(value, valueType); dependency.RequiredFieldValues.Add(objectValue); DynamicFormsFacade.SaveForm(definition); CreateSpecificTreeRefresher().PostRefreshMessages(EntityToken); }
public override void OnFinish(object sender, EventArgs e) { var token = (FieldValidatorsEntityToken)EntityToken; var message = GetBinding <string>("Message"); var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var validator = field.ValidationAttributes.Single(v => v.GetType().AssemblyQualifiedName == token.Type); using (var writer = ResourceFacade.GetResourceWriter()) { var setting = token.FieldName + ".Validation." + validator.GetType().Name; var key = Localization.GenerateKey(token.FormName, setting); writer.AddResource(key, message); } CreateSpecificTreeRefresher().PostRefreshMessages(EntityToken); SetSaveStatus(true); }
protected override void OnLoad(EventArgs e) { var formName = Request.QueryString["formName"]; if (Request.HttpMethod == "POST") { formName = Request.Form["formName"]; } var formDefinition = DynamicFormsFacade.GetFormByName(formName); Master.CustomJsonDataName = "formName"; Master.CustomJsonDataValue = formName; Master.SortableItems = formDefinition.Model.Fields.Select(i => new SortableItem { Id = i.Name, Name = i.Name }); base.OnLoad(e); }
public override void OnFinish(object sender, EventArgs e) { var token = GetBinding <FieldDependencyEntityToken>("Token"); var fromFieldName = GetBinding <string>("FromFieldName"); var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var dependency = field.DependencyAttributes.Single(d => d.ReadFromFieldName == token.FromFieldName); field.Attributes.Remove(dependency); field.Attributes.Add(new DependsOnConstantAttribute(fromFieldName, dependency.ResolveRequiredFieldValues())); DynamicFormsFacade.SaveForm(definition); var newToken = new FieldDependencyEntityToken(token.FormName, token.FieldName, fromFieldName); UpdateBinding("Token", newToken); SetSaveStatus(true, newToken); CreateSpecificTreeRefresher().PostRefreshMessages(new FieldDependencyEntityToken(token.FormName, token.FieldName)); }
public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { var entryToken = (StringBasedDataSourceEntryEntityToken)entityToken; var definition = DynamicFormsFacade.GetFormByName(entryToken.FormName); var field = definition.Model.Fields.Get(entryToken.FieldName); var dataSource = field.DataSource.ToList(); dataSource.Remove(dataSource.Get(entryToken.Id)); var dataSourceAttribute = field.Attributes.OfType <StringBasedDataSourceAttribute>().First(); field.Attributes.Remove(dataSourceAttribute); dataSourceAttribute = new StringBasedDataSourceAttribute(dataSource.Select(itm => itm.Key).ToArray()); field.Attributes.Add(dataSourceAttribute); DynamicFormsFacade.SaveForm(definition); new ParentTreeRefresher(flowControllerServicesContainer).PostRefreshMessages(entityToken); return(null); }
public override void OnFinish(object sender, EventArgs e) { var dataSourceToken = (DataSourceEntityToken)EntityToken; var entryValue = GetBinding <string>("EntryValue"); var definition = DynamicFormsFacade.GetFormByName(dataSourceToken.FormName); var field = definition.Model.Fields.Get(dataSourceToken.FieldName); var datasSource = field.DataSource.Select(itm => itm.Key).ToList(); datasSource.Add(entryValue); var dataSourceAttribute = field.Attributes.OfType <StringBasedDataSourceAttribute>().First(); field.Attributes.Remove(dataSourceAttribute); dataSourceAttribute = new StringBasedDataSourceAttribute(datasSource.ToArray()); field.Attributes.Add(dataSourceAttribute); DynamicFormsFacade.SaveForm(definition); CreateAddNewTreeRefresher(EntityToken).PostRefreshMessages(new StringBasedDataSourceEntryEntityToken(dataSourceToken.FormName, dataSourceToken.FieldName, entryValue)); }
public override bool Validate() { var token = (FieldDependencyEntityToken)EntityToken; var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var fromFieldName = GetBinding <string>("FromFieldName"); if (String.IsNullOrEmpty(fromFieldName)) { ShowFieldMessage("fromFieldName", "Dependency field not set"); return(false); } if (field.DependencyAttributes.Any(f => f.ReadFromFieldName == fromFieldName)) { ShowFieldMessage("fromFieldName", "Dependency already exists"); return(false); } return(true); }
public IEnumerable <Element> Provide(ElementProviderContext context, EntityToken token) { var dependencyToken = (FieldDependencyEntityToken)token; var form = DynamicFormsFacade.GetFormByName(dependencyToken.FormName); if (form == null) { yield break; } var field = form.Model.Fields.Get(dependencyToken.FieldName); if (field == null) { yield break; } if (String.IsNullOrEmpty(dependencyToken.FromFieldName)) { foreach (var dependency in field.DependencyAttributes) { var fromFieldName = dependency.ReadFromFieldName; var fieldDependencyElementHandle = context.CreateElementHandle(new FieldDependencyEntityToken(form.Name, field.Name, fromFieldName)); var fieldDependencyElement = new Element(fieldDependencyElementHandle) { VisualData = new ElementVisualizedData { Label = fromFieldName, ToolTip = fromFieldName, HasChildren = dependency.ResolveRequiredFieldValues().Any(), Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var editActionToken = new WorkflowActionToken(typeof(EditFieldDependencyWorkflow), new[] { PermissionType.Edit }); fieldDependencyElement.AddAction(new ElementAction(new ActionHandle(editActionToken)) { VisualData = new ActionVisualizedData { Label = "Edit dependency", ToolTip = "Edit dependency", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); var addActionToken = new WorkflowActionToken(typeof(AddFieldDependencyValueWorkflow), new[] { PermissionType.Add }); fieldDependencyElement.AddAction(new ElementAction(new ActionHandle(addActionToken)) { VisualData = new ActionVisualizedData { Label = "Add value", ToolTip = "Add value", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); var deleteActionToken = new ConfirmWorkflowActionToken("Delete: " + fromFieldName, typeof(DeleteFieldDependencyActionToken)); fieldDependencyElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete", ToolTip = "Delete", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-delete"), ActionLocation = ActionLocation } }); yield return(fieldDependencyElement); } } else { var dependency = field.DependencyAttributes.SingleOrDefault(d => d.ReadFromFieldName == dependencyToken.FromFieldName); if (dependency == null) { yield break; } foreach (var value in dependency.ResolveRequiredFieldValues()) { var fieldDependencyValueElementHandle = context.CreateElementHandle(new FieldDependencyValueEntityToken(form.Name, field.Name, dependency.ReadFromFieldName, value.ToString())); var fieldDependencyValueElement = new Element(fieldDependencyValueElementHandle) { VisualData = new ElementVisualizedData { Label = value.ToString(), ToolTip = value.ToString(), HasChildren = false, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var deleteActionToken = new ConfirmWorkflowActionToken("Delete: " + value, typeof(DeleteFieldDependencyValueActionToken)); fieldDependencyValueElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete", ToolTip = "Delete", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-delete"), ActionLocation = ActionLocation } }); yield return(fieldDependencyValueElement); } } }
public override void OnFinish(object sender, EventArgs e) { var fieldToken = GetBinding <FormFieldEntityToken>("BoundToken"); var fieldName = GetBinding <string>("FieldName"); var label = GetBinding <string>("Label"); var placeholderText = GetBinding <string>("PlaceholderText"); var help = GetBinding <string>("Help"); var defaultValue = GetBinding <string>("DefaultValue"); var inputElementType = Type.GetType(GetBinding <string>("InputElementType")); var isReadOnly = GetBinding <bool>("IsReadOnly"); var definition = DynamicFormsFacade.GetFormByName(fieldToken.FormName); var field = definition.Model.Fields.Get(fieldToken.FieldName); var isNewName = field.Name != fieldName; if (isNewName) { var oldNs = Localization.GenerateKey(fieldToken.FormName, field.Name); var newNs = Localization.GenerateKey(fieldToken.FormName, fieldName); LocalizationsFacade.RenameNamespace(oldNs, newNs, Localization.ResourceSet); if (RenderingLayoutFacade.HasCustomRenderingLayout(fieldToken.FormName)) { var layout = RenderingLayoutFacade.GetRenderingLayout(fieldToken.FormName); var fieldElement = layout.Body.Descendants().SingleOrDefault(el => el.Name == Namespaces.Xhtml + "p" && el.Value.Trim() == "%" + field.Name + "%"); if (fieldElement != null) { fieldElement.Value = $"%{fieldName}%"; } RenderingLayoutFacade.SaveRenderingLayout(fieldToken.FormName, layout); } } field.Name = fieldName; field.IsReadOnly = isReadOnly; using (var writer = ResourceFacade.GetResourceWriter()) { writer.AddResource(GetKey("Label"), (string)null); writer.AddResource(GetKey("PlaceholderText"), (string)null); writer.AddResource(GetKey("Help"), (string)null); var labelAttr = field.Attributes.OfType <FieldLabelAttribute>().SingleOrDefault(); if (labelAttr != null) { field.Attributes.Remove(labelAttr); } if (!String.IsNullOrEmpty(label)) { labelAttr = new FieldLabelAttribute(label); field.Attributes.Add(labelAttr); writer.AddResource(GetKey("Label"), label); } var placeholderAttr = field.Attributes.OfType <PlaceholderTextAttribute>().SingleOrDefault(); if (placeholderAttr != null) { field.Attributes.Remove(placeholderAttr); } if (!String.IsNullOrEmpty(placeholderText)) { placeholderAttr = new PlaceholderTextAttribute(placeholderText); field.Attributes.Add(placeholderAttr); writer.AddResource(GetKey("PlaceholderText"), placeholderText); } var helpAttribute = field.Attributes.OfType <FieldHelpAttribute>().FirstOrDefault(); if (helpAttribute != null) { field.Attributes.Remove(helpAttribute); } if (!String.IsNullOrEmpty(help)) { helpAttribute = new FieldHelpAttribute(help); field.Attributes.Add(helpAttribute); writer.AddResource(GetKey("Help"), help); } } definition.DefaultValues.Remove(field.Name); if (!String.IsNullOrEmpty(defaultValue)) { definition.DefaultValues.Add(field.Name, XElement.Parse(defaultValue)); } var inputTypeAttribute = field.Attributes.OfType <InputElementTypeAttribute>().FirstOrDefault(); if (inputTypeAttribute != null) { field.Attributes.Remove(inputTypeAttribute); } inputTypeAttribute = (InputElementTypeAttribute)Activator.CreateInstance(inputElementType); field.Attributes.Add(inputTypeAttribute); field.EnsureValueType(); SaveExtraSettings(field); DynamicFormsFacade.SaveForm(definition); if (isNewName) { fieldToken = new FormFieldEntityToken(definition.Model.Name, fieldName); UpdateBinding("BoundToken", fieldToken); SetSaveStatus(true, fieldToken); } else { SetSaveStatus(true); } CreateParentTreeRefresher().PostRefreshMessages(EntityToken); }
public IEnumerable <Element> Provide(ElementProviderContext context, EntityToken token) { var fieldToken = (FormFieldEntityToken)token; var form = DynamicFormsFacade.GetFormByName(fieldToken.FormName); if (form == null) { yield break; } var field = form.Model.Fields.Get(fieldToken.FieldName); if (field == null) { yield break; } var fieldValidatorsElementHandle = context.CreateElementHandle(new FieldValidatorsEntityToken(form.Name, field.Name)); var fieldValidatorsElement = new Element(fieldValidatorsElementHandle) { VisualData = new ElementVisualizedData { Label = "Validators", ToolTip = "Validators", HasChildren = field.ValidationAttributes.Any(), Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var addValidatorActionToken = new WorkflowActionToken(typeof(AddFieldValidatorWorkflow), new[] { PermissionType.Add }); fieldValidatorsElement.AddAction(new ElementAction(new ActionHandle(addValidatorActionToken)) { VisualData = new ActionVisualizedData { Label = "Add validator", ToolTip = "Add validator", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); yield return(fieldValidatorsElement); var fieldDependencyElementHandle = context.CreateElementHandle(new FieldDependencyEntityToken(form.Name, field.Name)); var fieldDependencyElement = new Element(fieldDependencyElementHandle) { VisualData = new ElementVisualizedData { Label = "Dependencies", ToolTip = "Dependencies", HasChildren = field.DependencyAttributes.Any(), Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var addDependencyActionToken = new WorkflowActionToken(typeof(AddFieldDependencyWorkflow), new[] { PermissionType.Add }); fieldDependencyElement.AddAction(new ElementAction(new ActionHandle(addDependencyActionToken)) { VisualData = new ActionVisualizedData { Label = "Add dependency", ToolTip = "Add dependency", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); yield return(fieldDependencyElement); var datasourceAttribute = field.Attributes.OfType <DataSourceAttribute>().FirstOrDefault(); if (datasourceAttribute == null) { yield break; } var fieldsElementHandle = context.CreateElementHandle(new DataSourceEntityToken(datasourceAttribute.GetType(), form.Name, field.Name)); var fieldElement = new Element(fieldsElementHandle) { VisualData = new ElementVisualizedData { Label = "Datasource", ToolTip = "Datasource", HasChildren = true, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var deleteActionToken = new ConfirmWorkflowActionToken("Delete datasource", typeof(DeleteDataSourceActionToken)); fieldElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete datasource", ToolTip = "Delete datasource", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-delete"), ActionLocation = ActionLocation } }); if (datasourceAttribute.GetType() == typeof(StringBasedDataSourceAttribute)) { var addActionToken = new WorkflowActionToken(typeof(AddStringBasedDataSourceEntryWorkflow), new[] { PermissionType.Add }); fieldElement.AddAction(new ElementAction(new ActionHandle(addActionToken)) { VisualData = new ActionVisualizedData { Label = "Add value", ToolTip = "Add value", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); } yield return(fieldElement); }