first
This commit is contained in:
@ -0,0 +1,247 @@
|
||||
<?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>
|
Reference in New Issue
Block a user