151 lines
3.5 KiB
JavaScript
151 lines
3.5 KiB
JavaScript
|
/* global window, document, jQuery, inlineEditL10n, ajaxurl */
|
||
|
var inlineEditKey;
|
||
|
|
||
|
( function( $ ) {
|
||
|
inlineEditKey = {
|
||
|
|
||
|
init: function() {
|
||
|
var t = this,
|
||
|
row = $( '#security-keys-section #inline-edit' );
|
||
|
|
||
|
t.what = '#key-';
|
||
|
|
||
|
$( '#security-keys-section #the-list' ).on( 'click', 'a.editinline', function() {
|
||
|
inlineEditKey.edit( this );
|
||
|
return false;
|
||
|
} );
|
||
|
|
||
|
// Prepare the edit row.
|
||
|
row.keyup( function( event ) {
|
||
|
if ( 27 === event.which ) {
|
||
|
return inlineEditKey.revert();
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
$( 'a.cancel', row ).click( function() {
|
||
|
return inlineEditKey.revert();
|
||
|
} );
|
||
|
|
||
|
$( 'a.save', row ).click( function() {
|
||
|
return inlineEditKey.save( this );
|
||
|
} );
|
||
|
|
||
|
$( 'input, select', row ).keydown( function( event ) {
|
||
|
if ( 13 === event.which ) {
|
||
|
return inlineEditKey.save( this );
|
||
|
}
|
||
|
} );
|
||
|
},
|
||
|
|
||
|
toggle: function( el ) {
|
||
|
var t = this;
|
||
|
|
||
|
if ( 'none' === $( t.what + t.getId( el ) ).css( 'display' ) ) {
|
||
|
t.revert();
|
||
|
} else {
|
||
|
t.edit( el );
|
||
|
}
|
||
|
},
|
||
|
|
||
|
edit: function( id ) {
|
||
|
var editRow, rowData, val,
|
||
|
t = this;
|
||
|
t.revert();
|
||
|
|
||
|
if ( 'object' === typeof id ) {
|
||
|
id = t.getId( id );
|
||
|
}
|
||
|
|
||
|
editRow = $( '#inline-edit' ).clone( true );
|
||
|
rowData = $( '#inline_' + id );
|
||
|
|
||
|
$( 'td', editRow ).attr( 'colspan', $( 'th:visible, td:visible', '#security-keys-section .widefat thead' ).length );
|
||
|
|
||
|
$( t.what + id ).hide().after( editRow ).after( '<tr class="hidden"></tr>' );
|
||
|
|
||
|
val = $( '.name', rowData );
|
||
|
val.find( 'img' ).replaceWith( function() {
|
||
|
return this.alt;
|
||
|
} );
|
||
|
val = val.text();
|
||
|
$( ':input[name="name"]', editRow ).val( val );
|
||
|
|
||
|
$( editRow ).attr( 'id', 'edit-' + id ).addClass( 'inline-editor' ).show();
|
||
|
$( '.ptitle', editRow ).eq( 0 ).focus();
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
save: function( id ) {
|
||
|
var params, fields;
|
||
|
|
||
|
if ( 'object' === typeof id ) {
|
||
|
id = this.getId( id );
|
||
|
}
|
||
|
|
||
|
$( '#security-keys-section table.widefat .spinner' ).addClass( 'is-active' );
|
||
|
|
||
|
params = {
|
||
|
action: 'inline-save-key',
|
||
|
keyHandle: id,
|
||
|
user_id: window.u2fL10n.user_id
|
||
|
};
|
||
|
|
||
|
fields = $( '#edit-' + id ).find( ':input' ).serialize();
|
||
|
params = fields + '&' + $.param( params );
|
||
|
|
||
|
// Make ajax request.
|
||
|
$.post( ajaxurl, params,
|
||
|
function( r ) {
|
||
|
var row, newID;
|
||
|
$( '#security-keys-section table.widefat .spinner' ).removeClass( 'is-active' );
|
||
|
|
||
|
if ( r ) {
|
||
|
if ( -1 !== r.indexOf( '<tr' ) ) {
|
||
|
$( inlineEditKey.what + id ).siblings( 'tr.hidden' ).addBack().remove();
|
||
|
newID = $( r ).attr( 'id' );
|
||
|
|
||
|
$( '#edit-' + id ).before( r ).remove();
|
||
|
|
||
|
if ( newID ) {
|
||
|
row = $( '#' + newID );
|
||
|
} else {
|
||
|
row = $( inlineEditKey.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 = $( '#security-keys-section table.widefat tr.inline-editor' ).attr( 'id' );
|
||
|
|
||
|
if ( id ) {
|
||
|
$( '#security-keys-section table.widefat .spinner' ).removeClass( 'is-active' );
|
||
|
$( '#' + id ).siblings( 'tr.hidden' ).addBack().remove();
|
||
|
id = id.replace( /\w+\-/, '' );
|
||
|
$( this.what + id ).show();
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
getId: function( o ) {
|
||
|
var id = 'TR' === o.tagName ? o.id : $( o ).parents( 'tr' ).attr( 'id' );
|
||
|
return id.replace( /\w+\-/, '' );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$( document ).ready( function() {
|
||
|
inlineEditKey.init();
|
||
|
} );
|
||
|
}( jQuery ) );
|