diff --git a/downloads/Sitecore 9.1/Sitecore Forms Extensions for Sitecore 9.1-2.3.zip b/downloads/Sitecore 9.1/Sitecore Forms Extensions for Sitecore 9.1-2.3.zip index c473ed1..6450153 100644 Binary files a/downloads/Sitecore 9.1/Sitecore Forms Extensions for Sitecore 9.1-2.3.zip and b/downloads/Sitecore 9.1/Sitecore Forms Extensions for Sitecore 9.1-2.3.zip differ diff --git a/sitecorepackagedefinition/Sitecore Forms Extensions.xml b/sitecorepackagedefinition/Sitecore Forms Extensions.xml index 751cd54..4f4734c 100644 --- a/sitecorepackagedefinition/Sitecore Forms Extensions.xml +++ b/sitecorepackagedefinition/Sitecore Forms Extensions.xml @@ -242,6 +242,7 @@ Copyright (c) 2017-2019 Bart Verdonck /core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/MessagesDataSource/{108889BA-B6E0-41F6-B0B6-6237C21E40AB}/invariant/0 /core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/SettingsForm/{B956C08E-595E-4D52-B405-30BCE60F4F69}/invariant/0 /core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/SettingsForm/FieldIdentifyContactId/{3834D277-EAB8-4C5A-BADF-1C44390C7D60}/invariant/0 + /core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/SettingsForm/IdentifierSource/{E542EC0E-D42B-41E6-ACCF-03920B23C997}/invariant/0 /core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/Stylesheet/{9F27A46D-4B0E-4379-BBF2-73DA342477A2}/invariant/0 /core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/UnauthorizedErrorMessage/{B7C62CCD-D3E2-457E-8850-81175C0C4AEC}/invariant/0 /core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/ValueNotInListText/{F9E8FA8A-D861-4B4B-A3D6-19398B521EA5}/invariant/0 diff --git a/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactAction.cs b/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactAction.cs index fb70e8d..31f0f37 100644 --- a/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactAction.cs +++ b/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactAction.cs @@ -40,7 +40,7 @@ protected override bool Execute(IdentifyContactData data, FormSubmitContext form } var field = GetFieldById(data.FieldIdentifyContactId.Value, formSubmitContext.Fields); - var contact = xDbContactFactory.CreateContact(GetValue(field)); + var contact = xDbContactFactory.CreateContact(GetValue(field), data.IdentifierSource); if (string.IsNullOrEmpty(contact.IdentifierValue)) return true; xDbService.IdentifyCurrent(contact); diff --git a/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactData.cs b/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactData.cs index 3edc58c..f3ebf60 100644 --- a/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactData.cs +++ b/src/Feature/FormsExtensions/code/SubmitActions/IdentifyContact/IdentifyContactData.cs @@ -5,5 +5,7 @@ namespace Feature.FormsExtensions.SubmitActions.IdentifyContact public class IdentifyContactData { public Guid? FieldIdentifyContactId { get; set; } + + public string IdentifierSource { get; set; } = "email"; } } \ No newline at end of file diff --git a/src/Feature/FormsExtensions/code/XDb/FormsExtensionsXDbContactFactory.cs b/src/Feature/FormsExtensions/code/XDb/FormsExtensionsXDbContactFactory.cs index 5054b21..977fd06 100644 --- a/src/Feature/FormsExtensions/code/XDb/FormsExtensionsXDbContactFactory.cs +++ b/src/Feature/FormsExtensions/code/XDb/FormsExtensionsXDbContactFactory.cs @@ -4,12 +4,12 @@ namespace Feature.FormsExtensions.XDb { public class FormsExtensionsXDbContactFactory : IXDbContactFactory { - public IXDbContact CreateContact(string identifierValue) + public IXDbContact CreateContact(string identifierValue, string identifierSource = null) { - return CreateContactWithEmail(identifierValue); + return CreateContactWithEmail(identifierValue, identifierSource); } - public IXDbContactWithEmail CreateContactWithEmail(string email) + public IXDbContactWithEmail CreateContactWithEmail(string email, string identifierSource = null) { return new FormsExtensionsXDbContact(email); } diff --git a/src/Feature/FormsExtensions/code/XDb/IXDbContactFactory.cs b/src/Feature/FormsExtensions/code/XDb/IXDbContactFactory.cs index 7a97132..a23a84d 100644 --- a/src/Feature/FormsExtensions/code/XDb/IXDbContactFactory.cs +++ b/src/Feature/FormsExtensions/code/XDb/IXDbContactFactory.cs @@ -4,8 +4,8 @@ namespace Feature.FormsExtensions.XDb { public interface IXDbContactFactory { - IXDbContact CreateContact(string identifierValue); + IXDbContact CreateContact(string identifierValue, string identifierSource = null); - IXDbContactWithEmail CreateContactWithEmail(string email); + IXDbContactWithEmail CreateContactWithEmail(string email, string identifierSource = null); } } \ No newline at end of file diff --git a/src/Feature/FormsExtensions/code/XDb/Model/FormsExtensionsXDbContact.cs b/src/Feature/FormsExtensions/code/XDb/Model/FormsExtensionsXDbContact.cs index 6ec1966..bb901d3 100644 --- a/src/Feature/FormsExtensions/code/XDb/Model/FormsExtensionsXDbContact.cs +++ b/src/Feature/FormsExtensions/code/XDb/Model/FormsExtensionsXDbContact.cs @@ -2,7 +2,7 @@ { public class FormsExtensionsXDbContact : IXDbContactWithEmail { - public string IdentifierSource => "email"; + public string IdentifierSource { get; protected set; } = "email"; public string IdentifierValue => Email; public string Email { get; set; } @@ -14,5 +14,11 @@ public FormsExtensionsXDbContact(string address) { Email = address; } + + public FormsExtensionsXDbContact(string address, string identifierSource) + { + Email = address; + IdentifierSource = identifierSource; + } } } \ No newline at end of file diff --git a/src/Feature/FormsExtensions/code/sitecore/shell/client/Applications/FormsBuilder/Layouts/Actions/IdentifyContact.js b/src/Feature/FormsExtensions/code/sitecore/shell/client/Applications/FormsBuilder/Layouts/Actions/IdentifyContact.js index fd67e51..151af12 100644 --- a/src/Feature/FormsExtensions/code/sitecore/shell/client/Applications/FormsBuilder/Layouts/Actions/IdentifyContact.js +++ b/src/Feature/FormsExtensions/code/sitecore/shell/client/Applications/FormsBuilder/Layouts/Actions/IdentifyContact.js @@ -26,10 +26,12 @@ speak.pageCode(["underscore"], function (_) { return { + identifierSourceList: [{ name: "email", value: "email" }, { name: "ListManager", value: "ListManager" }, { name: "xDB.Tracker", value: "xDB.Tracker" } ], initialized: function () { this.on({ "loaded": this.loadDone }, this); this.Fields = getFields(); this.SettingsForm.FieldIdentifyContactId.on("change:SelectedItem", this.validate, this); + this.SettingsForm.IdentifierSource.on("change:SelectedItem", this.validate, this); if (parentApp) { parentApp.loadDone(this, this.HeaderTitle.Text, this.HeaderSubtitle.Text); @@ -40,6 +42,9 @@ if (this.SettingsForm.FieldIdentifyContactId.SelectedValue != "") { parentApp.setSelectability(this, true); } + if (this.SettingsForm.IdentifierSource.SelectedValue != "") { + parentApp.setSelectability(this, true); + } }, setEmailFieldData: function (listComponent, data, currentValue) { var items = data.slice(0); @@ -56,14 +61,31 @@ listComponent.SelectedValue = currentValue; } }, + setIdentifierSourceData: function (listComponent, data, currentValue) { + var items = data.slice(0); + if (currentValue && !_.findWhere(items, { itemId: currentValue })) { + var currentField = { + value: currentValue, + name: currentValue + " - value not in the selection list" + }; + items.splice(1, 0, currentField); + listComponent.DynamicData = items; + $(listComponent.el).find('option').eq(1).css("font-style", "italic"); + } else { + listComponent.DynamicData = items; + listComponent.SelectedValue = currentValue; + } + }, loadDone: function (parameters) { this.Parameters = parameters || {}; this.SettingsForm.setFormData(this.Parameters); this.setEmailFieldData(this.SettingsForm.FieldIdentifyContactId, getFields(), this.Parameters["fieldIdentifyContactId"]); + this.setIdentifierSourceData(this.SettingsForm.IdentifierSource, this.identifierSourceList, this.Parameters["identifierSource"]); this.validate(); }, getData: function () { this.Parameters["fieldIdentifyContactId"] = this.SettingsForm.FieldIdentifyContactId.SelectedValue; + this.Parameters["identifierSource"] = this.SettingsForm.IdentifierSource.SelectedValue; return this.Parameters; } };