Spaces:
No application file
No application file
/* PluginBundle */ | |
Mautic.matchedFields = function (index, object, integration) { | |
var compoundMauticFields = ['mauticContactId','mauticContactTimelineLink']; | |
if (mQuery('#integration_details_featureSettings_updateDncByDate_0').is(':checked')) { | |
compoundMauticFields.push('mauticContactIsContactableByEmail'); | |
} | |
var integrationField = mQuery('#integration_details_featureSettings_'+object+'Fields_i_' + index).attr('data-value'); | |
var mauticField = mQuery('#integration_details_featureSettings_'+object+'Fields_m_' + index + ' option:selected').val(); | |
if(mQuery('.btn-arrow' + index).parent().attr('data-force-direction') != 1) { | |
if (mQuery.inArray(mauticField, compoundMauticFields) >= 0) { | |
mQuery('.btn-arrow' + index).removeClass('active'); | |
mQuery('#integration_details_featureSettings_' + object + 'Fields_update_mautic' + index + '_0').attr('checked', 'checked'); | |
mQuery('input[name="integration_details[featureSettings][' + object + 'Fields][update_mautic' + index + ']"]').prop('disabled', true).trigger("chosen:updated"); | |
mQuery('.btn-arrow' + index).addClass('disabled'); | |
} | |
else { | |
mQuery('input[name="integration_details[featureSettings][' + object + 'Fields][update_mautic' + index + ']"]').prop('disabled', false).trigger("chosen:updated"); | |
mQuery('.btn-arrow' + index).removeClass('disabled'); | |
} | |
} | |
if (object == 'lead') { | |
var updateMauticField = mQuery('input[name="integration_details[featureSettings]['+object+'Fields][update_mautic' + index + ']"]:checked').val(); | |
} else { | |
var updateMauticField = mQuery('input[name="integration_details[featureSettings]['+object+'Fields][update_mautic_company' + index + ']"]:checked').val(); | |
} | |
Mautic.ajaxActionRequest('plugin:matchFields', {object: object, integration: integration, integrationField : integrationField, mauticField: mauticField, updateMautic : updateMauticField}, function(response) { | |
var theMessage = (response.success) ? '<i class="ri-check-line-circle text-success"></i>' : ''; | |
mQuery('#matched-' + index + "-" + object).html(theMessage); | |
}); | |
}; | |
Mautic.initiateIntegrationAuthorization = function() { | |
mQuery('#integration_details_in_auth').val(1); | |
Mautic.postForm(mQuery('form[name="integration_details"]'), 'loadIntegrationAuthWindow'); | |
}; | |
Mautic.loadIntegrationAuthWindow = function(response) { | |
if (response.newContent) { | |
Mautic.processModalContent(response, '#IntegrationEditModal'); | |
} else { | |
Mautic.stopPageLoadingBar(); | |
Mautic.stopIconSpinPostEvent(); | |
mQuery('#integration_details_in_auth').val(0); | |
if (response.authUrl) { | |
var generator = window.open(response.authUrl, 'integrationauth', 'height=500,width=500'); | |
if (!generator || generator.closed || typeof generator.closed == 'undefined') { | |
alert(mauticLang.popupBlockerMessage); | |
} | |
} | |
} | |
}; | |
Mautic.refreshIntegrationForm = function() { | |
var opener = window.opener; | |
if(opener) { | |
var form = opener.mQuery('form[name="integration_details"]'); | |
if (form.length) { | |
var action = form.attr('action'); | |
if (action) { | |
opener.Mautic.startModalLoadingBar('#IntegrationEditModal'); | |
opener.Mautic.loadAjaxModal('#IntegrationEditModal', action); | |
} | |
} | |
} | |
window.close() | |
}; | |
Mautic.integrationOnLoad = function(container, response) { | |
if (response && response.name) { | |
var integration = '.integration-' + response.name; | |
if (response.enabled) { | |
mQuery(integration).removeClass('integration-disabled'); | |
} else { | |
mQuery(integration).addClass('integration-disabled'); | |
} | |
} else { | |
Mautic.filterIntegrations(); | |
} | |
mQuery('[data-toggle="tooltip"]').tooltip(); | |
}; | |
Mautic.integrationConfigOnLoad = function(container) { | |
if (mQuery('.fields-container select.integration-field').length) { | |
var selects = mQuery('.fields-container select.integration-field'); | |
selects.on('change', function() { | |
var select = mQuery(this), | |
newValue = select.val(), | |
previousValue = select.attr('data-value'); | |
select.attr('data-value', newValue); | |
var groupSelects = mQuery(this).closest('.fields-container').find('select.integration-field').not(select); | |
// Enable old value | |
if (previousValue) { | |
mQuery('option[value="' + previousValue + '"]', groupSelects).each(function() { | |
if (!mQuery(this).closest('select').prop('disabled')) { | |
mQuery(this).prop('disabled', false); | |
mQuery(this).removeAttr('disabled'); | |
} | |
}); | |
} | |
if (newValue) { | |
mQuery('option[value="' + newValue + '"]', groupSelects).each(function() { | |
if (!mQuery(this).closest('select').prop('disabled')) { | |
mQuery(this).prop('disabled', true); | |
mQuery(this).attr('disabled', 'disabled'); | |
} | |
}); | |
} | |
groupSelects.each(function() { | |
mQuery(this).trigger('chosen:updated'); | |
}); | |
}); | |
selects.each(function() { | |
if (!mQuery(this).closest('.field-container').hasClass('hide')) { | |
mQuery(this).trigger('change'); | |
} | |
}); | |
} | |
}; | |
Mautic.filterIntegrations = function(update) { | |
var filter = mQuery('#integrationFilter').val(); | |
if (update) { | |
mQuery.ajax({ | |
url: mauticAjaxUrl, | |
type: "POST", | |
data: "action=plugin:setIntegrationFilter&plugin=" + filter | |
}); | |
} | |
//activate shuffles | |
if (mQuery('.native-integrations').length) { | |
//give a slight delay in order for images to load so that shuffle starts out with correct dimensions | |
setTimeout(function () { | |
var Shuffle = window.Shuffle, | |
element = document.querySelector('.native-integrations'), | |
shuffleOptions = { | |
itemSelector: '.shuffle-item' | |
}; | |
// Using global variable to make it available outside of the scope of this function | |
window.nativeIntegrationsShuffleInstance = new Shuffle(element, shuffleOptions); | |
window.nativeIntegrationsShuffleInstance.filter(function($el) { | |
if (filter) { | |
return mQuery($el).hasClass('plugin' + filter); | |
} else { | |
// Shuffle.js has a bug. It hides the first item when we reset the filter. | |
// This fixes it. | |
mQuery(shuffleOptions.itemSelector).first().css('transform', ''); | |
return true; | |
} | |
}); | |
// Update shuffle on sidebar minimize/maximize | |
mQuery("html") | |
.on("fa.sidebar.minimize", function() { | |
setTimeout(function() { | |
window.nativeIntegrationsShuffleInstance.update(); | |
}, 1000); | |
}) | |
.on("fa.sidebar.maximize", function() { | |
setTimeout(function() { | |
window.nativeIntegrationsShuffleInstance.update(); | |
}, 1000); | |
}); | |
// This delay is needed so that the tab has time to render and the sizes are correctly calculated | |
mQuery('#plugin-nav-tabs a').click(function () { | |
setTimeout(function() { | |
window.nativeIntegrationsShuffleInstance.update(); | |
}, 500); | |
}); | |
}, 500); | |
} | |
}; | |
Mautic.getIntegrationLeadFields = function (integration, el, settings) { | |
if (typeof settings == 'undefined') { | |
settings = {}; | |
} | |
settings.integration = integration; | |
settings.object = 'lead'; | |
Mautic.getIntegrationFields(settings, 1, el); | |
}; | |
Mautic.getIntegrationCompanyFields = function (integration, el, settings) { | |
if (typeof settings == 'undefined') { | |
settings = {}; | |
} | |
settings.integration = integration; | |
settings.object = 'company'; | |
Mautic.getIntegrationFields(settings, 1, el); | |
}; | |
Mautic.getIntegrationFields = function(settings, page, el) { | |
var object = settings.object ? settings.object : 'lead'; | |
var fieldsTab = ('lead' === object) ? '#fields-tab' : '#'+object+'-fields-container'; | |
if (el && mQuery(el).is('input')) { | |
Mautic.activateLabelLoadingIndicator(mQuery(el).attr('id')); | |
var namePrefix = mQuery(el).attr('name').split('[')[0]; | |
if ('integration_details' !== namePrefix) { | |
var nameParts = mQuery(el).attr('name').match(/\[.*?\]+/g); | |
nameParts = nameParts.slice(0, -1); | |
settings.prefix = namePrefix + nameParts.join('') + "[" + object + "Fields]"; | |
} | |
} | |
var fieldsContainer = '#'+object+'FieldsContainer'; | |
var inModal = mQuery(fieldsContainer).closest('.modal'); | |
if (inModal) { | |
var modalId = '#'+mQuery(fieldsContainer).closest('.modal').attr('id'); | |
Mautic.startModalLoadingBar(modalId); | |
} | |
Mautic.ajaxActionRequest('plugin:getIntegrationFields', | |
{ | |
page: page, | |
integration: (settings.integration) ? settings.integration : null, | |
settings: settings | |
}, | |
function(response) { | |
if (response.success) { | |
mQuery(fieldsContainer).replaceWith(response.html); | |
Mautic.onPageLoad(fieldsContainer); | |
Mautic.integrationConfigOnLoad(fieldsContainer); | |
if (mQuery(fieldsTab).length) { | |
mQuery(fieldsTab).removeClass('hide'); | |
} | |
} else { | |
if (mQuery(fieldsTab).length) { | |
mQuery(fieldsTab).addClass('hide'); | |
} | |
} | |
if (el) { | |
Mautic.removeLabelLoadingIndicator(); | |
} | |
if (inModal) { | |
Mautic.stopModalLoadingBar(modalId); | |
} | |
}, | |
false, | |
false, | |
"GET" | |
); | |
}; | |
Mautic.getIntegrationConfig = function (el, settings) { | |
Mautic.activateLabelLoadingIndicator(mQuery(el).attr('id')); | |
if (typeof settings == 'undefined') { | |
settings = {}; | |
} | |
settings.name = mQuery(el).attr('name'); | |
var data = {integration: mQuery(el).val(), settings: settings}; | |
mQuery('.integration-campaigns-status').html(''); | |
mQuery('.integration-config-container').html(''); | |
Mautic.ajaxActionRequest('plugin:getIntegrationConfig', data, | |
function (response) { | |
if (response.success) { | |
mQuery('.integration-config-container').html(response.html); | |
Mautic.onPageLoad('.integration-config-container', response); | |
} | |
Mautic.integrationConfigOnLoad('.integration-config-container'); | |
Mautic.removeLabelLoadingIndicator(); | |
}, | |
false, | |
false, | |
"GET" | |
); | |
}; | |
Mautic.getIntegrationCampaignStatus = function (el, settings) { | |
Mautic.activateLabelLoadingIndicator(mQuery(el).attr('id')); | |
if (typeof settings == 'undefined') { | |
settings = {}; | |
} | |
// Extract the name and ID prefixes | |
var prefix = mQuery(el).attr('name').split("[")[0]; | |
settings.name = mQuery('#'+prefix+'_properties_integration').attr('name'); | |
var data = {integration:mQuery('#'+prefix+'_properties_integration').val(),campaign: mQuery(el).val(), settings: settings}; | |
mQuery('.integration-campaigns-status').html(''); | |
mQuery('.integration-campaigns-status').removeClass('hide'); | |
Mautic.ajaxActionRequest('plugin:getIntegrationCampaignStatus', data, | |
function (response) { | |
if (response.success) { | |
mQuery('.integration-campaigns-status').append(response.html); | |
Mautic.onPageLoad('.integration-campaigns-status', response); | |
} | |
Mautic.integrationConfigOnLoad('.integration-campaigns-status'); | |
Mautic.removeLabelLoadingIndicator(); | |
}, | |
false, | |
false, | |
"GET" | |
); | |
}; | |
Mautic.getIntegrationCampaigns = function (el, settings) { | |
Mautic.activateLabelLoadingIndicator(mQuery(el).attr('id')); | |
var data = {integration: mQuery(el).val()}; | |
mQuery('.integration-campaigns').html(''); | |
Mautic.ajaxActionRequest('plugin:getIntegrationCampaigns', data, | |
function (response) { | |
if (response.success) { | |
mQuery('.integration-campaigns').html(response.html); | |
Mautic.onPageLoad('.integration-campaigns', response); | |
} | |
Mautic.integrationConfigOnLoad('.integration-campaigns'); | |
Mautic.removeLabelLoadingIndicator(); | |
}, | |
false, | |
false, | |
"GET" | |
); | |
}; |