- Updates Import to use the existing custom field creation code

- Closes #499
This commit is contained in:
Vlad
2016-08-07 15:40:32 -04:00
parent fd2103d1aa
commit 151683c632
4 changed files with 69 additions and 157 deletions

View File

@@ -745,114 +745,70 @@ define(
.on('select2:selecting', function (selectEvent) { .on('select2:selecting', function (selectEvent) {
var selectElement = this, var selectElement = this,
selectedOptionId = selectEvent.params.args.data.id; selectedOptionId = selectEvent.params.args.data.id;
// CREATE CUSTOM FIELD
if (selectedOptionId === 'create') { if (selectedOptionId === 'create') {
selectEvent.preventDefault(); selectEvent.preventDefault();
jQuery(selectElement).select2('close'); jQuery(selectElement).select2('close');
MailPoet.Modal.popup({ MailPoet.Modal.popup({
title: MailPoet.I18n.t('addNewColumn'), title: MailPoet.I18n.t('addNewField'),
template: jQuery('#new_column_template').html() template: jQuery('#form_template_field_form').html()
}); });
jQuery('#new_column_name').keypress(function (e) { jQuery('#form_field_new').parsley().on('form:submit', function(parsley) {
if (e.which == 13) { // get data
jQuery('#new_column_process').click(); var data = jQuery(this.$element).serializeObject();
}
}); // save custom field
jQuery('#new_column_process').click(function () { MailPoet.Ajax.post({
var name = jQuery('#new_column_name').val().trim(), endpoint: 'customFields',
type = jQuery('#new_column_type').val().trim(), action: 'save',
columnNames = mailpoetColumns.map(function (el) { data: data
return el.name.toLowerCase(); }).done(function(response) {
}); if(response.result === true) {
isDuplicateColumnName = var new_column_data = {
(name && columnNames.indexOf(name.toLowerCase()) > -1) 'id': response.field.id,
? true 'name': response.field.name,
: false; 'type': response.field.type,
if (name === '') { 'custom': true
jQuery('.mailpoet_validation_error[data-error="name_required"]') };
.show(); // if this is the first custom column, create an "optgroup"
} else { if (mailpoetColumnsSelect2.length === 2) {
jQuery('.mailpoet_validation_error[data-error="name_required"]') mailpoetColumnsSelect2.push({
.hide(); 'name': MailPoet.I18n.t('userColumns'),
} 'children': []
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() + '.'
);
}); });
} }
}); mailpoetColumnsSelect2[2].children.push(new_column_data);
jQuery('#new_column_cancel').click(function () { mailpoetColumns.push(new_column_data);
MailPoet.Modal.close(); 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 // CHANGE COLUMN

View File

@@ -379,7 +379,12 @@ class Menu {
function import() { function import() {
$import = new ImportExportFactory('import'); $import = new ImportExportFactory('import');
$data = $import->bootstrap(); $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); echo $this->renderer->render('subscribers/importExport/import.html', $data);
} }

View File

@@ -47,6 +47,7 @@
'showDetails': __('Show more details'), 'showDetails': __('Show more details'),
'segmentSelectionRequired': __('Please select at least one list'), 'segmentSelectionRequired': __('Please select at least one list'),
'addNewList': __('Add new list'), 'addNewList': __('Add new list'),
'addNewField': __('Add new field'),
'addNewColumuserColumnsn': __('Add new list'), 'addNewColumuserColumnsn': __('Add new list'),
'userColumns': __('User fields'), 'userColumns': __('User fields'),
'selectedValueAlreadyMatched': __('The selected value is already matched to another field'), 'selectedValueAlreadyMatched': __('The selected value is already matched to another field'),

View File

@@ -157,57 +157,7 @@
</form> </form>
</script> </script>
<!-- New column template --> <!-- New custom field logic -->
<script id="new_column_template" type="text/x-handlebars-template"> <% include 'form/custom_fields.html' %>
<p>
<label><%= __('Field type') %>:</label>
<select id="new_column_type" name="type">
<option value="">--</option>
<option value="input">
<%= __('Text Input') %>
</option>
<option value="textarea">
<%= __('Text Area') %>
</option>
<option value="radio">
<%= __('Radio buttons') %>
</option>
<option value="checkbox">
<%= __('Checkbox') %>
</option>
<option value="select">
<%= __('Select') %>
</option>
<option value="date">
<%= __('Date') %>
</option>
</select>
</p>
<p class="mailpoet_validation_error" data-error="type_required">
<%= __('Please select a type') %>
</p>
<p>
<label><%= __('Field name') %>:</label>
<input id="new_column_name" type="text" name="name" value="{{ name }}"/>
</p>
<p class="mailpoet_validation_error" data-error="name_required">
<%= __('Please specify a name') %>
</p>
<p class="mailpoet_validation_error" data-error="name_not_unique">
<%= __('This name is already taken') %>
</p>
<hr/>
<p class="mailpoet_align_right">
<input type="submit" value="<%= __('Done') %>" id="new_column_process"
class="button-primary "/>
<input type="submit" value="<%= __('Cancel') %>" id="new_column_cancel"
class="button-primary"/>
</p>
</form>
</script>
</div> </div>
</div> </div>