diff --git a/assets/js/src/subscribers/importExport/import.js b/assets/js/src/subscribers/importExport/import.js index 926bbc0994..3f2cee6c8c 100644 --- a/assets/js/src/subscribers/importExport/import.js +++ b/assets/js/src/subscribers/importExport/import.js @@ -745,114 +745,70 @@ define( .on('select2:selecting', function (selectEvent) { var selectElement = this, selectedOptionId = selectEvent.params.args.data.id; + // CREATE CUSTOM FIELD if (selectedOptionId === 'create') { selectEvent.preventDefault(); jQuery(selectElement).select2('close'); MailPoet.Modal.popup({ - title: MailPoet.I18n.t('addNewColumn'), - template: jQuery('#new_column_template').html() + title: MailPoet.I18n.t('addNewField'), + template: jQuery('#form_template_field_form').html() }); - jQuery('#new_column_name').keypress(function (e) { - if (e.which == 13) { - jQuery('#new_column_process').click(); - } - }); - jQuery('#new_column_process').click(function () { - var name = jQuery('#new_column_name').val().trim(), - type = jQuery('#new_column_type').val().trim(), - columnNames = mailpoetColumns.map(function (el) { - return el.name.toLowerCase(); - }); - isDuplicateColumnName = - (name && columnNames.indexOf(name.toLowerCase()) > -1) - ? true - : false; - if (name === '') { - jQuery('.mailpoet_validation_error[data-error="name_required"]') - .show(); - } else { - jQuery('.mailpoet_validation_error[data-error="name_required"]') - .hide(); - } - if (type === '') { - jQuery('.mailpoet_validation_error[data-error="type_required"]') - .show(); - } else { - jQuery('.mailpoet_validation_error[data-error="type_required"]') - .hide(); - } - if (isDuplicateColumnName) { - jQuery('.mailpoet_validation_error[data-error="name_not_unique"]') - .show(); - } else { - jQuery('.mailpoet_validation_error[data-error="name_not_unique"]') - .hide(); - } - // create new field - if (name && type && !isDuplicateColumnName) { - MailPoet.Modal - .close() - .loading(true); - MailPoet.Ajax - .post({ - endpoint: 'ImportExport', - action: 'addCustomField', - data: { - name: name, - type: type - } - }) - .done(function (response) { - if (response.result === true) { - var new_column_data = { - 'id': response.customField.id, - 'name': name, - 'type': type, - 'custom': true, - }; - // if this is the first custom column, create an "optgroup" - if (mailpoetColumnsSelect2.length === 2) { - mailpoetColumnsSelect2.push({ - 'name': MailPoet.I18n.t('userColumns'), - 'children': [] - }); - } - mailpoetColumnsSelect2[2].children.push(new_column_data); - mailpoetColumns.push(new_column_data); - jQuery('select.mailpoet_subscribers_column_data_match') - .each(function () { - jQuery(this) - .html('') - .select2('destroy') - .select2({ - data: mailpoetColumnsSelect2, - width: '15em', - templateResult: function (item) { - return item.name; - }, - templateSelection: function (item) { - return item.name; - } - }) - }); - jQuery(selectElement).data('column-id', new_column_data.id); - filterSubscribers(); - } - else { - MailPoet.Notice.error(MailPoet.I18n.t('customFieldCreateError')); - } - MailPoet.Modal.loading(false); - }) - .fail(function (error) { - MailPoet.Modal.loading(false); - MailPoet.Notice.error( - MailPoet.I18n.t('serverError') + error.statusText.toLowerCase() + '.' - ); + jQuery('#form_field_new').parsley().on('form:submit', function(parsley) { + // get data + var data = jQuery(this.$element).serializeObject(); + + // save custom field + MailPoet.Ajax.post({ + endpoint: 'customFields', + action: 'save', + data: data + }).done(function(response) { + if(response.result === true) { + var new_column_data = { + 'id': response.field.id, + 'name': response.field.name, + 'type': response.field.type, + 'custom': true + }; + // if this is the first custom column, create an "optgroup" + if (mailpoetColumnsSelect2.length === 2) { + mailpoetColumnsSelect2.push({ + 'name': MailPoet.I18n.t('userColumns'), + 'children': [] }); - } - }); - jQuery('#new_column_cancel').click(function () { - MailPoet.Modal.close(); + } + mailpoetColumnsSelect2[2].children.push(new_column_data); + mailpoetColumns.push(new_column_data); + jQuery('select.mailpoet_subscribers_column_data_match') + .each(function () { + jQuery(this) + .html('') + .select2('destroy') + .select2({ + data: mailpoetColumnsSelect2, + width: '15em', + templateResult: function (item) { + return item.name; + }, + templateSelection: function (item) { + return item.name; + } + }) + }); + jQuery(selectElement).data('column-id', new_column_data.id); + filterSubscribers(); + // close popup + MailPoet.Modal.close(); + } + else { + if(response.errors.length > 0) { + jQuery(response.errors).each(function(i, error) { + MailPoet.Notice.error(error, {positionAfter: '#field_name'}); + }); + } + } + }); + return false; }); } // CHANGE COLUMN @@ -1146,4 +1102,4 @@ define( Backbone.history.start(); } }); - }); + }); \ No newline at end of file diff --git a/lib/Config/Menu.php b/lib/Config/Menu.php index 9aef4eff9b..c8c53e9dfc 100644 --- a/lib/Config/Menu.php +++ b/lib/Config/Menu.php @@ -379,7 +379,12 @@ class Menu { function import() { $import = new ImportExportFactory('import'); $data = $import->bootstrap(); - $data['sub_menu'] = 'mailpoet-subscribers'; + $data = array_merge($data, array( + 'date_types' => Block\Date::getDateTypes(), + 'date_formats' => Block\Date::getDateFormats(), + 'month_names' => Block\Date::getMonthNames(), + 'sub_menu' => 'mailpoet-subscribers' + )); echo $this->renderer->render('subscribers/importExport/import.html', $data); } diff --git a/views/subscribers/importExport/import.html b/views/subscribers/importExport/import.html index 935f63166e..5be5a72f68 100644 --- a/views/subscribers/importExport/import.html +++ b/views/subscribers/importExport/import.html @@ -47,6 +47,7 @@ 'showDetails': __('Show more details'), 'segmentSelectionRequired': __('Please select at least one list'), 'addNewList': __('Add new list'), +'addNewField': __('Add new field'), 'addNewColumuserColumnsn': __('Add new list'), 'userColumns': __('User fields'), 'selectedValueAlreadyMatched': __('The selected value is already matched to another field'), diff --git a/views/subscribers/importExport/import/step2.html b/views/subscribers/importExport/import/step2.html index 501cb4e497..367e7ef280 100644 --- a/views/subscribers/importExport/import/step2.html +++ b/views/subscribers/importExport/import/step2.html @@ -157,57 +157,7 @@ - - + + <% include 'form/custom_fields.html' %> - + \ No newline at end of file