213 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
	/**
 | 
						|
	 * @package   Freemius
 | 
						|
	 * @copyright Copyright (c) 2015, Freemius, Inc.
 | 
						|
	 * @license   https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
 | 
						|
	 * @since     2.3.1
 | 
						|
	 */
 | 
						|
 | 
						|
	if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
		exit;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
     * @var array $VARS
 | 
						|
     *
 | 
						|
	 * @var Freemius $fs
 | 
						|
	 */
 | 
						|
	$fs                       = freemius( $VARS['id'] );
 | 
						|
	$slug                     = $fs->get_slug();
 | 
						|
    $unique_affix             = $fs->get_unique_affix();
 | 
						|
    $last_license_user_id     = $fs->get_last_license_user_id();
 | 
						|
    $has_last_license_user_id = FS_User::is_valid_id( $last_license_user_id );
 | 
						|
    
 | 
						|
	$message_above_input_field = ( ! $has_last_license_user_id ) ?
 | 
						|
		fs_text_inline( 'Please enter the license key to enable the debug mode:', 'submit-developer-license-key-message', $slug ) :
 | 
						|
		sprintf(
 | 
						|
			fs_text_inline( 'To enter the debug mode, please enter the secret key of the license owner (UserID = %d), which you can find in your "My Profile" section of your User Dashboard:', 'submit-addon-developer-key-message', $slug ),
 | 
						|
			$last_license_user_id
 | 
						|
		);
 | 
						|
 | 
						|
    $processing_text          = ( fs_esc_js_inline( 'Processing', 'processing', $slug ) . '...' );
 | 
						|
    $submit_button_text       = fs_text_inline( 'Submit', 'submit', $slug );
 | 
						|
    $debug_license_link_text  = fs_esc_html_inline( 'Start Debug', 'start-debug-license', $slug );
 | 
						|
    $license_or_user_key_text = ( ! $has_last_license_user_id ) ?
 | 
						|
        fs_text_inline( 'License key', 'license-key' , $slug ) :
 | 
						|
        fs_text_inline( 'User key', 'user-key' , $slug );
 | 
						|
    $input_html               = "<input class='fs-license-or-user-key' type='password' placeholder='{$license_or_user_key_text}' tabindex='1' />";
 | 
						|
 | 
						|
	$modal_content_html = <<< HTML
 | 
						|
	<div class="notice notice-error inline license-or-user-key-submission-message"><p></p></div>
 | 
						|
	<p>{$message_above_input_field}</p>
 | 
						|
	{$input_html}
 | 
						|
HTML;
 | 
						|
 | 
						|
	fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' );
 | 
						|
?>
 | 
						|
<script type="text/javascript">
 | 
						|
( function( $ ) {
 | 
						|
	$( document ).ready( function() {
 | 
						|
		var modalContentHtml          = <?php echo json_encode( $modal_content_html ) ?>,
 | 
						|
			modalHtml                 =
 | 
						|
				'<div class="fs-modal fs-modal-developer-license-debug-mode fs-modal-developer-license-debug-mode-<?php echo $unique_affix ?>">'
 | 
						|
				+ '	<div class="fs-modal-dialog">'
 | 
						|
				+ '		<div class="fs-modal-body">'
 | 
						|
				+ '			<div class="fs-modal-panel active">' + modalContentHtml + '</div>'
 | 
						|
				+ '		</div>'
 | 
						|
				+ '		<div class="fs-modal-footer">'
 | 
						|
				+ '			<button class="button button-secondary button-close" tabindex="4"><?php fs_esc_js_echo_inline( 'Cancel', 'cancel', $slug ) ?></button>'
 | 
						|
				+ '			<button class="button button-primary button-submit-license-or-user-key"  tabindex="3"><?php echo esc_js( $submit_button_text ) ?></button>'
 | 
						|
				+ '		</div>'
 | 
						|
				+ '	</div>'
 | 
						|
				+ '</div>',
 | 
						|
			$modal                             = $( modalHtml ),
 | 
						|
            $debugLicenseLink                  = $( '.debug-license-trigger' ),
 | 
						|
			$submitKeyButton                   = $modal.find( '.button-submit-license-or-user-key' ),
 | 
						|
			$licenseOrUserKeyInput             = $modal.find( 'input.fs-license-or-user-key' ),
 | 
						|
			$licenseOrUserKeySubmissionMessage = $modal.find( '.license-or-user-key-submission-message' ),
 | 
						|
            isDebugMode                        = <?php echo $fs->is_data_debug_mode() ? 'true' : 'false' ?>;
 | 
						|
 | 
						|
		$modal.appendTo( $( 'body' ) );
 | 
						|
 | 
						|
		function registerEventHandlers() {
 | 
						|
            $debugLicenseLink.click(function (evt) {
 | 
						|
                evt.preventDefault();
 | 
						|
 | 
						|
                if ( isDebugMode ) {
 | 
						|
                    setDeveloperLicenseDebugMode();
 | 
						|
                    return true;
 | 
						|
                }
 | 
						|
 | 
						|
                showModal( evt );
 | 
						|
            });
 | 
						|
 | 
						|
			$modal.on( 'input propertychange', 'input.fs-license-or-user-key', function () {
 | 
						|
				var licenseOrUserKey = $( this ).val().trim();
 | 
						|
 | 
						|
				/**
 | 
						|
				 * If license or user key is not empty, enable the submission button.
 | 
						|
				 */
 | 
						|
				if ( licenseOrUserKey.length > 0 ) {
 | 
						|
					enableSubmitButton();
 | 
						|
				}
 | 
						|
			});
 | 
						|
 | 
						|
			$modal.on( 'blur', 'input.fs-license-or-user-key', function () {
 | 
						|
				var licenseOrUserKey = $( this ).val().trim();
 | 
						|
 | 
						|
                /**
 | 
						|
                 * If license or user key is empty, disable the submission button.
 | 
						|
                 */
 | 
						|
                if ( 0 === licenseOrUserKey.length ) {
 | 
						|
                   disableSubmitButton();
 | 
						|
                }
 | 
						|
			});
 | 
						|
 | 
						|
			$modal.on( 'click', '.button-submit-license-or-user-key', function ( evt ) {
 | 
						|
				evt.preventDefault();
 | 
						|
 | 
						|
				if ( $( this ).hasClass( 'disabled' ) ) {
 | 
						|
					return;
 | 
						|
				}
 | 
						|
 | 
						|
				var licenseOrUserKey = $licenseOrUserKeyInput.val().trim();
 | 
						|
 | 
						|
				disableSubmitButton();
 | 
						|
 | 
						|
				if ( 0 === licenseOrUserKey.length ) {
 | 
						|
					return;
 | 
						|
				}
 | 
						|
 | 
						|
                setDeveloperLicenseDebugMode( licenseOrUserKey );
 | 
						|
			});
 | 
						|
 | 
						|
			// If the user has clicked outside the window, close the modal.
 | 
						|
			$modal.on( 'click', '.fs-close, .button-secondary', function () {
 | 
						|
				closeModal();
 | 
						|
				return false;
 | 
						|
			} );
 | 
						|
		}
 | 
						|
 | 
						|
		registerEventHandlers();
 | 
						|
 | 
						|
		function setDeveloperLicenseDebugMode( licenseOrUserKey ) {
 | 
						|
            var data = {
 | 
						|
                action             : '<?php echo $fs->get_ajax_action( 'set_data_debug_mode' ) ?>',
 | 
						|
                security           : '<?php echo $fs->get_ajax_security( 'set_data_debug_mode' ) ?>',
 | 
						|
                license_or_user_key: licenseOrUserKey,
 | 
						|
                is_debug_mode      : isDebugMode,
 | 
						|
                module_id          : '<?php echo $fs->get_id() ?>'
 | 
						|
            };
 | 
						|
 | 
						|
            $.ajax( {
 | 
						|
                url       : <?php echo Freemius::ajax_url() ?>,
 | 
						|
                method    : 'POST',
 | 
						|
                data      : data,
 | 
						|
                beforeSend: function () {
 | 
						|
                    $debugLicenseLink.find('span').text( '<?php echo $processing_text ?>' );
 | 
						|
                    $submitKeyButton.text( '<?php echo $processing_text ?>' );
 | 
						|
                },
 | 
						|
                success   : function ( result ) {
 | 
						|
                    if ( result.success ) {
 | 
						|
                        closeModal();
 | 
						|
 | 
						|
                        // Reload the "Account" page so that the pricing/upgrade link will be properly hidden/shown.
 | 
						|
                        window.location.reload();
 | 
						|
                    } else {
 | 
						|
                        showError( result.error.message ? result.error.message : result.error );
 | 
						|
                        resetButtons();
 | 
						|
                    }
 | 
						|
                },
 | 
						|
                error     : function () {
 | 
						|
                    showError( <?php echo json_encode( fs_text_inline( 'An unknown error has occurred.', 'unknown-error', $slug ) ) ?> );
 | 
						|
                    resetButtons();
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
		function showModal( evt ) {
 | 
						|
			resetModal();
 | 
						|
 | 
						|
			// Display the dialog box.
 | 
						|
			$modal.addClass( 'active' );
 | 
						|
			$( 'body' ).addClass( 'has-fs-modal' );
 | 
						|
 | 
						|
            $licenseOrUserKeyInput.val( '' );
 | 
						|
            $licenseOrUserKeyInput.focus();
 | 
						|
		}
 | 
						|
 | 
						|
		function closeModal() {
 | 
						|
			$modal.removeClass( 'active' );
 | 
						|
			$( 'body' ).removeClass( 'has-fs-modal' );
 | 
						|
		}
 | 
						|
 | 
						|
		function resetButtons() {
 | 
						|
			enableSubmitButton();
 | 
						|
			$submitKeyButton.text( <?php echo json_encode( $submit_button_text ) ?> );
 | 
						|
			$debugLicenseLink.find('span').text( <?php echo json_encode( $debug_license_link_text ) ?> );
 | 
						|
		}
 | 
						|
 | 
						|
		function resetModal() {
 | 
						|
			hideError();
 | 
						|
			resetButtons();
 | 
						|
		}
 | 
						|
 | 
						|
		function enableSubmitButton() {
 | 
						|
			$submitKeyButton.removeClass( 'disabled' );
 | 
						|
		}
 | 
						|
 | 
						|
		function disableSubmitButton() {
 | 
						|
			$submitKeyButton.addClass( 'disabled' );
 | 
						|
		}
 | 
						|
 | 
						|
		function hideError() {
 | 
						|
			$licenseOrUserKeySubmissionMessage.hide();
 | 
						|
		}
 | 
						|
 | 
						|
		function showError( msg ) {
 | 
						|
			$licenseOrUserKeySubmissionMessage.find( ' > p' ).html( msg );
 | 
						|
			$licenseOrUserKeySubmissionMessage.show();
 | 
						|
		}
 | 
						|
	} );
 | 
						|
} )( jQuery );
 | 
						|
</script>
 |