wp_back/wp-content/plugins/easy-post-views-count/freemius/templates/forms/license-activation.php

870 lines
34 KiB
PHP
Raw Normal View History

2024-05-20 15:37:46 +03:00
<?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.1.9
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* @var array $VARS
*
* @var Freemius $fs
*/
$fs = freemius( $VARS['id'] );
$slug = $fs->get_slug();
$unique_affix = $fs->get_unique_affix();
$cant_find_license_key_text = fs_text_inline( "Can't find your license key?", 'cant-find-license-key', $slug );
$message_above_input_field = fs_text_inline( 'Please enter the license key that you received in the email right after the purchase:', 'activate-license-message', $slug );
$message_below_input_field = '';
$header_title = $fs->is_free_plan() ?
fs_text_inline( 'Activate License', 'activate-license', $slug ) :
fs_text_inline( 'Update License', 'update-license', $slug );
if ( $fs->is_registered() ) {
$activate_button_text = $header_title;
} else {
$freemius_site_url = $fs->has_paid_plan() ?
'https://freemius.com/' :
// Insights platform information.
$fs->get_usage_tracking_terms_url();
$freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" rel="noopener" tabindex="0">freemius.com</a>';
$message_below_input_field = sprintf(
fs_text_inline( 'The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license.', 'license-sync-disclaimer', $slug ),
$fs->get_module_label( true ),
$freemius_link
);
$activate_button_text = fs_text_inline( 'Agree & Activate License', 'agree-activate-license', $slug );
}
$license_key_text = fs_text_inline( 'License key', 'license-key' , $slug );
$is_network_activation = (
$fs->is_network_active() &&
fs_is_network_admin() &&
! $fs->is_delegated_connection()
);
$network_activation_html = '';
$sites_details = array();
if ( $is_network_activation ) {
$all_sites = Freemius::get_sites();
foreach ( $all_sites as $site ) {
$site_details = $fs->get_site_info( $site );
$blog_id = Freemius::get_site_blog_id( $site );
$install = $fs->get_install_by_blog_id($blog_id);
if ( is_object( $install ) && FS_Plugin_License::is_valid_id( $install->license_id ) ) {
$site_details['license_id'] = $install->license_id;
}
$sites_details[] = $site_details;
}
if ( $is_network_activation ) {
$vars = array(
'id' => $fs->get_id(),
'sites' => $sites_details,
'require_license_key' => true
);
$network_activation_html = fs_get_template( 'partials/network-activation.php', $vars );
}
}
$premium_licenses = $fs->get_available_premium_licenses();
$available_licenses = array();
foreach ( $premium_licenses as $premium_license ) {
$activations_left = $premium_license->left();
if ( ! ( $activations_left > 0 ) ) {
continue;
}
$available_licenses[ $activations_left . '_' . $premium_license->id ] = $premium_license;
}
$total_available_licenses = count( $available_licenses );
if ( $total_available_licenses > 0 ) {
$license_input_html = <<< HTML
<div class="fs-license-options-container">
<table>
<tbody>
<tr class="fs-available-license-key-container">
<td><input type="radio" name="license_type" value="available"></td>
<td>
HTML;
if ( $total_available_licenses > 1 ) {
// Sort the licenses by number of activations left in descending order.
krsort( $available_licenses );
$license_input_html .= '<select class="fs-licenses">';
/**
* @var FS_Plugin_License $license
*/
foreach ( $available_licenses as $license ) {
$plan = $fs->_get_plan_by_id( $license->plan_id );
$label = sprintf(
"%s-Site %s License - %s",
( 1 == $license->quota ?
'Single' :
( $license->is_unlimited() ? 'Unlimited' : $license->quota )
),
( is_object( $plan ) ? $plan->title : '' ),
$license->get_html_escaped_masked_secret_key()
);
$license_input_html .= "<option data-id='{$license->id}' value='{$license->secret_key}' data-left='{$license->left()}'>{$label}</option>";
}
$license_input_html .= '</select>';
} else {
$available_licenses = array_values( $available_licenses );
/**
* @var FS_Plugin_License $available_license
*/
$available_license = $available_licenses[0];
$value = sprintf(
"%s-Site %s License - %s",
( 1 == $available_license->quota ?
'Single' :
( $available_license->is_unlimited() ? 'Unlimited' : $available_license->quota )
),
$fs->_get_plan_by_id( $available_license->plan_id )->title,
$available_license->get_html_escaped_masked_secret_key()
);
$license_input_html .= <<< HTML
<input
class="fs-available-license-key"
type="text"
value="{$value}"
data-id="{$available_license->id}"
data-license-key="{$available_license->secret_key}"
data-left="{$available_license->left()}"
readonly />
HTML;
}
$license_input_html .= <<< HTML
</td>
</tr>
<tr>
<td><input type="radio" name="license_type" value="other"></td>
<td class="fs-other-license-key-container">
<label for="other_license_key_{$unique_affix}">Other: </label>
<div>
<input id="other_license_key_{$unique_affix}" class="fs-license-key" type="text" placeholder="Enter license key" tabindex="1">
</div>
</td>
</tr>
</tbody>
</table>
</div>
HTML;
} else {
$license_input_html = "<input class='fs-license-key' type='text' placeholder='{$license_key_text}' tabindex='1' />";
}
$ownership_change_option_text = fs_text_inline( "Associate with the license owner's account.", 'associate-account-with-license-owner', $slug );
$ownership_change_option_html = "<div class='ownership-change-option-container' style='display: none'><label><input type='checkbox' /> <strong>{$ownership_change_option_text}</strong></label></div>";
/**
* IMPORTANT:
* DO NOT ADD MAXLENGTH OR LIMIT THE LICENSE KEY LENGTH SINCE
* WE DO WANT TO ALLOW INPUT OF LONGER KEYS (E.G. WooCommerce Keys)
* FOR MIGRATED MODULES.
*/
$modal_content_html = <<< HTML
<div class="notice notice-error inline license-activation-message"><p></p></div>
<p>{$message_above_input_field}</p>
{$license_input_html}
<a class="show-license-resend-modal show-license-resend-modal-{$fs->get_unique_affix()}" href="!#" tabindex="2">{$cant_find_license_key_text}</a>
{$network_activation_html}
<p>{$message_below_input_field}</p>
{$ownership_change_option_html}
HTML;
/**
* Handle the ownership change option if not an add-on or if no license yet is activated for the
* parent product in case of an add-on.
*
* @author Leo Fajardo (@leorw)
* @since 2.3.2
*/
$is_user_change_supported = ( ! $fs->is_addon() || ! $fs->get_parent_instance()->has_active_valid_license() );
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-license-activation fs-modal-license-activation-<?php echo $unique_affix ?>">'
+ ' <div class="fs-modal-dialog">'
+ ' <div class="fs-modal-header">'
+ ' <h4><?php echo esc_js($header_title) ?></h4>'
+ ' <a href="!#" class="fs-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">' + 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-activate-license" tabindex="3"><?php echo esc_js( $activate_button_text ) ?></button>'
+ ' </div>'
+ ' </div>'
+ '</div>',
$modal = $(modalHtml),
$activateLicenseButton = $modal.find('.button-activate-license'),
$licenseKeyInput = $modal.find( 'input.fs-license-key' ),
$licenseActivationMessage = $modal.find( '.license-activation-message' ),
isNetworkActivation = <?php echo $is_network_activation ? 'true' : 'false' ?>,
isUserChangeSupported = <?php echo $is_user_change_supported ? 'true' : 'false' ?>,
isSingleSiteActivation = false,
$ownershipChangeOptionContainer = $modal.find( '.ownership-change-option-container' ),
$body = $( 'body' );
$modal.appendTo( $body );
var
$licensesDropdown = $modal.find( '.fs-licenses' ),
$licenseTypes = $modal.find( 'input[type="radio"][name="license_type"]' ),
$applyOnAllSites = $modal.find( '.fs-apply-on-all-sites-checkbox' ),
$sitesListContainer = $modal.find( '.fs-sites-list-container' ),
$availableLicenseKey = $modal.find( '.fs-available-license-key' ),
$otherLicenseKey = $modal.find( '#other_license_key_<?php echo $unique_affix ?>' ),
$multisiteOptionsContainer = $modal.find( '.fs-multisite-options-container' ),
$activationsLeft = null,
hasLicensesDropdown = ( $licensesDropdown.length > 0 ),
hasLicenseTypes = ( $licenseTypes.length > 0 ),
maxSitesListHeight = null,
totalSites = <?php echo count( $sites_details ) ?>,
singleBlogID = null;
var
previousLicenseKey = null,
otherLicenseOwnerID = null,
/**
* @author Leo Fajardo (@leorw)
* @since 2.3.2
*/
resetLoadingMode = function () {
// Reset loading mode.
$activateLicenseButton.text( <?php echo json_encode( $activate_button_text ) ?> );
$activateLicenseButton.prop( 'disabled', false );
$( document.body ).css( { 'cursor': 'auto' } );
$( '.fs-loading' ).removeClass( 'fs-loading' );
console.log( 'resetLoadingMode - Primary button was enabled' );
},
/**
* @author Leo Fajardo (@leorw)
* @since 2.3.2
*/
setLoadingMode = function () {
$( document.body ).css( { 'cursor': 'wait' } );
},
/**
* @author Leo Fajardo (@leorw)
* @since 2.3.2
*/
afterLicenseUserDataLoaded = function () {
if (
null !== otherLicenseOwnerID &&
otherLicenseOwnerID != <?php echo $fs->is_registered() ? $fs->get_user()->id : 'null' ?>
) {
$ownershipChangeOptionContainer.show();
} else {
$ownershipChangeOptionContainer.hide();
$activateLicenseButton.focus();
}
},
/**
* @author Leo Fajardo (@leorw)
* @since 2.3.2
*/
fetchLicenseUserData = function () {
var hideAndUncheckUserChangeCheckbox = ( ! isUserChangeSupported ),
otherLicenseKeyIsSelected = isOtherLicenseKeySelected();
if ( ! hideAndUncheckUserChangeCheckbox ) {
// User change is supported only on the site level.
hideAndUncheckUserChangeCheckbox = ( isNetworkActivation || isSingleSiteActivation );
}
if ( ! hideAndUncheckUserChangeCheckbox ) {
hideAndUncheckUserChangeCheckbox = ( hasLicenseTypes && ! otherLicenseKeyIsSelected );
}
var licenseKey = $licenseKeyInput.val().trim();
if ( ! hideAndUncheckUserChangeCheckbox && otherLicenseKeyIsSelected ) {
hideAndUncheckUserChangeCheckbox = ( licenseKey.length < 32 );
}
if ( licenseKey !== previousLicenseKey ) {
// If the license key has not been changed, keep the owner ID in order to prevent another API call.
otherLicenseOwnerID = null;
}
if ( hideAndUncheckUserChangeCheckbox ) {
$ownershipChangeOptionContainer.hide().find( 'input' ).attr( 'checked', false );
return;
}
if ( null !== otherLicenseOwnerID ) {
afterLicenseUserDataLoaded();
return;
}
setLoadingMode();
$activateLicenseButton.addClass( 'fs-loading' );
$activateLicenseButton.attr( 'disabled', 'disabled' );
$activateLicenseButton.html( '<?php fs_esc_js_echo_inline( 'Please wait', 'please-wait', $slug ) ?>...' );
$.ajax( {
url : ajaxurl,
method : 'POST',
data : {
action : '<?php echo $fs->get_ajax_action( 'fetch_is_marketing_required_flag_value' ) ?>',
security : '<?php echo $fs->get_ajax_security( 'fetch_is_marketing_required_flag_value' ) ?>',
license_key: licenseKey,
module_id : '<?php echo $fs->get_id() ?>'
},
success: function ( result ) {
resetLoadingMode();
if ( result.success ) {
result = result.data;
// Cache license owner's ID.
otherLicenseOwnerID = result.license_owner_id;
}
afterLicenseUserDataLoaded();
}
} );
};
function registerEventHandlers() {
var
$otherLicenseKeyContainer = $modal.find( '.fs-other-license-key-container' );
if ( isNetworkActivation ) {
$applyOnAllSites.click(function() {
var applyOnAllSites = $( this ).is( ':checked' );
$multisiteOptionsContainer.toggleClass( 'fs-apply-on-all-sites', applyOnAllSites );
showSites( ! applyOnAllSites );
if ( hasValidLicenseKey() && ( applyOnAllSites || hasSelectedSite() ) ) {
enableActivateLicenseButton();
} else {
disableActivateLicenseButton();
}
});
$sitesListContainer.delegate( 'td:not(:first-child)', 'click', function() {
// If a site row is clicked, trigger a click on the checkbox.
$( this ).parent().find( 'td:first-child input' ).click();
});
$sitesListContainer.delegate( 'input[type="checkbox"]', 'click', function() {
enableDisableSitesSelection();
if ( hasValidLicenseKey() && hasSelectedSite() ) {
enableActivateLicenseButton();
} else {
disableActivateLicenseButton();
}
});
}
if ( hasLicensesDropdown ) {
$licensesDropdown.change(function() {
// When a license is selected, select the associated radio button.
$licenseTypes.filter( '[value="available"]' ).attr( 'checked', true );
if ( ! isNetworkActivation || $modal.hasClass( 'is-single-site-activation' ) ) {
enableActivateLicenseButton();
return true;
}
toggleActivationOnAllSites();
})
}
if ( hasLicenseTypes ) {
$licenseTypes.change(function() {
var
licenseKey = $modal.find( 'input.fs-license-key' ).val().trim(),
otherLicenseKeySelected = isOtherLicenseKeySelected();
if ( ( licenseKey.length > 0 || ( hasLicenseTypes && ! otherLicenseKeySelected ) ) &&
( $modal.hasClass( 'is-single-site-activation' ) || ! isNetworkActivation || hasSelectedSite() )
) {
/**
* If the "other" license is not empty or an available license is selected, enable the activate
* button.
*
* @author Leo Fajardo (@leorw)
*/
enableActivateLicenseButton();
} else {
disableActivateLicenseButton();
}
if ( '' !== licenseKey ) {
fetchLicenseUserData();
}
if ( ! isNetworkActivation ) {
return;
}
if ( otherLicenseKeySelected ) {
$applyOnAllSites.attr( 'disabled', false );
enableDisableSitesSelection();
resetActivateLicenseCheckboxLabel();
} else if ( ! $modal.hasClass( 'is-single-site-activation' ) ) {
toggleActivationOnAllSites();
}
});
if ( ! hasLicensesDropdown ) {
$availableLicenseKey.click(function() {
$licenseTypes.filter( '[value="available"]' ).click();
});
}
$otherLicenseKeyContainer.click(function() {
$licenseTypes.filter( '[value="other"]' ).click();
});
}
$body.on( 'click', 'span.activate-license.<?php echo $unique_affix ?> a, .activate-license-trigger.<?php echo $unique_affix ?>', function (evt) {
evt.preventDefault();
showModal( evt );
});
var licenseTimeout = null;
/**
* Disable activation button when license key is empty.
*
* @author Leo Fajardo (@leorw)
* @since 2.3.2
*/
$modal.on( 'keyup paste delete cut', 'input.fs-license-key', function () {
clearTimeout(licenseTimeout);
licenseTimeout = setTimeout( function () {
var licenseKey = $licenseKeyInput.val().trim();
if ( licenseKey == previousLicenseKey ) {
afterLicenseUserDataLoaded();
return;
}
if ( '' === licenseKey ) {
disableActivateLicenseButton();
$ownershipChangeOptionContainer.hide();
} else {
enableActivateLicenseButton();
if ( 32 <= licenseKey.length ) {
fetchLicenseUserData();
} else {
$ownershipChangeOptionContainer.hide();
}
}
previousLicenseKey = licenseKey;
}, 200 );
} ).focus();
$modal.on('input propertychange', 'input.fs-license-key', function () {
var licenseKey = $(this).val().trim();
/**
* If license key is not empty, enable the license activation button.
*/
if ( licenseKey.length > 0 && ( $modal.hasClass( 'is-single-site-activation' ) || ! isNetworkActivation || hasSelectedSite() ) ) {
enableActivateLicenseButton();
}
});
$modal.on( 'blur', 'input.fs-license-key', function( evt ) {
var
licenseKey = $(this).val().trim(),
$focusedElement = $( evt.relatedTarget ),
hasSelectedAvailableLicense = ( hasLicenseTypes && $focusedElement.parents( '.fs-available-license-key-container' ).length > 0 );
/**
* If license key is empty, disable the license activation button.
*/
if ( ( 0 === licenseKey.length && ( ! hasLicenseTypes || ! hasSelectedAvailableLicense ) ) ||
( isNetworkActivation && ! hasSelectedSite() )
) {
disableActivateLicenseButton();
}
});
$modal.on('click', '.button-activate-license', function (evt) {
evt.preventDefault();
if ($(this).hasClass('disabled')) {
return;
}
var
licenseKey = '';
if ( hasLicenseTypes ) {
if ( isOtherLicenseKeySelected() ) {
licenseKey = $otherLicenseKey.val();
} else {
if ( ! hasLicensesDropdown ) {
licenseKey = $availableLicenseKey.data( 'license-key' );
} else {
licenseKey = $licensesDropdown.val();
}
}
} else {
licenseKey = $licenseKeyInput.val().trim();
}
disableActivateLicenseButton();
if (0 === licenseKey.length) {
return;
}
var data = {
action : '<?php echo $fs->get_ajax_action( 'activate_license' ) ?>',
security : '<?php echo $fs->get_ajax_security( 'activate_license' ) ?>',
license_key: licenseKey,
module_id : '<?php echo $fs->get_id() ?>'
};
if ( isNetworkActivation ) {
var
sites = [];
if ( null === singleBlogID ) {
var
applyOnAllSites = $applyOnAllSites.is( ':checked' );
$sitesListContainer.find( 'tr' ).each(function() {
var
$this = $( this ),
includeSite = ( applyOnAllSites || $this.find( 'input' ).is( ':checked' ) );
if ( ! includeSite )
return;
var site = {
uid : $this.find( '.uid' ).val(),
url : $this.find( '.url' ).val(),
title : $this.find( '.title' ).val(),
language: $this.find( '.language' ).val(),
charset : $this.find( '.charset' ).val(),
blog_id : $this.find( '.blog-id' ).find( 'span' ).text()
};
sites.push( site );
});
} else {
data.blog_id = singleBlogID;
}
data.sites = sites;
}
if ( $ownershipChangeOptionContainer.find( 'input:checked' ).length > 0 ) {
data.user_id = otherLicenseOwnerID;
}
$.ajax({
url: ajaxurl,
method: 'POST',
data: data,
beforeSend: function () {
$activateLicenseButton.text( '<?php fs_esc_js_echo_inline( 'Activating license', 'activating-license', $slug ) ?>...' );
},
success: function( result ) {
var resultObj = $.parseJSON( result );
if ( resultObj.success ) {
closeModal();
// Redirect to the "Account" page and sync the license.
window.location.href = resultObj.next_page;
} else {
showError( resultObj.error.message ? resultObj.error.message : resultObj.error );
resetActivateLicenseButton();
}
}
});
});
// If the user has clicked outside the window, close the modal.
$modal.on('click', '.fs-close, .button-secondary', function () {
closeModal();
return false;
});
}
registerEventHandlers();
$body.trigger('licenseActivationLoaded');
/**
* @author Leo Fajardo (@leorw)
* @since 2.0.0
*/
function enableDisableSitesSelection() {
var
canApplyOnAllSites = $applyOnAllSites.is( ':enabled' ),
disableSitesSelection = null;
if ( ! canApplyOnAllSites ) {
var
selectedSites = $sitesListContainer.find( 'input[type="checkbox"]:checked' ).length,
activationsLeft = Math.max( 0, $activationsLeft.data( 'left' ) - selectedSites );
disableSitesSelection = ( 0 === activationsLeft );
$activationsLeft.text( activationsLeft );
} else {
disableSitesSelection = false;
}
$sitesListContainer
.find( 'input[type="checkbox"]:not(:checked)' )
.attr( 'disabled', disableSitesSelection );
}
/**
* @author Leo Fajardo (@leorw)
* @since 2.0.0
*
* @returns {Boolean}
*/
function isOtherLicenseKeySelected() {
return ( hasLicenseTypes && 'other' === $licenseTypes.filter( ':checked' ).val() );
}
/**
* @author Leo Fajardo (@leorw)
* @since 2.0.0
*
* @returns {Boolean}
*/
function hasValidLicenseKey() {
var licenseKey = '';
if ( hasLicenseTypes ) {
if ( 'available' === $licenseTypes.filter( ':checked' ).val() ) {
return true;
} else {
licenseKey = $otherLicenseKey.val();
}
} else {
licenseKey = $modal.find( 'input.fs-license-key' ).val();
}
return ( licenseKey.trim().length > 0 );
}
/**
* @author Leo Fajardo (@leorw)
* @since 2.0.0
*
* @returns {Boolean}
*/
function hasSelectedSite() {
return ( $applyOnAllSites.is( ':checked' ) ||
$sitesListContainer.find( 'input[type="checkbox"]:checked:not(:disabled)' ).length > 0 );
}
/**
* @author Leo Fajardo (@leorw)
* @since 2.0.0
*/
function toggleActivationOnAllSites() {
var activationsLeft,
licenseID;
if (hasLicensesDropdown) {
var $selectedOption = $licensesDropdown.find( ':selected' );
activationsLeft = $selectedOption.data('left');
licenseID = $selectedOption.data('id');
} else {
activationsLeft = $availableLicenseKey.data('left');
licenseID = $availableLicenseKey.data('id');
}
// Cleanup previously auto-selected site.
$modal.find( '.fs-sites-list-container input[type=checkbox]:disabled' )
.attr('disabled', false)
.attr('checked', false);
var $blogsWithActiveLicense = $modal.find( '.fs-sites-list-container tr[data-license-id=' + licenseID + '] input[type=checkbox]' );
if ($blogsWithActiveLicense.length > 0) {
$blogsWithActiveLicense.attr('checked', true)
.attr('disabled', true);
activationsLeft += $blogsWithActiveLicense.length;
}
if ( activationsLeft >= totalSites ) {
$applyOnAllSites.attr( 'disabled', false );
enableDisableSitesSelection();
resetActivateLicenseCheckboxLabel();
return;
}
$applyOnAllSites.attr( 'checked', false );
$applyOnAllSites.attr( 'disabled', true );
showSites( true );
var
activateLicenseCheckboxLabel = '<?php fs_esc_js_echo_inline( 'Choose up to %s site(s) to activate the license on.', 'choose-up-to-n-sites-to-activate-the-license-on', $slug ) ?>';
activateLicenseCheckboxLabel = activateLicenseCheckboxLabel.replace( '%s', '<span data-left="' + activationsLeft + '" class="activations-left">' + activationsLeft + '</span>' );
// Update the label of the "Activate license on all sites" checkbox.
$applyOnAllSites.parent().find( 'span' ).html( activateLicenseCheckboxLabel );
$activationsLeft = $modal.find( '.activations-left' );
if ( hasSelectedSite() ) {
enableActivateLicenseButton();
enableDisableSitesSelection();
} else {
disableActivateLicenseButton();
}
}
/**
* @author Leo Fajardo (@leorw)
* @since 2.0.0
*/
function resetActivateLicenseCheckboxLabel() {
var activateLicenseCheckboxLabel = '<?php fs_esc_js_echo_inline( 'Activate license on all sites in the network.', 'activate-license-on-all-sites-in-the-network', $slug ) ?>';
$applyOnAllSites.parent().find( 'span' ).text( activateLicenseCheckboxLabel );
}
/**
* @author Leo Fajardo (@leorw)
* @since 2.0.0
*
* @param {Boolean} show
*/
function showSites( show ) {
$sitesListContainer.toggle( show );
if ( show && null === maxSitesListHeight ) {
/**
* Set the visible number of rows to 5 (5 * height of the first row).
*
* @author Leo Fajardo (@leorw)
*/
maxSitesListHeight = ( 5 * $sitesListContainer.find( 'tr:first' ).height() );
$sitesListContainer.css( 'max-height', maxSitesListHeight );
}
}
function showModal( evt ) {
resetModal();
// Display the dialog box.
$modal.addClass('active');
$body.addClass('has-fs-modal');
var
$singleInstallDetails = $( evt.target ).parents( 'tr.fs-install-details' ),
isSingleSiteActivation = ( $singleInstallDetails.length > 0 );
$modal.toggleClass( 'is-single-site-activation', isSingleSiteActivation );
singleBlogID = isSingleSiteActivation ?
$singleInstallDetails.prev().data( 'blog-id' ) :
null;
<?php if ( $fs->apply_filters( 'enable_per_site_activation', true ) ) : ?>
$multisiteOptionsContainer.toggle( isNetworkActivation && ! isSingleSiteActivation );
<?php endif ?>
if ( hasLicenseTypes ) {
$licenseTypes.attr( 'checked', false );
if ( hasLicensesDropdown ) {
$licensesDropdown.find( 'option:first' ).attr( 'selected', true ).trigger( 'change' );
} else {
$licenseTypes.filter( '[value="available"]' ).click();
}
$otherLicenseKey.val( '' );
} else {
$licenseKeyInput.val( '' );
$licenseKeyInput.focus();
}
}
function closeModal() {
$modal.removeClass('active');
$body.removeClass('has-fs-modal');
}
function resetActivateLicenseButton() {
enableActivateLicenseButton();
$activateLicenseButton.text( <?php echo json_encode( $activate_button_text ) ?> );
}
function resetModal() {
hideError();
resetActivateLicenseButton();
}
function enableActivateLicenseButton() {
$activateLicenseButton.removeClass( 'disabled' );
}
function disableActivateLicenseButton() {
$activateLicenseButton.addClass( 'disabled' );
}
function hideError() {
$licenseActivationMessage.hide();
}
function showError( msg ) {
$licenseActivationMessage.find( ' > p' ).html( msg );
$licenseActivationMessage.show();
}
});
})( jQuery );
</script>