123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- (function($){
- /**
- * Helper class for dealing with the post edit screen.
- *
- * @class FLBuilderAdminPosts
- * @since 1.0
- * @static
- */
- FLBuilderAdminPosts = {
- /**
- * Initializes the builder for the post edit screen.
- *
- * @since 1.0
- * @method init
- */
- init: function()
- {
- $('.fl-enable-editor').on('click', this._enableEditorClicked);
- $('.fl-enable-builder').on('click', this._enableBuilderClicked);
- $('.fl-launch-builder').on('click', this._launchBuilderClicked);
- /* WPML Support */
- $('#icl_cfo').on('click', this._wpmlCopyClicked);
- this._hideFLBuilderAdminButtons();
- this._hideBlockEditorInserter();
- },
- /**
- * Fires when the text editor button is clicked
- * and switches the current post to use that
- * instead of the builder.
- *
- * @since 1.0
- * @access private
- * @method _enableEditorClicked
- */
- _enableEditorClicked: function()
- {
- if ( ! $( 'body' ).hasClass( 'fl-builder-enabled' ) ) {
- return;
- }
- if ( confirm( FLBuilderAdminPostsStrings.switchToEditor ) ) {
- $('.fl-builder-admin-tabs a').removeClass('fl-active');
- $(this).addClass('fl-active');
- _wpnonce = $('.fl-builder-admin-tabs').find('#_fl_enable_editor').val();
- FLBuilderAdminPosts.ajax({
- action: 'fl_builder_disable',
- _wpnonce: _wpnonce
- }, FLBuilderAdminPosts._enableEditorComplete);
- }
- },
- /**
- * Callback for enabling the editor.
- *
- * @since 1.0
- * @access private
- * @method _enableEditorComplete
- */
- _enableEditorComplete: function()
- {
- $('body').removeClass('fl-builder-enabled');
- $(window).resize();
- },
- /**
- * Callback for enabling the editor.
- *
- * @since 1.0
- * @access private
- * @method _enableBuilderClicked
- */
- _enableBuilderClicked: function()
- {
- if($('body').hasClass('fl-builder-enabled')) {
- return;
- }
- else {
- $('.fl-builder-admin-tabs a').removeClass('fl-active');
- $(this).addClass('fl-active');
- FLBuilderAdminPosts._launchBuilder();
- }
- },
- /**
- * Fires when the page builder button is clicked
- * and switches the current post to use that
- * instead of the text editor.
- *
- * @since 1.0
- * @access private
- * @method _launchBuilderClicked
- * @param {Object} e An event object.
- */
- _launchBuilderClicked: function(e)
- {
- e.preventDefault();
- FLBuilderAdminPosts._launchBuilder();
- },
- /**
- * Callback for enabling the builder.
- *
- * @since 1.0
- * @access private
- * @method _launchBuilder
- */
- _launchBuilder: function()
- {
- var postId = $('#post_ID').val(),
- title = $('#title');
- if(typeof title !== 'undefined' && title.val() === '') {
- title.val('Post #' + postId);
- }
- $(window).off('beforeunload');
- $('body').addClass('fl-builder-enabled');
- $('.fl-builder-loading').show();
- $('form#post').append('<input type="hidden" name="fl-builder-redirect" value="' + postId + '" />');
- $('form#post').submit();
- },
- /**
- * Fires when the WPML copy button is clicked.
- *
- * @since 1.1.7
- * @access private
- * @method _wpmlCopyClicked
- * @param {Object} e An event object.
- */
- _wpmlCopyClicked: function(e)
- {
- var originalPostId = $('#icl_translation_of').val();
- if(typeof originalPostId !== 'undefined') {
- $('.fl-builder-loading').show();
- FLBuilderAdminPosts.ajax({
- action: 'fl_builder_duplicate_wpml_layout',
- original_post_id: originalPostId
- }, FLBuilderAdminPosts._wpmlCopyComplete);
- }
- },
- /**
- * Callback for when the WPML copy button is clicked.
- *
- * @since 1.1.7
- * @access private
- * @method _wpmlCopyComplete
- * @param {String} response The JSON encoded response.
- */
- _wpmlCopyComplete: function(response)
- {
- response = JSON.parse(response);
- $('.fl-builder-loading').hide();
- if(response.has_layout && response.enabled) {
- $('body').addClass('fl-builder-enabled');
- }
- },
- /**
- * Hide the Page Builder Admin Buttons if Content Editor is hidden in the ACF Field Settings.
- *
- * @since 2.1.7
- * @access private
- * @method _hideFLBuilderAdminButtons
- */
- _hideFLBuilderAdminButtons: function()
- {
- if ( $( '.acf-postbox' ).is( ':visible' ) && $( '#postdivrich' ).is( ':hidden' ) && ! $( '.fl-enable-builder' ).hasClass('fl-active') ){
- $( '.fl-builder-admin' ).hide();
- }
- },
- /**
- * Hide the Gutenberg Block Editor Inserter button.
- *
- * @since 2.4
- * @access private
- * @method _hideBlockEditorInserter
- */
- _hideBlockEditorInserter: function()
- {
- setTimeout( function(){
- if ( $( 'body' ).hasClass( 'fl-builder-enabled' ) ) {
- $( '.block-editor-inserter' ).hide();
- $( '.wp-block-paragraph' ).parent().remove();
- $( '.wp-block[data-type="core/paragraph"]' ).hide();
- }
- }, 100 );
- },
- /**
- * Makes an AJAX request.
- *
- * @since 1.0
- * @method ajax
- * @param {Object} data An object with data to send in the request.
- * @param {Function} callback A function to call when the request is complete.
- */
- ajax: function(data, callback)
- {
- // Add the post ID to the data.
- data.post_id = $('#post_ID').val();
- // Show the loader.
- $('.fl-builder-loading').show();
- // Send the request.
- $.post(ajaxurl, data, function(response) {
- FLBuilderAdminPosts._ajaxComplete();
- if(typeof callback !== 'undefined') {
- callback.call(this, response);
- }
- });
- },
- /**
- * Generic callback for when an AJAX request is complete.
- *
- * @since 1.0
- * @access private
- * @method _ajaxComplete
- */
- _ajaxComplete: function()
- {
- $('.fl-builder-loading').hide();
- }
- };
- /* Initializes the post edit screen. */
- $(function(){
- FLBuilderAdminPosts.init();
- });
- })(jQuery);
|