- Updates Import to use the existing custom field creation code
- Closes #499
This commit is contained in:
@@ -745,70 +745,30 @@ 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) {
|
||||||
});
|
|
||||||
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) {
|
if(response.result === true) {
|
||||||
var new_column_data = {
|
var new_column_data = {
|
||||||
'id': response.customField.id,
|
'id': response.field.id,
|
||||||
'name': name,
|
'name': response.field.name,
|
||||||
'type': type,
|
'type': response.field.type,
|
||||||
'custom': true,
|
'custom': true
|
||||||
};
|
};
|
||||||
// if this is the first custom column, create an "optgroup"
|
// if this is the first custom column, create an "optgroup"
|
||||||
if (mailpoetColumnsSelect2.length === 2) {
|
if (mailpoetColumnsSelect2.length === 2) {
|
||||||
@@ -837,22 +797,18 @@ define(
|
|||||||
});
|
});
|
||||||
jQuery(selectElement).data('column-id', new_column_data.id);
|
jQuery(selectElement).data('column-id', new_column_data.id);
|
||||||
filterSubscribers();
|
filterSubscribers();
|
||||||
|
// close popup
|
||||||
|
MailPoet.Modal.close();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
MailPoet.Notice.error(MailPoet.I18n.t('customFieldCreateError'));
|
if(response.errors.length > 0) {
|
||||||
}
|
jQuery(response.errors).each(function(i, error) {
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Notice.error(error, {positionAfter: '#field_name'});
|
||||||
})
|
|
||||||
.fail(function (error) {
|
|
||||||
MailPoet.Modal.loading(false);
|
|
||||||
MailPoet.Notice.error(
|
|
||||||
MailPoet.I18n.t('serverError') + error.statusText.toLowerCase() + '.'
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
jQuery('#new_column_cancel').click(function () {
|
return false;
|
||||||
MailPoet.Modal.close();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// CHANGE COLUMN
|
// CHANGE COLUMN
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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'),
|
||||||
|
@@ -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>
|
Reference in New Issue
Block a user