Skip to content

Instantly share code, notes, and snippets.

@sitefinitySDK
Last active November 30, 2022 14:35
SF_10.1, SF_10.2, SF_11.0, SF_11.1, SF_11.2, SF_12.0, SF_12.1, SF_12.2, SF_13.0, SF_13.1, SF_13.2, SF_13.3, SF_14.0, SF_14.1, SF_14.2, SF_14.3 - https://docs.sitefinity.com/for-developers-create-forms
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web.UI;
using Telerik.Sitefinity.Forms.Model;
using Telerik.Sitefinity.Modules.Forms;
namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Modules.Forms
{
public partial class FormsSnippets
{
public static void CreateForm(Guid formId, string formName, string formTitle, string formSuccessMessage, Dictionary<Control, string> formControls)
{
var formManager = FormsManager.GetManager();
var form = formManager.GetForms().Where(f => f.Id == formId).SingleOrDefault();
Guid siblingId = Guid.Empty;
if (form == null)
{
form = formManager.CreateForm(formName, formId);
form.Title = formTitle;
form.UrlName = Regex.Replace(form.Name.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
form.SuccessMessage = formSuccessMessage;
var draft = formManager.EditForm(form.Id);
var master = formManager.Lifecycle.CheckOut(draft);
if (master != null)
{
if (formControls != null && formControls.Count > 0)
{
int controlsCounter = 0;
foreach (var control in formControls)
{
control.Key.ID = string.Format(formName + "_C" + controlsCounter.ToString().PadLeft(3, '0'));
controlsCounter++;
var formControl = formManager.CreateControl<FormDraftControl>(control.Key, control.Value);
formControl.SiblingId = siblingId;
formControl.Caption = control.Key.GetType().Name;
siblingId = formControl.Id;
master.Controls.Add(formControl);
}
}
master = formManager.Lifecycle.CheckIn(master);
formManager.Lifecycle.Publish(master);
formManager.SaveChanges();
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment