public override SystemItem FindSystemItem(string id) { Umbraco.Forms.Data.Storage.FormStorage fs = new Umbraco.Forms.Data.Storage.FormStorage(); var form = fs.GetForm(Guid.Parse(id)); if (form != null) { SystemItem sys = new SystemItem(); sys.HasChildren = false; sys.Icon = "icon_form.gif"; sys.ItemId = new ItemIdentifier(id, this.Id); sys.Name = form.Name; return(sys); } return(null); }
public override List <SystemItem> AvailableSystemItems() { List <SystemItem> items = new List <SystemItem>(); Umbraco.Forms.Data.Storage.FormStorage fs = new Umbraco.Forms.Data.Storage.FormStorage(); foreach (var f in fs.GetAllForms()) { SystemItem item = new SystemItem(); item.ItemId = new ItemIdentifier(f.Id.ToString(), this.Id); item.Name = f.Name; item.Description = f.Name; item.Icon = "icon_form.gif"; item.HasChildren = false; items.Add(item); } return(items); }
public override Item HandleExtract(Item item) { var umbracoform = (UmbracoForm)item; //migrate workflowsettings if (umbracoform.WorkflowSettings.Count > 0) { using (var wfs = new Umbraco.Forms.Data.Storage.WorkflowStorage()) { foreach (var workflowSetting in umbracoform.WorkflowSettings) { var workflow = wfs.GetWorkflow(workflowSetting.Key); if (workflow != null) { workflow.Settings = ReplaceSettings(workflow.Settings, workflowSetting.Value) as Dictionary <string, string>; wfs.UpdateWorkflow(workflow); } } } } //migrate datasource settings if (umbracoform.DataSourceId != Guid.Empty) { using (var dss = new Umbraco.Forms.Data.Storage.DataSourceStorage()) { var datasource = dss.GetDataSource(umbracoform.DataSourceId); if (datasource != null) { datasource.Settings = ReplaceSettings(datasource.Settings, umbracoform.DataSourceSettings) as Dictionary <string, string>; dss.UpdateDataSource(datasource); } } } //migrate prevaluesource settings if (umbracoform.PrevalueSourceSettings.Count > 0) { using (var pvs = new Umbraco.Forms.Data.Storage.PrevalueSourceStorage()) { foreach (var prevalueSettings in umbracoform.PrevalueSourceSettings) { var prevalueSource = pvs.GetPrevalueSource(prevalueSettings.Key); if (prevalueSource != null) { prevalueSource.Settings = ReplaceSettings(prevalueSource.Settings, prevalueSettings.Value) as Dictionary <string, string>; pvs.UpdatePreValueSource(prevalueSource); } } } } //migrate field and form settings using (var fs = new Umbraco.Forms.Data.Storage.FormStorage()) { var form = fs.GetForm(Guid.Parse(umbracoform.ItemId.Id)); if (form != null) { //handle submit to node id if (umbracoform.GoToPageOnSubmitId != Guid.Empty) { form.GoToPageOnSubmit = ExecutionContext.DatabasePersistence.GetNodeId(umbracoform.GoToPageOnSubmitId); } if (umbracoform.FieldSettings.Count > 0) { foreach (var fieldSetting in umbracoform.FieldSettings) { var field = form.AllFields.Where(x => x.Id == fieldSetting.Key).FirstOrDefault(); if (field != null) { field.Settings = ReplaceSettings(field.Settings, fieldSetting.Value) as Dictionary <string, string>; } } fs.UpdateForm(form); } } } return(item); }
public override Item HandlePack(ItemIdentifier id) { var fs = new Umbraco.Forms.Data.Storage.FormStorage(); var form = fs.GetForm(Guid.Parse(id.Id)); if (form == null) { return(null); } var item = new UmbracoForm(); item.ItemId = id; item.Name = form.Name; //Handle forms and fields var formPath = Umbraco.Forms.Core.Configuration.ContourFolder + "/data/forms/" + id.Id + ".json"; item.Resources.Add(formPath); //handle submit to node id if (form.GoToPageOnSubmit > 0) { item.GoToPageOnSubmitId = ExecutionContext.DatabasePersistence.GetUniqueId(form.GoToPageOnSubmit); item.Dependencies.Add(item.GoToPageOnSubmitId.ToString(), ItemProviders.ProviderIDCollection.documentItemProviderGuid); } //Parse field settings and field prevalue source settings foreach (var field in form.AllFields) { var parsed = ParseSettings(field.FieldType.Settings(), field.Settings, item); if (parsed.Count > 0) { item.FieldSettings.Add(field.Id, parsed); } if (field.PreValueSourceId != Guid.Empty && !item.PrevalueSourceSettings.ContainsKey(field.PreValueSourceId)) { var prvParsed = ParseSettings(field.PreValueSource.Type.Settings(), field.PreValueSource.Settings, item); if (prvParsed.Count > 0) { item.PrevalueSourceSettings.Add(field.PreValueSourceId, prvParsed); } item.Resources.Add(Umbraco.Forms.Core.Configuration.ContourFolder + "/data/prevalueSources/" + field.PreValueSourceId + ".json"); } } //parse data source settings if (form.HasDataSource()) { using (var dss = new Umbraco.Forms.Data.Storage.DataSourceStorage()) { var dataSource = dss.GetDataSource(form.DataSource.Id); if (dataSource != null) { var dsParsed = ParseSettings(dataSource.Type.Settings(), dataSource.Settings, item); if (dsParsed.Count > 0) { item.DataSourceSettings = dsParsed; } //add as file to item item.Resources.Add(Umbraco.Forms.Core.Configuration.ContourFolder + "/data/datasources/" + form.DataSource.Id.ToString() + ".json"); } } } //Parse workflow settings if (form.WorkflowIds.Count > 0) { using (var wfs = new Umbraco.Forms.Data.Storage.WorkflowStorage()) { foreach (var wfId in form.WorkflowIds) { var workflow = wfs.GetWorkflow(wfId); if (workflow != null) { var wfParsed = ParseSettings(workflow.Type.Settings(), workflow.Settings, item); if (wfParsed.Count > 0) { item.WorkflowSettings.Add(wfId, wfParsed); } //add file to item item.Resources.Add(Umbraco.Forms.Core.Configuration.ContourFolder + "/data/workflows/" + wfId.ToString() + ".json"); } } } } return(item); }
public void Migrate(string connString) { var sql = DataLayerHelper.CreateSqlHelper(connString); // fix RecordFields where DataType is set to 'String' but data is stored as different type FixDataTypes(sql); using (var fs = new FormStorage(sql)) { foreach (var form in fs.GetAllForms(false)) { Umbraco.Forms.Core.Form v4Form; try { // Check for an existing form with that GUID using (var v4Fs = new Umbraco.Forms.Data.Storage.FormStorage()) v4Form = v4Fs.GetForm(form.Id); } catch (NullReferenceException) { // Form hasn't been imported, import it now v4Form = new Umbraco.Forms.Core.Form(); v4Form.Id = form.Id; v4Form.Name = form.Name; v4Form.DisableDefaultStylesheet = form.DisableDefaultStylesheet; v4Form.FieldIndicationType = (FormFieldIndication)System.Enum.Parse(typeof(FormFieldIndication), ((int)form.FieldIndicationType).ToString()); v4Form.GoToPageOnSubmit = form.GoToPageOnSubmit; v4Form.HideFieldValidation = form.HideFieldValidation; v4Form.Indicator = form.Indicator; v4Form.InvalidErrorMessage = form.InvalidErrorMessage; v4Form.ManualApproval = form.ManualApproval; v4Form.MessageOnSubmit = form.MessageOnSubmit; v4Form.RequiredErrorMessage = form.RequiredErrorMessage; v4Form.ShowValidationSummary = form.ShowValidationSummary; v4Form.StoreRecordsLocally = form.StoreRecordsLocally; v4Form.XPathOnSubmit = form.XPathOnSubmit; v4Form.NextLabel = "Next"; v4Form.PrevLabel = "Previous"; v4Form.SubmitLabel = "Submit"; foreach (var page in form.Pages) { var v4Page = new Umbraco.Forms.Core.Page(); v4Page.Caption = page.Caption; foreach (var fieldset in page.FieldSets) { var v4Fieldset = new Umbraco.Forms.Core.FieldSet(); v4Fieldset.Caption = fieldset.Caption; var v4Container = new Umbraco.Forms.Core.FieldsetContainer(); v4Container.Width = 12; foreach (var field in fieldset.Fields) { var v4Field = new Umbraco.Forms.Core.Field(); v4Field.Id = field.Id; v4Field.Caption = field.Caption; v4Field.ToolTip = field.ToolTip; v4Field.FieldTypeId = field.FieldTypeId; v4Field.InvalidErrorMessage = field.InvalidErrorMessage; v4Field.Mandatory = field.Mandatory; v4Field.RequiredErrorMessage = field.RequiredErrorMessage; v4Field.RegEx = field.RegEx; using (var pvs = new PreValueStorage(sql)) { var prevalues = new List <string>(); foreach (var prevalue in pvs.GetAllPreValues(field).OrderBy(x => x.SortOrder)) { prevalues.Add(prevalue.Value); } v4Field.PreValues = prevalues; } v4Field.Condition = new Core.FieldCondition(); v4Field.Condition.Enabled = field.Condition.Enabled; v4Field.Condition.ActionType = (Core.FieldConditionActionType)System.Enum.Parse(typeof(Core.FieldConditionActionType), ((int)field.Condition.ActionType).ToString());; v4Field.Condition.LogicType = (Core.FieldConditionLogicType)System.Enum.Parse(typeof(Core.FieldConditionLogicType), ((int)field.Condition.LogicType).ToString());; var rules = new List <Core.FieldConditionRule>(); foreach (var rule in field.Condition.Rules) { var v4Rule = new Core.FieldConditionRule(); v4Rule.Field = rule.Field; v4Rule.Operator = (Core.FieldConditionRuleOperator)System.Enum.Parse(typeof(Core.FieldConditionRuleOperator), ((int)rule.Operator).ToString());; v4Rule.Value = rule.Value; rules.Add(v4Rule); } v4Field.Condition.Rules = rules; using (var ss = new SettingsStorage(sql)) { foreach (var setting in ss.GetSettingsAsList(field.Id)) { v4Field.Settings.Add(setting.Key, setting.Value); } } v4Container.Fields.Add(v4Field); } v4Fieldset.Containers.Add(v4Container); v4Page.FieldSets.Add(v4Fieldset); } v4Form.Pages.Add(v4Page); } using (var s = new Forms.Data.Storage.FormStorage()) { v4Form = s.InsertForm(v4Form); } using (var ws = new WorkflowStorage(sql)) { var wfs = ws.GetAllWorkFlows(form); foreach (var workflow in wfs) { using (var wsv4 = new Forms.Data.Storage.WorkflowStorage()) { var v4Workflow = new Core.Workflow(); v4Workflow.Name = workflow.Name; v4Workflow.Id = workflow.Id; v4Workflow.Type = workflow.Type; v4Workflow.ExecutesOn = (Core.Enums.FormState)System.Enum.Parse(typeof(Core.Enums.FormState), ((int)workflow.ExecutesOn).ToString()); v4Workflow.Form = v4Form.Id; v4Workflow.Settings = workflow.Settings; wsv4.InsertWorkflow(v4Form, v4Workflow); } } } } if (IgnoreRecords) { continue; } // If we're importing data, this could take a while... HttpContext.Current.Server.ScriptTimeout = 90000; // Fix the UFRecordDataString Value field length to be compatible with the old data. FixDataStringLength(sql); // store records using (var rs = new RecordStorage(sql)) { var records = rs.GetAllRecords(form); using (var rs4 = new Forms.Data.Storage.RecordStorage()) { foreach (var r in records) { if (rs4.GetRecordByUniqueId(r.Id) != null) { // Don't import it again. continue; } var v4Record = new Core.Record(); v4Record.Form = v4Form.Id; v4Record.Created = r.Created; v4Record.Updated = r.Updated; v4Record.State = (FormState)r.State; v4Record.CurrentPage = r.currentPage; v4Record.UmbracoPageId = r.umbracoPageId; v4Record.IP = r.IP; v4Record.MemberKey = r.MemberKey; // field values - added in this second step as all values are otherwise deleted and reinserted which is SLOW v4Record.RecordFields = new Dictionary <Guid, Core.RecordField>(); foreach (var kvp in r.RecordFields) { var rf = kvp.Value; v4Record.RecordFields.Add(kvp.Key, new Core.RecordField { Key = rf.Key, FieldId = rf.FieldId, Field = GetFormField(v4Form, rf.FieldId), // field needs to be set correctly, otherwise UFRecordData doesn't get written DataType = (Core.FieldDataType)rf.DataType, DataTypeAlias = rf.DataTypeAlias, Values = rf.Values }); } v4Record.RecordData = v4Record.GenerateRecordDataAsJson(); rs4.InsertRecord(v4Record, v4Form); // reset DateTime fields to original value, InsertRecord sets them to DateTime.Now v4Record.Created = r.Created; v4Record.Updated = r.Updated; rs4.UpdateRecord(v4Record, v4Form); } } } } } }
public override Item HandlePack(ItemIdentifier id) { var fs = new Umbraco.Forms.Data.Storage.FormStorage(); Forms.Core.Form form; var formsDataLocation = GetFormsDataLocation(); try { // If there is no form on the target disk or cache this method raises a System.NullReferenceException // See https://github.com/umbraco/Umbraco.Courier.FormsProvider/issues/3 form = fs.GetForm(Guid.Parse(id.Id)); } catch (Exception ex) { return(null); } if (form == null) { return(null); } var item = new UmbracoForm(); item.ItemId = id; item.Name = form.Name; //Handle forms and fields var formPath = formsDataLocation + "/forms/" + id.Id + ".json"; item.Resources.Add(formPath); //handle submit to node id if (form.GoToPageOnSubmit > 0) { item.GoToPageOnSubmitId = ExecutionContext.DatabasePersistence.GetUniqueId(form.GoToPageOnSubmit); item.Dependencies.Add(item.GoToPageOnSubmitId.ToString(), ItemProviders.ProviderIDCollection.documentItemProviderGuid); } //Parse field settings and field prevalue source settings foreach (var field in form.AllFields) { var parsed = ParseSettings(field.FieldType.Settings(), field.Settings, item); if (parsed.Count > 0) { item.FieldSettings.Add(field.Id, parsed); } if (field.PreValueSourceId != Guid.Empty && !item.PrevalueSourceSettings.ContainsKey(field.PreValueSourceId)) { var prvParsed = ParseSettings(field.PreValueSource.Type.Settings(), field.PreValueSource.Settings, item); if (prvParsed.Count > 0) { item.PrevalueSourceSettings.Add(field.PreValueSourceId, prvParsed); } item.Resources.Add(formsDataLocation + "/prevalueSources/" + field.PreValueSourceId + ".json"); } } //parse data source settings if (form.HasDataSource()) { using (var dss = new Umbraco.Forms.Data.Storage.DataSourceStorage()) { var dataSource = dss.GetDataSource(form.DataSource.Id); if (dataSource != null) { var dsParsed = ParseSettings(dataSource.Type.Settings(), dataSource.Settings, item); if (dsParsed.Count > 0) { item.DataSourceSettings = dsParsed; } //add as file to item item.Resources.Add(formsDataLocation + "/datasources/" + form.DataSource.Id.ToString() + ".json"); } } } //Parse workflow settings if (form.WorkflowIds.Count > 0) { using (var wfs = new Umbraco.Forms.Data.Storage.WorkflowStorage()) { foreach (var wfId in form.WorkflowIds) { var workflow = wfs.GetWorkflow(wfId); if (workflow != null) { var wfParsed = ParseSettings(workflow.Type.Settings(), workflow.Settings, item); if (wfParsed.Count > 0) { item.WorkflowSettings.Add(wfId, wfParsed); } //add file to item item.Resources.Add(formsDataLocation + "/workflows/" + wfId.ToString() + ".json"); } } } } return(item); }