first commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
// global nimbleAdminLocalized
|
||||
// Introduced for https://github.com/presscustomizr/nimble-builder/issues/449
|
||||
(function ($) {
|
||||
var button_printed = false,
|
||||
// the callback is ran until unsuscribed when headerToolBar element has been detected and the btn printed
|
||||
_callback = function () {
|
||||
if ( button_printed )
|
||||
return;
|
||||
|
||||
var $headerToolBar = $('#editor').find('.edit-post-header__toolbar');
|
||||
var _printBtn = function() {
|
||||
var html = $($('#sek-edit-with-nb').html());
|
||||
setTimeout( function() {
|
||||
$headerToolBar.append( html );
|
||||
}, 300 );// <= May 2020 : introduce a delay to make sure NB edit btn is printed after all gutenberg menu items. @todo find the relevant event to do that instead.
|
||||
button_printed = true;
|
||||
// unsubscribe the listener
|
||||
// documented here : https://developer.wordpress.org/block-editor/packages/packages-data/#subscribe
|
||||
wp.data.subscribe(_callback)();
|
||||
};
|
||||
|
||||
if ( $headerToolBar.length > 0 ) {
|
||||
_printBtn();
|
||||
} else {
|
||||
// Nov 2020 => retro compat with WP version < 5.6
|
||||
$headerToolBar = $('#editor').find('.edit-post-header-toolbar');
|
||||
if ( $headerToolBar.length > 0 ) {
|
||||
_printBtn();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// PRINT THE BUTTON WHEN element .edit-post-header-toolbar has been rendered
|
||||
// wp.data.subscribe() documented here : https://developer.wordpress.org/block-editor/packages/packages-data/#subscribe
|
||||
// Given a listener function, the function will be called any time the state value
|
||||
// of one of the registered stores has changed. This function returns a unsubscribe
|
||||
// function used to stop the subscription.
|
||||
wp.data.subscribe(_callback);
|
||||
|
||||
// ATTACH EVENT LISTENER
|
||||
// with delegation
|
||||
// When editing an existing post, the customizer url is rendered server side in the data-cust-url='' attribute
|
||||
// @see inc/admin/nimble-admin.php => sek_print_nb_btn_edit_with()
|
||||
//
|
||||
// When creating a new post, the customizer url is generated with an ajax call
|
||||
$('body').on( 'click', '#sek-edit-with-nimble', function(evt) {
|
||||
evt.preventDefault();
|
||||
var $clickedEl = $(this),
|
||||
_url = $clickedEl.data('cust-url'),
|
||||
attempts = 0,
|
||||
_openCustomizer = function( customizer_url ) {
|
||||
// We don't want to enter in an infinite loop, that's why the number of attempts is limited to 5 if isSavingPost()
|
||||
if ( wp.data.select('core/editor').isSavingPost() && attempts < 5 ) {
|
||||
_.delay(function () {
|
||||
self._openCustomizer();
|
||||
attempts++;
|
||||
}, 300 );
|
||||
} else {
|
||||
location.href = customizer_url;
|
||||
}
|
||||
//$clickedEl.removeClass('sek-loading-customizer');
|
||||
};
|
||||
|
||||
if ( _.isEmpty( _url ) ) {
|
||||
// for new post, the url is empty, let's generate it server side with an ajax call
|
||||
var post_id = wp.data.select('core/editor').getCurrentPostId();
|
||||
|
||||
// introduced for https://github.com/presscustomizr/nimble-builder/issues/509
|
||||
$clickedEl.addClass('sek-loading-customizer').removeClass('button-primary');
|
||||
|
||||
wp.ajax.post( 'sek_get_customize_url_for_nimble_edit_button', {
|
||||
nimble_edit_post_id : post_id
|
||||
}).done( function( resp ) {
|
||||
_openCustomizer( resp );
|
||||
}).fail( function( resp ) {
|
||||
$clickedEl.removeClass('sek-loading-customizer').addClass('button-primary');
|
||||
|
||||
// If the ajax request fails, let's save the draft with a Nimble Builder title, and refresh the page, so the url is generated server side on next load.
|
||||
var post_title = wp.data.select('core/editor').getEditedPostAttribute('title');
|
||||
if ( !post_title ) {
|
||||
wp.data.dispatch('core/editor').editPost({ title: 'Nimble Builder #' + post_id });
|
||||
}
|
||||
wp.data.dispatch('core/editor').savePost();
|
||||
_.delay(function () {
|
||||
// off the javascript pop up warning if post not saved yet
|
||||
$( window ).off( 'beforeunload' );
|
||||
location.href = location.href;
|
||||
}, 300 );
|
||||
});
|
||||
} else {
|
||||
_openCustomizer( _url );
|
||||
}
|
||||
});//.on( 'click'
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Rank Math SEO Integration
|
||||
* Nov 2020 Add Nimble Builder content to RM analyzer
|
||||
* doc https://rankmath.com/kb/content-analysis-api/
|
||||
*/
|
||||
;( function( $ ) {
|
||||
jQuery(function($){
|
||||
var nimblePluginForRankMath = function( skope_id ) {
|
||||
wp.ajax.post( 'sek_get_nimble_content_for_seo_plugins', {
|
||||
skope_id : skope_id
|
||||
}).done( function( nimbleContent ) {
|
||||
wp.hooks.addFilter( 'rank_math_content', 'nimblePlugin', function( originalContent ) {
|
||||
return originalContent + nimbleContent;
|
||||
});
|
||||
rankMathEditor.refresh( 'content' );
|
||||
}).fail( function( er ) {
|
||||
console.log('NimblePlugin for Rank Math => error when fetching Nimble content.');
|
||||
});
|
||||
};
|
||||
if ( window.nb_skope_id_for_rank_math_seo ) {
|
||||
nimblePluginForRankMath( window.nb_skope_id_for_rank_math_seo );
|
||||
} else {
|
||||
$(document).on('nb-skope-id-ready.rank-math', function( evt, params ) {
|
||||
if ( params && params.skope_id ) {
|
||||
nimblePluginForRankMath( params.skope_id );
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
})( jQuery );
|
||||
Reference in New Issue
Block a user