Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
1 change: 1 addition & 0 deletions sitecorepackagedefinition/Sitecore Forms Extensions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ Copyright (c) 2017-2019 Bart Verdonck</Readme>
<x-item>/core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/MessagesDataSource/{108889BA-B6E0-41F6-B0B6-6237C21E40AB}/invariant/0</x-item>
<x-item>/core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/SettingsForm/{B956C08E-595E-4D52-B405-30BCE60F4F69}/invariant/0</x-item>
<x-item>/core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/SettingsForm/FieldIdentifyContactId/{3834D277-EAB8-4C5A-BADF-1C44390C7D60}/invariant/0</x-item>
<x-item>/core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/SettingsForm/IdentifierSource/{E542EC0E-D42B-41E6-ACCF-03920B23C997}/invariant/0</x-item>
<x-item>/core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/Stylesheet/{9F27A46D-4B0E-4379-BBF2-73DA342477A2}/invariant/0</x-item>
<x-item>/core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/UnauthorizedErrorMessage/{B7C62CCD-D3E2-457E-8850-81175C0C4AEC}/invariant/0</x-item>
<x-item>/core/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions/IdentifyContact/PageSettings/ValueNotInListText/{F9E8FA8A-D861-4B4B-A3D6-19398B521EA5}/invariant/0</x-item>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ namespace Feature.FormsExtensions.SubmitActions.IdentifyContact
public class IdentifyContactData
{
public Guid? FieldIdentifyContactId { get; set; }

public string IdentifierSource { get; set; } = "email";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
4 changes: 2 additions & 2 deletions src/Feature/FormsExtensions/code/XDb/IXDbContactFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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; }

Expand All @@ -14,5 +14,11 @@ public FormsExtensionsXDbContact(string address)
{
Email = address;
}

public FormsExtensionsXDbContact(string address, string identifierSource)
{
Email = address;
IdentifierSource = identifierSource;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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;
}
};
Expand Down