248 lines
6.9 KiB
PHP
248 lines
6.9 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 1.2.0
|
||
|
*/
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @var array $VARS
|
||
|
* @var Freemius $fs
|
||
|
*/
|
||
|
$fs = freemius( $VARS['id'] );
|
||
|
|
||
|
$slug = $fs->get_slug();
|
||
|
|
||
|
$send_button_text = fs_text_inline( 'Send License Key', 'send-license-key', $slug );
|
||
|
$cancel_button_text = fs_text_inline( 'Cancel', 'cancel', $slug );
|
||
|
$email_address_placeholder = fs_esc_attr_inline( 'Email address', 'email-address', $slug );
|
||
|
$other_text = fs_text_inline( 'Other', 'other', $slug );
|
||
|
|
||
|
$is_freemium = $fs->is_freemium();
|
||
|
|
||
|
$send_button_text_html = esc_html($send_button_text);
|
||
|
|
||
|
$button_html = <<< HTML
|
||
|
<div class="button-container">
|
||
|
<a href="#" class="button button-primary button-send-license-key" tabindex="2">{$send_button_text_html}</a>
|
||
|
</div>
|
||
|
HTML;
|
||
|
|
||
|
if ( $is_freemium ) {
|
||
|
$current_user = Freemius::_get_current_wp_user();
|
||
|
$email = $current_user->user_email;
|
||
|
$esc_email = esc_attr( $email );
|
||
|
$form_html = <<< HTML
|
||
|
<div class="email-address-container">
|
||
|
<label><input name="email-address" type="radio" checked="checked" tabindex="1" value="{$esc_email}"> {$email}</label>
|
||
|
<label><input name="email-address" type="radio" tabindex="1" value="other">{$other_text}: <input class="email-address" type="text" placeholder="{$email_address_placeholder}"></label>
|
||
|
</div>
|
||
|
{$button_html}
|
||
|
HTML;
|
||
|
} else {
|
||
|
$email = '';
|
||
|
$form_html = <<< HTML
|
||
|
{$button_html}
|
||
|
<div class="email-address-container">
|
||
|
<input class="email-address" type="text" placeholder="{$email_address_placeholder}" tabindex="1">
|
||
|
</div>
|
||
|
HTML;
|
||
|
}
|
||
|
|
||
|
$message_above_input_field = fs_esc_html_inline( "Enter the email address you've used for the upgrade below and we will resend you the license key.", 'ask-for-upgrade-email-address', $slug );
|
||
|
$modal_content_html = <<< HTML
|
||
|
<div class="notice notice-error inline license-resend-message"><p></p></div>
|
||
|
<p>{$message_above_input_field}</p>
|
||
|
<div class="input-container">
|
||
|
{$form_html}
|
||
|
</div>
|
||
|
HTML;
|
||
|
|
||
|
fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' );
|
||
|
?>
|
||
|
<script type="text/javascript">
|
||
|
(function ($) {
|
||
|
$(document).ready(function () {
|
||
|
var contentHtml = <?php echo json_encode( $modal_content_html ); ?>,
|
||
|
modalHtml =
|
||
|
'<div class="fs-modal fs-modal-license-key-resend <?php echo $is_freemium ? 'fs-freemium' : 'fs-premium' ?>">'
|
||
|
+ ' <div class="fs-modal-dialog">'
|
||
|
+ ' <div class="fs-modal-header">'
|
||
|
+ ' <h4><?php echo esc_js( $send_button_text ) ?></h4>'
|
||
|
+ ' <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php echo esc_js( fs_text_x_inline( 'Dismiss', 'as close a window', 'dismiss', $slug ) ) ?>"></i></a>'
|
||
|
+ ' </div>'
|
||
|
+ ' <div class="fs-modal-body">'
|
||
|
+ ' <div class="fs-modal-panel active">' + contentHtml + '</div>'
|
||
|
+ ' </div>'
|
||
|
+ ' </div>'
|
||
|
+ '</div>',
|
||
|
$modal = $(modalHtml),
|
||
|
$sendButton = $modal.find('.button-send-license-key'),
|
||
|
$emailInput = $modal.find('input.email-address'),
|
||
|
$feedbackMessage = $modal.find('.license-resend-message'),
|
||
|
isFreemium = <?php echo json_encode( $is_freemium ) ?>,
|
||
|
userEmail = <?php echo json_encode( $email ) ?>,
|
||
|
moduleID = '<?php echo $fs->get_id() ?>',
|
||
|
isChild = false;
|
||
|
|
||
|
|
||
|
$modal.appendTo($('body'));
|
||
|
|
||
|
function registerEventHandlers() {
|
||
|
$('a.show-license-resend-modal-<?php echo $fs->get_unique_affix() ?>').click(function (evt) {
|
||
|
evt.preventDefault();
|
||
|
|
||
|
showModal();
|
||
|
});
|
||
|
|
||
|
if (isFreemium) {
|
||
|
$modal.on('change', 'input[type=radio][name=email-address]', function () {
|
||
|
updateButtonState();
|
||
|
});
|
||
|
|
||
|
$modal.on('focus', 'input.email-address', function () {
|
||
|
// Check custom email radio button on email input focus.
|
||
|
$($modal.find('input[type=radio]')[1]).prop('checked', true);
|
||
|
|
||
|
updateButtonState();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
$modal.on('input propertychange', 'input.email-address', function () {
|
||
|
updateButtonState();
|
||
|
});
|
||
|
|
||
|
$modal.on('blur', 'input.email-address', function () {
|
||
|
updateButtonState();
|
||
|
});
|
||
|
|
||
|
$modal.on('click', '.fs-close', function (){
|
||
|
closeModal();
|
||
|
return false;
|
||
|
});
|
||
|
|
||
|
$modal.on('click', '.button', function (evt) {
|
||
|
evt.preventDefault();
|
||
|
|
||
|
if ($(this).hasClass('disabled')) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var email = getEmail();
|
||
|
|
||
|
disableButton();
|
||
|
|
||
|
if (!(-1 < email.indexOf('@'))) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$.ajax({
|
||
|
url : ajaxurl,
|
||
|
method : 'POST',
|
||
|
data : {
|
||
|
action : '<?php echo $fs->get_ajax_action( 'resend_license_key' ) ?>',
|
||
|
security : '<?php echo $fs->get_ajax_security( 'resend_license_key' ) ?>',
|
||
|
module_id : moduleID,
|
||
|
email : email
|
||
|
},
|
||
|
beforeSend: function () {
|
||
|
$sendButton.text('<?php fs_esc_js_echo_inline( 'Sending license key', 'sending-license-key', $slug ) ?>...');
|
||
|
},
|
||
|
success : function (result) {
|
||
|
var resultObj = $.parseJSON(result);
|
||
|
if (resultObj.success) {
|
||
|
closeModal();
|
||
|
} else {
|
||
|
showError(resultObj.error);
|
||
|
resetButton();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
registerEventHandlers();
|
||
|
|
||
|
resetButton();
|
||
|
|
||
|
function showModal() {
|
||
|
resetModal();
|
||
|
|
||
|
// Display the dialog box.
|
||
|
$modal.addClass('active');
|
||
|
|
||
|
if (!isFreemium)
|
||
|
$emailInput.focus();
|
||
|
|
||
|
var $body = $('body');
|
||
|
|
||
|
isChild = $body.hasClass('has-fs-modal');
|
||
|
if (isChild) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$body.addClass('has-fs-modal');
|
||
|
}
|
||
|
|
||
|
function closeModal() {
|
||
|
$modal.removeClass('active');
|
||
|
|
||
|
// If child modal, do not remove the "has-fs-modal" class of the <body> element to keep its scrollbars hidden.
|
||
|
if (isChild) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$('body').removeClass('has-fs-modal');
|
||
|
}
|
||
|
|
||
|
function resetButton() {
|
||
|
updateButtonState();
|
||
|
$sendButton.text(<?php echo json_encode($send_button_text) ?>);
|
||
|
}
|
||
|
|
||
|
function resetModal() {
|
||
|
hideError();
|
||
|
resetButton();
|
||
|
$emailInput.val('');
|
||
|
}
|
||
|
|
||
|
function getEmail() {
|
||
|
var email = $emailInput.val().trim();
|
||
|
|
||
|
if (isFreemium) {
|
||
|
if ('other' != $modal.find('input[type=radio][name=email-address]:checked').val()) {
|
||
|
email = userEmail;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return email;
|
||
|
}
|
||
|
|
||
|
function updateButtonState() {
|
||
|
/**
|
||
|
* If email address is not empty, enable the send license key button.
|
||
|
*/
|
||
|
$sendButton.toggleClass('disabled', !( -1 < getEmail().indexOf('@') ));
|
||
|
}
|
||
|
|
||
|
function disableButton() {
|
||
|
$sendButton.addClass('disabled');
|
||
|
}
|
||
|
|
||
|
function hideError() {
|
||
|
$feedbackMessage.hide();
|
||
|
}
|
||
|
|
||
|
function showError(msg) {
|
||
|
$feedbackMessage.find(' > p').html(msg);
|
||
|
$feedbackMessage.show();
|
||
|
}
|
||
|
});
|
||
|
})(jQuery);
|
||
|
</script>
|