public override bool Validate() { var token = GetBinding <DataEntityToken>("BoundToken"); var modelReference = (IModelReference)token.Data; var name = GetBinding <string>("Name"); if (name == modelReference.Name) { return(true); } if (!FormModel.IsValidName(name)) { ShowFieldMessage("Name", "Invalid form name, only a-z, 0-9 and symbols - is allowed"); return(false); } var isNameInUse = DefinitionsFacade.GetDefinitions().Any(m => m.Name == name); if (!isNameInUse) { return(true); } ShowFieldMessage("Name", "Form name already exists"); return(false); }
public override void OnFinish(object sender, EventArgs e) { var token = (FormFolderEntityToken)EntityToken; var name = GetBinding <string>("Name"); var type = GetBinding <string>("SubmitHandlerType"); var definition = DefinitionsFacade.GetDefinition(token.FormName); var handlerType = Type.GetType(type); var instance = (FormSubmitHandler)Activator.CreateInstance(handlerType); instance.Name = name; definition.SubmitHandlers.Add(instance); DefinitionsFacade.Save(definition); CreateSpecificTreeRefresher().PostRefreshMessages(token); var editWorkFlowAttribute = handlerType.GetCustomAttribute <EditWorkflowAttribute>(); if (editWorkFlowAttribute != null) { var workflowToken = new WorkflowActionToken(editWorkFlowAttribute.EditWorkflowType); ExecuteAction(new FormSubmitHandlerEntityToken(handlerType, token.FormName, name), workflowToken); } }
public override bool Validate() { var token = (FormFolderEntityToken)EntityToken; var definition = DefinitionsFacade.GetDefinition(token.FormName); var name = GetBinding <string>("Name"); if (definition.SubmitHandlers.Any(e => e.Name == name)) { ShowFieldMessage("Name", "A handler with this name already exists"); return(false); } var type = GetBinding <string>("SubmitHandlerType"); var handlerType = Type.GetType(type); var element = Handlers.Single(e => e.Type == handlerType); if (element.AllowMultiple) { return(true); } if (definition.SubmitHandlers.Any(handler => handler.GetType() == handlerType)) { ShowFieldMessage("SubmitHandlerType", "The chosen handler is only allowed once"); return(false); } return(true); }
private EmailSubmitHandler GetHandler() { var token = (FormSubmitHandlerEntityToken)EntityToken; var definition = DefinitionsFacade.GetDefinition(token.FormName); return((EmailSubmitHandler)definition.SubmitHandlers.Single(h => h.Name == token.Name)); }
public override void OnFinish(object sender, EventArgs e) { var name = GetBinding <string>("Name"); var includeAttachments = GetBinding <bool>("IncludeAttachments"); var from = GetBinding <string>("From"); var to = GetBinding <string>("To"); var cc = GetBinding <string>("Cc"); var bcc = GetBinding <string>("Bcc"); var subject = GetBinding <string>("Subject"); var body = GetBinding <string>("Body"); var encryptMessage = GetBinding <bool>("EncryptMessage"); var encryptPassword = GetBinding <string>("EncryptPassword"); var definition = GetDefinition(); var handler = GetHandler(); var existingHandler = definition.SubmitHandlers.Single(h => h.Name == handler.Name); handler.Name = name; handler.IncludeAttachments = includeAttachments; using (var data = new DataConnection()) { var templateKey = definition.Name + "." + handler.Name; var template = data.Get <IMailTemplate>().SingleOrDefault(t => t.Key == templateKey) ?? data.CreateNew <IMailTemplate>(); template.Key = templateKey; template.From = from; template.To = to; template.Cc = cc; template.Bcc = bcc; template.EncryptMessage = encryptMessage; template.EncryptPassword = encryptPassword; if (template.DataSourceId.ExistsInStore) { data.Update(template); } else { data.Add(template); } var templateContent = template.GetContent(); templateContent.Subject = subject; templateContent.Body = body; data.Update(templateContent); } definition.SubmitHandlers.Remove(existingHandler); definition.SubmitHandlers.Add(handler); DefinitionsFacade.Save(definition); CreateSpecificTreeRefresher().PostRefreshMessages(EntityToken); SetSaveStatus(true); }
private IEnumerable <Element> getFormSubmitHandlerElements(ElementProviderContext context, FormFolderEntityToken folder) { var definition = DefinitionsFacade.GetDefinition(folder.FormName); if (definition == null) { yield break; } foreach (var handler in definition.SubmitHandlers) { var elementHandle = context.CreateElementHandle(new FormSubmitHandlerEntityToken(handler.GetType(), folder.FormName, handler.Name)); var handlerElement = new Element(elementHandle) { VisualData = new ElementVisualizedData { Label = handler.Name, ToolTip = handler.Name, HasChildren = false, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var editWorkflowAttribute = handler.GetType().GetCustomAttributes(true).OfType <EditWorkflowAttribute>().FirstOrDefault(); if (editWorkflowAttribute != null) { var editActionToken = new WorkflowActionToken(editWorkflowAttribute.EditWorkflowType); handlerElement.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: " + handler.Name, typeof(DeleteSubmitHandlerActionToken)); handlerElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete", ToolTip = "Delete", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-delete"), ActionLocation = ActionLocation } }); yield return(handlerElement); } }
public override void OnFinish(object sender, EventArgs e) { var modelReference = (IModelReference)((DataEntityToken)EntityToken).Data; var newName = GetBinding <string>("Name"); var definition = DefinitionsFacade.GetDefinition(modelReference.Name); DefinitionsFacade.Copy(definition, newName); LocalizationsFacade.CopyNamespace(Localization.KeyPrefix + "." + modelReference.Name, Localization.KeyPrefix + "." + newName, Localization.ResourceSet); CreateSpecificTreeRefresher().PostRefreshMessages(new FormElementProviderEntityToken()); }
private IEnumerable <Element> getWizardStepElements(ElementProviderContext context, FormFolderEntityToken folder) { var wizard = (DynamicWizardDefinition)DefinitionsFacade.GetDefinition(folder.FormName); if (wizard == null) { yield break; } foreach (var step in wizard.Model.Steps) { var elementHandle = context.CreateElementHandle(new FormWizardStepEntityToken(wizard.Name, step.Name)); var wizardStepElement = new Element(elementHandle) { VisualData = new ElementVisualizedData { Label = step.Name, ToolTip = step.Name, HasChildren = false, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var editActionToken = new WorkflowActionToken(typeof(EditWizardStepWorkflow)); wizardStepElement.AddAction(new ElementAction(new ActionHandle(editActionToken)) { VisualData = new ActionVisualizedData { Label = "Edit step", ToolTip = "Edit step", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); var deleteActionToken = new ConfirmWorkflowActionToken("Delete step", typeof(DeleteFormWizardStepActionToken)); wizardStepElement.AddAction(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete step", ToolTip = "Delete step", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-delete"), ActionLocation = ActionLocation } }); yield return(wizardStepElement); } }
public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { var modelReference = (IModelReference)((DataEntityToken)entityToken).Data; var definition = DefinitionsFacade.GetDefinition(modelReference.Name); DefinitionsFacade.Delete(definition); LocalizationsFacade.DeleteNamespace(Localization.GenerateKey(modelReference.Name)); var ns = modelReference.Name.Substring(0, modelReference.Name.LastIndexOf(".")); new SpecificTreeRefresher(flowControllerServicesContainer).PostRefreshMessages(new NamespaceFolderEntityToken(typeof(FormBuilderElementProvider).Name, ns)); return(null); }
public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { var token = (FormSubmitHandlerEntityToken)entityToken; var definition = DefinitionsFacade.GetDefinition(token.FormName); var handler = definition.SubmitHandlers.Single(h => h.Name == token.Name); definition.SubmitHandlers.Remove(handler); handler.Delete(definition); var serializer = XmlDefinitionSerializer.GetSerializer(definition.Name); serializer.Save(definition); new ParentTreeRefresher(flowControllerServicesContainer).PostRefreshMessages(entityToken); return(null); }
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); }
public IEnumerable <ElementAction> Provide(EntityToken entityToken) { var dataEntityToken = (DataEntityToken)entityToken; var modelReference = dataEntityToken.Data as IModelReference; if (modelReference == null) { yield break; } var def = DefinitionsFacade.GetDefinition(modelReference.Name); if (def == null) { yield break; } if (def is DynamicFormDefinition) { var editActionToken = new WorkflowActionToken(typeof(EditFormWorkflow)); yield return(new ElementAction(new ActionHandle(editActionToken)) { TagValue = "edit", VisualData = new ActionVisualizedData { Label = "Edit", ToolTip = "Edit", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); var editRenderingLayoutActionToken = new WorkflowActionToken(typeof(EditFormRenderingLayoutWorkflow)); yield return(new ElementAction(new ActionHandle(editRenderingLayoutActionToken)) { VisualData = new ActionVisualizedData { Label = "Edit rendering layout", ToolTip = "Edit rendering layout", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); } if (def is DynamicWizardDefinition) { var editActionToken = new WorkflowActionToken(typeof(EditFormWizardWorkflow)); yield return(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: " + modelReference.Name, typeof(DeleteFormActionToken)); yield return(new ElementAction(new ActionHandle(deleteActionToken)) { VisualData = new ActionVisualizedData { Label = "Delete", ToolTip = "Delete", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-delete"), ActionLocation = ActionLocation } }); var copyActionToken = new WorkflowActionToken(typeof(CopyFormWorkflow)); yield return(new ElementAction(new ActionHandle(copyActionToken)) { VisualData = new ActionVisualizedData { Label = "Copy", ToolTip = "Copy", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); }
public IEnumerable <Element> Provide(ElementProviderContext context, EntityToken token) { var modelReference = (IModelReference)((DataEntityToken)token).Data; if (modelReference == null) { yield break; } var def = DefinitionsFacade.GetDefinition(modelReference.Name); if (def == null) { yield break; } if (def is DynamicFormDefinition) { var fieldsElementHandle = context.CreateElementHandle(new FormFolderEntityToken(modelReference.Name, "Fields")); var fieldsElement = new Element(fieldsElementHandle) { VisualData = new ElementVisualizedData { Label = "Fields", ToolTip = "Fields", HasChildren = true, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var addActionToken = new WorkflowActionToken(typeof(AddFormFieldWorkflow), new[] { PermissionType.Add }); fieldsElement.AddAction(new ElementAction(new ActionHandle(addActionToken)) { VisualData = new ActionVisualizedData { Label = "Add field", ToolTip = "Add field", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); var url = String.Format("InstalledPackages/CompositeC1Contrib.FormBuilder.Dynamic/SortFormFields.aspx?formName={0}", modelReference.Name); var sortActionToken = new UrlActionToken("Sort fields", UrlUtils.ResolveAdminUrl(url), new[] { PermissionType.Edit }); fieldsElement.AddAction(new ElementAction(new ActionHandle(sortActionToken)) { VisualData = new ActionVisualizedData { Label = "Sort fields", ToolTip = "Sort fields", Icon = ResourceHandle.BuildIconFromDefaultProvider("cut"), ActionLocation = ActionLocation } }); yield return(fieldsElement); } if (def is DynamicWizardDefinition) { var stepsFolderElementHandle = context.CreateElementHandle(new FormFolderEntityToken(modelReference.Name, "Steps")); var stepsFolderElement = new Element(stepsFolderElementHandle) { VisualData = new ElementVisualizedData { Label = "Steps", ToolTip = "Steps", HasChildren = true, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var addActionToken = new WorkflowActionToken(typeof(AddWizardStepWorkflow), new[] { PermissionType.Add }); stepsFolderElement.AddAction(new ElementAction(new ActionHandle(addActionToken)) { VisualData = new ActionVisualizedData { Label = "Add step", ToolTip = "Add step", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); var url = String.Format("InstalledPackages/CompositeC1Contrib.FormBuilder.Dynamic/SortWizardSteps.aspx?wizardName={0}", modelReference.Name); var sortActionToken = new UrlActionToken("Sort fields", UrlUtils.ResolveAdminUrl(url), new[] { PermissionType.Edit }); stepsFolderElement.AddAction(new ElementAction(new ActionHandle(sortActionToken)) { VisualData = new ActionVisualizedData { Label = "Sort steps", ToolTip = "Sort steps", Icon = ResourceHandle.BuildIconFromDefaultProvider("cut"), ActionLocation = ActionLocation } }); yield return(stepsFolderElement); } var submitHandlersElementHandle = context.CreateElementHandle(new FormFolderEntityToken(modelReference.Name, "SubmitHandlers")); var submitHandlersElement = new Element(submitHandlersElementHandle) { VisualData = new ElementVisualizedData { Label = "Submit handlers", ToolTip = "Submit handlers", HasChildren = true, Icon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-closed-root"), OpenedIcon = ResourceHandle.BuildIconFromDefaultProvider("localization-element-opened-root") } }; var submitHandlerActionToken = new WorkflowActionToken(typeof(AddSubmitHandlerWorkflow), new[] { PermissionType.Add }); submitHandlersElement.AddAction(new ElementAction(new ActionHandle(submitHandlerActionToken)) { VisualData = new ActionVisualizedData { Label = "Add submit handler", ToolTip = "Add submit handler", Icon = ResourceHandle.BuildIconFromDefaultProvider("generated-type-data-edit"), ActionLocation = ActionLocation } }); yield return(submitHandlersElement); }
private IDynamicDefinition GetDefinition() { var token = (FormSubmitHandlerEntityToken)EntityToken; return(DefinitionsFacade.GetDefinition(token.FormName)); }