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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
        }