2013-11-19 05:32:10 +01:00
|
|
|
/* global inlineEditL10n, ajaxurl, typenow */
|
2016-01-14 23:58:27 +01:00
|
|
|
window.wp = window.wp || {};
|
2013-11-19 05:32:10 +01:00
|
|
|
|
|
|
|
var inlineEditPost;
|
2016-01-14 23:58:27 +01:00
|
|
|
( function( $, wp ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
inlineEditPost = {
|
|
|
|
|
|
|
|
init : function(){
|
|
|
|
var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit');
|
|
|
|
|
|
|
|
t.type = $('table.widefat').hasClass('pages') ? 'page' : 'post';
|
|
|
|
t.what = '#post-';
|
|
|
|
|
|
|
|
// prepare the edit rows
|
|
|
|
qeRow.keyup(function(e){
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( e.which === 27 ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
return inlineEditPost.revert();
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
});
|
|
|
|
bulkRow.keyup(function(e){
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( e.which === 27 ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
return inlineEditPost.revert();
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
});
|
|
|
|
|
2015-06-19 23:42:27 +02:00
|
|
|
$( '.cancel', qeRow ).click( function() {
|
2012-08-23 02:04:18 +02:00
|
|
|
return inlineEditPost.revert();
|
|
|
|
});
|
2015-06-19 23:42:27 +02:00
|
|
|
$( '.save', qeRow ).click( function() {
|
2012-08-23 02:04:18 +02:00
|
|
|
return inlineEditPost.save(this);
|
|
|
|
});
|
|
|
|
$('td', qeRow).keydown(function(e){
|
2015-01-24 16:07:22 +01:00
|
|
|
if ( e.which === 13 && ! $( e.target ).hasClass( 'cancel' ) ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
return inlineEditPost.save(this);
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
});
|
|
|
|
|
2015-06-19 23:42:27 +02:00
|
|
|
$( '.cancel', bulkRow ).click( function() {
|
2012-08-23 02:04:18 +02:00
|
|
|
return inlineEditPost.revert();
|
|
|
|
});
|
|
|
|
|
|
|
|
$('#inline-edit .inline-edit-private input[value="private"]').click( function(){
|
|
|
|
var pw = $('input.inline-edit-password-input');
|
|
|
|
if ( $(this).prop('checked') ) {
|
|
|
|
pw.val('').prop('disabled', true);
|
|
|
|
} else {
|
|
|
|
pw.prop('disabled', false);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// add events
|
2015-10-09 03:27:27 +02:00
|
|
|
$('#the-list').on( 'click', 'a.editinline', function( e ) {
|
|
|
|
e.preventDefault();
|
2012-08-23 02:04:18 +02:00
|
|
|
inlineEditPost.edit(this);
|
|
|
|
});
|
|
|
|
|
2014-05-28 15:50:14 +02:00
|
|
|
$('#bulk-edit').find('fieldset:first').after(
|
2012-08-23 02:04:18 +02:00
|
|
|
$('#inline-edit fieldset.inline-edit-categories').clone()
|
|
|
|
).siblings( 'fieldset:last' ).prepend(
|
|
|
|
$('#inline-edit label.inline-edit-tags').clone()
|
|
|
|
);
|
|
|
|
|
|
|
|
$('select[name="_status"] option[value="future"]', bulkRow).remove();
|
|
|
|
|
|
|
|
$('#doaction, #doaction2').click(function(e){
|
2016-01-14 23:58:27 +01:00
|
|
|
var n;
|
|
|
|
|
|
|
|
t.whichBulkButtonId = $( this ).attr( 'id' );
|
|
|
|
n = t.whichBulkButtonId.substr( 2 );
|
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( 'edit' === $( 'select[name="' + n + '"]' ).val() ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
e.preventDefault();
|
|
|
|
t.setBulk();
|
|
|
|
} else if ( $('form#posts-filter tr.inline-editor').length > 0 ) {
|
|
|
|
t.revert();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
toggle : function(el){
|
|
|
|
var t = this;
|
2013-11-19 05:32:10 +01:00
|
|
|
$( t.what + t.getId( el ) ).css( 'display' ) === 'none' ? t.revert() : t.edit( el );
|
2012-08-23 02:04:18 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
setBulk : function(){
|
2016-10-15 00:40:28 +02:00
|
|
|
var te = '', type = this.type, c = true;
|
2012-08-23 02:04:18 +02:00
|
|
|
this.revert();
|
|
|
|
|
2015-07-01 03:06:25 +02:00
|
|
|
$( '#bulk-edit td' ).attr( 'colspan', $( 'th:visible, td:visible', '.widefat:first thead' ).length );
|
2015-01-14 23:14:22 +01:00
|
|
|
// Insert the editor at the top of the table with an empty row above to maintain zebra striping.
|
|
|
|
$('table.widefat tbody').prepend( $('#bulk-edit') ).prepend('<tr class="hidden"></tr>');
|
2012-08-23 02:04:18 +02:00
|
|
|
$('#bulk-edit').addClass('inline-editor').show();
|
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
$( 'tbody th.check-column input[type="checkbox"]' ).each( function() {
|
2012-08-23 02:04:18 +02:00
|
|
|
if ( $(this).prop('checked') ) {
|
|
|
|
c = false;
|
|
|
|
var id = $(this).val(), theTitle;
|
2012-11-29 03:42:06 +01:00
|
|
|
theTitle = $('#inline_'+id+' .post_title').html() || inlineEditL10n.notitle;
|
2012-08-23 02:04:18 +02:00
|
|
|
te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( c ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
return this.revert();
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
|
|
|
|
$('#bulk-titles').html(te);
|
|
|
|
$('#bulk-titles a').click(function(){
|
|
|
|
var id = $(this).attr('id').substr(1);
|
|
|
|
|
|
|
|
$('table.widefat input[value="' + id + '"]').prop('checked', false);
|
|
|
|
$('#ttle'+id).remove();
|
|
|
|
});
|
|
|
|
|
|
|
|
// enable autocomplete for tags
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( 'post' === type ) {
|
2016-10-15 00:40:28 +02:00
|
|
|
$( 'tr.inline-editor textarea[data-wp-taxonomy]' ).each( function ( i, element ) {
|
2017-04-05 04:14:11 +02:00
|
|
|
/*
|
|
|
|
* While Quick Edit clones the form each time, Bulk Edit always re-uses
|
|
|
|
* the same form. Let's check if an autocomplete instance already exists.
|
|
|
|
*/
|
|
|
|
if ( $( element ).autocomplete( 'instance' ) ) {
|
|
|
|
// jQuery equivalent of `continue` within an `each()` loop.
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2016-10-15 00:40:28 +02:00
|
|
|
$( element ).wpTagsSuggest();
|
|
|
|
} );
|
2012-08-23 02:04:18 +02:00
|
|
|
}
|
|
|
|
$('html, body').animate( { scrollTop: 0 }, 'fast' );
|
|
|
|
},
|
|
|
|
|
|
|
|
edit : function(id) {
|
2016-01-21 23:50:25 +01:00
|
|
|
var t = this, fields, editRow, rowData, status, pageOpt, pageLevel, nextPage, pageLoop = true, nextLevel, f, val, pw;
|
2012-08-23 02:04:18 +02:00
|
|
|
t.revert();
|
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( typeof(id) === 'object' ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
id = t.getId(id);
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
|
2016-11-13 08:42:31 +01:00
|
|
|
fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password', 'post_format', 'menu_order', 'page_template'];
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( t.type === 'page' ) {
|
2016-11-13 08:42:31 +01:00
|
|
|
fields.push('post_parent');
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
|
2015-01-14 23:14:22 +01:00
|
|
|
// add the new edit row with an extra blank row underneath to maintain zebra striping.
|
2012-08-23 02:04:18 +02:00
|
|
|
editRow = $('#inline-edit').clone(true);
|
2015-07-01 03:06:25 +02:00
|
|
|
$( 'td', editRow ).attr( 'colspan', $( 'th:visible, td:visible', '.widefat:first thead' ).length );
|
2012-08-23 02:04:18 +02:00
|
|
|
|
List tables: A better responsive view.
Instead of truncating columns, the data that's already in the markup can now be toggled into view. Only seems appropriate to celebrate four years of contributing by finally doing the first thing I ever mocked up.
Known issues / concerns:
* Custom list tables that don't define a primary column will show nothing at all. These are not extremely common, as `WP_List_Table` isn't really recommended for plugin consumption, but it happens. We need to come up with some kind of fallback.
* Some visual elements, particularly whitespace, could use refining.
* Needs a11y review.
* Touch performance on iOS feels sluggish - is there anything we can do about that?
* Would this be better accordion-style (only one expanded at a time)?
* Is `wp_strip_all_tags()` good enough for column titles that have HTML in them? It's essentially a workaround for the fact that core's comments column does that for the icon, which maybe it shouldn't. Perhaps worth another ticket, as a markup change would be fairly independent.
* Visual hierarchy is not great when expanded (also worthy of another ticket).
* Quick edit now becomes noticeably more annoying to cancel out of, as you have to scroll all the way down and you lose your position from before it was opened. Again, worthy of another ticket.
props Michael Arestad, helen.
see #32395.
Built from https://develop.svn.wordpress.org/trunk@33016
git-svn-id: http://core.svn.wordpress.org/trunk@32987 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-01 03:31:25 +02:00
|
|
|
$(t.what+id).removeClass('is-expanded').hide().after(editRow).after('<tr class="hidden"></tr>');
|
2012-08-23 02:04:18 +02:00
|
|
|
|
|
|
|
// populate the data
|
|
|
|
rowData = $('#inline_'+id);
|
|
|
|
if ( !$(':input[name="post_author"] option[value="' + $('.post_author', rowData).text() + '"]', editRow).val() ) {
|
|
|
|
// author no longer has edit caps, so we need to add them to the list of authors
|
|
|
|
$(':input[name="post_author"]', editRow).prepend('<option value="' + $('.post_author', rowData).text() + '">' + $('#' + t.type + '-' + id + ' .author').text() + '</option>');
|
|
|
|
}
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( $( ':input[name="post_author"] option', editRow ).length === 1 ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
$('label.inline-edit-author', editRow).hide();
|
|
|
|
}
|
|
|
|
|
|
|
|
for ( f = 0; f < fields.length; f++ ) {
|
2015-03-11 23:55:28 +01:00
|
|
|
val = $('.'+fields[f], rowData);
|
|
|
|
// Deal with Twemoji
|
|
|
|
val.find( 'img' ).replaceWith( function() { return this.alt; } );
|
|
|
|
val = val.text();
|
|
|
|
$(':input[name="' + fields[f] + '"]', editRow).val( val );
|
2012-08-23 02:04:18 +02:00
|
|
|
}
|
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( $( '.comment_status', rowData ).text() === 'open' ) {
|
|
|
|
$( 'input[name="comment_status"]', editRow ).prop( 'checked', true );
|
|
|
|
}
|
|
|
|
if ( $( '.ping_status', rowData ).text() === 'open' ) {
|
|
|
|
$( 'input[name="ping_status"]', editRow ).prop( 'checked', true );
|
|
|
|
}
|
|
|
|
if ( $( '.sticky', rowData ).text() === 'sticky' ) {
|
|
|
|
$( 'input[name="sticky"]', editRow ).prop( 'checked', true );
|
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
|
|
|
|
// hierarchical taxonomies
|
|
|
|
$('.post_category', rowData).each(function(){
|
2013-11-19 05:32:10 +01:00
|
|
|
var taxname,
|
|
|
|
term_ids = $(this).text();
|
2012-08-23 02:04:18 +02:00
|
|
|
|
|
|
|
if ( term_ids ) {
|
|
|
|
taxname = $(this).attr('id').replace('_'+id, '');
|
|
|
|
$('ul.'+taxname+'-checklist :checkbox', editRow).val(term_ids.split(','));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
//flat taxonomies
|
|
|
|
$('.tags_input', rowData).each(function(){
|
2015-03-11 23:55:28 +01:00
|
|
|
var terms = $(this),
|
2012-08-23 02:04:18 +02:00
|
|
|
taxname = $(this).attr('id').replace('_' + id, ''),
|
|
|
|
textarea = $('textarea.tax_input_' + taxname, editRow),
|
|
|
|
comma = inlineEditL10n.comma;
|
|
|
|
|
2015-03-11 23:55:28 +01:00
|
|
|
terms.find( 'img' ).replaceWith( function() { return this.alt; } );
|
|
|
|
terms = terms.text();
|
|
|
|
|
2012-08-23 02:04:18 +02:00
|
|
|
if ( terms ) {
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( ',' !== comma ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
terms = terms.replace(/,/g, comma);
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
textarea.val(terms);
|
|
|
|
}
|
|
|
|
|
2016-10-15 00:40:28 +02:00
|
|
|
textarea.wpTagsSuggest();
|
2012-08-23 02:04:18 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
// handle the post status
|
|
|
|
status = $('._status', rowData).text();
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( 'future' !== status ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
$('select[name="_status"] option[value="future"]', editRow).remove();
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
|
2015-06-10 00:02:27 +02:00
|
|
|
pw = $( '.inline-edit-password-input' ).prop( 'disabled', false );
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( 'private' === status ) {
|
|
|
|
$('input[name="keep_private"]', editRow).prop('checked', true);
|
2015-06-10 00:02:27 +02:00
|
|
|
pw.val( '' ).prop( 'disabled', true );
|
2012-08-23 02:04:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// remove the current page and children from the parent dropdown
|
|
|
|
pageOpt = $('select[name="post_parent"] option[value="' + id + '"]', editRow);
|
|
|
|
if ( pageOpt.length > 0 ) {
|
|
|
|
pageLevel = pageOpt[0].className.split('-')[1];
|
|
|
|
nextPage = pageOpt;
|
|
|
|
while ( pageLoop ) {
|
|
|
|
nextPage = nextPage.next('option');
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( nextPage.length === 0 ) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2012-08-23 02:04:18 +02:00
|
|
|
nextLevel = nextPage[0].className.split('-')[1];
|
2013-11-19 05:32:10 +01:00
|
|
|
|
2012-08-23 02:04:18 +02:00
|
|
|
if ( nextLevel <= pageLevel ) {
|
|
|
|
pageLoop = false;
|
|
|
|
} else {
|
|
|
|
nextPage.remove();
|
|
|
|
nextPage = pageOpt;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pageOpt.remove();
|
|
|
|
}
|
|
|
|
|
|
|
|
$(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
|
|
|
|
$('.ptitle', editRow).focus();
|
|
|
|
|
|
|
|
return false;
|
|
|
|
},
|
|
|
|
|
2016-01-14 23:58:27 +01:00
|
|
|
// Ajax saving is only for Quick Edit.
|
2012-08-23 02:04:18 +02:00
|
|
|
save : function(id) {
|
2013-10-02 22:53:09 +02:00
|
|
|
var params, fields, page = $('.post_status_page').val() || '';
|
2012-08-23 02:04:18 +02:00
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( typeof(id) === 'object' ) {
|
2012-08-23 02:04:18 +02:00
|
|
|
id = this.getId(id);
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2012-08-23 02:04:18 +02:00
|
|
|
|
2015-04-03 06:52:27 +02:00
|
|
|
$( 'table.widefat .spinner' ).addClass( 'is-active' );
|
2012-08-23 02:04:18 +02:00
|
|
|
|
|
|
|
params = {
|
|
|
|
action: 'inline-save',
|
|
|
|
post_type: typenow,
|
|
|
|
post_ID: id,
|
|
|
|
edit_date: 'true',
|
|
|
|
post_status: page
|
|
|
|
};
|
|
|
|
|
2013-11-13 05:06:09 +01:00
|
|
|
fields = $('#edit-'+id).find(':input').serialize();
|
2012-08-23 02:04:18 +02:00
|
|
|
params = fields + '&' + $.param(params);
|
|
|
|
|
|
|
|
// make ajax request
|
|
|
|
$.post( ajaxurl, params,
|
|
|
|
function(r) {
|
2016-01-14 23:58:27 +01:00
|
|
|
var $errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
|
|
|
|
|
2015-04-03 06:52:27 +02:00
|
|
|
$( 'table.widefat .spinner' ).removeClass( 'is-active' );
|
2015-09-12 01:34:25 +02:00
|
|
|
$( '.ac_results' ).hide();
|
2012-08-23 02:04:18 +02:00
|
|
|
|
|
|
|
if (r) {
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( -1 !== r.indexOf( '<tr' ) ) {
|
2015-01-14 23:14:22 +01:00
|
|
|
$(inlineEditPost.what+id).siblings('tr.hidden').addBack().remove();
|
2012-08-23 02:04:18 +02:00
|
|
|
$('#edit-'+id).before(r).remove();
|
2016-01-14 23:58:27 +01:00
|
|
|
$( inlineEditPost.what + id ).hide().fadeIn( 400, function() {
|
|
|
|
// Move focus back to the Quick Edit link. $( this ) is the row being animated.
|
|
|
|
$( this ).find( '.editinline' ).focus();
|
|
|
|
wp.a11y.speak( inlineEditL10n.saved );
|
|
|
|
});
|
2012-08-23 02:04:18 +02:00
|
|
|
} else {
|
|
|
|
r = r.replace( /<.[^<>]*?>/g, '' );
|
2016-01-14 23:58:27 +01:00
|
|
|
$errorSpan.html( r ).show();
|
|
|
|
wp.a11y.speak( $errorSpan.text() );
|
2012-08-23 02:04:18 +02:00
|
|
|
}
|
|
|
|
} else {
|
2016-01-14 23:58:27 +01:00
|
|
|
$errorSpan.html( inlineEditL10n.error ).show();
|
|
|
|
wp.a11y.speak( inlineEditL10n.error );
|
2012-08-23 02:04:18 +02:00
|
|
|
}
|
2013-11-19 05:32:10 +01:00
|
|
|
},
|
|
|
|
'html');
|
2016-01-11 14:15:29 +01:00
|
|
|
// Prevent submitting the form when pressing Enter on a focused field.
|
2012-08-23 02:04:18 +02:00
|
|
|
return false;
|
|
|
|
},
|
|
|
|
|
2016-01-14 23:58:27 +01:00
|
|
|
// Revert is for both Quick Edit and Bulk Edit.
|
2012-08-23 02:04:18 +02:00
|
|
|
revert : function(){
|
2015-09-12 01:34:25 +02:00
|
|
|
var $tableWideFat = $( '.widefat' ),
|
|
|
|
id = $( '.inline-editor', $tableWideFat ).attr( 'id' );
|
2012-08-23 02:04:18 +02:00
|
|
|
|
|
|
|
if ( id ) {
|
2015-09-12 01:34:25 +02:00
|
|
|
$( '.spinner', $tableWideFat ).removeClass( 'is-active' );
|
|
|
|
$( '.ac_results' ).hide();
|
2012-08-23 02:04:18 +02:00
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( 'bulk-edit' === id ) {
|
2015-09-12 01:34:25 +02:00
|
|
|
$( '#bulk-edit', $tableWideFat ).removeClass( 'inline-editor' ).hide().siblings( '.hidden' ).remove();
|
2015-03-09 20:44:26 +01:00
|
|
|
$('#bulk-titles').empty();
|
2012-08-23 02:04:18 +02:00
|
|
|
$('#inlineedit').append( $('#bulk-edit') );
|
2016-01-14 23:58:27 +01:00
|
|
|
// Move focus back to the Bulk Action button that was activated.
|
|
|
|
$( '#' + inlineEditPost.whichBulkButtonId ).focus();
|
2012-08-23 02:04:18 +02:00
|
|
|
} else {
|
2015-01-14 23:14:22 +01:00
|
|
|
$('#'+id).siblings('tr.hidden').addBack().remove();
|
2012-08-23 02:04:18 +02:00
|
|
|
id = id.substr( id.lastIndexOf('-') + 1 );
|
2016-01-14 23:58:27 +01:00
|
|
|
// Show the post row and move focus back to the Quick Edit link.
|
|
|
|
$( this.what + id ).show().find( '.editinline' ).focus();
|
2012-08-23 02:04:18 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
},
|
|
|
|
|
|
|
|
getId : function(o) {
|
|
|
|
var id = $(o).closest('tr').attr('id'),
|
|
|
|
parts = id.split('-');
|
|
|
|
return parts[parts.length - 1];
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2013-03-13 01:28:07 +01:00
|
|
|
$( document ).ready( function(){ inlineEditPost.init(); } );
|
|
|
|
|
|
|
|
// Show/hide locks on posts
|
2013-06-05 02:13:40 +02:00
|
|
|
$( document ).on( 'heartbeat-tick.wp-check-locked-posts', function( e, data ) {
|
|
|
|
var locked = data['wp-check-locked-posts'] || {};
|
2013-03-13 01:28:07 +01:00
|
|
|
|
|
|
|
$('#the-list tr').each( function(i, el) {
|
|
|
|
var key = el.id, row = $(el), lock_data, avatar;
|
|
|
|
|
|
|
|
if ( locked.hasOwnProperty( key ) ) {
|
|
|
|
if ( ! row.hasClass('wp-locked') ) {
|
|
|
|
lock_data = locked[key];
|
2013-07-06 01:17:25 +02:00
|
|
|
row.find('.column-title .locked-text').text( lock_data.text );
|
2013-03-13 01:28:07 +01:00
|
|
|
row.find('.check-column checkbox').prop('checked', false);
|
|
|
|
|
|
|
|
if ( lock_data.avatar_src ) {
|
2015-11-07 17:12:27 +01:00
|
|
|
avatar = $( '<img class="avatar avatar-18 photo" width="18" height="18" alt="" />' ).attr( 'src', lock_data.avatar_src.replace( /&/g, '&' ) );
|
2013-03-13 01:28:07 +01:00
|
|
|
row.find('.column-title .locked-avatar').empty().append( avatar );
|
|
|
|
}
|
2013-07-06 01:17:25 +02:00
|
|
|
row.addClass('wp-locked');
|
2013-03-13 01:28:07 +01:00
|
|
|
}
|
|
|
|
} else if ( row.hasClass('wp-locked') ) {
|
2013-07-06 01:17:25 +02:00
|
|
|
// Make room for the CSS animation
|
|
|
|
row.removeClass('wp-locked').delay(1000).find('.locked-info span').empty();
|
2013-03-13 01:28:07 +01:00
|
|
|
}
|
|
|
|
});
|
2013-06-05 02:13:40 +02:00
|
|
|
}).on( 'heartbeat-send.wp-check-locked-posts', function( e, data ) {
|
2013-03-13 01:28:07 +01:00
|
|
|
var check = [];
|
|
|
|
|
|
|
|
$('#the-list tr').each( function(i, el) {
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( el.id ) {
|
2013-05-20 06:10:43 +02:00
|
|
|
check.push( el.id );
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2013-03-13 01:28:07 +01:00
|
|
|
});
|
|
|
|
|
2013-11-19 05:32:10 +01:00
|
|
|
if ( check.length ) {
|
2013-06-05 02:13:40 +02:00
|
|
|
data['wp-check-locked-posts'] = check;
|
2013-11-19 05:32:10 +01:00
|
|
|
}
|
2013-11-14 19:41:10 +01:00
|
|
|
}).ready( function() {
|
|
|
|
// Set the heartbeat interval to 15 sec.
|
|
|
|
if ( typeof wp !== 'undefined' && wp.heartbeat ) {
|
2013-12-03 01:45:10 +01:00
|
|
|
wp.heartbeat.interval( 15 );
|
2013-11-14 19:41:10 +01:00
|
|
|
}
|
2013-03-13 01:28:07 +01:00
|
|
|
});
|
|
|
|
|
2016-01-14 23:58:27 +01:00
|
|
|
})( jQuery, window.wp );
|