mirror of
https://git.sindominio.net/estibadores/wordpress.git
synced 2024-11-14 23:21:07 +01:00
238 lines
6.3 KiB
JavaScript
238 lines
6.3 KiB
JavaScript
/**
|
|
* Tag suggest in quick edit
|
|
*/
|
|
|
|
(function( $ ){
|
|
$.ajaxPrefilter(
|
|
function( options, originalOptions, jqXHR ) {
|
|
if ( 'string' === typeof options.data && -1 !== options.data.indexOf( 'action=ajax-tag-search' ) && ( lang = $( ':input[name="inline_lang_choice"]' ).val() ) ) {
|
|
options.data = 'lang=' + lang + '&' + options.data;
|
|
}
|
|
}
|
|
);
|
|
})( jQuery );
|
|
|
|
/**
|
|
* Quick edit
|
|
*/
|
|
(function( $ ) {
|
|
$( document ).bind(
|
|
'DOMNodeInserted',
|
|
function( e ) {
|
|
var t = $( e.target );
|
|
|
|
// WP inserts the quick edit from
|
|
if ( 'inline-edit' == t.attr( 'id' ) ) {
|
|
var post_id = t.prev().attr( 'id' ).replace( "post-", "" );
|
|
|
|
if ( post_id > 0 ) {
|
|
// language dropdown
|
|
var select = t.find( ':input[name="inline_lang_choice"]' );
|
|
var lang = $( '#lang_' + post_id ).html();
|
|
select.val( lang ); // populates the dropdown
|
|
|
|
filter_terms( lang ); // initial filter for category checklist
|
|
filter_pages( lang ); // initial filter for parent dropdown
|
|
|
|
// modify category checklist an parent dropdown on language change
|
|
select.change(
|
|
function() {
|
|
filter_terms( $( this ).val() );
|
|
filter_pages( $( this ).val() );
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|
|
// filter category checklist
|
|
function filter_terms( lang ) {
|
|
if ( "undefined" != typeof( pll_term_languages ) ) {
|
|
$.each(
|
|
pll_term_languages,
|
|
function( lg, term_tax ) {
|
|
$.each(
|
|
term_tax,
|
|
function( tax, terms ) {
|
|
$.each(
|
|
terms,
|
|
function( i ) {
|
|
id = '#' + tax + '-' + pll_term_languages[ lg ][ tax ][ i ];
|
|
lang == lg ? $( id ).show() : $( id ).hide();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|
|
// filter parent page dropdown list
|
|
function filter_pages( lang ) {
|
|
if ( "undefined" != typeof( pll_page_languages ) ) {
|
|
$.each(
|
|
pll_page_languages,
|
|
function( lg, pages ) {
|
|
$.each(
|
|
pages,
|
|
function( i ) {
|
|
v = $( '#post_parent option[value="' + pll_page_languages[ lg ][ i ] + '"]' );
|
|
lang == lg ? v.show() : v.hide();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
})( jQuery );
|
|
|
|
/**
|
|
* Update rows of translated posts when the language is modified in quick edit
|
|
* Acts on ajaxSuccess event
|
|
*/
|
|
(function( $ ) {
|
|
$( document ).ajaxSuccess(
|
|
function( event, xhr, settings ) {
|
|
function update_rows( post_id ) {
|
|
// collect old translations
|
|
var translations = new Array();
|
|
$( '.translation_' + post_id ).each(
|
|
function() {
|
|
translations.push( $( this ).parent().parent().attr( 'id' ).substring( 5 ) );
|
|
}
|
|
);
|
|
|
|
var data = {
|
|
action: 'pll_update_post_rows',
|
|
post_id: post_id,
|
|
translations: translations.join( ',' ),
|
|
post_type: $( "input[name='post_type']" ).val(),
|
|
screen: $( "input[name='screen']" ).val(),
|
|
_pll_nonce: $( "input[name='_inline_edit']" ).val() // reuse quick edit nonce
|
|
};
|
|
|
|
// get the modified rows in ajax and update them
|
|
$.post(
|
|
ajaxurl,
|
|
data,
|
|
function( response ) {
|
|
if ( response ) {
|
|
var res = wpAjax.parseAjaxResponse( response, 'ajax-response' );
|
|
$.each(
|
|
res.responses,
|
|
function() {
|
|
if ( 'row' == this.what ) {
|
|
$( "#post-" + this.supplemental.post_id ).replaceWith( this.data );
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
if ( 'string' == typeof( settings.data ) ) { // Need to check the type due to block editor sometime sending FormData objects
|
|
var data = wpAjax.unserialize( settings.data ); // what were the data sent by the ajax request?
|
|
if ( 'undefined' != typeof( data['action'] ) && 'inline-save' == data['action'] ) {
|
|
update_rows( data['post_ID'] );
|
|
}
|
|
}
|
|
}
|
|
);
|
|
})( jQuery );
|
|
|
|
/**
|
|
* Media list table
|
|
* When clicking on attach link, filters find post list per media language
|
|
*/
|
|
(function( $ ){
|
|
$.ajaxPrefilter(
|
|
function ( options, originalOptions, jqXHR ) {
|
|
if ( 'string' === typeof options.data && -1 !== options.data.indexOf( 'action=find_posts' ) ) {
|
|
options.data = 'pll_post_id=' + $( '#affected' ).val() + '&' + options.data;
|
|
}
|
|
}
|
|
);
|
|
})( jQuery );
|
|
|
|
/**
|
|
* Bulk translate
|
|
*/
|
|
jQuery( document ).ready(
|
|
function( $ ) {
|
|
var t = this;
|
|
|
|
$( '.editinline' ).click(
|
|
function(){
|
|
$( '#pll-translate' ).find( '.cancel' ).click(); // Close the form on quick edit
|
|
}
|
|
);
|
|
|
|
$( '#doaction, #doaction2' ).click(
|
|
function( e ){
|
|
t.whichBulkButtonId = $( this ).attr( 'id' );
|
|
var n = t.whichBulkButtonId.substr( 2 );
|
|
|
|
if ( 'pll_translate' === $( 'select[name="' + n + '"]' ).val() ) {
|
|
e.preventDefault();
|
|
|
|
if ( typeof inlineEditPost !== 'undefined' ) { // Not available for media.
|
|
inlineEditPost.revert(); // Close Bulk edit and Quick edit if open.
|
|
}
|
|
|
|
$( '#pll-translate td' ).attr( 'colspan', $( 'th:visible, td:visible', '.widefat:first thead' ).length );
|
|
$( 'table.widefat tbody' ).prepend( $( '#pll-translate' ) ).prepend( '<tr class="hidden"></tr>' ); // The hidden tr allows to keep the background color
|
|
} else {
|
|
$( '#pll-translate' ).find( '.cancel' ).click();
|
|
}
|
|
}
|
|
);
|
|
|
|
// Cancel
|
|
$( '#pll-translate' ).on(
|
|
'click',
|
|
'.cancel',
|
|
function(){
|
|
// Close the form on any other bulk action
|
|
$( '#pll-translate' ).siblings( '.hidden' ).remove();
|
|
// #pll-translate is built and come from server side and is well escaped when necessary
|
|
$( '#pll-bulk-translate' ).append( $( '#pll-translate' ) ); //phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append
|
|
|
|
// Move focus back to the Bulk Action button that was activated.
|
|
$( '#' + t.whichBulkButtonId ).focus();
|
|
}
|
|
);
|
|
|
|
// Act when pressing enter or esc
|
|
$( '#pll-translate' ).keydown(
|
|
function( event ){
|
|
if ( 13 === event.keyCode && ! $( event.target ).hasClass( 'cancel' ) ) {
|
|
event.preventDefault();
|
|
$( this ).find( 'input[type=submit]' ).click();
|
|
}
|
|
if ( 27 === event.keyCode ) {
|
|
event.preventDefault();
|
|
$( this ).find( '.cancel' ).click();
|
|
}
|
|
}
|
|
);
|
|
|
|
// Clean DOM in case of file download
|
|
$( '#posts-filter' ).on(
|
|
'submit',
|
|
function() {
|
|
$( '.settings-error' ).remove();
|
|
setTimeout(
|
|
function() {
|
|
$( 'input[type=checkbox]:checked' ).attr( 'checked', false );
|
|
$( '#pll-translate' ).find( '.cancel' ).trigger( 'click' );
|
|
},
|
|
500
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|