Spaces:
No application file
No application file
| //FormBundle | |
| Mautic.formOnLoad = function (container) { | |
| if (mQuery(container + ' #list-search').length) { | |
| Mautic.activateSearchAutocomplete('list-search', 'form.form'); | |
| } | |
| Mautic.formBuilderNewComponentInit(); | |
| Mautic.iniNewConditionalField(); | |
| var bodyOverflow = {}; | |
| if (mQuery('#mauticforms_fields')) { | |
| //make the fields sortable | |
| mQuery('#mauticforms_fields').sortable({ | |
| items: '.panel', | |
| cancel: '', | |
| helper: function(e, ui) { | |
| ui.children().each(function() { | |
| 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', | |
| containment: '#mauticforms_fields .drop-here', | |
| stop: function(e, ui) { | |
| // Restore original overflow | |
| mQuery('body').css(bodyOverflow); | |
| mQuery(ui.item).attr('style', ''); | |
| mQuery.ajax({ | |
| type: "POST", | |
| url: mauticAjaxUrl + "?action=form:reorderFields", | |
| data: mQuery('#mauticforms_fields').sortable("serialize", {attribute: 'data-sortable-id'}) + "&formId=" + mQuery('#mauticform_sessionId').val() | |
| }); | |
| } | |
| }); | |
| Mautic.initFormFieldButtons(); | |
| } | |
| if (mQuery('#mauticforms_actions')) { | |
| //make the fields sortable | |
| mQuery('#mauticforms_actions').sortable({ | |
| items: '.panel', | |
| cancel: '', | |
| helper: function(e, ui) { | |
| ui.children().each(function() { | |
| 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', | |
| containment: '#mauticforms_actions .drop-here', | |
| stop: function(e, ui) { | |
| // Restore original overflow | |
| mQuery('body').css(bodyOverflow); | |
| mQuery(ui.item).attr('style', ''); | |
| mQuery.ajax({ | |
| type: "POST", | |
| url: mauticAjaxUrl + "?action=form:reorderActions", | |
| data: mQuery('#mauticforms_actions').sortable("serialize") + "&formId=" + mQuery('#mauticform_sessionId').val() | |
| }); | |
| } | |
| }); | |
| mQuery('#mauticforms_actions .mauticform-row').on('dblclick.mauticformactions', function(event) { | |
| event.preventDefault(); | |
| mQuery(this).find('.btn-edit').first().click(); | |
| }); | |
| } | |
| if (mQuery('#mauticform_formType').length && mQuery('#mauticform_formType').val() == '') { | |
| mQuery('body').addClass('noscroll'); | |
| } | |
| Mautic.initHideItemButton('#mauticforms_fields'); | |
| Mautic.initHideItemButton('#mauticforms_actions'); | |
| }; | |
| Mautic.formBuilderNewComponentInit = function () { | |
| mQuery('select.form-builder-new-component:not(.initialized)').change(function (e) { | |
| const select = mQuery(this); | |
| select.addClass('initialized'); | |
| select.find('option:selected'); | |
| Mautic.ajaxifyModal(select.find('option:selected')); | |
| // Reset the dropdown | |
| select.val(''); | |
| select.chosen('destroy').chosen(); | |
| }); | |
| }; | |
| Mautic.changeSelectOptions = function(selectEl, options) { | |
| selectEl.empty(); | |
| mQuery.each(options, function(key, field) { | |
| selectEl.append( | |
| mQuery('<option></option>') | |
| .attr('value', field.value) | |
| .attr('data-list-type', field.isListType ? 1 : 0) | |
| .text(field.label) | |
| ); | |
| }); | |
| selectEl.trigger('chosen:updated'); | |
| }; | |
| Mautic.fetchFieldsOnObjectChange = function() { | |
| var fieldSelect = mQuery('select#formfield_mappedField'); | |
| fieldSelect.attr('disable', true); | |
| mQuery.ajax({ | |
| url: mauticAjaxUrl + "?action=form:getFieldsForObject", | |
| data: { | |
| mappedObject: mQuery('select#formfield_mappedObject').val(), | |
| mappedField: mQuery('input#formfield_originalMappedField').val(), | |
| formId: mQuery('input#mauticform_sessionId').val() | |
| }, | |
| success: function (response) { | |
| Mautic.changeSelectOptions(fieldSelect, response.fields); | |
| }, | |
| error: function (response, textStatus, errorThrown) { | |
| Mautic.processAjaxError(response, textStatus, errorThrown); | |
| }, | |
| complete: function () { | |
| fieldSelect.removeAttr('disable'); | |
| } | |
| }); | |
| }; | |
| Mautic.updateFormFields = function () { | |
| Mautic.activateLabelLoadingIndicator('campaignevent_properties_field'); | |
| var formId = mQuery('#campaignevent_properties_form').val(); | |
| Mautic.ajaxActionRequest('form:updateFormFields', {'formId': formId}, function(response) { | |
| if (response.fields) { | |
| var select = mQuery('#campaignevent_properties_field'); | |
| select.find('option').remove(); | |
| var fieldOptions = {}; | |
| mQuery.each(response.fields, function(key, field) { | |
| var option = mQuery('<option></option>') | |
| .attr('value', field.alias) | |
| .text(field.label); | |
| select.append(option); | |
| fieldOptions[field.alias] = field.options; | |
| }); | |
| select.attr('data-field-options', JSON.stringify(fieldOptions)); | |
| select.trigger('chosen:updated'); | |
| Mautic.updateFormFieldValues(select); | |
| } | |
| Mautic.removeLabelLoadingIndicator(); | |
| }); | |
| }; | |
| Mautic.updateFormFieldValues = function (field) { | |
| field = mQuery(field); | |
| var fieldValue = field.val(); | |
| var options = jQuery.parseJSON(field.attr('data-field-options')); | |
| var valueField = mQuery('#campaignevent_properties_value'); | |
| var valueFieldAttrs = { | |
| 'class': valueField.attr('class'), | |
| 'id': valueField.attr('id'), | |
| 'name': valueField.attr('name'), | |
| 'autocomplete': valueField.attr('autocomplete'), | |
| 'value': valueField.attr('value') | |
| }; | |
| if (typeof options[fieldValue] !== 'undefined' && !mQuery.isEmptyObject(options[fieldValue])) { | |
| var newValueField = mQuery('<select/>') | |
| .attr('class', valueFieldAttrs['class']) | |
| .attr('id', valueFieldAttrs['id']) | |
| .attr('name', valueFieldAttrs['name']) | |
| .attr('autocomplete', valueFieldAttrs['autocomplete']) | |
| .attr('value', valueFieldAttrs['value']); | |
| mQuery.each(options[fieldValue], function(key, optionVal) { | |
| var option = mQuery("<option></option>") | |
| .attr('value', key) | |
| .text(optionVal); | |
| newValueField.append(option); | |
| }); | |
| valueField.replaceWith(newValueField); | |
| } else { | |
| var newValueField = mQuery('<input/>') | |
| .attr('type', 'text') | |
| .attr('class', valueFieldAttrs['class']) | |
| .attr('id', valueFieldAttrs['id']) | |
| .attr('name', valueFieldAttrs['name']) | |
| .attr('autocomplete', valueFieldAttrs['autocomplete']) | |
| .attr('value', valueFieldAttrs['value']); | |
| valueField.replaceWith(newValueField); | |
| } | |
| }; | |
| Mautic.formFieldOnLoad = function (container, response) { | |
| //new field created so append it to the form | |
| if (response.fieldHtml) { | |
| var newHtml = response.fieldHtml; | |
| var fieldId = '#mauticform_' + response.fieldId; | |
| var fieldContainer = mQuery(fieldId).closest('.form-field-wrapper'); | |
| if (mQuery(fieldId).length) { | |
| //replace content | |
| mQuery(fieldContainer).replaceWith(newHtml); | |
| var newField = false; | |
| } else { | |
| var parentContainer = mQuery('#mauticform_'+response.parent); | |
| if (parentContainer.length) { | |
| (parentContainer.parents('.panel:first')).append(newHtml); | |
| }else { | |
| //append content | |
| var panel = mQuery('#mauticforms_fields .mauticform-button-wrapper').closest('.form-field-wrapper'); | |
| panel.before(newHtml); | |
| } | |
| var newField = true; | |
| } | |
| // Get the updated element | |
| var fieldContainer = mQuery(fieldId).closest('.form-field-wrapper'); | |
| //activate new stuff | |
| mQuery(fieldContainer).find("[data-toggle='ajax']").click(function (event) { | |
| event.preventDefault(); | |
| return Mautic.ajaxifyLink(this, event); | |
| }); | |
| //initialize tooltips | |
| mQuery(fieldContainer).find("*[data-toggle='tooltip']").tooltip({html: true}); | |
| //initialize ajax'd modals | |
| mQuery(fieldContainer).find("[data-toggle='ajaxmodal']").on('click.ajaxmodal', function (event) { | |
| event.preventDefault(); | |
| Mautic.ajaxifyModal(this, event); | |
| }); | |
| Mautic.initFormFieldButtons(fieldContainer); | |
| Mautic.initHideItemButton(fieldContainer); | |
| //show fields panel | |
| if (!mQuery('#fields-panel').hasClass('in')) { | |
| mQuery('a[href="#fields-panel"]').trigger('click'); | |
| } | |
| if (newField) { | |
| mQuery('.bundle-main-inner-wrapper').scrollTop(mQuery('.bundle-main-inner-wrapper').height()); | |
| } | |
| if (mQuery('#form-field-placeholder').length) { | |
| mQuery('#form-field-placeholder').remove(); | |
| } | |
| Mautic.activateChosenSelect(mQuery('.form-builder-new-component')); | |
| Mautic.formBuilderNewComponentInit(); | |
| Mautic.iniNewConditionalField(); | |
| } | |
| }; | |
| Mautic.iniNewConditionalField = function(){ | |
| mQuery('.add-new-conditional-field').click(function (e) { | |
| e.preventDefault(); | |
| mQuery(this).parent().next().show('normal'); | |
| }) | |
| mQuery('.add-new-conditional-field').parent().next().hide(); | |
| } | |
| Mautic.initFormFieldButtons = function (container) { | |
| if (typeof container == 'undefined') { | |
| mQuery('#mauticforms_fields .mauticform-row').off(".mauticformfields"); | |
| var container = '#mauticforms_fields'; | |
| } | |
| mQuery(container).find('.mauticform-row').on('dblclick.mauticformfields', function(event) { | |
| event.preventDefault(); | |
| mQuery(this).closest('.form-field-wrapper').find('.btn-edit').first().click(); | |
| }); | |
| }; | |
| Mautic.formActionOnLoad = function (container, response) { | |
| //new action created so append it to the form | |
| if (response.actionHtml) { | |
| var newHtml = response.actionHtml; | |
| var actionId = '#mauticform_action_' + response.actionId; | |
| if (mQuery(actionId).length) { | |
| //replace content | |
| mQuery(actionId).replaceWith(newHtml); | |
| var newField = false; | |
| } else { | |
| //append content | |
| mQuery(newHtml).appendTo('#mauticforms_actions'); | |
| var newField = true; | |
| } | |
| //activate new stuff | |
| mQuery(actionId + " [data-toggle='ajax']").click(function (event) { | |
| event.preventDefault(); | |
| return Mautic.ajaxifyLink(this, event); | |
| }); | |
| //initialize tooltips | |
| mQuery(actionId + " *[data-toggle='tooltip']").tooltip({html: true}); | |
| //initialize ajax'd modals | |
| mQuery(actionId + " [data-toggle='ajaxmodal']").on('click.ajaxmodal', function (event) { | |
| event.preventDefault(); | |
| Mautic.ajaxifyModal(this, event); | |
| }); | |
| Mautic.initHideItemButton(actionId); | |
| mQuery('#mauticforms_actions .mauticform-row').off(".mauticform"); | |
| mQuery('#mauticforms_actions .mauticform-row').on('dblclick.mauticformactions', function(event) { | |
| event.preventDefault(); | |
| mQuery(this).find('.btn-edit').first().click(); | |
| }); | |
| //show actions panel | |
| if (!mQuery('#actions-panel').hasClass('in')) { | |
| mQuery('a[href="#actions-panel"]').trigger('click'); | |
| } | |
| if (newField) { | |
| mQuery('.bundle-main-inner-wrapper').scrollTop(mQuery('.bundle-main-inner-wrapper').height()); | |
| } | |
| if (mQuery('#form-action-placeholder').length) { | |
| mQuery('#form-action-placeholder').remove(); | |
| } | |
| } | |
| }; | |
| Mautic.initHideItemButton = function(container) { | |
| mQuery(container).find('[data-hide-panel]').click(function(e) { | |
| e.preventDefault(); | |
| mQuery(this).closest('.panel,.panel2').hide('fast'); | |
| }); | |
| } | |
| Mautic.onPostSubmitActionChange = function(value) { | |
| if (value == 'return') { | |
| //remove required class | |
| mQuery('#mauticform_postActionProperty').prev().removeClass('required'); | |
| } else { | |
| mQuery('#mauticform_postActionProperty').prev().addClass('required'); | |
| } | |
| mQuery('#mauticform_postActionProperty').next().html(''); | |
| mQuery('#mauticform_postActionProperty').parent().removeClass('has-error'); | |
| }; | |
| Mautic.selectFormType = function(formType) { | |
| if (formType == 'standalone') { | |
| mQuery('option.action-standalone-only').removeClass('hide'); | |
| mQuery('.page-header h3').text(mauticLang.newStandaloneForm); | |
| } else { | |
| mQuery('option.action-standalone-only').addClass('hide'); | |
| mQuery('.page-header h3').text(mauticLang.newCampaignForm); | |
| } | |
| mQuery('.available-actions select').trigger('chosen:updated'); | |
| mQuery('#mauticform_formType').val(formType); | |
| mQuery('body').removeClass('noscroll'); | |
| mQuery('.form-type-modal').remove(); | |
| mQuery('.form-type-modal-backdrop').remove(); | |
| }; | |