( function( $ ) { $( function() { function pdfembSetFormActionToTab( id ) { let form = $( '#pdfemb_form' ); form.attr( 'action', form.attr( 'action' ).replace( /(#.+)?$/, '#' + id ), ); } function decodeHtml(html) { var txt = document.createElement("textarea"); txt.innerHTML = html; return txt.value; } $( '#pdfemb-tabs a' ) .on( 'click', function() { // Tab nav item. $( '#pdfemb-tabs' ).find( 'a' ).removeClass( 'nav-tab-active' ); // Tab content. $( '.pdfembtab' ).removeClass( 'active' ); let id = $( this ).attr( 'id' ).replace( '-tab', '' ); $( '#' + id + '-section' ).addClass( 'active' ); $( this ).addClass( 'nav-tab-active' ); if ( 'about' === id ) { $( '.submit' ).hide(); } else { $( '.submit' ).show(); } // Set submit URL to this tab pdfembSetFormActionToTab( id ); // Update upgrade URL dynamically based on URL hash. let url = getPdfembUpdateURL( id ); $( '#pdfemb-settings-bottom-cta a.pdfemb-upgrade-url' ).attr( 'href', decodeHtml( url ) ); } ); // Process the "free plugins" link in the footer. $('#pdfemb-footer .free-plugins') .on( 'click', function( e ) { e.preventDefault(); // As we prevented the default behavior above - the hash hasn't changed. // So let's do that manually. window.location.hash = '#about'; $( '#pdfemb-tabs a#about-tab' ).trigger( 'click' ); } ); // Move the default "settings update" notice under tabs. $( '#wpbody-content > .notice' ) .prependTo( '#pdfemb-tabswrapper' ) .css( 'display', 'block' ); // Did page load with a tab active? var active_tab = window.location.hash.replace( '#', '' ); if ( active_tab !== '' ) { var activeSection = $( '#' + active_tab + '-section' ); var activeTab = $( '#' + active_tab + '-tab' ); if ( 'about' === active_tab ) { $( '.submit' ).hide(); } else { $( '.submit' ).show(); } if ( activeSection && activeTab ) { $( '#pdfemb-tabs' ).find( 'a' ).removeClass( 'nav-tab-active' ); $( '.pdfembtab' ).removeClass( 'active' ); activeSection.addClass( 'active' ); activeTab.addClass( 'nav-tab-active' ); pdfembSetFormActionToTab( active_tab ); let url = getPdfembUpdateURL( active_tab ); $( '#pdfemb-settings-bottom-cta a.pdfemb-upgrade-url' ).attr( 'href', decodeHtml( url ) ); } } /** * Partner plugin installation. */ $( '.pdfemb-partners .pdfemb-partners-install' ).on( 'click', function( e ) { e.preventDefault(); var $this = $( this ); if ( $this.hasClass( 'disabled' ) ) { return false; } var url = $this.data( 'url' ); var basename = $this.data( 'basename' ); var message = $( this ) .parent() .parent() .find( '.pdfemb-partner-status' ); var install_opts = { url: pdfemb_args.ajax, type: 'post', async: true, cache: false, dataType: 'json', beforeSend: function(){ $this.addClass('disabled'); $this.siblings('.spinner').toggleClass('active'); }, data: { action: 'pdfemb_partners_install', nonce: pdfemb_args.install_nonce, basename: basename, download_url: url, }, success: function( response ) { $this.text( pdfemb_args.activate ) .removeClass( 'pdfemb-partners-install' ) .addClass( 'pdfemb-partners-activate' ); $( message ).text( pdfemb_args.inactive ); // Trick here to wrap a span around the last word of the status var heading = $( message ), word_array, last_word, first_part; word_array = heading.html().split( /\s+/ ); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join( ' ' ); // rejoin the first words together heading.html( [ first_part, ' ', last_word, '', ].join( '' ), ); // Proc }, error: function( xhr, textStatus, e ) { console.log( e ); }, complete: function() { $this.removeClass('disabled'); $this.siblings('.spinner').toggleClass('active'); } }; $.ajax( install_opts ); }, ); /** * Partner plugin activation. */ $( '.pdfemb-partners .pdfemb-partners-activate' ).on( 'click', function( e ) { e.preventDefault(); var $this = $( this ); if ( $this.hasClass( 'disabled' ) ) { return false; } var url = $this.data( 'url' ); var basename = $this.data( 'basename' ); var message = $( this ) .parent() .parent() .find( '.pdfemb-partner-status' ); var activate_opts = { url: pdfemb_args.ajax, type: 'post', async: true, cache: false, dataType: 'json', beforeSend: function(){ $this.addClass('disabled'); $this.siblings('.spinner').toggleClass('active'); }, data: { action: 'pdfemb_partners_activate', nonce: pdfemb_args.activate_nonce, basename: basename, download_url: url, }, success: function( response ) { $this.text( pdfemb_args.deactivate ) .removeClass( 'pdfemb-partners-activate' ) .addClass( 'pdfemb-partners-deactivate' ); $( message ).text( pdfemb_args.active ); // Trick here to wrap a span around the last word of the status. var heading = $( message ), word_array, last_word, first_part; word_array = heading.html().split( /\s+/ ); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join( ' ' ); // rejoin the first words together heading.html( [ first_part, ' ', last_word, '', ].join( '' ), ); location.reload( true ); }, error: function( xhr, textStatus, e ) { console.log( e ); }, complete: function() { $this.removeClass('disabled'); $this.siblings('.spinner').toggleClass('active'); } }; $.ajax( activate_opts ); }, ); /** * Partner plugin deactivation. */ $( '.pdfemb-partners .pdfemb-partners-deactivate' ).on( 'click', function( e ) { e.preventDefault(); var $this = $( this ); if ( $this.hasClass( 'disabled' ) ) { return false; } var url = $this.data( 'url' ); var basename = $this.data( 'basename' ); var message = $( this ) .parent() .parent() .find( '.pdfemb-partner-status' ); var deactivate_opts = { url: pdfemb_args.ajax, type: 'post', async: true, cache: false, dataType: 'json', beforeSend: function(){ $this.addClass('disabled'); $this.siblings('.spinner').toggleClass('active'); }, data: { action: 'pdfemb_partners_deactivate', nonce: pdfemb_args.deactivate_nonce, basename: basename, download_url: url, }, success: function( response ) { $this.text( pdfemb_args.activate ) .removeClass( 'pdfemb-partners-deactivate' ) .addClass( 'pdfemb-partners-activate' ); $( message ).text( pdfemb_args.inactive ); // Trick here to wrap a span around the last word of the status. var heading = $( message ), word_array, last_word, first_part; word_array = heading.html().split( /\s+/ ); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join( ' ' ); // rejoin the first words together heading.html( [ first_part, ' ', last_word, '', ].join( '' ), ); location.reload( true ); }, error: function( xhr, textStatus, e ) { console.log( e ); }, complete: function() { $this.removeClass('disabled'); $this.siblings('.spinner').toggleClass('active'); } }; $.ajax( deactivate_opts ); }, ); } ); } )( jQuery );