/** DynamicContentBundle **/
Mautic.toggleDwcFilters = function () {
mQuery("#dwcFiltersTab, #slotNameDiv").toggleClass("hide");
if (mQuery("#dwcFiltersTab").hasClass('hide')) {
mQuery('.nav-tabs a[href="#details"]').click();
} else {
Mautic.dynamicContentOnLoad();
}
};
Mautic.dynamicContentOnLoad = function (container, response) {
if (typeof container !== 'object') {
if (mQuery(container + ' #list-search').length) {
Mautic.activateSearchAutocomplete('list-search', 'dynamicContent');
}
}
var availableFilters = mQuery('div.dwc-filter').find('select[data-mautic="available_filters"]');
Mautic.activateChosenSelect(availableFilters, false);
Mautic.dynamicFiltersOnLoad('div.dwc-filter');
};
Mautic.dynamicFiltersOnLoad = function(container, response) {
mQuery('#campaign-share-tab').hover(function () {
if (Mautic.shareTableLoaded != true) {
Mautic.loadAjaxColumn('campaign-share-stat', 'lead:getCampaignShareStats', 'afterStatsLoad');
Mautic.shareTableLoaded = true;
}
})
Mautic.afterStatsLoad = function () {
Mautic.sortTableByColumn('#campaign-share-table', '.campaign-share-stat', true)
}
if (mQuery(container + ' #list-search').length) {
Mautic.activateSearchAutocomplete('list-search', 'lead.list');
}
var prefix = 'leadlist';
var parent = mQuery('.dynamic-content-filter, .dwc-filter');
if (parent.length) {
prefix = parent.attr('id');
}
if (mQuery('#' + prefix + '_filters').length) {
mQuery('#available_filters').on('change', function() {
if (mQuery(this).val()) {
Mautic.addDwcFilter(mQuery(this).val(),mQuery('option:selected',this).data('field-object'));
mQuery(this).val('');
mQuery(this).trigger('chosen:updated');
}
});
mQuery('#' + prefix + '_filters .remove-selected').each( function (index, el) {
mQuery(el).on('click', function () {
mQuery(this).closest('.panel').animate(
{'opacity': 0},
'fast',
function () {
mQuery(this).remove();
Mautic.reorderSegmentFilters();
}
);
if (!mQuery('#' + prefix + '_filters li:not(.placeholder)').length) {
mQuery('#' + prefix + '_filters li.placeholder').removeClass('hide');
} else {
mQuery('#' + prefix + '_filters li.placeholder').addClass('hide');
}
});
});
var bodyOverflow = {};
mQuery('#' + prefix + '_filters').sortable({
items: '.panel',
helper: function(e, ui) {
ui.children().each(function() {
if (mQuery(this).is(":visible")) {
mQuery(this).width(mQuery(this).width());
}
});
// Fix body overflow that messes sortable up
bodyOverflow.overflowX = mQuery('body').css('overflow-x');
bodyOverflow.overflowY = mQuery('body').css('overflow-y');
mQuery('body').css({
overflowX: 'visible',
overflowY: 'visible'
});
return ui;
},
scroll: true,
axis: 'y',
stop: function(e, ui) {
// Restore original overflow
mQuery('body').css(bodyOverflow);
// First in the list should be an "and"
ui.item.find('select.glue-select').first().val('and');
Mautic.reorderSegmentFilters();
}
});
}
// segment contact filters
var segmentContactForm = mQuery('#segment-contact-filters');
if (segmentContactForm.length) {
segmentContactForm.on('change', function() {
segmentContactForm.submit();
}).on('keyup', function() {
segmentContactForm.delay(200).submit();
}).on('submit', function(e) {
e.preventDefault();
Mautic.refreshSegmentContacts(segmentContactForm);
});
}
};
Mautic.addDwcFilter = function (elId, elObj) {
var filterId = '#available_' + elObj + '_' + elId;
var filterOption = mQuery(filterId);
var label = filterOption.text();
var alias = filterOption.val();
// Create a new filter
var filterNum = parseInt(mQuery('.available-filters').data('index'));
mQuery('.available-filters').data('index', filterNum + 1);
var prototypeStr = mQuery('.available-filters').data('prototype');
var fieldType = filterOption.data('field-type');
var fieldObject = filterOption.data('field-object');
var isSpecial = (mQuery.inArray(fieldType, ['leadlist', 'campaign', 'device_type', 'device_brand', 'device_os', 'lead_email_received', 'lead_email_sent', 'tags', 'multiselect', 'boolean', 'select', 'country', 'timezone', 'region', 'stage', 'locale', 'globalcategory']) != -1);
prototypeStr = prototypeStr.replace(/__name__/g, filterNum);
prototypeStr = prototypeStr.replace(/__label__/g, label);
// Convert to DOM
prototype = mQuery(prototypeStr);
var prefix = 'leadlist';
var parent = mQuery(filterId).parents('.dynamic-content-filter, .dwc-filter');
if (parent.length) {
prefix = parent.attr('id');
}
var filterBase = prefix + "[filters][" + filterNum + "]";
var filterIdBase = prefix + "_filters_" + filterNum + "_";
if (isSpecial) {
var templateField = fieldType;
if (fieldType == 'boolean' || fieldType == 'multiselect') {
templateField = 'select';
}
var template = mQuery('#templates .' + templateField + '-template').clone();
template.attr('name', mQuery(template).attr('name').replace(/__name__/g, filterNum));
template.attr('id', mQuery(template).attr('id').replace(/__name__/g, filterNum));
prototype.find('input[name="' + filterBase + '[filter]"]').replaceWith(template);
}
if (mQuery('#' + prefix + '_filters div.panel').length == 0) {
// First filter so hide the glue footer
prototype.find(".panel-heading").addClass('hide');
}
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');
}
prototype.find(".inline-spacer").append(fieldObject);
prototype.find("a.remove-selected").on('click', function() {
mQuery(this).closest('.panel').animate(
{'opacity': 0},
'fast',
function () {
mQuery(this).remove();
Mautic.reorderSegmentFilters();
}
);
});
prototype.find("input[name='" + filterBase + "[field]']").val(elId);
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]']";
prototype.appendTo('#' + prefix + '_filters');
var filter = mQuery('#' + filterIdBase + 'filter');
//activate fields
if (isSpecial) {
if (fieldType == 'select' || fieldType == 'multiselect' || fieldType == 'boolean' || fieldType == 'leadlist') {
// Generate the options
var fieldOptions = filterOption.data("field-list");
mQuery.each(fieldOptions, function(val, index) {
if (mQuery.isPlainObject(index)) {
var optGroup = index;
mQuery.each(optGroup, function(value, index) {
mQuery('");
} else {
mQuery('').val(value).text(label);
newOption.appendTo(mQuery('#' + filterIdBase + 'operator'));
});
// Convert based on first option in list
Mautic.convertDwcFilterInput('#' + filterIdBase + 'operator');
// Reposition if applicable
Mautic.updateFilterPositioning(mQuery('#' + filterIdBase + 'glue'));
};
Mautic.convertDwcFilterInput = function(el) {
var prefix = 'leadlist';
var parent = mQuery(el).parents('.dynamic-content-filter, .dwc-filter');
if (parent.length) {
prefix = parent.attr('id');
}
var operator = mQuery(el).val();
// Extract the filter number
var regExp = /_filters_(\d+)_operator/;
var matches = regExp.exec(mQuery(el).attr('id'));
var filterNum = matches[1];
var filterId = '#' + prefix + '_filters_' + filterNum + '_filter';
// Reset has-error
if (mQuery(filterId).parent().hasClass('has-error')) {
mQuery(filterId).parent().find('div.help-block').hide();
mQuery(filterId).parent().removeClass('has-error');
}
var disabled = (operator == 'empty' || operator == '!empty');
mQuery(filterId+', #' + prefix + '_filters_' + filterNum + '_display').prop('disabled', disabled);
if (disabled) {
mQuery(filterId).val('');
}
var newName = '';
var lastPos;
if (mQuery(filterId).is('select')) {
var isMultiple = mQuery(filterId).attr('multiple');
var multiple = (operator == 'in' || operator == '!in');
var placeholder = mQuery(filterId).attr('data-placeholder');
if (multiple && !isMultiple) {
mQuery(filterId).attr('multiple', 'multiple');
// Update the name
newName = mQuery(filterId).attr('name') + '[]';
mQuery(filterId).attr('name', newName);
placeholder = mauticLang['chosenChooseMore'];
} else if (!multiple && isMultiple) {
mQuery(filterId).removeAttr('multiple');
// Update the name
newName = mQuery(filterId).attr('name');
lastPos = newName.lastIndexOf('[]');
newName = newName.substring(0, lastPos);
mQuery(filterId).attr('name', newName);
placeholder = mauticLang['chosenChooseOne'];
}
if (multiple) {
// Remove empty option
mQuery(filterId).find('option[value=""]').remove();
// Make sure none are selected
mQuery(filterId + ' option:selected').removeAttr('selected');
} else {
// Add empty option
mQuery(filterId).prepend("");
}
// Destroy the chosen and recreate
Mautic.destroyChosen(mQuery(filterId));
mQuery(filterId).attr('data-placeholder', placeholder);
Mautic.activateChosenSelect(mQuery(filterId));
}
};
Mautic.standardDynamicContentUrl = function(options) {
if (!options) {
return;
}
var url = options.windowUrl;
if (url) {
var editDynamicContentKey = '/dwc/edit/dynamicContentId';
var previewDynamicContentKey = '/dwc/preview/dynamicContentId';
if (url.indexOf(editDynamicContentKey) > -1 ||
url.indexOf(previewDynamicContentKey) > -1) {
options.windowUrl = url.replace('dynamicContentId', mQuery('#campaignevent_properties_dynamicContent').val());
}
}
return options;
};
Mautic.disabledDynamicContentAction = function(opener) {
if (typeof opener == 'undefined') {
opener = window;
}
var dynamicContent = opener.mQuery('#campaignevent_properties_dynamicContent').val();
var disabled = dynamicContent === '' || dynamicContent === null;
opener.mQuery('#campaignevent_properties_editDynamicContentButton').prop('disabled', disabled);
};
if (typeof MauticIsDwcReady === 'undefined') {
var MauticIsDwcReady = true;
if (
document.readyState === "complete" ||
!(document.readyState === "loading" || document.documentElement.doScroll)
) {
Mautic.dynamicContentOnLoad();
} else {
document.addEventListener("DOMContentLoaded", Mautic.dynamicContentOnLoad);
}
}