protected void SetupFormData(IDynamicDefinition definition, IModel model)
        {
            Bindings.Add("Name", definition.Name);

            Bindings.Add("RequiresCaptcha", model.RequiresCaptcha);
            Bindings.Add("ForceHttpsConnection", model.ForceHttps);

            Bindings.Add("IntroText", GetValue("IntroText"));
            Bindings.Add("SuccessResponse", GetValue("SuccessResponse"));

            var markupProvider = new FormDefinitionFileMarkupProvider(_formFile);
            var formDocument   = XDocument.Load(markupProvider.GetReader());

            var root = formDocument.Root;

            var tabPanelElements = root?.Element(Namespaces.BindingForms10 + FormKeyTagNames.Layout)?.Element(Namespaces.BindingFormsStdUiControls10 + "TabPanels");

            if (tabPanelElements == null)
            {
                return;
            }

            var bindingsXElement = root.Element(Namespaces.BindingForms10 + FormKeyTagNames.Bindings);
            var lastTabElement   = tabPanelElements.Elements().Last();

            LoadExtraSettings(definition, bindingsXElement, lastTabElement);

            DeliverFormData("EditForm", StandardUiContainerTypes.Document, formDocument.ToString(), Bindings, BindingsValidationRules);
        }
Ejemplo n.º 2
0
        protected static void ParseSubmitHandlers(XElement root, IDynamicDefinition definition)
        {
            var submitHandlersElement = root.Element("SubmitHandlers");

            if (submitHandlersElement == null)
            {
                return;
            }

            foreach (var handler in submitHandlersElement.Elements("Add"))
            {
                var typeString = handler.Attribute("Type").Value;

                var type = Type.GetType(typeString);
                if (type == null)
                {
                    if (typeString.StartsWith("CompositeC1Contrib.FormBuilder.Dynamic.Wizard.SubmitHandlers.EmailSubmitHandler"))
                    {
                        type = typeof(EmailSubmitHandler);
                    }
                }

                if (type == null)
                {
                    continue;
                }

                var instance = (FormSubmitHandler)XElementHelper.DeserializeInstanceWithArgument(type, handler);

                instance.Load(definition, handler);
                definition.SubmitHandlers.Add(instance);
            }
        }
        public static void Copy(IDynamicDefinition definition, string newName)
        {
            var def = GetDefinition(definition.Name);

            def.Name = newName;

            var serializer = XmlDefinitionSerializer.GetSerializer(definition.Name);

            serializer.Save(def);
        }
        public static void Delete(IDynamicDefinition definition)
        {
            var dir = Path.Combine(ModelsFacade.RootPath, definition.Name);

            C1Directory.Delete(dir, true);

            foreach (var submitHandler in definition.SubmitHandlers)
            {
                submitHandler.Delete(definition);
            }

            ModelsFacade.NotifyFormChanges();
        }
Ejemplo n.º 5
0
        public override void Delete(IDynamicDefinition definition)
        {
            using (var data = new DataConnection())
            {
                var templates        = data.Get <IMailTemplate>().Where(t => t.Key == definition.Name + "." + Name);
                var templateContents = data.Get <IMailTemplateContent>().Where(t => t.TemplateKey == definition.Name + "." + Name);

                data.Delete(templates);
                data.Delete(templateContents);
            }

            base.Delete(definition);
        }
        private void LoadExtraSettings(IDynamicDefinition definition, XElement bindingsXElement, XElement lastTabElement)
        {
            var config = FormBuilderConfiguration.GetSection();
            var plugin = (DynamicFormBuilderConfiguration)config.Plugins["dynamic"];

            var settingsType = plugin.SettingsHandler;

            if (settingsType == null)
            {
                return;
            }

            var formFile = "\\InstalledPackages\\" + settingsType.Namespace + "\\" + settingsType.Name + ".xml";
            var settingsMarkupProvider = new FormDefinitionFileMarkupProvider(formFile);
            var formDefinitionElement  = XElement.Load(settingsMarkupProvider.GetReader());
            var settingsTab            = new XElement(Namespaces.BindingFormsStdUiControls10 + "PlaceHolder");

            var layout = formDefinitionElement.Element(Namespaces.BindingForms10 + FormKeyTagNames.Layout);

            if (layout == null)
            {
                return;
            }

            var bindings = formDefinitionElement.Element(Namespaces.BindingForms10 + FormKeyTagNames.Bindings);

            if (bindings == null)
            {
                return;
            }

            settingsTab.Add(new XAttribute("Label", "Extra Settings"));
            settingsTab.Add(layout.Elements());

            bindingsXElement.Add(bindings.Elements());
            lastTabElement.AddAfterSelf(settingsTab);

            var settings = definition.Settings ?? (IFormSettings)Activator.CreateInstance(settingsType);

            foreach (var prop in settingsType.GetProperties())
            {
                var value = prop.GetValue(settings, null);

                Bindings.Add(prop.Name, value);
            }
        }
        protected void Save(IDynamicDefinition definition)
        {
            SaveExtraSettings(definition);

            var token          = GetBinding <DataEntityToken>("BoundToken");
            var modelReference = (IModelReference)token.Data;

            var name = GetBinding <string>("Name");

            var introText       = GetBinding <string>("IntroText");
            var successResponse = GetBinding <string>("SuccessResponse");

            using (var writer = ResourceFacade.GetResourceWriter())
            {
                writer.AddResource(GetKey("IntroText"), introText);
                writer.AddResource(GetKey("SuccessResponse"), successResponse);
            }

            var isNewName = name != modelReference.Name;

            if (isNewName)
            {
                LocalizationsFacade.RenameNamespace(Localization.KeyPrefix + "." + modelReference.Name, Localization.KeyPrefix + "." + name, Localization.ResourceSet);

                DefinitionsFacade.Copy(definition, name);
                DefinitionsFacade.Delete(definition);

                modelReference = ModelReferenceFacade.GetModelReference(name);
                token          = modelReference.GetDataEntityToken();

                UpdateBinding("BoundToken", token);
                SetSaveStatus(true, token);
            }
            else
            {
                DefinitionsFacade.Save(definition);

                SetSaveStatus(true);
            }

            CreateParentTreeRefresher().PostRefreshMessages(EntityToken);
        }
Ejemplo n.º 8
0
        protected void SaveMetaData(IDynamicDefinition definition, XElement root)
        {
            if (definition.SubmitHandlers.Any())
            {
                var submitHandlers = new XElement("SubmitHandlers");

                foreach (var handler in definition.SubmitHandlers)
                {
                    var qualifiedName = handler.GetType().AssemblyQualifiedName;
                    if (qualifiedName == null)
                    {
                        continue;
                    }

                    var handlerElement = new XElement("Add",
                                                      new XAttribute("Name", handler.Name),
                                                      new XAttribute("Type", qualifiedName));

                    handler.Save(definition, handlerElement);

                    submitHandlers.Add(handlerElement);
                }

                root.Add(submitHandlers);
            }

            if (definition.Settings != null)
            {
                var qualifiedName = definition.Settings.GetType().AssemblyQualifiedName;
                if (qualifiedName != null)
                {
                    var settingsElement = new XElement("FormSettings",
                                                       new XAttribute("Type", qualifiedName));

                    SerializeInstanceWithArgument(definition.Settings, settingsElement);

                    root.Add(settingsElement);
                }
            }
        }
Ejemplo n.º 9
0
        protected static void ParseFormSettings(XElement metaData, IDynamicDefinition definition)
        {
            var formSettingsElement = metaData.Element("FormSettings");

            if (formSettingsElement == null)
            {
                return;
            }

            var typeString = formSettingsElement.Attribute("Type").Value;

            var type = Type.GetType(typeString);

            if (type == null)
            {
                return;
            }

            var instance = (IFormSettings)XElementHelper.DeserializeInstanceWithArgument(type, formSettingsElement);

            definition.Settings = instance;
        }
        public override void Save(IDynamicDefinition form)
        {
            var wizard = (DynamicWizardDefinition)form;

            var root = new XElement("FormBuilder.Wizard",
                                    new XAttribute("name", wizard.Name),
                                    new XAttribute("requiresCaptcha", wizard.Model.RequiresCaptcha),
                                    new XAttribute("forceHttpsConnection", wizard.Model.ForceHttps));

            var steps = new XElement("Steps");

            foreach (var step in wizard.Model.Steps)
            {
                var stepElement = new XElement("Step",
                                               new XAttribute("Name", step.Name),
                                               new XAttribute("FormName", step.FormName),
                                               new XAttribute("Label", step.Label),
                                               new XAttribute("LocalOrdering", step.LocalOrdering));

                if (!String.IsNullOrEmpty(step.NextButtonLabel))
                {
                    stepElement.Add(new XAttribute("nextButtonLabel", step.NextButtonLabel));
                }

                if (!String.IsNullOrEmpty(step.PreviousButtonLabel))
                {
                    stepElement.Add(new XAttribute("previousButtonLabel", step.PreviousButtonLabel));
                }

                steps.Add(stepElement);
            }

            root.Add(steps);

            SaveMetaData(form, root);
            SaveDefinitionFile(form.Name, root);

            base.Save(form);
        }
        private void SaveExtraSettings(IDynamicDefinition definition)
        {
            var config = FormBuilderConfiguration.GetSection();
            var plugin = (DynamicFormBuilderConfiguration)config.Plugins["dynamic"];

            var settingsType = plugin.SettingsHandler;

            if (settingsType == null)
            {
                definition.Settings = null;

                return;
            }

            definition.Settings = (IFormSettings)Activator.CreateInstance(settingsType);

            foreach (var prop in settingsType.GetProperties().Where(p => BindingExist(p.Name)))
            {
                var value = GetBinding <object>(prop.Name);

                prop.SetValue(definition.Settings, value, null);
            }
        }
 public virtual void Load(IDynamicDefinition model, XElement handler)
 {
     Name = handler.Attribute("Name").Value;
 }
Ejemplo n.º 13
0
 public virtual void Save(IDynamicDefinition form)
 {
     ModelsFacade.NotifyFormChanges();
 }
 public virtual void Save(IDynamicDefinition definition, XElement handler)
 {
 }
 public virtual void Delete(IDynamicDefinition definition)
 {
 }
Ejemplo n.º 16
0
        public override void Save(IDynamicDefinition form)
        {
            var definition = (DynamicFormDefinition)form;
            var model      = definition.Model;

            var root = new XElement("FormBuilder.DynamicForm",
                                    new XAttribute("name", definition.Name));

            var metaData = new XElement("MetaData");

            if (model.Attributes.OfType <ForceHttpsConnectionAttribute>().Any())
            {
                metaData.Add(new XElement("forceHttpsConnection"));
            }

            if (model.Attributes.OfType <RequiresCaptchaAttribute>().Any())
            {
                metaData.Add(new XElement("requiresCaptcha"));
            }

            if (definition.DefaultValues.Any())
            {
                var defaultValues = new XElement("DefaultValues");

                foreach (var kvp in definition.DefaultValues)
                {
                    var defaultValueElement = new XElement("Add",
                                                           new XAttribute("field", kvp.Key),
                                                           new XAttribute("functionMarkup", kvp.Value.ToString()));

                    defaultValues.Add(defaultValueElement);
                }

                metaData.Add(defaultValues);
            }

            SaveMetaData(definition, metaData);

            if (metaData.HasElements)
            {
                root.Add(metaData);
            }

            var fields = new XElement("Fields");

            foreach (var field in model.Fields)
            {
                var add = new XElement("Add",
                                       new XAttribute("name", field.Name),
                                       new XAttribute("valueType", field.ValueType.AssemblyQualifiedName));


                if (field.IsReadOnly)
                {
                    add.Add(new XAttribute("isReadOnly", true));
                }

                var formatAttribute = field.Attributes.OfType <DisplayFormatAttribute>().SingleOrDefault();
                if (formatAttribute != null)
                {
                    add.Add(new XAttribute("format", formatAttribute.FormatString));
                }

                if (field.InputElementType != null)
                {
                    var inputElement     = new XElement("InputElement");
                    var inputElementType = field.InputElementType.GetType();

                    inputElement.Add(new XAttribute("type", inputElementType.AssemblyQualifiedName));

                    SerializeInstanceWithArgument(field.InputElementType, inputElement);

                    add.Add(inputElement);
                }

                if (field.ValidationAttributes.Any())
                {
                    var validationRules = new XElement("ValidationRules");

                    foreach (var rule in field.ValidationAttributes)
                    {
                        var ruleType    = rule.GetType();
                        var ruleElement = new XElement("Add",
                                                       new XAttribute("type", ruleType.AssemblyQualifiedName));

                        SerializeInstanceWithArgument(rule, ruleElement);

                        validationRules.Add(ruleElement);
                    }

                    add.Add(validationRules);
                }

                if (field.DependencyAttributes.Any())
                {
                    var dependencies = new XElement("Dependencies");

                    foreach (var dep in field.DependencyAttributes)
                    {
                        var dependency = new XElement("Add",
                                                      new XAttribute("type", dep.GetType().AssemblyQualifiedName),
                                                      new XAttribute("field", dep.ReadFromFieldName));

                        var values = new XElement("values");

                        foreach (var value in dep.ResolveRequiredFieldValues())
                        {
                            values.Add(new XElement("item",
                                                    new XAttribute("type", value.GetType().AssemblyQualifiedName),
                                                    new XAttribute("value", value)));
                        }

                        dependency.Add(values);

                        dependencies.Add(dependency);
                    }

                    add.Add(dependencies);
                }

                var dataSourceAttribute = field.Attributes.OfType <DataSourceAttribute>().FirstOrDefault();
                if (dataSourceAttribute != null)
                {
                    var datasource = new XElement("DataSource",
                                                  new XAttribute("type", dataSourceAttribute.GetType().AssemblyQualifiedName));

                    var stringBasedDataSourceAttribute = dataSourceAttribute as StringBasedDataSourceAttribute;
                    if (stringBasedDataSourceAttribute != null)
                    {
                        var values = new XElement("values");

                        foreach (var value in stringBasedDataSourceAttribute.Values)
                        {
                            values.Add(new XElement("item",
                                                    new XAttribute("value", value)));
                        }

                        datasource.Add(values);
                    }

                    add.Add(datasource);
                }

                fields.Add(add);
            }

            root.Add(fields);

            SaveDefinitionFile(definition.Name, root);

            base.Save(definition);
        }
        public static void SaveForm(IDynamicDefinition definition)
        {
            var serializer = new FormXmlSerializer();

            serializer.Save(definition);
        }
 public override void Save(IDynamicDefinition definition, XElement handler)
 {
     handler.Add(new XAttribute("IncludeAttachments", IncludeAttachments));
 }
        public static void Save(IDynamicDefinition definition)
        {
            var serializer = XmlDefinitionSerializer.GetSerializer(definition.Name);

            serializer.Save(definition);
        }