This repository has been archived on 2026-10-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
studio-2013/wp-content/plugins/wordpress-seo/js/wp-seo-bulk-editor.js
T
2014-11-26 21:10:37 +01:00

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();
}
);
});