Spaces:
No application file
No application file
/** EmailBundle **/ | |
Mautic.emailOnLoad = function (container, response) { | |
Mautic.internalDynamicContentItemCreateListeners = []; | |
Mautic.internalDynamicContentFilterCreateListeners = []; | |
if (mQuery('#emailform_plainText').length) { | |
// @todo initiate the token dropdown | |
var plaintext = mQuery('#emailform_plainText'); | |
Mautic.initAtWho(plaintext, plaintext.attr('data-token-callback')); | |
Mautic.initSelectTheme(mQuery('#emailform_template')); | |
Mautic.initEmailDynamicContent(); | |
Mautic.prepareVersioning( | |
function (content) { | |
console.log('undo'); | |
}, | |
function (content) { | |
console.log('redo'); | |
} | |
); | |
// Open the builder directly when saved from the builder | |
if (response && response.inBuilder) { | |
Mautic.isInBuilder = true; | |
Mautic.launchBuilder('emailform'); | |
Mautic.processBuilderErrors(response); | |
} | |
} else if (mQuery(container + ' #list-search').length) { | |
Mautic.activateSearchAutocomplete('list-search', 'email'); | |
} | |
if (mQuery('table.email-list').length) { | |
var ids = []; | |
mQuery('td.col-stats').each(function () { | |
var id = mQuery(this).attr('data-stats'); | |
ids.push(id); | |
}); | |
// Get all stats numbers in batches of 10 | |
while (ids.length > 0) { | |
let batchIds = ids.splice(0, 1); | |
Mautic.ajaxActionRequest( | |
'email:getEmailCountStats', | |
{ids: batchIds}, | |
function (response) { | |
if (response.success && response.stats) { | |
for (var i = 0; i < response.stats.length; i++) { | |
var stat = response.stats[i]; | |
if (mQuery('#sent-count-' + stat.id).length) { | |
if (stat.pending) { | |
mQuery('#pending-' + stat.id + ' > a').html(stat.pending); | |
mQuery('#pending-' + stat.id).removeClass('hide'); | |
} | |
if (stat.queued) { | |
mQuery('#queued-' + stat.id + ' > a').html(stat.queued); | |
mQuery('#queued-' + stat.id).removeClass('hide'); | |
} | |
mQuery('#sent-count-' + stat.id + ' > a').html(stat.sentCount); | |
mQuery('#read-count-' + stat.id + ' > a').html(stat.readCount); | |
mQuery('#read-percent-' + stat.id + ' > a').html(stat.readPercent); | |
} | |
} | |
} | |
}, | |
false, | |
true, | |
"GET" | |
); | |
} | |
} | |
if (mQuery('#emailGraphStats').length) { | |
// Email detail graph - loaded via AJAX not to block loading a whole page | |
var graphUrl = mQuery('#emailGraphStats').attr('data-graph-url'); | |
mQuery("#emailGraphStats").load(graphUrl, function () { | |
Mautic.renderCharts(); | |
Mautic.initDateRangePicker('#emailGraphStats #daterange_date_from', '#emailGraphStats #daterange_date_to'); | |
}); | |
} | |
var $loadDeliveredElements = mQuery('[data-email-stat-delivered-for]'); | |
if ($loadDeliveredElements.length) { | |
$loadDeliveredElements.each(function(i, el) { | |
Mautic.loadEmailDeliveredStat(mQuery(el)); | |
}); | |
} | |
var $loadEmailUsage = mQuery('[data-fetch-email-usages]'); | |
if ($loadEmailUsage.length) { | |
$loadEmailUsage.each(function(i, el) { | |
Mautic.loadEmailUsages(mQuery(el)); | |
}); | |
} | |
Mautic.initMailerIsOwnerGlobalCheck(); | |
}; | |
Mautic.emailOnUnload = function(id) { | |
if (id === '#app-content') { | |
delete Mautic.listCompareChart; | |
} | |
if (typeof Mautic.ajaxActionXhrQueue !== 'undefined') { | |
delete Mautic.ajaxActionXhrQueue['email:getEmailCountStats']; | |
} | |
}; | |
Mautic.insertEmailBuilderToken = function(editorId, token) { | |
var editor = Mautic.getEmailBuilderEditorInstances(); | |
editor[instance].insertText(token); | |
}; | |
Mautic.getEmailAbTestWinnerForm = function(abKey) { | |
if (abKey && mQuery(abKey).val() && mQuery(abKey).closest('.form-group').hasClass('has-error')) { | |
mQuery(abKey).closest('.form-group').removeClass('has-error'); | |
if (mQuery(abKey).next().hasClass('help-block')) { | |
mQuery(abKey).next().remove(); | |
} | |
} | |
Mautic.activateLabelLoadingIndicator('emailform_variantSettings_winnerCriteria'); | |
var emailId = mQuery('#emailform_sessionId').val(); | |
var query = "action=email:getAbTestForm&abKey=" + mQuery(abKey).val() + "&emailId=" + emailId; | |
mQuery.ajax({ | |
url: mauticAjaxUrl, | |
type: "POST", | |
data: query, | |
dataType: "json", | |
success: function (response) { | |
if (typeof response.html != 'undefined') { | |
if (mQuery('#emailform_variantSettings_properties').length) { | |
mQuery('#emailform_variantSettings_properties').replaceWith(response.html); | |
} else { | |
mQuery('#emailform_variantSettings').append(response.html); | |
} | |
if (response.html != '') { | |
Mautic.onPageLoad('#emailform_variantSettings_properties', response); | |
} | |
} | |
}, | |
error: function (request, textStatus, errorThrown) { | |
Mautic.processAjaxError(request, textStatus, errorThrown); | |
}, | |
complete: function() { | |
Mautic.removeLabelLoadingIndicator(); | |
} | |
}); | |
}; | |
Mautic.submitSendForm = function () { | |
Mautic.dismissConfirmation(); | |
mQuery('.btn-send').prop('disabled', true); | |
mQuery('form[name=\'batch_send\']').submit(); | |
}; | |
Mautic.emailSendOnLoad = function (container, response) { | |
if (mQuery('.email-send-progress').length) { | |
if (!mQuery('#emailSendProgress').length) { | |
Mautic.clearModeratedInterval('emailSendProgress'); | |
} else { | |
Mautic.setModeratedInterval('emailSendProgress', 'sendEmailBatch', 2000); | |
} | |
} | |
}; | |
Mautic.emailSendOnUnload = function () { | |
if (mQuery('.email-send-progress').length) { | |
Mautic.clearModeratedInterval('emailSendProgress'); | |
if (typeof Mautic.sendEmailBatchXhr != 'undefined') { | |
Mautic.sendEmailBatchXhr.abort(); | |
delete Mautic.sendEmailBatchXhr; | |
} | |
} | |
}; | |
Mautic.sendEmailBatch = function () { | |
var data = 'id=' + mQuery('.progress-bar-send').data('email') + '&pending=' + mQuery('.progress-bar-send').attr('aria-valuemax') + '&batchlimit=' + mQuery('.progress-bar-send').data('batchlimit'); | |
Mautic.sendEmailBatchXhr = Mautic.ajaxActionRequest('email:sendBatch', data, function (response) { | |
if (response.progress) { | |
if (response.progress[0] > 0) { | |
mQuery('.imported-count').html(response.progress[0]); | |
mQuery('.progress-bar-send').attr('aria-valuenow', response.progress[0]).css('width', response.percent + '%'); | |
mQuery('.progress-bar-send span.sr-only').html(response.percent + '%'); | |
} | |
if (response.progress[0] >= response.progress[1]) { | |
Mautic.clearModeratedInterval('emailSendProgress'); | |
setTimeout(function () { | |
mQuery.ajax({ | |
type: 'POST', | |
showLoadingBar: false, | |
url: window.location, | |
data: 'complete=1', | |
success: function (response) { | |
if (response.newContent) { | |
// It's done so pass to process page | |
Mautic.processPageContent(response); | |
} | |
} | |
}); | |
}, 1000); | |
} | |
} | |
Mautic.moderatedIntervalCallbackIsComplete('emailSendProgress'); | |
}); | |
}; | |
Mautic.autoGeneratePlaintext = function() { | |
mQuery('.plaintext-spinner').removeClass('hide'); | |
Mautic.ajaxActionRequest( | |
'email:generatePlaintText', | |
{ | |
id: mQuery('#emailform_sessionId').val(), | |
custom: mQuery('#emailform_customHtml').val() | |
}, | |
function (response) { | |
mQuery('#emailform_plainText').val(response.text); | |
mQuery('.plaintext-spinner').addClass('hide'); | |
} | |
); | |
}; | |
Mautic.selectEmailType = function(emailType) { | |
if (emailType == 'list') { | |
mQuery('#leadList').removeClass('hide'); | |
mQuery('#segmentTranslationParent').removeClass('hide'); | |
mQuery('#templateTranslationParent').addClass('hide'); | |
mQuery('.page-header h3').text(mauticLang.newListEmail); | |
} else { | |
mQuery('#segmentTranslationParent').addClass('hide'); | |
mQuery('#templateTranslationParent').removeClass('hide'); | |
mQuery('#leadList').addClass('hide'); | |
mQuery('.page-header h3').text(mauticLang.newTemplateEmail); | |
} | |
mQuery('#emailform_emailType').val(emailType); | |
mQuery('body').removeClass('noscroll'); | |
mQuery('.email-type-modal').remove(); | |
mQuery('.email-type-modal-backdrop').remove(); | |
}; | |
Mautic.getTotalAttachmentSize = function() { | |
var assets = mQuery('#emailform_assetAttachments').val(); | |
if (assets) { | |
assets = { | |
'assets': assets | |
}; | |
Mautic.ajaxActionRequest('email:getAttachmentsSize', assets, function(response) { | |
mQuery('#attachment-size').text(response.size); | |
}, false, false, "GET"); | |
} else { | |
mQuery('#attachment-size').text('0'); | |
} | |
}; | |
Mautic.standardEmailUrl = function(options) { | |
if (options && options.windowUrl && options.origin) { | |
var url = options.windowUrl; | |
var editEmailKey = '/emails/edit/emailId'; | |
var previewEmailKey = '/email/preview/emailId'; | |
if (url.indexOf(editEmailKey) > -1 || | |
url.indexOf(previewEmailKey) > -1) { | |
options.windowUrl = url.replace('emailId', mQuery(options.origin).val()); | |
} | |
} | |
return options; | |
}; | |
/** | |
* Enables/Disables email preview and edit. Can be triggered from campaign or form actions | |
* @param opener | |
* @param origin | |
*/ | |
Mautic.disabledEmailAction = function(opener, origin) { | |
if (typeof opener == 'undefined') { | |
opener = window; | |
} | |
var email = opener.mQuery(origin); | |
if (email.length == 0) return; | |
var emailId = email.val(); | |
var disabled = emailId === '' || emailId === null; | |
opener.mQuery('[id$=_editEmailButton]').prop('disabled', disabled); | |
opener.mQuery('[id$=_previewEmailButton]').prop('disabled', disabled); | |
}; | |
Mautic.initEmailDynamicContent = function() { | |
if (mQuery('#dynamic-content-container').length) { | |
mQuery('#emailFilters .remove-selected').each( function (index, el) { | |
mQuery(el).on('click', function () { | |
mQuery(this).closest('.panel').animate( | |
{'opacity': 0}, | |
'fast', | |
function () { | |
mQuery(this).remove(); | |
} | |
); | |
if (!mQuery('#emailFilters li:not(.placeholder)').length) { | |
mQuery('#emailFilters li.placeholder').removeClass('hide'); | |
} else { | |
mQuery('#emailFilters li.placeholder').addClass('hide'); | |
} | |
}); | |
}); | |
mQuery('#addNewDynamicContent').on('click', function (e) { | |
e.preventDefault(); | |
Mautic.createNewDynamicContentItem(); | |
}); | |
Mautic.initDynamicContentItem(); | |
} | |
}; | |
Mautic.createNewDynamicContentItem = function(jQueryVariant) { | |
// To support the parent.mQuery from the builder | |
var mQuery = (typeof jQueryVariant != 'undefined') ? jQueryVariant : window.mQuery; | |
var tabHolder = mQuery('#dynamicContentTabs'); | |
var filterHolder = mQuery('#dynamicContentContainer'); | |
var dynamicContentPrototype = mQuery('#dynamicContentPrototype').data('prototype'); | |
var dynamicContentIndex = tabHolder.find('li').length - 1; | |
while (mQuery('#emailform_dynamicContent_' + dynamicContentIndex).length > 0) { | |
dynamicContentIndex++; // prevent duplicate ids | |
} | |
var tabId = '#emailform_dynamicContent_' + dynamicContentIndex; | |
var tokenName = 'Dynamic Content ' + (dynamicContentIndex + 1); | |
var newForm = dynamicContentPrototype.replace(/__name__/g, dynamicContentIndex); | |
var newTab = mQuery('<li><a role="tab" data-toggle="tab" href="' + tabId + '">' + tokenName + '</a></li>'); | |
tabHolder.append(newTab); | |
filterHolder.append(newForm); | |
var itemContainer = mQuery(tabId); | |
var textarea = itemContainer.find('.editor'); | |
var firstInput = itemContainer.find('input[type="text"]').first(); | |
if (mauticFroalaEnabled && textarea.hasClass('legacy-builder')) { | |
textarea.froalaEditor(mQuery.extend({}, Mautic.basicFroalaOptions, { | |
// Set custom buttons with separator between them. | |
toolbarSticky: false, | |
toolbarButtons: ['undo', 'redo', '|', 'bold', 'italic', 'underline', 'paragraphFormat', 'fontFamily', 'fontSize', 'color', 'align', 'formatOL', 'formatUL', 'quote', 'clearFormatting', 'token', 'insertLink', 'insertImage', 'insertTable', 'html', 'fullscreen'], | |
heightMin: 100 | |
})); | |
} | |
if (Mautic.internalDynamicContentItemCreateListeners) { | |
Mautic.internalDynamicContentItemCreateListeners.forEach(function(callback) { | |
callback(textarea); | |
}); | |
} | |
tabHolder.find('i').first().removeClass('fa-spinner fa-spin').addClass('fa-plus text-success'); | |
newTab.find('a').tab('show'); | |
firstInput.focus(); | |
Mautic.updateDynamicContentDropdown(); | |
Mautic.initDynamicContentItem(tabId, mQuery, tokenName); | |
return tabId; | |
}; | |
Mautic.dynamicContentAddNewItemListener = function(callback) { | |
Mautic.internalDynamicContentItemCreateListeners.push(callback); | |
} | |
Mautic.createNewDynamicContentFilter = function(el, jQueryVariant) { | |
// To support the parent.mQuery from the builder | |
var mQuery = (typeof jQueryVariant != 'undefined') ? jQueryVariant : window.mQuery; | |
var $this = mQuery(el); | |
var parentElement = $this.parents('.panel'); | |
var tabHolder = parentElement.find('.nav'); | |
var filterHolder = parentElement.find('.tab-content'); | |
var filterBlockPrototype = mQuery('#filterBlockPrototype'); | |
var filterIndex = filterHolder.find('.tab-pane').length - 1; | |
var dynamicContentIndex = $this.parents('.tab-pane').attr('id').match(/\d+$/)[0]; | |
var filterPrototype = filterBlockPrototype.data('prototype'); | |
var filterContainerId = '#emailform_dynamicContent_' + dynamicContentIndex + '_filters_' + filterIndex ; | |
// prevent duplicate ids | |
while (mQuery(filterContainerId).length > 0) { | |
filterIndex++; | |
filterContainerId = '#emailform_dynamicContent_' + dynamicContentIndex + '_filters_' + filterIndex ; | |
} | |
var newTab = mQuery('<li><a role="tab" data-toggle="tab" href="' + filterContainerId + '">Variation ' + (filterIndex + 1) + '</a></li>'); | |
var newForm = filterPrototype.replace(/__name__/g, filterIndex) | |
.replace(/dynamicContent_0_filters/g, 'dynamicContent_' + dynamicContentIndex + '_filters') | |
.replace(/dynamicContent]\[0]\[filters/g, 'dynamicContent][' + dynamicContentIndex + '][filters'); | |
tabHolder.append(newTab); | |
filterHolder.append(newForm); | |
var filterContainer = mQuery(filterContainerId); | |
var availableFilters = filterContainer.find('select[data-mautic="available_filters"]'); | |
var altTextarea = filterContainer.find('.editor'); | |
var removeButton = filterContainer.find('.remove-item'); | |
Mautic.activateChosenSelect(availableFilters, false, mQuery); | |
availableFilters.on('change', function() { | |
var $this = mQuery(this); | |
if ($this.val()) { | |
Mautic.addDynamicContentFilter($this.val(), mQuery); | |
$this.val(''); | |
$this.trigger('chosen:updated'); | |
} | |
}); | |
if (mauticFroalaEnabled && altTextarea.hasClass('legacy-builder')) { | |
altTextarea.froalaEditor(mQuery.extend({}, Mautic.basicFroalaOptions, { | |
// Set custom buttons with separator between them. | |
toolbarSticky: false, | |
toolbarButtons: ['undo', 'redo', '|', 'bold', 'italic', 'underline', 'paragraphFormat', 'fontFamily', 'fontSize', 'color', 'align', 'formatOL', 'formatUL', 'quote', 'clearFormatting', 'token', 'insertLink', 'insertImage', 'insertTable', 'html', 'fullscreen'], | |
heightMin: 100 | |
})); | |
} | |
if (Mautic.internalDynamicContentFilterCreateListeners) { | |
Mautic.internalDynamicContentFilterCreateListeners.forEach(function(callback) { | |
callback(altTextarea); | |
}); | |
} | |
Mautic.initRemoveEvents(removeButton, mQuery); | |
newTab.find('a').tab('show'); | |
return filterContainerId; | |
}; | |
Mautic.dynamicContentAddNewFilterListener = function(callback) { | |
Mautic.internalDynamicContentFilterCreateListeners.push(callback); | |
} | |
Mautic.initDynamicContentItem = function (tabId, jQueryVariant, tokenName) { | |
// To support the parent.mQuery from the builder | |
var mQuery = (typeof jQueryVariant != 'undefined') ? jQueryVariant : window.mQuery; | |
var $el = mQuery('#dynamic-content-container'); | |
if ($el.length === 0){ | |
mQuery = parent.mQuery; | |
$el = mQuery('#dynamic-content-container'); | |
} | |
if (tabId || typeof tabId != "undefined") { | |
$el = mQuery(tabId); | |
} | |
// add a click event listener for adding a new dynamic content variant | |
$el.find('.addNewDynamicContentFilter').on('click', function (e) { | |
e.preventDefault(); | |
Mautic.createNewDynamicContentFilter(this); | |
}); | |
if (typeof tokenName != 'undefined') { | |
$el.find('.dynamic-content-token-name').val(tokenName); | |
} | |
if ($el.find('.dynamic-content-token-name').val() === '') { | |
var dynamicContent = $el.attr('id').match(/\d+$/); | |
if (dynamicContent) { | |
var dynamicContentIndex = dynamicContent[0]; | |
$el.find('.dynamic-content-token-name').val('Dynamic Content ' + dynamicContentIndex); | |
} | |
} | |
$el.find('a.remove-selected').on('click', function() { | |
mQuery(this).closest('.panel').animate( | |
{'opacity': 0}, | |
'fast', | |
function () { | |
mQuery(this).remove(); | |
} | |
); | |
}); | |
$el.find('select[data-mautic="available_filters"]').on('change', function() { | |
var $this = mQuery(this); | |
if ($this.val()) { | |
Mautic.addDynamicContentFilter($this.val(), mQuery); | |
$this.val(''); | |
$this.trigger('chosen:updated'); | |
} | |
}); | |
Mautic.initRemoveEvents($el.find('.remove-item'), mQuery); | |
}; | |
Mautic.updateDynamicContentDropdown = function () { | |
var options = []; | |
mQuery('#dynamicContentTabs').find('a[data-toggle="tab"]').each(function () { | |
var prototype = '<li><a class="fr-command" data-cmd="dynamicContent" data-param1="__tokenName__">__tokenName__</a></li>'; | |
var newOption = prototype.replace(/__tokenName__/g, mQuery(this).text()); | |
options.push(newOption); | |
}); | |
mQuery('button[data-cmd="dynamicContent"]').next().find('ul').html(options.join('')); | |
}; | |
Mautic.initMailerIsOwnerGlobalCheck = function() { | |
let radioSelector = '.mailer-is-owner-local'; | |
Mautic.toggleMailerIsOwnerWarningMessage(radioSelector); | |
mQuery(radioSelector).on('change', function() { | |
Mautic.toggleMailerIsOwnerWarningMessage(radioSelector); | |
}); | |
} | |
Mautic.toggleMailerIsOwnerWarningMessage = function(radioSelector) { | |
let checkedRadio = mQuery(radioSelector+':checked'); | |
let globalMailerIsOwnerValue = checkedRadio.attr('data-global-mailer-is-onwer') ? '1' : '0'; | |
let warningMessageId = 'mailer-is-owner-waring'; | |
mQuery('#'+warningMessageId).remove(); | |
if (checkedRadio.val() !== globalMailerIsOwnerValue) { | |
let warning = mQuery('<div/>'); | |
warning.attr('id', warningMessageId); | |
warning.html(checkedRadio.attr('data-warning')); | |
warning.addClass('alert alert-warning mt-md'); | |
checkedRadio.closest('.form-group').append(warning); | |
} | |
} | |
Mautic.initRemoveEvents = function (elements, jQueryVariant) { | |
var mQuery = (typeof jQueryVariant != 'undefined') ? jQueryVariant : window.mQuery; | |
if (elements.hasClass('remove-selected')) { | |
elements.on('click', function() { | |
mQuery(this).closest('.panel').animate( | |
{'opacity': 0}, | |
'fast', | |
function () { | |
mQuery(this).remove(); | |
} | |
); | |
}); | |
} else { | |
elements.on('click', function (e) { | |
e.preventDefault(); | |
var $this = mQuery(this); | |
var parentElement = $this.parents('.tab-pane.dynamic-content'); | |
if ($this.hasClass('remove-filter')) { | |
parentElement = $this.parents('.tab-pane.dynamic-content-filter'); | |
} | |
var tabLink = mQuery('a[href="#' + parentElement.attr('id') + '"]').parent(); | |
var tabContainer = tabLink.parent(); | |
parentElement.remove(); | |
tabLink.remove(); | |
// if tabContainer is for variants, show the first one, if it is the DEC vertical list, show the second one | |
if (tabContainer.hasClass('tabs-left') || $this.hasClass('remove-filter')) { | |
tabContainer.find('li').first().next().find('a').tab('show'); | |
} else { | |
tabContainer.find('li').first().find('a').tab('show'); | |
} | |
Mautic.updateDynamicContentDropdown(); | |
}); | |
} | |
}; | |
Mautic.addDynamicContentFilter = function (selectedFilter, jQueryVariant) { | |
var mQuery = (typeof jQueryVariant != 'undefined') ? jQueryVariant : window.mQuery; | |
var dynamicContentItems = mQuery('.tab-pane.dynamic-content'); | |
var activeDynamicContent = dynamicContentItems.filter(':visible'); | |
var dynamicContentIndex = activeDynamicContent.attr('id').match(/\d+$/)[0]; //dynamicContentItems.index(activeDynamicContent); | |
var dynamicContentFilterContainers = activeDynamicContent.find('div[data-filter-container]'); | |
var activeDynamicContentFilterContainer = dynamicContentFilterContainers.filter(':visible'); | |
var dynamicContentFilterIndex = dynamicContentFilterContainers.index(activeDynamicContentFilterContainer); | |
var selectedOption = mQuery('option[data-mautic="available_' + selectedFilter + '"]').first(); | |
var label = selectedOption.text(); | |
// create a new filter | |
var filterNum = activeDynamicContentFilterContainer.children('.panel').length; | |
var prototype = mQuery('#filterSelectPrototype').data('prototype'); | |
var fieldObject = selectedOption.data('field-object'); | |
var fieldType = selectedOption.data('field-type'); | |
var isSpecial = (mQuery.inArray(fieldType, ['leadlist', 'assets', 'lead_email_received', 'tags', 'multiselect', 'boolean', 'select', 'country', 'timezone', 'region', 'stage', 'locale']) != -1); | |
// Update the prototype settings | |
prototype = prototype.replace(/__name__/g, filterNum) | |
.replace(/__label__/g, label) | |
.replace(/dynamicContent_0_filters/g, 'dynamicContent_' + dynamicContentIndex + '_filters') | |
.replace(/dynamicContent]\[0]\[filters/g, 'dynamicContent][' + dynamicContentIndex + '][filters') | |
.replace(/filters_0_filters/g, 'filters_' + dynamicContentFilterIndex + '_filters') | |
.replace(/filters]\[0]\[filters/g, 'filters][' + dynamicContentFilterIndex + '][filters'); | |
if (filterNum === 0) { | |
prototype = prototype.replace(/in-group/g, ''); | |
} | |
// Convert to DOM | |
prototype = mQuery(prototype); | |
if (fieldObject == 'company') { | |
prototype.find('.object-icon').removeClass('ri-user-6-fill').addClass('ri-building-2-line'); | |
} else { | |
prototype.find('.object-icon').removeClass('ri-building-2-line').addClass('ri-user-6-fill'); | |
} | |
var filterBase = "emailform[dynamicContent][" + dynamicContentIndex + "][filters][" + dynamicContentFilterIndex + "][filters][" + filterNum + "]"; | |
var filterIdBase = "emailform_dynamicContent_" + dynamicContentIndex + "_filters_" + dynamicContentFilterIndex + "_filters_" + filterNum; | |
if (isSpecial) { | |
var templateField = fieldType; | |
if (fieldType == 'boolean' || fieldType == 'multiselect' || fieldType == 'leadlist') { | |
templateField = 'select'; | |
} | |
var template = mQuery('#templates .' + templateField + '-template').clone(); | |
var $template = mQuery(template); | |
var templateNameAttr = $template.attr('name').replace(/__name__/g, filterNum) | |
.replace(/__dynamicContentIndex__/g, dynamicContentIndex) | |
.replace(/__dynamicContentFilterIndex__/g, dynamicContentFilterIndex); | |
var templateIdAttr = $template.attr('id').replace(/__name__/g, filterNum) | |
.replace(/__dynamicContentIndex__/g, dynamicContentIndex) | |
.replace(/__dynamicContentFilterIndex__/g, dynamicContentFilterIndex); | |
$template.attr('name', templateNameAttr); | |
$template.attr('id', templateIdAttr); | |
prototype.find('input[name="' + filterBase + '[filter]"]').replaceWith(template); | |
} | |
if (activeDynamicContentFilterContainer.find('.panel').length == 0) { | |
// First filter so hide the glue footer | |
prototype.find(".panel-footer").addClass('hide'); | |
} | |
prototype.find("input[name='" + filterBase + "[field]']").val(selectedFilter); | |
prototype.find("input[name='" + filterBase + "[type]']").val(fieldType); | |
prototype.find("input[name='" + filterBase + "[object]']").val(fieldObject); | |
var filterEl = (isSpecial) ? "select[name='" + filterBase + "[filter]']" : "input[name='" + filterBase + "[filter]']"; | |
activeDynamicContentFilterContainer.append(prototype); | |
Mautic.initRemoveEvents(activeDynamicContentFilterContainer.find("a.remove-selected"), mQuery); | |
var filter = '#' + filterIdBase + '_filter'; | |
var fieldOptions = fieldCallback = ''; | |
//activate fields | |
if (isSpecial) { | |
if (fieldType == 'select' || fieldType == 'boolean' || fieldType == 'multiselect' || fieldType == 'leadlist') { | |
// Generate the options | |
fieldOptions = selectedOption.data("field-list"); | |
mQuery.each(fieldOptions, function(index, val) { | |
mQuery('<option>').val(index).text(val).appendTo(filterEl); | |
}); | |
} | |
} else if (fieldType == 'lookup') { | |
fieldCallback = selectedOption.data("field-callback"); | |
if (fieldCallback && typeof Mautic[fieldCallback] == 'function') { | |
fieldOptions = selectedOption.data("field-list"); | |
Mautic[fieldCallback](filterIdBase + '_filter', selectedFilter, fieldOptions); | |
} | |
} else if (fieldType == 'datetime') { | |
mQuery(filter).datetimepicker({ | |
format: 'Y-m-d H:i', | |
lazyInit: true, | |
validateOnBlur: false, | |
allowBlank: true, | |
scrollMonth: false, | |
scrollInput: false | |
}); | |
} else if (fieldType == 'date') { | |
mQuery(filter).datetimepicker({ | |
timepicker: false, | |
format: 'Y-m-d', | |
lazyInit: true, | |
validateOnBlur: false, | |
allowBlank: true, | |
scrollMonth: false, | |
scrollInput: false, | |
closeOnDateSelect: true | |
}); | |
} else if (fieldType == 'time') { | |
mQuery(filter).datetimepicker({ | |
datepicker: false, | |
format: 'H:i', | |
lazyInit: true, | |
validateOnBlur: false, | |
allowBlank: true, | |
scrollMonth: false, | |
scrollInput: false | |
}); | |
} else if (fieldType == 'lookup_id') { | |
//switch the filter and display elements | |
var oldFilter = mQuery(filterEl); | |
var newDisplay = mQuery(oldFilter).clone(); | |
mQuery(newDisplay).attr('name', filterBase + '[display]') | |
.attr('id', filterIdBase + '_display'); | |
var oldDisplay = mQuery(prototype).find("input[name='" + filterBase + "[display]']"); | |
var newFilter = mQuery(oldDisplay).clone(); | |
mQuery(newFilter).attr('name', filterBase + '[filter]') | |
.attr('id', filterIdBase + '_filter'); | |
mQuery(oldFilter).replaceWith(newFilter); | |
mQuery(oldDisplay).replaceWith(newDisplay); | |
var fieldCallback = selectedOption.data("field-callback"); | |
if (fieldCallback && typeof Mautic[fieldCallback] == 'function') { | |
fieldOptions = selectedOption.data("field-list"); | |
Mautic[fieldCallback](filterIdBase + '_display', selectedFilter, fieldOptions, mQuery); | |
} | |
} else { | |
mQuery(filter).attr('type', fieldType); | |
} | |
var operators = mQuery(selectedOption).data('field-operators'); | |
mQuery('#' + filterIdBase + '_operator').html(''); | |
mQuery.each(operators, function (label, value) { | |
var newOption = mQuery('<option/>').val(value).text(label); | |
newOption.appendTo(mQuery('#' + filterIdBase + '_operator')); | |
}); | |
// Convert based on first option in list | |
Mautic.convertDwcFilterInput('#' + filterIdBase + '_operator', mQuery); | |
}; | |
Mautic.copySubjectToName = function(elemSubject) { | |
let elemName = mQuery("#emailform_name"); | |
if (elemName.val() === "") { | |
elemName.val(elemSubject.val()); | |
} | |
}; | |
Mautic.loadEmailDeliveredStat = function($el) { | |
var emailId = $el.data('email-stat-delivered-for'); | |
Mautic.ajaxActionRequest('email:getEmailDeliveredCount', {id: emailId}, function(response){ | |
if (response.success) { | |
var delivered = response.delivered; | |
$el.html(delivered); | |
} | |
}, false, true, "GET"); | |
}; | |
Mautic.loadEmailUsages = function($el) { | |
var emailId = $el.data('fetch-email-usages'); | |
Mautic.ajaxActionRequest('email:getEmailUsages', {id: emailId}, function(response){ | |
var usagesHtml = response.usagesHtml; | |
$el.html(usagesHtml); | |
}, false, true, "GET"); | |
}; | |