Archived
164 lines
3.9 KiB
JavaScript
164 lines
3.9 KiB
JavaScript
var bulk_editor = function (current_table) {
|
|
|
|
var new_class = current_table.find('[class^=wpseo-new]').first().attr('class');
|
|
var new_id = '#' + new_class + '-';
|
|
var existing_id = new_id.replace('new', 'existing');
|
|
var column_value = current_table.find('th[id^=col_existing_yoast]').first().text().replace('Existing ', '');
|
|
|
|
var save_method = new_class.replace('-new-', '_save_');
|
|
var save_all_method = 'wpseo_save_all_' + current_table.attr('class').split('wpseo_bulk_')[1];
|
|
|
|
var bulk_type = save_method.replace('wpseo_save_', '');
|
|
|
|
var options = {
|
|
new_class : '.' + new_class,
|
|
new_id : new_id,
|
|
existing_id: existing_id
|
|
};
|
|
|
|
var instance = {
|
|
|
|
submit_new: function (id, element) {
|
|
|
|
var new_target = options.new_id + id;
|
|
var existing_target = options.existing_id + id;
|
|
|
|
if (jQuery(options.new_id + id).prop('type') == 'select-one') {
|
|
var new_value = jQuery(new_target).find(':selected').text();
|
|
} else {
|
|
var new_value = jQuery(new_target).val();
|
|
}
|
|
|
|
var current_value = jQuery(existing_target).html();
|
|
|
|
if (new_value == current_value) {
|
|
jQuery(new_target).val('').focus();
|
|
}
|
|
else {
|
|
|
|
if (( new_value == '' ) && !confirm("Are you sure you want to remove the existing " + column_value + "?")) {
|
|
jQuery(new_target).focus();
|
|
jQuery(new_target).val('').focus();
|
|
return;
|
|
}
|
|
|
|
var data = {
|
|
action : save_method,
|
|
_ajax_nonce : wpseo_bulk_editor_nonce,
|
|
wpseo_post_id : id,
|
|
new_value : new_value,
|
|
existing_value: current_value
|
|
};
|
|
|
|
jQuery.post(ajaxurl, data, instance.handle_response);
|
|
}
|
|
|
|
},
|
|
|
|
submit_all: function (event) {
|
|
event.preventDefault();
|
|
|
|
var data = {
|
|
'action' : save_all_method,
|
|
'_ajax_nonce': wpseo_bulk_editor_nonce
|
|
};
|
|
|
|
data.send = false;
|
|
data.items = {};
|
|
data.existing_items = {};
|
|
|
|
jQuery(options.new_class).each(function () {
|
|
var id = jQuery(this).data('id');
|
|
var value = jQuery(this).val();
|
|
var existing_value = jQuery(options.existing_id + id).html();
|
|
|
|
if (value != '') {
|
|
if (value == existing_value) {
|
|
jQuery(options.new_id + id).val('').focus();
|
|
}
|
|
else {
|
|
data.send = true;
|
|
data.items[id] = value;
|
|
data.existing_items[id] = existing_value;
|
|
}
|
|
}
|
|
});
|
|
|
|
if (data.send) {
|
|
jQuery.post(ajaxurl, data, instance.handle_responses);
|
|
}
|
|
},
|
|
|
|
handle_response: function (response, status) {
|
|
if (status != "success") {
|
|
return;
|
|
}
|
|
|
|
var resp = response;
|
|
if (typeof resp == "string") {
|
|
resp = JSON.parse(resp);
|
|
}
|
|
|
|
if (resp instanceof Array) {
|
|
jQuery.each(resp, function () {
|
|
instance.handle_response(this, status);
|
|
});
|
|
}
|
|
else {
|
|
if (resp.status == 'success') {
|
|
var new_value = resp['new_' + bulk_type];
|
|
|
|
jQuery(options.existing_id + resp.post_id).html(new_value.replace(/\\(?!\\)/g, ''));
|
|
jQuery(options.new_id + resp.post_id).val('').focus();
|
|
}
|
|
else {
|
|
alert("Failure");
|
|
}
|
|
}
|
|
},
|
|
|
|
handle_responses: function (responses, status) {
|
|
var resps = jQuery.parseJSON(responses);
|
|
jQuery.each(resps, function () {
|
|
instance.handle_response(this, status);
|
|
});
|
|
},
|
|
|
|
set_events: function () {
|
|
current_table.find('.wpseo-save').click(function () {
|
|
var id = jQuery(this).data('id');
|
|
instance.submit_new(id, this);
|
|
});
|
|
|
|
current_table.find('.wpseo-save-all').click(instance.submit_all);
|
|
|
|
current_table.find(options.new_class).keypress(
|
|
function (event) {
|
|
if (event.which == 13) {
|
|
event.preventDefault();
|
|
var id = jQuery(this).data('id');
|
|
instance.submit_new(id, this);
|
|
}
|
|
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|
|
return instance;
|
|
|
|
}
|
|
|
|
jQuery(document).ready(function () {
|
|
var parent_tables = jQuery('table[class*="wpseo_bulk"]');
|
|
parent_tables.each(
|
|
function (number, parent_table) {
|
|
var current_table = jQuery(parent_table);
|
|
var bulk_edit = bulk_editor(current_table);
|
|
|
|
bulk_edit.set_events();
|
|
|
|
}
|
|
);
|
|
|
|
}); |