Initial commit

This commit is contained in:
Felix Förtsch
2020-10-20 14:39:50 +02:00
commit 648ded8896
1225 changed files with 216511 additions and 0 deletions

View File

@@ -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 );
}
});