/* 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) ? '' : ''; 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" ); };