mirror of
https://github.com/WordPress/WordPress.git
synced 2024-08-26 07:43:04 +02:00
Note that this does not fix issues related to comment quick edit. Internal linking also continues to use the `.alternate` class for now. IE8 and below gracefully degrade by not having zebra striping. There is some hoop jumping with adding an extra table row to maintain zebra striping during quick edit. Documenting that here for future reference; it is also in the inline documentation. fixes #30981 and #26060. see #25060. Built from https://develop.svn.wordpress.org/trunk@31181 git-svn-id: http://core.svn.wordpress.org/trunk@31162 1a063a9b-81f0-0310-95a4-ce76da25c4cd
135 lines
3.1 KiB
JavaScript
135 lines
3.1 KiB
JavaScript
/* global inlineEditL10n, ajaxurl */
|
|
|
|
var inlineEditTax;
|
|
(function($) {
|
|
inlineEditTax = {
|
|
|
|
init : function() {
|
|
var t = this, row = $('#inline-edit');
|
|
|
|
t.type = $('#the-list').attr('data-wp-lists').substr(5);
|
|
t.what = '#'+t.type+'-';
|
|
|
|
$('#the-list').on('click', 'a.editinline', function(){
|
|
inlineEditTax.edit(this);
|
|
return false;
|
|
});
|
|
|
|
// prepare the edit row
|
|
row.keyup( function( e ) {
|
|
if ( e.which === 27 ) {
|
|
return inlineEditTax.revert();
|
|
}
|
|
});
|
|
|
|
$( 'a.cancel', row ).click( function() {
|
|
return inlineEditTax.revert();
|
|
});
|
|
$( 'a.save', row ).click( function() {
|
|
return inlineEditTax.save(this);
|
|
});
|
|
$( 'input, select', row ).keydown( function( e ) {
|
|
if ( e.which === 13 ) {
|
|
return inlineEditTax.save( this );
|
|
}
|
|
});
|
|
|
|
$( '#posts-filter input[type="submit"]' ).mousedown( function() {
|
|
t.revert();
|
|
});
|
|
},
|
|
|
|
toggle : function(el) {
|
|
var t = this;
|
|
$(t.what+t.getId(el)).css('display') === 'none' ? t.revert() : t.edit(el);
|
|
},
|
|
|
|
edit : function(id) {
|
|
var editRow, rowData,
|
|
t = this;
|
|
t.revert();
|
|
|
|
if ( typeof(id) === 'object' ) {
|
|
id = t.getId(id);
|
|
}
|
|
|
|
editRow = $('#inline-edit').clone(true), rowData = $('#inline_'+id);
|
|
$('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length);
|
|
|
|
$(t.what+id).hide().before(editRow).before('<tr class="hidden"></tr>');
|
|
|
|
$(':input[name="name"]', editRow).val( $('.name', rowData).text() );
|
|
$(':input[name="slug"]', editRow).val( $('.slug', rowData).text() );
|
|
|
|
$(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
|
|
$('.ptitle', editRow).eq(0).focus();
|
|
|
|
return false;
|
|
},
|
|
|
|
save : function(id) {
|
|
var params, fields, tax = $('input[name="taxonomy"]').val() || '';
|
|
|
|
if( typeof(id) === 'object' ) {
|
|
id = this.getId(id);
|
|
}
|
|
|
|
$('table.widefat .spinner').show();
|
|
|
|
params = {
|
|
action: 'inline-save-tax',
|
|
tax_type: this.type,
|
|
tax_ID: id,
|
|
taxonomy: tax
|
|
};
|
|
|
|
fields = $('#edit-'+id).find(':input').serialize();
|
|
params = fields + '&' + $.param(params);
|
|
|
|
// make ajax request
|
|
$.post( ajaxurl, params,
|
|
function(r) {
|
|
var row, new_id;
|
|
$('table.widefat .spinner').hide();
|
|
|
|
if (r) {
|
|
if ( -1 !== r.indexOf( '<tr' ) ) {
|
|
$(inlineEditTax.what+id).siblings('tr.hidden').addBack().remove();
|
|
new_id = $(r).attr('id');
|
|
|
|
$('#edit-'+id).before(r).remove();
|
|
row = new_id ? $('#'+new_id) : $(inlineEditTax.what+id);
|
|
row.hide().fadeIn();
|
|
} else {
|
|
$('#edit-'+id+' .inline-edit-save .error').html(r).show();
|
|
}
|
|
} else {
|
|
$('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
|
|
}
|
|
}
|
|
);
|
|
return false;
|
|
},
|
|
|
|
revert : function() {
|
|
var id = $('table.widefat tr.inline-editor').attr('id');
|
|
|
|
if ( id ) {
|
|
$('table.widefat .spinner').hide();
|
|
$('#'+id).siblings('tr.hidden').addBack().remove();
|
|
id = id.substr( id.lastIndexOf('-') + 1 );
|
|
$(this.what+id).show();
|
|
}
|
|
|
|
return false;
|
|
},
|
|
|
|
getId : function(o) {
|
|
var id = o.tagName === 'TR' ? o.id : $(o).parents('tr').attr('id'), parts = id.split('-');
|
|
return parts[parts.length - 1];
|
|
}
|
|
};
|
|
|
|
$(document).ready(function(){inlineEditTax.init();});
|
|
})(jQuery);
|