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;
}
};