mirror of
https://github.com/felixfoertsch/wordpress-dev-env.git
synced 2026-04-18 15:28:44 +02:00
Initial commit
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
jQuery( document ).ready( function() {
|
||||
|
||||
var dbsTable = jQuery( '#debug-bar-shortcodes' );
|
||||
|
||||
/* Make sure the spinner also works in the front-end */
|
||||
dbsTable.find( 'span.spinner' ).css({ 'background-image': 'url("' + i18nDbShortcodes.spinner + '")' });
|
||||
|
||||
|
||||
/* Show/hide action links */
|
||||
/* @todo Keep the action links visible on associated debug-bar-shortcodes-details and
|
||||
debug-bar-shortcodes-uses rows */
|
||||
dbsTable.on( 'mouseenter.dbs-action-links', 'tr', function() {
|
||||
jQuery( this ).find( 'div.row-actions' ).css({ 'visibility': 'visible' });
|
||||
})
|
||||
.on( 'mouseleave.dbs-action-links', 'tr', function() {
|
||||
jQuery( this ).find( 'div.row-actions' ).css({ 'visibility': 'hidden' });
|
||||
});
|
||||
|
||||
|
||||
/* Show/hide details */
|
||||
dbsTable.on( 'click', 'a.debug-bar-shortcodes-view-details', function( event ) {
|
||||
var targetTr = jQuery( this ).closest( 'tr' ).next( 'tr.debug-bar-shortcodes-details' );
|
||||
event.preventDefault();
|
||||
|
||||
if ( jQuery( this ).text() === i18nDbShortcodes.view_details ) {
|
||||
targetTr.show();
|
||||
jQuery( this ).text( i18nDbShortcodes.hide_details );
|
||||
}
|
||||
else {
|
||||
targetTr.hide();
|
||||
jQuery( this ).text( i18nDbShortcodes.view_details );
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Show/hide group of found uses */
|
||||
dbsTable.on( 'click', 'a.debug-bar-shortcodes-view-use', function( event ) {
|
||||
var targetTr;
|
||||
event.preventDefault();
|
||||
|
||||
targetTr = jQuery( this ).closest( 'tr' ).next( 'tr' );
|
||||
if ( targetTr.hasClass( 'debug-bar-shortcodes-details' ) ) {
|
||||
targetTr = targetTr.next( 'tr' );
|
||||
}
|
||||
if ( targetTr.hasClass( 'debug-bar-shortcodes-uses' ) ) {
|
||||
if ( jQuery( this ).text() === i18nDbShortcodes.view_use ) {
|
||||
targetTr.show();
|
||||
jQuery( this ).text( i18nDbShortcodes.hide_use );
|
||||
}
|
||||
else {
|
||||
targetTr.hide();
|
||||
jQuery( this ).text( i18nDbShortcodes.view_use );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Retrieve & show details if there were none */
|
||||
dbsTable.on( 'click', 'a.debug-bar-shortcodes-get-details', function( event ) {
|
||||
var eventTarget, targetShortcode, spinner;
|
||||
event.preventDefault();
|
||||
|
||||
eventTarget = jQuery( this );
|
||||
targetShortcode = this.hash.substring( 1 );
|
||||
spinner = eventTarget.closest( 'td.column-title' ).find( 'span.spinner' );
|
||||
spinner.addClass( 'is-active' );
|
||||
|
||||
jQuery.ajax({
|
||||
url: ( ajaxurl ) ? ajaxurl : i18nDbShortcodes.ajaxurl,
|
||||
type: 'post',
|
||||
data: {
|
||||
'action': 'debug-bar-shortcodes-retrieve',
|
||||
'dbs-nonce': i18nDbShortcodes.nonce,
|
||||
'shortcode': targetShortcode
|
||||
},
|
||||
success: function( response ) {
|
||||
var resData, nrOfColumns, supplemental;
|
||||
|
||||
// Handle errors
|
||||
// -1 is nonce error, no proper response received
|
||||
// 0 no wp ajax action hook found for this action
|
||||
if ( 'string' === typeof( response ) ) {
|
||||
// Remove all retrieve details links to prevent user trying it again.
|
||||
jQuery( 'a.debug-bar-shortcodes-get-details' ).remove();
|
||||
alert( i18nDbShortcodes.illegal );
|
||||
}
|
||||
else {
|
||||
resData = wpAjax.parseAjaxResponse( response, 'ajax-response' );
|
||||
|
||||
if ( ! resData.responses || 1 > resData.responses.length || resData.errors ) {
|
||||
// Didn't receive a proper response or received a WP error response
|
||||
console.log( 'Received response: ' + response );
|
||||
alert( i18nDbShortcodes.error );
|
||||
}
|
||||
else if ( '1' !== resData.responses[0].id || ! resData.responses[0].data || 0 === resData.responses[0].data.length ) {
|
||||
// No info found
|
||||
/* @todo Usability: row actions are hidden on mouseleave, so this feedback may not be seen
|
||||
figure out a way to make this easier to see
|
||||
(make row actions visible & highlight kind of thing, but is not so easy to do */
|
||||
eventTarget.replaceWith( i18nDbShortcodes.no_details );
|
||||
}
|
||||
else {
|
||||
// Found some ;-)
|
||||
nrOfColumns = ( eventTarget.closest( 'tr' ).find( 'td' ).length - 1 );
|
||||
resData = resData.responses[0];
|
||||
supplemental = resData.supplemental;
|
||||
resData = resData.data;
|
||||
resData = resData.replace( /\{colspan\}/g, nrOfColumns );
|
||||
|
||||
if ( eventTarget.closest( 'tr' ).hasClass( 'even' ) ) {
|
||||
resData = jQuery( resData ).addClass( 'even' );
|
||||
}
|
||||
|
||||
eventTarget.closest( 'tr' ).after( resData );
|
||||
eventTarget.text( i18nDbShortcodes.view_details )
|
||||
.removeClass( 'debug-bar-shortcodes-get-details' )
|
||||
.addClass( 'debug-bar-shortcodes-view-details' ).click();
|
||||
if ( supplemental.url_link ) {
|
||||
eventTarget.closest( 'div.row-actions' ).append( supplemental.url_link );
|
||||
}
|
||||
}
|
||||
}
|
||||
spinner.removeClass( 'is-active' );
|
||||
},
|
||||
error: handleAjaxError
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* Find all uses of the shortcodes */
|
||||
dbsTable.on( 'click', 'a.debug-bar-shortcodes-find', function( event ) {
|
||||
var eventTarget, targetShortcode, spinner;
|
||||
event.preventDefault();
|
||||
|
||||
eventTarget = jQuery( this );
|
||||
targetShortcode = this.hash.substring( 1 );
|
||||
spinner = eventTarget.closest( 'td.column-title' ).find( 'span.spinner' );
|
||||
spinner.addClass( 'is-active' );
|
||||
|
||||
jQuery.ajax({
|
||||
url: ( ajaxurl ) ? ajaxurl : i18nDbShortcodes.ajaxurl,
|
||||
type: 'post',
|
||||
data: {
|
||||
'action': 'debug-bar-shortcodes-find',
|
||||
'dbs-nonce': i18nDbShortcodes.nonce,
|
||||
'shortcode': targetShortcode
|
||||
},
|
||||
success: function( response ) {
|
||||
var resData, nrOfColumns, nextTr;
|
||||
|
||||
// Handle errors
|
||||
// -1 is nonce error, no proper response received
|
||||
// 0 no wp ajax action hook found for this action
|
||||
if ( 'string' === typeof( response ) ) {
|
||||
// Remove all find links to prevent user trying it again.
|
||||
jQuery( 'a.debug-bar-shortcodes-find' ).remove();
|
||||
alert( i18nDbShortcodes.illegal );
|
||||
}
|
||||
else {
|
||||
resData = wpAjax.parseAjaxResponse( response, 'ajax-response' );
|
||||
|
||||
if ( ! resData.responses || 1 > resData.responses.length || resData.errors ) {
|
||||
// Didn't receive a proper response or received a WP error response
|
||||
console.log( 'Received response: ' + response );
|
||||
alert( i18nDbShortcodes.error );
|
||||
}
|
||||
else if ( '1' !== resData.responses[0].id || ! resData.responses[0].data || 0 === resData.responses[0].data.length ) {
|
||||
// No uses found
|
||||
/* @todo Usability: row actions are hidden on mouseleave, so this feedback may not be seen
|
||||
figure out a way to make this easier to see
|
||||
(make row actions visible & highlight kind of thing, but is not so easy to do */
|
||||
eventTarget.replaceWith( i18nDbShortcodes.not_in_use );
|
||||
}
|
||||
else {
|
||||
// Found some ;-)
|
||||
nrOfColumns = ( eventTarget.closest( 'tr' ).find( 'td' ).length - 1 );
|
||||
resData = resData.responses[0];
|
||||
resData = resData.data;
|
||||
resData = resData.replace( /\{colspan\}/g, nrOfColumns );
|
||||
|
||||
nextTr = eventTarget.closest( 'tr' ).next( 'tr' );
|
||||
if ( nextTr.hasClass( 'debug-bar-shortcodes-details' ) ) {
|
||||
nextTr = nextTr.next( 'tr' );
|
||||
}
|
||||
|
||||
if ( eventTarget.closest( 'tr' ).hasClass( 'even' ) ) {
|
||||
resData = jQuery( resData ).addClass( 'even' );
|
||||
}
|
||||
|
||||
nextTr.before( resData );
|
||||
eventTarget.text( i18nDbShortcodes.hide_use )
|
||||
.removeClass( 'debug-bar-shortcodes-find' )
|
||||
.addClass( 'debug-bar-shortcodes-view-use' );
|
||||
}
|
||||
}
|
||||
|
||||
spinner.removeClass( 'is-active' );
|
||||
},
|
||||
error: handleAjaxError
|
||||
});
|
||||
});
|
||||
|
||||
function handleAjaxError( response ) {
|
||||
/* Triggered by http errors and by various jQuery errors such as:
|
||||
- 'junk after document element'
|
||||
- 'not well-formed'
|
||||
- 'undefined entity'
|
||||
*/
|
||||
if ( 'undefined' !== typeof( response ) ) {
|
||||
console.log( 'Received response: ' + response );
|
||||
}
|
||||
dbsTable.find( 'span.spinner' ).removeClass( 'is-active' );
|
||||
alert( i18nDbShortcodes.error );
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user