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 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 formToken = (IModelReference)((DataEntityToken)EntityToken).Data; var renderingMarkup = GetBinding <string>("RenderingMarkup"); RenderingLayoutFacade.SaveRenderingLayout(formToken.Name, XhtmlDocument.Parse(renderingMarkup)); SetSaveStatus(true); }
public override void OnInitialize(object sender, EventArgs e) { if (BindingExist("Title")) { return; } var formToken = (IModelReference)((DataEntityToken)EntityToken).Data; var renderingMarkup = RenderingLayoutFacade.GetRenderingLayout(formToken.Name); Bindings.Add("Title", formToken.Name + " rendering layout"); Bindings.Add("RenderingMarkup", renderingMarkup.ToString()); }
public override void OnInitialize(object sender, EventArgs e) { if (BindingExist("FieldName")) { return; } var folderToken = (FormFolderEntityToken)EntityToken; Bindings.Add("HasCustomRenderingLayout", RenderingLayoutFacade.HasCustomRenderingLayout(folderToken.FormName)); Bindings.Add("FieldName", String.Empty); Bindings.Add("InputElementType", InputElementTypes.First().Key); Bindings.Add("AddFieldToRenderingLayout", true); }
public static void DumpModelValues(Form form, XhtmlDocument doc, bool useRenderingLayout) { if (useRenderingLayout) { var renderingMarkup = RenderingLayoutFacade.GetRenderingLayout(form.Name); var elements = new List <XElement>(); var fields = new List <FormField>(); foreach (var el in renderingMarkup.Body.Descendants().ToList()) { var value = el.Value.Trim(); if (value.Length > 2 && value.First() == '%' && value.Last() == '%') { value = value.Substring(1, value.Length - 2); var field = form.Fields.FirstOrDefault(f => f.Label != null && f.Name == value); if (field == null) { continue; } elements.Add(el); if (field.IsDependencyMetRecursive()) { fields.Add(field); } } else { ReplaceElementsWithTable(elements, fields); } } ReplaceElementsWithTable(elements, fields); doc.Body.Add(renderingMarkup.Body.Elements()); } else { var fields = form.Fields.Where(f => f.Label != null && f.Value != null && f.IsDependencyMetRecursive()); var table = GetFieldsTable(fields); doc.Body.Add(table); } }
public static IHtmlString RenderModelFields(IModelInstance instance, BaseFormBuilderRequestContext context) { var renderingMarkup = RenderingLayoutFacade.GetRenderingLayout(instance.Name); foreach (var field in instance.Fields.Where(f => f.Label != null)) { var fieldElement = renderingMarkup.Body.Descendants().SingleOrDefault(el => el.Name == Namespaces.Xhtml + "p" && el.Value.Trim() == "%" + field.Name + "%"); if (fieldElement == null) { continue; } var html = context.FormRenderer.FieldFor(context, field).ToString(); var newValue = XElement.Parse(html); fieldElement.ReplaceWith(newValue); } return(new HtmlString(renderingMarkup.Body.ToString())); }
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); }