Commit inicial - WordPress Análisis de Precios Unitarios

- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-11-03 21:04:30 -06:00
commit a22573bf0b
24068 changed files with 4993111 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
/**
* Membership Account Page JS ( [subscription_details] shortcode )
*
* @package Restrict Content Pro
* @copyright Copyright (c) 2020, Sandhills Development, LLC
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
*/
/* global rcpAccountVars */
jQuery( document ).ready( function ( $ ) {
/**
* Show alert when disabling auto renew
*/
$( '.rcp-disable-auto-renew' ).on( 'click', function( e ) {
return confirm( rcpAccountVars.confirmDisableAutoRenew );
} );
/**
* Show alert when enabling auto renew
*/
$( '.rcp-enable-auto-renew' ).on( 'click', function( e ) {
const expiration = $( this ).data( 'expiration' );
let message = rcpAccountVars.confirmEnableAutoRenew;
message = message.replace( '%s', expiration );
return confirm( message );
} );
} );

View File

@@ -0,0 +1 @@
jQuery(document).ready(function(n){n(".rcp-disable-auto-renew").on("click",function(n){return confirm(rcpAccountVars.confirmDisableAutoRenew)}),n(".rcp-enable-auto-renew").on("click",function(c){const e=n(this).data("expiration");let r=rcpAccountVars.confirmEnableAutoRenew;return r=r.replace("%s",e),confirm(r)})});

View File

@@ -0,0 +1,184 @@
"use strict";
var RCP_Import = {
listen: function () {
var self = this;
jQuery('.rcp-import-form').ajaxForm({
beforeSubmit: self.before_submit,
success: self.success,
complete: self.complete,
dataType: 'json',
error: self.error
} );
},
/**
* Triggers before the form is submitted.
*
* @param {array} form_array
* @param {object} form_object
* @param {object} options
*/
before_submit: function ( form_array, form_object, options ) {
let error_wrap = form_object.find( '#rcp-import-csv-errors' );
let spinner = form_object.find('.spinner');
error_wrap.empty().hide();
spinner.addClass('is-active').show();
//check whether client browser fully supports all File API
if ( window.File && window.FileReader && window.FileList && window.Blob ) {
// HTML5 File API is supported by browser
} else {
error_wrap.append( rcp_csv_import_vars.unsupported_browser ).show();
spinner.removeClass( 'is-active' ).hide();
return false;
}
},
/**
* On success
*
* @param responseText
* @param statusText
* @param xhr
* @param form
*/
success: function( responseText, statusText, xhr, form ) {},
/**
* On form submission completion
*
* Show column mapping options and then listen to process the steps.
*
* @param {object} xhr
*/
complete: function( xhr ) {
const response = jQuery.parseJSON( xhr.responseText );
const form = jQuery( '.rcp-import-form' );
// Hide the spinner.
form.find('.spinner').removeClass('is-active').hide();
if ( response.success ) {
form.find( '.rcp-import-file-wrap' ).remove();
form.find( '.rcp-import-options' ).slideDown();
// Show column mapping
let select = form.find( 'select.rcp-import-csv-column' ),
options = '',
columns = response.data.columns.sort( function( a, b ) {
if ( a < b ) {
return -1;
}
if ( a > b ) {
return 1;
}
return 0;
} );
jQuery.each( columns, function( key, value ) {
options += '<option value="' + value + '">' + value + '</option>';
} );
select.append( options );
select.on( 'change', function() {
const key = jQuery( this ).val();
if ( ! key ) {
jQuery( this ).parent().next().html( '' );
} else if ( false !== response.data.first_row[ key ] ) {
jQuery( this ).parent().next().html( response.data.first_row[ key ] );
} else {
jQuery( this ).parent().next().html( '' );
}
} );
jQuery.each( select, function() {
jQuery( this ).val( jQuery( this ).attr( 'data-field' ) ).change();
} );
jQuery( document.body ).on( 'click', '.rcp-import-proceed', function( e ) {
e.preventDefault();
jQuery( this ).parents( '.submit' ).find( '.spinner' ).addClass( 'is-active' ).show();
response.data.mapping = form.serialize();
RCP_Import.begin_import( response.data );
} );
} else {
RCP_Import.error( xhr );
}
},
/**
* Error
*
* @todo
*
* @param xhr
*/
error: function( xhr ) {
// Something went wrong. This will display error on form
let error_wrap = jQuery( '#rcp-import-csv-errors' );
// Empty errors.
error_wrap.empty();
const response = jQuery.parseJSON( xhr.responseText );
if ( ! response.success ) {
error_wrap.append( response.data.message ).show();
} else {
error_wrap.hide();
}
},
/**
* Begin import
*
* Final ajax request to save mapping information.
*
* @param {object} data
*/
begin_import: function( data ) {
data.action = 'rcp_process_csv_import';
jQuery.ajax( {
dataType: 'json',
data: data,
type: 'POST',
url: ajaxurl,
success: function ( response ) {
if ( response.success ) {
window.location = response.data;
}
},
error: function ( response ) {
console.log( new Date() + ' error' );
console.log( response );
}
} );
}
};
/**
* Loads the import listener.
*/
jQuery(document).ready(function() {
RCP_Import.listen();
} );

View File

@@ -0,0 +1,111 @@
/**
* Admin Reports
*
* @since 3.3
*/
jQuery( document ).ready( function ( $ ) {
var RCP_Reports = {
membershipCountsGraph: false,
filterButton: false,
/**
* Initialize
*/
init: function () {
this.filterButton = $( '#rcp-graphs-filter .button-secondary' );
this.getMembershipCountsData();
// Update the graph when the filters change.
$( '#rcp-graphs-filter' ).on( 'submit', function( e ) {
e.preventDefault();
RCP_Reports.getMembershipCountsData();
} );
},
/**
* Parse the selected filters
*/
parseFilters: function ( filters ) {
let dateOption = $( '#rcp-graphs-date-options' );
let levelsOption = $( '#rcp-graphs-subscriptions' );
let statusOption = $( '#rcp-graphs-membership-status' );
if ( dateOption.length ) {
filters.range = dateOption.val();
if ( 'other' === filters.range ) {
filters.m_start = $( '#rcp-graphs-month-start' ).val();
filters.year = $( '#rcp-graphs-year-start' ).val();
filters.m_end = $( '#rcp-graphs-month-end' ).val();
filters.year_end = $( '#rcp-graphs-year-end' ).val();
}
}
if ( levelsOption.length ) {
filters.level_id = levelsOption.val();
}
if ( statusOption.length ) {
filters.membership_status = statusOption.val();
}
return filters;
},
/**
* Get the membership counts graph data
*/
getMembershipCountsData: function () {
RCP_Reports.filterButton.data( 'text', RCP_Reports.filterButton.attr( 'value' ) ).attr( 'value', 'Please wait...' );
RCP_Reports.filterButton.prop( 'disabled', true );
let args = {
action: 'rcp_get_membership_counts_report_data',
nonce: $( '#rcp-reports-wrap' ).data( 'nonce' ),
};
args = RCP_Reports.parseFilters( args );
console.log('Ajax args', args);
$.ajax( {
type: "POST",
data: args,
dataType: "json",
url: ajaxurl,
success: function ( response ) {
console.log('Report data', response);
RCP_Reports.filterButton.attr( 'value', RCP_Reports.filterButton.data( 'text' ) ).prop( 'disabled', false );
if ( response.success ) {
if ( false !== RCP_Reports.membershipCountsGraph ) {
RCP_Reports.membershipCountsGraph.destroy();
}
RCP_Reports.membershipCountsGraph = new Chart( document.getElementById( 'rcp-membership-counts-graph-canvas' ).getContext( '2d' ), response.data );
return response.data;
}
return false;
}
} );
},
};
RCP_Reports.init();
} );

View File

@@ -0,0 +1,967 @@
jQuery(document).ready(function($) {
// Tooltips
$( '.rcp-help-tip' ).tooltip({
content: function() {
return $( this ).prop( 'title' );
},
position: {
my: 'center top',
at: 'center bottom+10',
collision: 'flipfit'
},
hide: {
duration: 500
},
show: {
duration: 500
}
});
var restriction_control = $('#rcp-restrict-by');
var role_control = $('#rcp-metabox-field-role');
var sub_levels_control = $('#rcp-metabox-field-levels');
var sub_levels_select = $('.rcp-subscription-levels');
var sub_levels_radio = $('input[name=rcp_subscription_level_any_set]');
var access_levels_control = $('#rcp-metabox-field-access-levels');
var additional_options_control = $('#rcp-metabox-field-options');
var Settings_Controls = {
prepare_type: function(type) {
if ('unrestricted' === type) {
role_control.hide();
sub_levels_control.hide();
access_levels_control.hide();
additional_options_control.hide();
}
if ('registered-users' === type) {
role_control.show();
sub_levels_control.hide();
access_levels_control.hide();
additional_options_control.show();
}
if ('subscription-level' === type) {
role_control.show();
sub_levels_control.show();
access_levels_control.hide();
additional_options_control.show();
}
if ('access-level' === type) {
role_control.show();
sub_levels_control.hide();
access_levels_control.show();
additional_options_control.show();
}
},
prepare_sub_levels: function(type) {
if ('any' === type) {
sub_levels_select.hide();
}
if ('any-paid' === type) {
sub_levels_select.hide();
}
if ('specific' === type) {
sub_levels_radio.show();
sub_levels_select.show();
access_levels_control.hide();
additional_options_control.show();
}
}
}
var restriction_type = restriction_control.val();
Settings_Controls.prepare_type(restriction_type);
// restrict content metabox.
restriction_control.on('change', function() {
var type = $(this).val();
Settings_Controls.prepare_type(type);
});
sub_levels_radio.on('change', function() {
var type = $(this).val();
Settings_Controls.prepare_sub_levels(type);
});
// Deselect all roles if "All" is selected.
$('.rcp-user-role').on( 'change', function (e) {
var this_role_value = $(this).val();
if ( 'all' === this_role_value && this.checked ) {
// Uncheck all other roles when selecting "All".
$(this).parents('p').find('input:checkbox').each(function() {
if ( $(this).val() !== 'all' ) {
$(this).removeAttr( 'checked' );
}
});
} else if ( 'all' !== this_role_value && this.checked ) {
// Uncheck "All" when selecting another role.
$('#rcp_user_level_all').removeAttr( 'checked' );
}
});
// settings tabs
//when the history state changes, gets the url from the hash and display
$(window).on( 'hashchange', function(e) {
if ( $('#rcp-settings-wrap').length == 0) {
return;
}
let url = window.location.hash;
if (url) {
url = url.replace(/[^a-zA-Z0-9]/g, '');
}
//hide all
jQuery( '#rcp-settings-wrap #tab_container .tab_content' ).hide();
jQuery( '#rcp-settings-wrap #tab_container' ).children(".tab_content").hide();
jQuery( '#rcp-settings-wrap .nav-tab-wrapper a' ).removeClass("nav-tab-active");
//find a href that matches url
if (url && jQuery.inArray(url, [ 'general', 'payments', 'emails', 'invoices', 'misc' ])) {
jQuery( '#rcp-settings-wrap .nav-tab-wrapper a[href="#' + url + '"]' ).addClass( 'nav-tab-active' );
jQuery("#rcp-settings-wrap #tab_container #" + url).addClass("selected").fadeIn();
} else {
jQuery( '#rcp-settings-wrap h2.nav-tab-wrapper a[href="#general"]' ).addClass( 'nav-tab-active' );
jQuery("#rcp-settings-wrap #tab_container #general").addClass("selected nav-tab-active").fadeIn();
}
});
// Since the event is only triggered when the hash changes, we need to trigger
// the event now, to handle the hash the page may have loaded with.
$(window).trigger( 'hashchange' );
if($('.rcp-datepicker').length > 0 ) {
var dateFormat = 'yy-mm-dd';
$('.rcp-datepicker').datepicker({
dateFormat: dateFormat,
beforeShow: function() {
$( this ).datepicker( 'widget' ).addClass( 'rcp-datepicker-wrap' );
},
onClose: function() {
$( this ).datepicker( 'widget' ).removeClass( 'rcp-datepicker-wrap' );
}
});
}
if($('.rcp-datetimepicker').length > 0 ) {
$('.rcp-datetimepicker').datetimepicker({
dateFormat: 'yy-mm-dd',
timeFormat: 'HH:mm:ss',
beforeShow: function( input_id, input_field, timepicker ) {
$('#ui-datepicker-div').addClass('rcp-datepicker-wrap');
},
onClose: function( dateText, instance ) {
$('#ui-datepicker-div').removeClass('rcp-datepicker-wrap');
}
});
}
$('.rcp_cancel').on( 'click', function() {
if ($(this).is('[disabled=disabled]')) {
return false;
}
if(confirm(rcp_vars.cancel_user)) {
return true;
} else {
return false;
}
});
$('#rcp-expire-membership-button').on( 'click', function() {
if(confirm(rcp_vars.expire_membership)) {
return true;
} else {
return false;
}
});
$('.rcp_delete_subscription').on( 'click', function() {
if(confirm(rcp_vars.delete_subscription)) {
return true;
}
return false;
});
$('.rcp-delete-payment').on( 'click', function() {
if(confirm(rcp_vars.delete_payment)) {
return true;
}
return false;
});
$('.rcp_delete_discount').on( 'click', function() {
if(confirm(rcp_vars.delete_discount)) {
return true;
}
return false;
});
$('.rcp-delete-reminder').on( 'click', function () {
if(confirm(rcp_vars.delete_reminder)) {
return true;
}
return false;
});
$('.rcp-delete-membership').on( 'click', function () {
if(confirm(rcp_vars.delete_membership)) {
return true;
}
return false;
});
$('.rcp-delete-customer').on( 'click', function () {
if(confirm(rcp_vars.delete_customer)) {
return true;
}
return false;
});
$('#rcp-add-new-member').on( 'submit', function() {
if($('#rcp-user').val() == '') {
alert(rcp_vars.missing_username);
return false;
}
return true;
});
// make columns sortable via drag and drop
if( $('.rcp-subscriptions tbody').length ) {
$('.rcp-subscriptions tbody tr').each( function() {
let id = $(this).find('.check-column input').val();
$(this).attr('id', 'recordsArray_' + id);
$(this).addClass('rcp-subscription rcp_row');
} );
$( ".rcp-subscriptions tbody" ).sortable({
handle: '.rcp-drag-handle', items: 'tr', opacity: 0.6, cursor: 'move', axis: 'y', update: function() {
var order = $( this ).sortable( "serialize" ) + '&action=update-subscription-order';
$.post( ajaxurl, order, function( response ) {
// response here
});
}
});
}
// auto calculate the subscription expiration when manually adding a user
$('#rcp-membership-level').on( 'change', function() {
var level_id = $('option:selected', this).val();
data = {
action: 'rcp_get_subscription_expiration',
subscription_level: level_id
};
$.post(ajaxurl, data, function(response) {
let expiration = $( '#rcp-membership-expiration' );
let no_expiration = $( '#rcp-membership-expiration-none' );
if ( 'none' === response ) {
expiration.val( '' );
no_expiration.prop( 'checked', true );
} else {
expiration.val( response );
no_expiration.prop( 'checked', false );
}
});
});
$('.rcp-user-search').on( 'keyup', function() {
var user_search = $(this).val();
$('.rcp-ajax').show();
data = {
action: 'rcp_search_users',
user_name: user_search,
return_field: $(this).data('return-field'),
rcp_nonce: rcp_vars.rcp_member_nonce
};
$.ajax({
type: "POST",
data: data,
dataType: "json",
url: ajaxurl,
success: function (search_response) {
$('.rcp-ajax').hide();
let search_results = $('#rcp_user_search_results');
search_results.html('');
if(search_response.id == 'found') {
$(search_response.results).appendTo('#rcp_user_search_results');
} else if(search_response.id == 'fail') {
search_results.html(search_response.msg);
}
$(document).on( 'click', function ( e ) {
let target = $( e.target );
// Empty the search results if we didn't click inside the input or on a result.
if ( ! target.closest( '.rcp-user-search' ).length && ! target.closest( '#rcp_user_search_results' ).length ) {
search_results.html('');
}
} );
}
});
});
$('body').on('click.rcpSelectUser', '#rcp_user_search_results a', function(e) {
e.preventDefault();
var login = $(this).data('login');
$('.rcp-user-search').val(login);
$('#rcp_user_search_results').html('');
});
$( '#rcp-graphs-date-options' ).on( 'change', function() {
var $this = $(this);
if( $this.val() == 'other' ) {
$( '#rcp-date-range-options' ).show();
} else {
$( '#rcp-date-range-options' ).hide();
}
});
$( '#rcp-unlimited' ).on( 'change', function() {
var $this = $(this);
if( $this.attr( 'checked' ) ) {
$( '#rcp-expiration' ).val('none');
} else if( 'none' == $( '#rcp-expiration' ).val() ) {
$( '#rcp-expiration' ).val('').trigger('focus');
}
});
// WP 3.5+ uploader
var file_frame;
$('body').on('click', '.rcp-upload', function(e) {
e.preventDefault();
var formfield = $(this).prev();
// If the media frame already exists, reopen it.
if ( file_frame ) {
//file_frame.uploader.uploader.param( 'post_id', set_to_post_id );
file_frame.open();
return;
}
// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
frame: 'select',
title: rcp_vars.choose_logo,
multiple: false,
library: {
type: 'image'
},
button: {
text: rcp_vars.use_as_logo
}
});
file_frame.on( 'menu:render:default', function(view) {
// Store our views in an object.
var views = {};
// Unset default menu items
view.unset('library-separator');
view.unset('gallery');
view.unset('featured-image');
view.unset('embed');
// Initialize the views in our view object.
view.set(views);
});
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
var attachment = file_frame.state().get('selection').first().toJSON();
formfield.val(attachment.url);
});
// Finally, open the modal
file_frame.open();
});
$('#rcp-bulk-select-all').on('change', function() {
if( $(this).prop('checked') ) {
$('#rcp-members-form .rcp-member-cb').prop('checked', true );
} else {
$('#rcp-members-form .rcp-member-cb').prop('checked', false );
}
});
// Cancel user's subscription when updating status to "Cancelled".
$('#rcp-status').on('change', function () {
if ( 'cancelled' == $(this).val() ) {
if ( rcp_vars.can_cancel_member ) {
$(this).parent().append('<p id="rcp-cancel-subscription-wrap"><input type="checkbox" id="rcp-cancel-subscription" name="cancel_subscription" value="1"><label for="rcp-cancel-subscription">' + rcp_vars.cancel_subscription + '</label></p>');
}
$('#rcp-revoke-access-wrap').show();
} else {
$('#rcp-cancel-subscription-wrap').remove();
$('#rcp-revoke-access-wrap').hide();
}
});
// Show "Revoke access now" checkbox when marking as cancelled via bulk edit.
$('#rcp-bulk-member-action').on('change', function () {
if ('mark-cancelled' == $(this).val()) {
$('#rcp-revoke-access-wrap').show();
} else {
$('#rcp-revoke-access-wrap').hide();
}
});
// Show/hide auto renew default based on settings.
$('#rcp_settings_auto_renew').on('change', function() {
if( '3' == $(this).val() ) {
$(this).parents('tr').next().css('display', 'table-row');
} else {
$(this).parents('tr').next().css('display', 'none');
}
});
// Show/hide email fields based on their activation state.
$('.rcp-disable-email').on('change', function () {
var subject = $(this).parents('tr').next();
var body = subject.next();
var disabled = false;
if( 'SELECT' == $(this).prop('tagName') && 'off' == $(this).val() ) {
// Select dropdowns, like email verification.
disabled = true;
} else {
// Checkboxes.
disabled = $(this).prop('checked');
}
if( true === disabled ) {
subject.css('display', 'none');
body.css('display', 'none');
} else {
subject.css('display', 'table-row');
body.css('display', 'table-row');
}
});
// Show/hide "times billed" box when option changes.
$( '#rcp-maximum-renewals-setting' ).on( 'change', function() {
var after_payment_field = $(this).parents('tr').next();
var show = 'forever' !== $(this).val();
$('#rcp-maximum-renewals').toggle( show );
after_payment_field.toggle( show );
});
// Changes the currency symbol in the Currency Position dropdown to match the Currency setting.
var currencySelect = $('#rcp_settings\\[currency\\]');
if (currencySelect.length) {
var currencies = JSON.parse(rcp_vars.currencies);
var currentSymbol = currencies[currencySelect.val()].match(/\(([^)]+)\)/);
if ( null == currentSymbol ) {
currentSymbol = currencySelect.val();
} else {
currentSymbol = currentSymbol[1];
}
var currencyPositionBefore = $('#rcp_settings\\[currency_position\\] option[value="before"]');
var currencyPositionAfter = $('#rcp_settings\\[currency_position\\] option[value="after"]');
currencyPositionBefore.text(function () {
// If using kr, add a space after the symbol.
if ( 'NOK' === currencySelect.val() ) {
currentSymbol = currentSymbol + ' ';
}
return $(this).text().replace("$", currentSymbol);
});
currencyPositionAfter.text(function () {
// If using kr, add a space before the symbol.
if ( 'NOK' === currencySelect.val() ) {
currentSymbol = ' ' + currentSymbol;
}
return $(this).text().replace("$", currentSymbol);
});
$(currencySelect).on('change', function () {
var currencyCode = $(this).val();
var newCurrency = currencies[$(this).val()].match(/\(([^)]+)\)/);
if ( null == newCurrency ) {
newCurrency = currencyCode;
} else {
newCurrency = newCurrency[1];
}
currencyPositionBefore.text(function () {
// If using kr, add a space after the symbol.
if ( 'NOK' === currencyCode ) {
newCurrency = newCurrency + ' ';
}
return $(this).text().replace(currentSymbol, newCurrency);
});
currencyPositionAfter.text(function () {
// If using kr, add a space before the symbol.
if ( 'NOK' === currencyCode ) {
newCurrency = ' ' + newCurrency;
}
return $(this).text().replace(currentSymbol, newCurrency);
});
currentSymbol = newCurrency;
});
}
// Customer: show/hide fields based on new or existing user.
$('input[name="rcp_customer_user_account"]:radio').on( 'change', function() {
if ( 'new' === this.value ) {
$('.rcp-customer-new-user-field').show();
} else {
$('.rcp-customer-new-user-field').hide();
}
});
/**
* Membership management screen JS
*/
var RCP_Membership = {
vars: {
member_card_wrap_editable: $('.rcp-membership-card-wrapper .rcp-editable'),
member_card_wrap_edit_item: $('.rcp-membership-card-wrapper .rcp-edit-item')
},
init: function () {
this.recurring_select();
this.edit_membership_level();
this.confirm_level_change();
this.edit_recurring_price();
this.edit_created_date();
this.edit_expiration();
this.never_expires();
this.edit_gateway_customer_id();
this.edit_gateway_subscription_id();
this.set_billing_cycle();
// Trigger change to set cycle on initial page load.
$('#rcp-add-membership-info #rcp-membership-level').trigger( 'change' );
},
/**
* Edit Subscription Text Input
*
* @param link object The edit/cancelled element the user clicked.
* @param input object The editable field.
*
* @since 3.0
*/
edit_membership_input: function ( link, input ) {
// User clicks edit
if ( link.text() === rcp_vars.action_edit ) {
// Preserve current value
link.data( 'current-value', input.val() );
// Update text to 'cancel'
link.text( rcp_vars.action_cancel );
} else {
// User clicked cancel, return previous value
input.val( link.data('current-value') );
// Update link text back to 'edit'
link.text( rcp_vars.action_edit );
}
},
edit_membership_level: function () {
$( '#rcp-edit-membership-level' ).on( 'click', function ( e ) {
e.preventDefault();
let link = $( this );
let created_input = $( '#rcp-membership-level' );
RCP_Membership.edit_membership_input( link, created_input );
$('.rcp-current-membership-level').toggle();
$( '#rcp-membership-level' ).toggle();
$( '#rcp-change-membership-level-button' ).toggle();
} );
},
confirm_level_change: function () {
$( '#rcp-change-membership-level-button' ).on( 'click', function ( e ) {
if(confirm(rcp_vars.change_membership_level)) {
return true;
}
return false;
} );
},
/**
* Editing the "recurring" flag for a membership.
*
* @since 3.0
*/
recurring_select: function () {
$( document.body ).on( 'change', '#rcp-recurring', function ( e ) {
if ( $( this ).prop( 'checked' ) ) {
$( '#rcp-membership-recurring-enable-auto-renew' ).show();
$( '#rcp-membership-recurring-disable-auto-renew' ).hide();
} else {
$( '#rcp-membership-recurring-enable-auto-renew' ).hide();
$( '#rcp-membership-recurring-disable-auto-renew' ).show();
}
$( '#rcp-membership-recurring-update-notice' ).slideToggle();
} );
},
/**
* Editing the recurring price for a membership.
*
* @since 3.2
*/
edit_recurring_price: function () {
let recurring_field = $( '#rcp-recurring-amount' );
if ( ! recurring_field.length ) {
return;
}
recurring_field.on( 'keyup', function ( e ) {
$( '#rcp-membership-recurring-price-update-notice' ).slideDown();
} );
},
/**
* Editing the expiration date for a membership.
*
* @since 3.0
*/
edit_created_date: function () {
$( '#rcp-edit-membership-created' ).on( 'click', function ( e ) {
e.preventDefault();
let link = $( this );
let created_input = $( '#rcp-membership-created' );
RCP_Membership.edit_membership_input( link, created_input );
$( '.rcp-membership-created' ).toggle();
} );
},
/**
* Editing the expiration date for a membership.
*
* @since 3.0
*/
edit_expiration: function () {
$( '#rcp-edit-membership-expiration' ).on( 'click', function ( e ) {
e.preventDefault();
let link = $( this );
let expiration_input = $( '#rcp-membership-expiration' );
RCP_Membership.edit_membership_input( link, expiration_input );
$( '.rcp-membership-expiration' ).toggle();
$( '#rcp-membership-expiration-update-notice' ).slideToggle();
$( '.rcp-membership-expiration-none-wrap' ).toggle();
} );
},
/**
* When "never expires" is checked, wipe the expiration date.
*/
never_expires: function () {
$( '#rcp-membership-expiration-none' ).on( 'change', function () {
if ( $( this ).is( ':checked' ) ) {
$( '#rcp-membership-expiration' ).val( '' );
}
} );
},
/**
* Editing the gateway customer ID for a membership.
*
* @since 3.0
*/
edit_gateway_customer_id: function () {
$( '#rcp-edit-membership-gateway-customer-id' ).on( 'click', function ( e ) {
e.preventDefault();
let link = $( this );
let gateway_input = $( '#rcp-membership-gateway-customer-id' );
RCP_Membership.edit_membership_input( link, gateway_input );
$( '#rcp-membership-gateway-customer-id' ).toggle();
} );
},
/**
* Editing the gateway subscription ID for a membership.
*
* @since 3.0
*/
edit_gateway_subscription_id: function () {
$( '#rcp-edit-membership-gateway-subscription-id' ).on( 'click', function ( e ) {
e.preventDefault();
let link = $( this );
let gateway_input = $( '#rcp-membership-gateway-subscription-id' );
RCP_Membership.edit_membership_input( link, gateway_input );
$( '#rcp-membership-gateway-subscription-id' ).toggle();
$( '#rcp-membership-gateway-subscription-id-update-notice' ).slideToggle();
} );
},
/**
* Set the billing cycle fields when changing the membership level.
*
* @since 3.0
*/
set_billing_cycle: function () {
$('#rcp-add-membership-info').on('change', '#rcp-membership-level', function () {
let object_id = $(this).val();
let initial_amount = $('#rcp-initial-amount');
let recurring_amount = $('#rcp-recurring-amount');
let recurring_wrap = $('#rcp-billing-cycle-recurring');
let data = {
action: 'rcp_get_membership_billing_cycle',
object_id: object_id,
rcp_nonce: rcp_vars.rcp_member_nonce
};
$.post(ajaxurl, data, function(response) {
if ( 'free' === response.data ) {
initial_amount.val('0.00');
recurring_amount.val('0.00');
} else {
initial_amount.val(response.data.initial_amount);
recurring_amount.val(response.data.recurring_amount);
}
if ( 'free' === response.data || 0 == response.data.recurring_amount ) {
recurring_wrap.hide();
} else {
recurring_wrap.show();
}
});
});
},
};
RCP_Membership.init();
let RCP_Settings = {
init: function() {
this.listeners();
},
listeners: function() {
let sandboxCheckbox = document.getElementById( 'rcp_settings[sandbox]' );
if( ! sandboxCheckbox ) {
return;
}
sandboxCheckbox.addEventListener( 'change', function() {
let testpub = document.getElementById( 'rcp_settings[stripe_test_publishable]' );
let livepub = document.getElementById( 'rcp_settings[stripe_live_publishable]' );
let notice = document.getElementById( 'rcp-sandbox-toggle-notice' );
if( this.checked && testpub.value === '' ) {
RCP_Settings.showErrorNotice( notice );
}
if( ! this.checked && livepub.value === '' ) {
RCP_Settings.showErrorNotice( notice );
}
} );
},
showErrorNotice: function( element = false ) {
if( ! element ) {
return;
}
element.className = 'notice error';
element.style.visibility = 'visible';
}
};
if( window.adminpage === 'restrict_page_rcp-settings' ) {
RCP_Settings.init();
}
// When the general tab is clicked on the settings page, change the forms action to maintain tab after form submission
$("#general-tab").on( 'click', function() {
$(".rcp_options_form").attr("action", "options.php#general");
});
// If the tab is active on load then update the action for the form
if ( $( "#general-tab" ).hasClass( "nav-tab-active" ) ) {
$( ".rcp_options_form" ).attr( "action", "options.php#general" );
}
// When the payments tab is clicked on the settings page, change the forms action to maintain tab after submission
$( "#payments-tab" ).on( 'click', function() {
$( ".rcp_options_form").attr( "action", "options.php#payments" );
});
// If the tab is active on load then update the action for the form
if ( $( "#payments-tab" ).hasClass( "nav-tab-active" ) ) {
$( ".rcp_options_form" ).attr( "action", "options.php#payments" );
}
// When the emails tab is clicked on the settings page, change the forms action to maintain tab after submission
$( "#emails-tab" ).on( 'click', function() {
$( ".rcp_options_form" ).attr( "action", "options.php#emails" );
});
// If the tab is active on load then update the action for the form
if ( $( "#emails-tab" ).hasClass( "nav-tab-active" ) ) {
$( ".rcp_options_form" ).attr( "action", "options.php#emails" );
}
// When the invoices tab is clicked on the settings page, change the forms action to maintain tab after submission
$( "#invoices-tab" ).on( 'click', function() {
$( ".rcp_options_form").attr("action", "options.php#invoices" );
});
// If the tab is active on load then update the action for the form
if ( $( "#invoices-tab" ).hasClass( "nav-tab-active" ) ) {
$( ".rcp_options_form" ).attr( "action", "options.php#invoices" );
}
// When the misc tab is clicked on the settings page, change the forms action to maintain tab after submission
$( "#misc-tab" ).on( 'click', function() {
$( ".rcp_options_form" ).attr( "action", "options.php#misc" );
});
// If the tab is active on load then update the action for the form
if ( $( "#misc-tab" ).hasClass( "nav-tab-active" ) ) {
$(".rcp_options_form").attr("action", "options.php#misc");
}
// Remove 2Checkout option if it is not checked.
if ( $( "#rcp_settings[gateways][twocheckout]" ).attr('checked', false) ) {
// Remove the input
$( ".twocheckout_settings" ).hide();
$( ".twocheckout_secret_word" ).hide();
$( ".twocheckout_private_key" ).hide();
$( ".twocheckout_test_publishable_key" ).hide();
$( ".twocheckout_test_seller_id" ).hide();
$( ".twocheckout_live_private_key" ).hide();
$( ".twocheckout_live_publishable_key" ).hide();
$( ".twocheckout_live_seller_id" ).hide();
}
$( "#rcp-code" ).on( 'focusout', function() {
$(this).val($(this).val().replace(/[^a-z0-9]/gi, ''));
});
/*
* Validate the Stripe Statement Descriptor
*
* https://stripe.com/docs/statement-descriptors
*
* @since 3.15.14
*/
$( "#rcp_settings\\[statement_descriptor\\]" ).on( 'keypress', function(event) {
let st_descriptor_value = $(this).val();
let keyCode = (event.keyCode ? event.keyCode : event.which); // Normalize the key code.
if( (keyCode >= 65 && keyCode <= 90) // A-Z
||
(keyCode >= 97 && keyCode <= 122) // a-z
||
(keyCode >= 48 && keyCode <= 57) // 0-9
)
{
if ( st_descriptor_value.length > 22) {
st_descriptor_value = st_descriptor_value.substring(0, 22);
}
$(this).val(st_descriptor_value);
return true;
}
else {
return false;
}
});
$( '#restrict_content_legacy_switch' ).on( 'click', function() {
$.ajax({
data: {
action: 'rc_process_legacy_switch',
rc_process_legacy_nonce: $( '#rcp_settings_nonce').val(),
},
type: "post",
url: ajaxurl,
success: function( response ) {
if ( response.success ) {
window.location.assign( rcp_vars.downgrade_redirect );
}
},
error: function( response ) {
console.error( response );
}
});
});
$(".toggle-credentials").on('click', function() {
let inputName = $( this ).attr( 'toggle' ).toString();
let inputObject = $( document.getElementById( inputName ) );
if ( $( inputObject ).attr( "type" ) === "password" ) {
$( inputObject ).attr( "type", "text" );
$( this ).removeClass( "dashicons dashicons-visibility" );
$( this ).addClass( "dashicons dashicons-hidden" );
} else {
$( inputObject ).attr( "type", "password" );
$( this ).removeClass( "dashicons dashicons-hidden" );
$( this ).addClass( "dashicons dashicons-visibility" );
}
});
$("#rcp_setting_braintree_toggle_live").on('click', function() {
var toggle = document.getElementById('rcp_setting_braintree_toggle_live');
var textArea = document.getElementById('rcp_settings[braintree_live_encryptionKey]');
var input = document.getElementById('rcp_settings[braintree_live_encryptionKey_input]');
if ( textArea.style.display === "none" ) {
input.style.display = 'none';
textArea.style.display = 'inline-block';
toggle.className = "";
toggle.className = "dashicons dashicons-hidden";
} else {
input.style.display = 'inline-block';
textArea.style.display = 'none';
toggle.className = "";
toggle.className = "dashicons dashicons-visibility";
}
});
$("#rcp_setting_braintree_toggle_sandbox").on('click', function() {
var toggle = document.getElementById('rcp_setting_braintree_toggle');
var textArea = document.getElementById('rcp_settings[braintree_sandbox_encryptionKey]');
var input = document.getElementById('rcp_settings[braintree_sandbox_encryptionKey_input]');
if ( textArea.style.display === "none" ) {
input.style.display = 'none';
textArea.style.display = 'inline-block';
toggle.className = "";
toggle.className = "dashicons dashicons-hidden";
} else {
input.style.display = 'inline-block';
textArea.style.display = 'none';
toggle.className = "";
toggle.className = "dashicons dashicons-visibility";
}
});
$('body').addClass('restrict-content');
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,21 @@
// add class to body if using Hello Elementor theme for css fixes
const helloElementor = document.querySelector("#hello-elementor-css");
const body = document.querySelector("body");
if (helloElementor) {
body.classList.add("hello-elementor");
};
// add class to body if using 2021 theme
const twentyTwentyOne = document.querySelector("#twenty-twenty-one-style-css");
if (twentyTwentyOne) {
body.classList.add("twentytwentyone-theme");
};
// add class to body if using 2022 theme
const twentyTwentyTwo = document.querySelector("#twenty-twenty-two-style-css");
if (twentyTwentyTwo) {
body.classList.add("twentytwentytwo-theme");
};

View File

@@ -0,0 +1 @@
<?php // Silence is golden.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,82 @@
/*
jQuery Timepicker Addon - v1.6.3 - 2016-04-20
http://trentrichardson.com/examples/timepicker
Copyright (c) 2016 Trent Richardson; Licensed MIT */
(function(e){"function"===typeof define&&define.amd?define(["jquery","jquery-ui"],e):e(jQuery)})(function(e){e.ui.timepicker=e.ui.timepicker||{};if(!e.ui.timepicker.version){e.extend(e.ui,{timepicker:{version:"1.6.3"}});var x=function(){this.regional=[];this.regional[""]={currentText:"Now",closeText:"Done",amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"HH:mm",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",
microsecText:"Microsecond",timezoneText:"Time Zone",isRTL:!1};this._defaults={showButtonPanel:!0,timeOnly:!1,timeOnlyShowDate:!1,showHour:null,showMinute:null,showSecond:null,showMillisec:null,showMicrosec:null,showTimezone:null,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,stepMillisec:1,stepMicrosec:1,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,microsecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,microsecMax:999,minDateTime:null,
maxDateTime:null,maxTime:null,minTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,microsecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altTimeFormat:null,altSeparator:null,altTimeSuffix:null,altRedirectFocus:!0,pickerTimeFormat:null,pickerTimeSuffix:null,showTimepicker:!0,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",oneLine:!1,defaultValue:null,parse:"strict",afterInject:null};e.extend(this._defaults,this.regional[""])};e.extend(x.prototype,
{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,microsec_slider:null,timezone_select:null,maxTime:null,minTime:null,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,microsecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,microsecMaxOriginal:null,ampm:"",formattedDate:"",
formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec","microsec"],support:{},control:null,setDefaults:function(c){w(this._defaults,c||{});return this},_newInst:function(c,b){var a=new x,d={},f={};for(h in this._defaults)if(this._defaults.hasOwnProperty(h)){var g=c.attr("time:"+h);if(g)try{d[h]=eval(g)}catch(l){d[h]=g}}var h={beforeShow:function(l,m){if("function"===typeof a._defaults.evnts.beforeShow)return a._defaults.evnts.beforeShow.call(c[0],l,m,a)},
onChangeMonthYear:function(l,m,n){"function"===typeof a._defaults.evnts.onChangeMonthYear&&a._defaults.evnts.onChangeMonthYear.call(c[0],l,m,n,a)},onClose:function(l,m){!0===a.timeDefined&&""!==c.val()&&a._updateDateTime(m);"function"===typeof a._defaults.evnts.onClose&&a._defaults.evnts.onClose.call(c[0],l,m,a)}};for(k in h)h.hasOwnProperty(k)&&(f[k]=b[k]||this._defaults[k]||null);a._defaults=e.extend({},this._defaults,d,b,h,{evnts:f,timepicker:a});a.amNames=e.map(a._defaults.amNames,function(l){return l.toUpperCase()});
a.pmNames=e.map(a._defaults.pmNames,function(l){return l.toUpperCase()});a.support=C(a._defaults.timeFormat+(a._defaults.pickerTimeFormat?a._defaults.pickerTimeFormat:"")+(a._defaults.altTimeFormat?a._defaults.altTimeFormat:""));"string"===typeof a._defaults.controlType?("slider"===a._defaults.controlType&&"undefined"===typeof e.ui.slider&&(a._defaults.controlType="select"),a.control=a._controls[a._defaults.controlType]):a.control=a._defaults.controlType;d=[-720,-660,-600,-570,-540,-480,-420,-360,
-300,-270,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,525,540,570,600,630,660,690,720,765,780,840];null!==a._defaults.timezoneList&&(d=a._defaults.timezoneList);f=d.length;var k=0;h=null;if(0<f&&"object"!==typeof d[0])for(;k<f;k++)h=d[k],d[k]={value:h,label:e.timepicker.timezoneOffsetString(h,a.support.iso8601)};a._defaults.timezoneList=d;a.timezone=null!==a._defaults.timezone?e.timepicker.timezoneOffsetNumber(a._defaults.timezone):-1*(new Date).getTimezoneOffset();
a.hour=a._defaults.hour<a._defaults.hourMin?a._defaults.hourMin:a._defaults.hour>a._defaults.hourMax?a._defaults.hourMax:a._defaults.hour;a.minute=a._defaults.minute<a._defaults.minuteMin?a._defaults.minuteMin:a._defaults.minute>a._defaults.minuteMax?a._defaults.minuteMax:a._defaults.minute;a.second=a._defaults.second<a._defaults.secondMin?a._defaults.secondMin:a._defaults.second>a._defaults.secondMax?a._defaults.secondMax:a._defaults.second;a.millisec=a._defaults.millisec<a._defaults.millisecMin?
a._defaults.millisecMin:a._defaults.millisec>a._defaults.millisecMax?a._defaults.millisecMax:a._defaults.millisec;a.microsec=a._defaults.microsec<a._defaults.microsecMin?a._defaults.microsecMin:a._defaults.microsec>a._defaults.microsecMax?a._defaults.microsecMax:a._defaults.microsec;a.ampm="";a.$input=c;a._defaults.altField&&(a.$altInput=e(a._defaults.altField),!0===a._defaults.altRedirectFocus&&a.$altInput.css({cursor:"pointer"}).focus(function(){c.trigger("focus")}));if(0===a._defaults.minDate||
0===a._defaults.minDateTime)a._defaults.minDate=new Date;if(0===a._defaults.maxDate||0===a._defaults.maxDateTime)a._defaults.maxDate=new Date;void 0!==a._defaults.minDate&&a._defaults.minDate instanceof Date&&(a._defaults.minDateTime=new Date(a._defaults.minDate.getTime()));void 0!==a._defaults.minDateTime&&a._defaults.minDateTime instanceof Date&&(a._defaults.minDate=new Date(a._defaults.minDateTime.getTime()));void 0!==a._defaults.maxDate&&a._defaults.maxDate instanceof Date&&(a._defaults.maxDateTime=
new Date(a._defaults.maxDate.getTime()));void 0!==a._defaults.maxDateTime&&a._defaults.maxDateTime instanceof Date&&(a._defaults.maxDate=new Date(a._defaults.maxDateTime.getTime()));a.$input.on("focus",function(){a._onFocus()});return a},_addTimePicker:function(c){var b=e.trim(this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val());this.timeDefined=this._parseTime(b);this._limitMinMaxDateTime(c,!1);this._injectTimePicker();this._afterInject()},
_parseTime:function(c,b){this.inst||(this.inst=e.datepicker._getInst(this.$input[0]));if(b||!this._defaults.timeOnly){var a=e.datepicker._get(this.inst,"dateFormat");try{var d=y(a,this._defaults.timeFormat,c,e.datepicker._getFormatConfig(this.inst),this._defaults);if(!d.timeObj)return!1;e.extend(this,d.timeObj)}catch(f){return e.timepicker.log("Error parsing the date/time string: "+f+"\ndate/time string = "+c+"\ntimeFormat = "+this._defaults.timeFormat+"\ndateFormat = "+a),!1}}else{a=e.datepicker.parseTime(this._defaults.timeFormat,
c,this._defaults);if(!a)return!1;e.extend(this,a)}return!0},_afterInject:function(){var c=this.inst.settings;"function"===typeof c.afterInject&&c.afterInject.call(this)},_injectTimePicker:function(){var c=this.inst.dpDiv,b=this.inst.settings,a=this,d="",f="",g=null,h={},k={},l=null,m=0,n=0;if(0===c.find("div.ui-timepicker-div").length&&b.showTimepicker){l='<div class="ui-timepicker-div'+(b.isRTL?" ui-timepicker-rtl":"")+(b.oneLine&&"select"===b.controlType?" ui-timepicker-oneLine":"")+'"><dl><dt class="ui_tpicker_time_label'+
(b.showTime?"":" ui_tpicker_unit_hide")+'">'+b.timeText+'</dt><dd class="ui_tpicker_time '+(b.showTime?"":" ui_tpicker_unit_hide")+'"><input class="ui_tpicker_time_input" '+(b.timeInput?"":"disabled")+"/></dd>";m=0;for(n=this.units.length;m<n;m++){d=this.units[m];f=d.substr(0,1).toUpperCase()+d.substr(1);g=null!==b["show"+f]?b["show"+f]:this.support[d];h[d]=parseInt(b[d+"Max"]-(b[d+"Max"]-b[d+"Min"])%b["step"+f],10);k[d]=0;l+='<dt class="ui_tpicker_'+d+"_label"+(g?"":" ui_tpicker_unit_hide")+'">'+
b[d+"Text"]+'</dt><dd class="ui_tpicker_'+d+(g?"":" ui_tpicker_unit_hide")+'"><div class="ui_tpicker_'+d+"_slider"+(g?"":" ui_tpicker_unit_hide")+'"></div>';if(g&&0<b[d+"Grid"]){l+='<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';if("hour"===d)for(f=b[d+"Min"];f<=h[d];f+=parseInt(b[d+"Grid"],10))k[d]++,g=e.datepicker.formatTime(this.support.ampm?"hht":"HH",{hour:f},b),l+='<td data-for="'+d+'">'+g+"</td>";else for(f=b[d+"Min"];f<=h[d];f+=parseInt(b[d+"Grid"],10))k[d]++,l+=
'<td data-for="'+d+'">'+(10>f?"0":"")+f+"</td>";l+="</tr></table></div>"}l+="</dd>"}m=null!==b.showTimezone?b.showTimezone:this.support.timezone;l+='<dt class="ui_tpicker_timezone_label'+(m?"":" ui_tpicker_unit_hide")+'">'+b.timezoneText+"</dt>";var p=e(l+('<dd class="ui_tpicker_timezone'+(m?"":" ui_tpicker_unit_hide")+'"></dd></dl></div>'));!0===b.timeOnly&&(p.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all"><div class="ui-datepicker-title">'+b.timeOnlyTitle+"</div></div>"),
c.find(".ui-datepicker-header, .ui-datepicker-calendar").hide());m=0;for(n=a.units.length;m<n;m++)d=a.units[m],f=d.substr(0,1).toUpperCase()+d.substr(1),g=null!==b["show"+f]?b["show"+f]:this.support[d],a[d+"_slider"]=a.control.create(a,p.find(".ui_tpicker_"+d+"_slider"),d,a[d],b[d+"Min"],h[d],b["step"+f]),g&&0<b[d+"Grid"]&&(l=100*k[d]*b[d+"Grid"]/(h[d]-b[d+"Min"]),p.find(".ui_tpicker_"+d+" table").css({width:l+"%",marginLeft:b.isRTL?"0":l/(-2*k[d])+"%",marginRight:b.isRTL?l/(-2*k[d])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(q){var u=
e(this),v=u.html();q=parseInt(v.replace(/[^0-9]/g),10);v=v.replace(/[^apm]/ig);u=u.data("for");"hour"===u&&(-1!==v.indexOf("p")&&12>q?q+=12:-1!==v.indexOf("a")&&12===q&&(q=0));a.control.value(a,a[u+"_slider"],d,q);a._onTimeChange();a._onSelectHandler()}).css({cursor:"pointer",width:100/k[d]+"%",textAlign:"center",overflow:"hidden"}));this.timezone_select=p.find(".ui_tpicker_timezone").append("<select></select>").find("select");e.fn.append.apply(this.timezone_select,e.map(b.timezoneList,function(q,
u){return e("<option />").val("object"===typeof q?q.value:q).text("object"===typeof q?q.label:q)}));"undefined"!==typeof this.timezone&&null!==this.timezone&&""!==this.timezone?-1*(new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12)).getTimezoneOffset()===this.timezone?z(a):this.timezone_select.val(this.timezone):"undefined"!==typeof this.hour&&null!==this.hour&&""!==this.hour?this.timezone_select.val(b.timezone):z(a);this.timezone_select.change(function(){a._onTimeChange();
a._onSelectHandler();a._afterInject()});b=c.find(".ui-datepicker-buttonpane");b.length?b.before(p):c.append(p);this.$timeObj=p.find(".ui_tpicker_time_input");this.$timeObj.change(function(){var q=e.datepicker.parseTime(a.inst.settings.timeFormat,this.value),u=new Date;q?(u.setHours(q.hour),u.setMinutes(q.minute),u.setSeconds(q.second),e.datepicker._setTime(a.inst,u)):(this.value=a.formattedTime,this.blur())});null!==this.inst&&(c=this.timeDefined,this._onTimeChange(),this.timeDefined=c);if(this._defaults.addSliderAccess){var r=
this._defaults.sliderAccessArgs,t=this._defaults.isRTL;r.isRTL=t;setTimeout(function(){if(0===p.find(".ui-slider-access").length){p.find(".ui-slider:visible").sliderAccess(r);var q=p.find(".ui-slider-access:eq(0)").outerWidth(!0);q&&p.find("table:visible").each(function(){var u=e(this),v=u.outerWidth(),H=u.css(t?"marginRight":"marginLeft").toString().replace("%",""),D=v-q,E={width:D,marginRight:0,marginLeft:0};E[t?"marginRight":"marginLeft"]=H*D/v+"%";u.css(E)})}},10)}a._limitMinMaxDateTime(this.inst,
!0)}},_limitMinMaxDateTime:function(c,b){var a=this._defaults,d=new Date(c.selectedYear,c.selectedMonth,c.selectedDay);if(this._defaults.showTimepicker){if(null!==e.datepicker._get(c,"minDateTime")&&void 0!==e.datepicker._get(c,"minDateTime")&&d){var f=e.datepicker._get(c,"minDateTime"),g=new Date(f.getFullYear(),f.getMonth(),f.getDate(),0,0,0,0);if(null===this.hourMinOriginal||null===this.minuteMinOriginal||null===this.secondMinOriginal||null===this.millisecMinOriginal||null===this.microsecMinOriginal)this.hourMinOriginal=
a.hourMin,this.minuteMinOriginal=a.minuteMin,this.secondMinOriginal=a.secondMin,this.millisecMinOriginal=a.millisecMin,this.microsecMinOriginal=a.microsecMin;c.settings.timeOnly||g.getTime()===d.getTime()?(this._defaults.hourMin=f.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=f.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=this._defaults.minuteMin,this._defaults.secondMin=f.getSeconds(),this.second<=this._defaults.secondMin?
(this.second=this._defaults.secondMin,this._defaults.millisecMin=f.getMilliseconds(),this.millisec<=this._defaults.millisecMin?(this.millisec=this._defaults.millisecMin,this._defaults.microsecMin=f.getMicroseconds()):(this.microsec<this._defaults.microsecMin&&(this.microsec=this._defaults.microsecMin),this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.secondMin=this.secondMinOriginal,
this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.hourMin=this.hourMinOriginal,this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,
this._defaults.microsecMin=this.microsecMinOriginal)}if(null!==e.datepicker._get(c,"maxDateTime")&&void 0!==e.datepicker._get(c,"maxDateTime")&&d){f=e.datepicker._get(c,"maxDateTime");g=new Date(f.getFullYear(),f.getMonth(),f.getDate(),0,0,0,0);if(null===this.hourMaxOriginal||null===this.minuteMaxOriginal||null===this.secondMaxOriginal||null===this.millisecMaxOriginal)this.hourMaxOriginal=a.hourMax,this.minuteMaxOriginal=a.minuteMax,this.secondMaxOriginal=a.secondMax,this.millisecMaxOriginal=a.millisecMax,
this.microsecMaxOriginal=a.microsecMax;c.settings.timeOnly||g.getTime()===d.getTime()?(this._defaults.hourMax=f.getHours(),this.hour>=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=f.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=f.getSeconds(),this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=f.getMilliseconds(),this.millisec>=this._defaults.millisecMax?
(this.millisec=this._defaults.millisecMax,this._defaults.microsecMax=f.getMicroseconds()):(this.microsec>this._defaults.microsecMax&&(this.microsec=this._defaults.microsecMax),this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.minuteMax=
this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)}null!==c.settings.minTime&&(a=new Date("01/01/1970 "+c.settings.minTime),this.hour<
a.getHours()?(this.hour=this._defaults.hourMin=a.getHours(),this.minute=this._defaults.minuteMin=a.getMinutes()):this.hour===a.getHours()&&this.minute<a.getMinutes()?this.minute=this._defaults.minuteMin=a.getMinutes():this._defaults.hourMin<a.getHours()?(this._defaults.hourMin=a.getHours(),this._defaults.minuteMin=a.getMinutes()):this._defaults.hourMin===a.getHours()===this.hour&&this._defaults.minuteMin<a.getMinutes()?this._defaults.minuteMin=a.getMinutes():this._defaults.minuteMin=0);null!==c.settings.maxTime&&
(a=new Date("01/01/1970 "+c.settings.maxTime),this.hour>a.getHours()?(this.hour=this._defaults.hourMax=a.getHours(),this.minute=this._defaults.minuteMax=a.getMinutes()):this.hour===a.getHours()&&this.minute>a.getMinutes()?this.minute=this._defaults.minuteMax=a.getMinutes():this._defaults.hourMax>a.getHours()?(this._defaults.hourMax=a.getHours(),this._defaults.minuteMax=a.getMinutes()):this._defaults.hourMax===a.getHours()===this.hour&&this._defaults.minuteMax>a.getMinutes()?this._defaults.minuteMax=
a.getMinutes():this._defaults.minuteMax=59);if(void 0!==b&&!0===b){a=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10);d=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10);f=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10);g=parseInt(this._defaults.millisecMax-(this._defaults.millisecMax-this._defaults.millisecMin)%
this._defaults.stepMillisec,10);var h=parseInt(this._defaults.microsecMax-(this._defaults.microsecMax-this._defaults.microsecMin)%this._defaults.stepMicrosec,10);this.hour_slider&&(this.control.options(this,this.hour_slider,"hour",{min:this._defaults.hourMin,max:a,step:this._defaults.stepHour}),this.control.value(this,this.hour_slider,"hour",this.hour-this.hour%this._defaults.stepHour));this.minute_slider&&(this.control.options(this,this.minute_slider,"minute",{min:this._defaults.minuteMin,max:d,
step:this._defaults.stepMinute}),this.control.value(this,this.minute_slider,"minute",this.minute-this.minute%this._defaults.stepMinute));this.second_slider&&(this.control.options(this,this.second_slider,"second",{min:this._defaults.secondMin,max:f,step:this._defaults.stepSecond}),this.control.value(this,this.second_slider,"second",this.second-this.second%this._defaults.stepSecond));this.millisec_slider&&(this.control.options(this,this.millisec_slider,"millisec",{min:this._defaults.millisecMin,max:g,
step:this._defaults.stepMillisec}),this.control.value(this,this.millisec_slider,"millisec",this.millisec-this.millisec%this._defaults.stepMillisec));this.microsec_slider&&(this.control.options(this,this.microsec_slider,"microsec",{min:this._defaults.microsecMin,max:h,step:this._defaults.stepMicrosec}),this.control.value(this,this.microsec_slider,"microsec",this.microsec-this.microsec%this._defaults.stepMicrosec))}}},_onTimeChange:function(){if(this._defaults.showTimepicker){var c=this.hour_slider?
this.control.value(this,this.hour_slider,"hour"):!1,b=this.minute_slider?this.control.value(this,this.minute_slider,"minute"):!1,a=this.second_slider?this.control.value(this,this.second_slider,"second"):!1,d=this.millisec_slider?this.control.value(this,this.millisec_slider,"millisec"):!1,f=this.microsec_slider?this.control.value(this,this.microsec_slider,"microsec"):!1,g=this.timezone_select?this.timezone_select.val():!1,h=this._defaults,k=h.pickerTimeFormat||h.timeFormat,l=h.pickerTimeSuffix||h.timeSuffix;
"object"===typeof c&&(c=!1);"object"===typeof b&&(b=!1);"object"===typeof a&&(a=!1);"object"===typeof d&&(d=!1);"object"===typeof f&&(f=!1);"object"===typeof g&&(g=!1);!1!==c&&(c=parseInt(c,10));!1!==b&&(b=parseInt(b,10));!1!==a&&(a=parseInt(a,10));!1!==d&&(d=parseInt(d,10));!1!==f&&(f=parseInt(f,10));!1!==g&&(g=g.toString());var m=h[12>c?"amNames":"pmNames"][0],n=c!==parseInt(this.hour,10)||b!==parseInt(this.minute,10)||a!==parseInt(this.second,10)||d!==parseInt(this.millisec,10)||f!==parseInt(this.microsec,
10)||0<this.ampm.length&&12>c!==(-1!==e.inArray(this.ampm.toUpperCase(),this.amNames))||null!==this.timezone&&g!==this.timezone.toString();n&&(!1!==c&&(this.hour=c),!1!==b&&(this.minute=b),!1!==a&&(this.second=a),!1!==d&&(this.millisec=d),!1!==f&&(this.microsec=f),!1!==g&&(this.timezone=g),this.inst||(this.inst=e.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0));this.support.ampm&&(this.ampm=m);this.formattedTime=e.datepicker.formatTime(h.timeFormat,this,h);this.$timeObj&&
(k===h.timeFormat?this.$timeObj.val(this.formattedTime+l):this.$timeObj.val(e.datepicker.formatTime(k,this,h)+l),this.$timeObj[0].setSelectionRange&&this.$timeObj[0].setSelectionRange(this.$timeObj[0].selectionStart,this.$timeObj[0].selectionEnd));this.timeDefined=!0;n&&this._updateDateTime()}},_onSelectHandler:function(){var c=this._defaults.onSelect||this.inst.settings.onSelect,b=this.$input?this.$input[0]:null;c&&b&&c.apply(b,[this.formattedDateTime,this])},_updateDateTime:function(c){c=this.inst||
c;var b=e.datepicker._daylightSavingAdjust(0<c.currentYear?new Date(c.currentYear,c.currentMonth,c.currentDay):new Date(c.selectedYear,c.selectedMonth,c.selectedDay)),a=e.datepicker._get(c,"dateFormat"),d=e.datepicker._getFormatConfig(c),f=null!==b&&this.timeDefined;a=this.formattedDate=e.datepicker.formatDate(a,null===b?new Date:b,d);""===c.lastVal&&(c.currentYear=c.selectedYear,c.currentMonth=c.selectedMonth,c.currentDay=c.selectedDay);if(!0===this._defaults.timeOnly&&!1===this._defaults.timeOnlyShowDate)a=
this.formattedTime;else if(!0!==this._defaults.timeOnly&&(this._defaults.alwaysSetTime||f)||!0===this._defaults.timeOnly&&!0===this._defaults.timeOnlyShowDate)a+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix;this.formattedDateTime=a;this._defaults.showTimepicker?this.$altInput&&!1===this._defaults.timeOnly&&!0===this._defaults.altFieldTimeOnly?(this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate)):this.$altInput?(this.$input.val(a),c="",f=null!==this._defaults.altSeparator?
this._defaults.altSeparator:this._defaults.separator,a=null!==this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix,this._defaults.timeOnly||(c=this._defaults.altFormat?e.datepicker.formatDate(this._defaults.altFormat,null===b?new Date:b,d):this.formattedDate)&&(c+=f),c=null!==this._defaults.altTimeFormat?c+(e.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+a):c+(this.formattedTime+a),this.$altInput.val(c)):this.$input.val(a):this.$input.val(this.formattedDate);
this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var c=e.datepicker._getInst(this.$input.get(0)),b=e.datepicker._get(c,"timepicker");if(b&&b._defaults.timeOnly&&c.input.val()!==c.lastVal)try{e.datepicker._updateDatepicker(c)}catch(a){e.timepicker.log(a)}}},_controls:{slider:{create:function(c,b,a,d,f,g,h){var k=c._defaults.isRTL;return b.prop("slide",null).slider({orientation:"horizontal",value:k?-1*
d:d,min:k?-1*g:f,max:k?-1*f:g,step:h,slide:function(l,m){c.control.value(c,e(this),a,k?-1*m.value:m.value);c._onTimeChange()},stop:function(l,m){c._onSelectHandler()}})},options:function(c,b,a,d,f){if(c._defaults.isRTL){if("string"===typeof d)return"min"===d||"max"===d?void 0!==f?b.slider(d,-1*f):Math.abs(b.slider(d)):b.slider(d);c=d.min;a=d.max;d.min=d.max=null;void 0!==c&&(d.max=-1*c);void 0!==a&&(d.min=-1*a);return b.slider(d)}return"string"===typeof d&&void 0!==f?b.slider(d,f):b.slider(d)},value:function(c,
b,a,d){return c._defaults.isRTL?void 0!==d?b.slider("value",-1*d):Math.abs(b.slider("value")):void 0!==d?b.slider("value",d):b.slider("value")}},select:{create:function(c,b,a,d,f,g,h){for(var k='<select class="ui-timepicker-select ui-state-default ui-corner-all" data-unit="'+a+'" data-min="'+f+'" data-max="'+g+'" data-step="'+h+'">',l=c._defaults.pickerTimeFormat||c._defaults.timeFormat;f<=g;f+=h)k+='<option value="'+f+'"'+(f===d?" selected":"")+">",k="hour"===a?k+e.datepicker.formatTime(e.trim(l.replace(/[^ht ]/ig,
"")),{hour:f},c._defaults):"millisec"===a||"microsec"===a||10<=f?k+f:k+("0"+f.toString()),k+="</option>";k+="</select>";b.children("select").remove();e(k).appendTo(b).change(function(m){c._onTimeChange();c._onSelectHandler();c._afterInject()});return b},options:function(c,b,a,d,f){a={};var g=b.children("select");if("string"===typeof d){if(void 0===f)return g.data(d);a[d]=f}else a=d;return c.control.create(c,b,g.data("unit"),g.val(),0<=a.min?a.min:g.data("min"),a.max||g.data("max"),a.step||g.data("step"))},
value:function(c,b,a,d){c=b.children("select");return void 0!==d?c.val(d):c.val()}}}});e.fn.extend({timepicker:function(c){c=c||{};var b=Array.prototype.slice.call(arguments);"object"===typeof c&&(b[0]=e.extend(c,{timeOnly:!0}));return e(this).each(function(){e.fn.datetimepicker.apply(e(this),b)})},datetimepicker:function(c){c=c||{};var b=arguments;return"string"===typeof c?"getDate"===c||"option"===c&&2===b.length&&"string"===typeof b[1]?e.fn.datepicker.apply(e(this[0]),b):this.each(function(){var a=
e(this);a.datepicker.apply(a,b)}):this.each(function(){var a=e(this);a.datepicker(e.timepicker._newInst(a,c)._defaults)})}});e.datepicker.parseDateTime=function(c,b,a,d,f){c=y(c,b,a,d,f);c.timeObj&&(b=c.timeObj,c.date.setHours(b.hour,b.minute,b.second,b.millisec),c.date.setMicroseconds(b.microsec));return c.date};e.datepicker.parseTime=function(c,b,a){a=w(w({},e.timepicker._defaults),a||{});c.replace(/'.*?'/g,"").indexOf("Z");var d=function(g,h,k){var l=function(p,r){var t=[];p&&e.merge(t,p);r&&e.merge(t,
r);t=e.map(t,function(q){return q.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")});return"("+t.join("|")+")?"},m="^"+g.toString().replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(p){var r=p.length;switch(p.charAt(0).toLowerCase()){case "h":return 1===r?"(\\d?\\d)":"(\\d{"+r+"})";case "m":return 1===r?"(\\d?\\d)":"(\\d{"+r+"})";case "s":return 1===r?"(\\d?\\d)":"(\\d{"+r+"})";case "l":return"(\\d?\\d?\\d)";case "c":return"(\\d?\\d?\\d)";case "z":return"(z|[-+]\\d\\d:?\\d\\d|\\S+)?";case "t":return l(k.amNames,
k.pmNames);default:return"("+p.replace(/'/g,"").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g,function(t){return"\\"+t})+")?"}}).replace(/\s/g,"\\s?")+k.timeSuffix+"$";g=function(p){p=p.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g);var r={h:-1,m:-1,s:-1,l:-1,c:-1,t:-1,z:-1};if(p)for(var t=0;t<p.length;t++)-1===r[p[t].toString().charAt(0)]&&(r[p[t].toString().charAt(0)]=t+1);return r}(g);var n="";h=h.match(new RegExp(m,"i"));m={hour:0,minute:0,second:0,millisec:0,microsec:0};
return h?(-1!==g.t&&(void 0===h[g.t]||0===h[g.t].length?(n="",m.ampm=""):(n=-1!==e.inArray(h[g.t].toUpperCase(),e.map(k.amNames,function(p,r){return p.toUpperCase()}))?"AM":"PM",m.ampm=k["AM"===n?"amNames":"pmNames"][0])),-1!==g.h&&(m.hour="AM"===n&&"12"===h[g.h]?0:"PM"===n&&"12"!==h[g.h]?parseInt(h[g.h],10)+12:Number(h[g.h])),-1!==g.m&&(m.minute=Number(h[g.m])),-1!==g.s&&(m.second=Number(h[g.s])),-1!==g.l&&(m.millisec=Number(h[g.l])),-1!==g.c&&(m.microsec=Number(h[g.c])),-1!==g.z&&void 0!==h[g.z]&&
(m.timezone=e.timepicker.timezoneOffsetNumber(h[g.z])),m):!1},f=function(g,h,k){try{var l=new Date("2012-01-01 "+h);if(isNaN(l.getTime())&&(l=new Date("2012-01-01T"+h),isNaN(l.getTime())&&(l=new Date("01/01/2012 "+h),isNaN(l.getTime()))))throw"Unable to parse time with native Date: "+h;return{hour:l.getHours(),minute:l.getMinutes(),second:l.getSeconds(),millisec:l.getMilliseconds(),microsec:l.getMicroseconds(),timezone:-1*l.getTimezoneOffset()}}catch(m){try{return d(g,h,k)}catch(n){e.timepicker.log("Unable to parse \ntimeString: "+
h+"\ntimeFormat: "+g)}}return!1};return"function"===typeof a.parse?a.parse(c,b,a):"loose"===a.parse?f(c,b,a):d(c,b,a)};e.datepicker.formatTime=function(c,b,a){a=a||{};a=e.extend({},e.timepicker._defaults,a);b=e.extend({hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null},b);var d=a.amNames[0],f=parseInt(b.hour,10);11<f&&(d=a.pmNames[0]);return c=c.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(g){switch(g){case "HH":return("0"+f).slice(-2);case "H":return f;case "hh":return("0"+
A(f)).slice(-2);case "h":return A(f);case "mm":return("0"+b.minute).slice(-2);case "m":return b.minute;case "ss":return("0"+b.second).slice(-2);case "s":return b.second;case "l":return("00"+b.millisec).slice(-3);case "c":return("00"+b.microsec).slice(-3);case "z":return e.timepicker.timezoneOffsetString(null===b.timezone?a.timezone:b.timezone,!1);case "Z":return e.timepicker.timezoneOffsetString(null===b.timezone?a.timezone:b.timezone,!0);case "T":return d.charAt(0).toUpperCase();case "TT":return d.toUpperCase();
case "t":return d.charAt(0).toLowerCase();case "tt":return d.toLowerCase();default:return g.replace(/'/g,"")}})};e.datepicker._base_selectDate=e.datepicker._selectDate;e.datepicker._selectDate=function(c,b){var a=this._getInst(e(c)[0]),d=this._get(a,"timepicker");d&&a.settings.showTimepicker?(d._limitMinMaxDateTime(a,!0),d=a.inline,a.inline=a.stay_open=!0,this._base_selectDate(c,b),a.inline=d,a.stay_open=!1,this._notifyChange(a),this._updateDatepicker(a)):this._base_selectDate(c,b)};e.datepicker._base_updateDatepicker=
e.datepicker._updateDatepicker;e.datepicker._updateDatepicker=function(c){var b=c.input[0];if(!e.datepicker._curInst||e.datepicker._curInst===c||!e.datepicker._datepickerShowing||e.datepicker._lastInput===b)if("boolean"!==typeof c.stay_open||!1===c.stay_open)this._base_updateDatepicker(c),(b=this._get(c,"timepicker"))&&b._addTimePicker(c)};e.datepicker._base_doKeyPress=e.datepicker._doKeyPress;e.datepicker._doKeyPress=function(c){var b=e.datepicker._getInst(c.target),a=e.datepicker._get(b,"timepicker");
if(a&&e.datepicker._get(b,"constrainInput")){var d=a.support.ampm,f=null!==a._defaults.showTimezone?a._defaults.showTimezone:a.support.timezone;b=e.datepicker._possibleChars(e.datepicker._get(b,"dateFormat"));a=a._defaults.timeFormat.toString().replace(/[hms]/g,"").replace(/TT/g,d?"APM":"").replace(/Tt/g,d?"AaPpMm":"").replace(/tT/g,d?"AaPpMm":"").replace(/T/g,d?"AP":"").replace(/tt/g,d?"apm":"").replace(/t/g,d?"ap":"")+" "+a._defaults.separator+a._defaults.timeSuffix+(f?a._defaults.timezoneList.join(""):
"")+a._defaults.amNames.join("")+a._defaults.pmNames.join("")+b;d=String.fromCharCode(void 0===c.charCode?c.keyCode:c.charCode);return c.ctrlKey||" ">d||!b||-1<a.indexOf(d)}return e.datepicker._base_doKeyPress(c)};e.datepicker._base_updateAlternate=e.datepicker._updateAlternate;e.datepicker._updateAlternate=function(c){var b=this._get(c,"timepicker");if(b){var a=b._defaults.altField;if(a){var d=this._getDate(c),f=e.datepicker._getFormatConfig(c),g=b._defaults.altSeparator?b._defaults.altSeparator:
b._defaults.separator;var h=b._defaults.altTimeSuffix?b._defaults.altTimeSuffix:b._defaults.timeSuffix;h=""+(e.datepicker.formatTime(null!==b._defaults.altTimeFormat?b._defaults.altTimeFormat:b._defaults.timeFormat,b,b._defaults)+h);b._defaults.timeOnly||b._defaults.altFieldTimeOnly||null===d||(h=b._defaults.altFormat?e.datepicker.formatDate(b._defaults.altFormat,d,f)+g+h:b.formattedDate+g+h);e(a).val(c.input.val()?h:"")}}else e.datepicker._base_updateAlternate(c)};e.datepicker._base_doKeyUp=e.datepicker._doKeyUp;
e.datepicker._doKeyUp=function(c){var b=e.datepicker._getInst(c.target),a=e.datepicker._get(b,"timepicker");if(a&&a._defaults.timeOnly&&b.input.val()!==b.lastVal)try{e.datepicker._updateDatepicker(b)}catch(d){e.timepicker.log(d)}return e.datepicker._base_doKeyUp(c)};e.datepicker._base_gotoToday=e.datepicker._gotoToday;e.datepicker._gotoToday=function(c){var b=this._getInst(e(c)[0]);this._base_gotoToday(c);if(c=this._get(b,"timepicker")){var a=e.timepicker.timezoneOffsetNumber(c.timezone),d=new Date;
d.setMinutes(d.getMinutes()+d.getTimezoneOffset()+parseInt(a,10));this._setTime(b,d);this._setDate(b,d);c._onSelectHandler()}};e.datepicker._disableTimepickerDatepicker=function(c){var b=this._getInst(c);if(b){var a=this._get(b,"timepicker");e(c).datepicker("getDate");a&&(b.settings.showTimepicker=!1,a._defaults.showTimepicker=!1,a._updateDateTime(b))}};e.datepicker._enableTimepickerDatepicker=function(c){var b=this._getInst(c);if(b){var a=this._get(b,"timepicker");e(c).datepicker("getDate");a&&(b.settings.showTimepicker=
!0,a._defaults.showTimepicker=!0,a._addTimePicker(b),a._updateDateTime(b))}};e.datepicker._setTime=function(c,b){var a=this._get(c,"timepicker");if(a){var d=a._defaults;a.hour=b?b.getHours():d.hour;a.minute=b?b.getMinutes():d.minute;a.second=b?b.getSeconds():d.second;a.millisec=b?b.getMilliseconds():d.millisec;a.microsec=b?b.getMicroseconds():d.microsec;a._limitMinMaxDateTime(c,!0);a._onTimeChange();a._updateDateTime(c)}};e.datepicker._setTimeDatepicker=function(c,b,a){if(c=this._getInst(c)){var d=
this._get(c,"timepicker");d&&(this._setDateFromField(c),b&&("string"===typeof b?(d._parseTime(b,a),a=new Date,a.setHours(d.hour,d.minute,d.second,d.millisec),a.setMicroseconds(d.microsec)):(a=new Date(b.getTime()),a.setMicroseconds(b.getMicroseconds())),"Invalid Date"===a.toString()&&(a=void 0),this._setTime(c,a)))}};e.datepicker._base_setDateDatepicker=e.datepicker._setDateDatepicker;e.datepicker._setDateDatepicker=function(c,b){var a=this._getInst(c),d=b;if(a){"string"===typeof b&&(d=new Date(b),
d.getTime()||(this._base_setDateDatepicker.apply(this,arguments),d=e(c).datepicker("getDate")));var f=this._get(a,"timepicker");if(d instanceof Date){var g=new Date(d.getTime());g.setMicroseconds(d.getMicroseconds())}else g=d;f&&g&&(f.support.timezone||null!==f._defaults.timezone||(f.timezone=-1*g.getTimezoneOffset()),e.timepicker.timezoneAdjust(d,e.timepicker.timezoneOffsetString(-d.getTimezoneOffset()),f.timezone),g=e.timepicker.timezoneAdjust(g,e.timepicker.timezoneOffsetString(-g.getTimezoneOffset()),
f.timezone));this._updateDatepicker(a);this._base_setDateDatepicker.apply(this,arguments);this._setTimeDatepicker(c,g,!0)}};e.datepicker._base_getDateDatepicker=e.datepicker._getDateDatepicker;e.datepicker._getDateDatepicker=function(c,b){var a=this._getInst(c);if(a){var d=this._get(a,"timepicker");if(d){void 0===a.lastVal&&this._setDateFromField(a,b);var f=this._getDate(a);var g=d.$altInput&&d._defaults.altFieldTimeOnly?d.$input.val()+" "+d.$altInput.val():"INPUT"!==d.$input.get(0).tagName&&d.$altInput?
d.$altInput.val():d.$input.val();f&&d._parseTime(g,!a.settings.timeOnly)&&(f.setHours(d.hour,d.minute,d.second,d.millisec),f.setMicroseconds(d.microsec),null!=d.timezone&&(d.support.timezone||null!==d._defaults.timezone||(d.timezone=-1*f.getTimezoneOffset()),f=e.timepicker.timezoneAdjust(f,d.timezone,e.timepicker.timezoneOffsetString(-f.getTimezoneOffset()))));return f}return this._base_getDateDatepicker(c,b)}};e.datepicker._base_parseDate=e.datepicker.parseDate;e.datepicker.parseDate=function(c,
b,a){try{var d=this._base_parseDate(c,b,a)}catch(f){if(0<=f.indexOf(":"))d=this._base_parseDate(c,b.substring(0,b.length-(f.length-f.indexOf(":")-2)),a),e.timepicker.log("Error parsing the date string: "+f+"\ndate string = "+b+"\ndate format = "+c);else throw f;}return d};e.datepicker._base_formatDate=e.datepicker._formatDate;e.datepicker._formatDate=function(c,b,a,d){return(b=this._get(c,"timepicker"))?(b._updateDateTime(c),b.$input.val()):this._base_formatDate(c)};e.datepicker._base_optionDatepicker=
e.datepicker._optionDatepicker;e.datepicker._optionDatepicker=function(c,b,a){var d=this._getInst(c);if(!d)return null;if(d=this._get(d,"timepicker")){var f=null,g=null,h=null,k=d._defaults.evnts,l={};if("string"===typeof b)if("minDate"===b||"minDateTime"===b)f=a;else if("maxDate"===b||"maxDateTime"===b)g=a;else if("onSelect"===b)h=a;else{if(k.hasOwnProperty(b)){if("undefined"===typeof a)return k[b];l[b]=a;var m={}}}else if("object"===typeof b)for(n in b.minDate?f=b.minDate:b.minDateTime?f=b.minDateTime:
b.maxDate?g=b.maxDate:b.maxDateTime&&(g=b.maxDateTime),k)k.hasOwnProperty(n)&&b[n]&&(l[n]=b[n]);for(n in l)l.hasOwnProperty(n)&&(k[n]=l[n],m||(m=e.extend({},b)),delete m[n]);if(m&&F(m))return;f?(f=0===f?new Date:new Date(f),d._defaults.minDate=f,d._defaults.minDateTime=f):g?(g=0===g?new Date:new Date(g),d._defaults.maxDate=g,d._defaults.maxDateTime=g):h&&(d._defaults.onSelect=h);if(f||g){d=e(c);var n=d.datetimepicker("getDate");c=this._base_optionDatepicker.call(e.datepicker,c,m||b,a);d.datetimepicker("setDate",
n);return c}}return void 0===a?this._base_optionDatepicker.call(e.datepicker,c,b):this._base_optionDatepicker.call(e.datepicker,c,m||b,a)};var F=function(c){for(var b in c)if(c.hasOwnProperty(b))return!1;return!0},w=function(c,b){e.extend(c,b);for(var a in b)if(null===b[a]||void 0===b[a])c[a]=b[a];return c},C=function(c){var b=c.replace(/'.*?'/g,"").toLowerCase(),a=function(d,f){return-1!==d.indexOf(f)?!0:!1};return{hour:a(b,"h"),minute:a(b,"m"),second:a(b,"s"),millisec:a(b,"l"),microsec:a(b,"c"),
timezone:a(b,"z"),ampm:a(b,"t")&&a(c,"h"),iso8601:a(c,"Z")}},A=function(c){c%=12;0===c&&(c=12);return String(c)},B=function(c,b){return c&&c[b]?c[b]:e.timepicker._defaults[b]},G=function(c,b){var a=B(b,"separator"),d=B(b,"timeFormat").split(a).length,f=c.split(a),g=f.length;return 1<g?{dateString:f.splice(0,g-d).join(a),timeString:f.splice(0,d).join(a)}:{dateString:c,timeString:""}},y=function(c,b,a,d,f){a=G(a,f);c=e.datepicker._base_parseDate(c,a.dateString,d);if(""===a.timeString)return{date:c};
b=e.datepicker.parseTime(b,a.timeString,f);if(!b)throw"Wrong time format";return{date:c,timeObj:b}},z=function(c,b){c&&c.timezone_select&&c.timezone_select.val(-(b||new Date).getTimezoneOffset())};e.timepicker=new x;e.timepicker.timezoneOffsetString=function(c,b){if(isNaN(c)||840<c||-720>c)return c;var a=c%60,d=b?":":"";a=(0<=c?"+":"-")+("0"+Math.abs((c-a)/60)).slice(-2)+d+("0"+Math.abs(a)).slice(-2);return"+00:00"===a?"Z":a};e.timepicker.timezoneOffsetNumber=function(c){var b=c.toString().replace(":",
"");return"Z"===b.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(b)?("-"===b.substr(0,1)?-1:1)*(60*parseInt(b.substr(1,2),10)+parseInt(b.substr(3,2),10)):parseInt(c,10)};e.timepicker.timezoneAdjust=function(c,b,a){b=e.timepicker.timezoneOffsetNumber(b);a=e.timepicker.timezoneOffsetNumber(a);isNaN(a)||c.setMinutes(c.getMinutes()+-b- -a);return c};e.timepicker.timeRange=function(c,b,a){return e.timepicker.handleRange("timepicker",c,b,a)};e.timepicker.datetimeRange=function(c,b,a){e.timepicker.handleRange("datetimepicker",
c,b,a)};e.timepicker.dateRange=function(c,b,a){e.timepicker.handleRange("datepicker",c,b,a)};e.timepicker.handleRange=function(c,b,a,d){function f(k,l){var m=b[c]("getDate"),n=a[c]("getDate"),p=k[c]("getDate");if(null!==m){var r=new Date(m.getTime()),t=new Date(m.getTime());r.setMilliseconds(r.getMilliseconds()+d.minInterval);t.setMilliseconds(t.getMilliseconds()+d.maxInterval);if(0<d.minInterval&&r>n)a[c]("setDate",r);else if(0<d.maxInterval&&t<n)a[c]("setDate",t);else if(m>n)l[c]("setDate",p)}}
function g(k,l,m){k.val()&&(k=k[c].call(k,"getDate"),null!==k&&0<d.minInterval&&("minDate"===m&&k.setMilliseconds(k.getMilliseconds()+d.minInterval),"maxDate"===m&&k.setMilliseconds(k.getMilliseconds()-d.minInterval)),k.getTime&&l[c].call(l,"option",m,k))}d=e.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},d);var h=!1;"timepicker"===c&&(h=!0,c="datetimepicker");e.fn[c].call(b,e.extend({timeOnly:h,onClose:function(k,l){f(e(this),a)},onSelect:function(k){g(e(this),a,"minDate")}},d,d.start));
e.fn[c].call(a,e.extend({timeOnly:h,onClose:function(k,l){f(e(this),b)},onSelect:function(k){g(e(this),b,"maxDate")}},d,d.end));f(b,a);g(b,a,"minDate");g(a,b,"maxDate");return e([b.get(0),a.get(0)])};e.timepicker.log=function(){window.console&&window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,Array.prototype.slice.call(arguments))};e.timepicker._util={_extendRemove:w,_isEmptyObject:F,_convert24to12:A,_detectSupport:C,_selectLocalTimezone:z,_computeEffectiveSetting:B,
_splitDateTime:G,_parseDateTimeInternal:y};Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(c){this.setMilliseconds(this.getMilliseconds()+Math.floor(c/1E3));this.microseconds=c%1E3;return this});e.timepicker.version="1.6.3"}});

View File

@@ -0,0 +1,620 @@
/*!
* jQuery blockUI plugin
* Version 2.70.0-2014.11.23
* Requires jQuery v1.7 or later
*
* Examples at: http://malsup.com/jquery/block/
* Copyright (c) 2007-2013 M. Alsup
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Thanks to Amir-Hossein Sobhi for some excellent contributions!
*/
;(function() {
/*jshint eqeqeq:false curly:false latedef:false */
"use strict";
function setup($) {
$.fn._fadeIn = $.fn.fadeIn;
var noOp = $.noop || function() {};
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
// confusing userAgent strings on Vista)
var msie = /MSIE/.test(navigator.userAgent);
var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
var mode = document.documentMode || 0;
var setExpr = typeof document.createElement('div').style.setExpression === "function";
// global $ methods for blocking/unblocking the entire page
$.blockUI = function(opts) { install(window, opts); };
$.unblockUI = function(opts) { remove(window, opts); };
// convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
$.growlUI = function(title, message, timeout, onClose) {
var $m = $('<div class="growlUI"></div>');
if (title) $m.append('<h1>'+title+'</h1>');
if (message) $m.append('<h2>'+message+'</h2>');
if (timeout === undefined) timeout = 3000;
// Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
var callBlock = function(opts) {
opts = opts || {};
$.blockUI({
message: $m,
fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
centerY: false,
showOverlay: false,
onUnblock: onClose,
css: $.blockUI.defaults.growlCSS
});
};
callBlock();
var nonmousedOpacity = $m.css('opacity');
$m.mouseover(function() {
callBlock({
fadeIn: 0,
timeout: 30000
});
var displayBlock = $('.blockMsg');
displayBlock.stop(); // cancel fadeout if it has started
displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
}).mouseout(function() {
$('.blockMsg').fadeOut(1000);
});
// End konapun additions
};
// plugin method for blocking element content
$.fn.block = function(opts) {
if ( this[0] === window ) {
$.blockUI( opts );
return this;
}
var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
this.each(function() {
var $el = $(this);
if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
return;
$el.unblock({ fadeOut: 0 });
});
return this.each(function() {
if ($.css(this,'position') == 'static') {
this.style.position = 'relative';
$(this).data('blockUI.static', true);
}
this.style.zoom = 1; // force 'hasLayout' in ie
install(this, opts);
});
};
// plugin method for unblocking element content
$.fn.unblock = function(opts) {
if ( this[0] === window ) {
$.unblockUI( opts );
return this;
}
return this.each(function() {
remove(this, opts);
});
};
$.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
// override these in your code to change the default behavior and style
$.blockUI.defaults = {
// message displayed when blocking (use null for no message)
message: '<h1>Please wait...</h1>',
title: null, // title string; only used when theme == true
draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
theme: false, // set to true to use with jQuery UI themes
// styles for the message when blocking; if you wish to disable
// these and use an external stylesheet then do this in your code:
// $.blockUI.defaults.css = {};
css: {
padding: 0,
margin: 0,
width: '30%',
top: '40%',
left: '35%',
textAlign: 'center',
color: '#000',
border: '3px solid #aaa',
backgroundColor:'#fff',
cursor: 'wait'
},
// minimal style set used when themes are used
themedCSS: {
width: '30%',
top: '40%',
left: '35%'
},
// styles for the overlay
overlayCSS: {
backgroundColor: '#000',
opacity: 0.6,
cursor: 'wait'
},
// style to replace wait cursor before unblocking to correct issue
// of lingering wait cursor
cursorReset: 'default',
// styles applied when using $.growlUI
growlCSS: {
width: '350px',
top: '10px',
left: '',
right: '10px',
border: 'none',
padding: '5px',
opacity: 0.6,
cursor: 'default',
color: '#fff',
backgroundColor: '#000',
'-webkit-border-radius':'10px',
'-moz-border-radius': '10px',
'border-radius': '10px'
},
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
// (hat tip to Jorge H. N. de Vasconcelos)
/*jshint scripturl:true */
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
// force usage of iframe in non-IE browsers (handy for blocking applets)
forceIframe: false,
// z-index for the blocking overlay
baseZ: 1000,
// set these to true to have the message automatically centered
centerX: true, // <-- only effects element blocking (page block controlled via css above)
centerY: true,
// allow body element to be stetched in ie6; this makes blocking look better
// on "short" pages. disable if you wish to prevent changes to the body height
allowBodyStretch: true,
// enable if you want key and mouse events to be disabled for content that is blocked
bindEvents: true,
// be default blockUI will supress tab navigation from leaving blocking content
// (if bindEvents is true)
constrainTabKey: true,
// fadeIn time in millis; set to 0 to disable fadeIn on block
fadeIn: 200,
// fadeOut time in millis; set to 0 to disable fadeOut on unblock
fadeOut: 400,
// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
timeout: 0,
// disable if you don't want to show the overlay
showOverlay: true,
// if true, focus will be placed in the first available input field when
// page blocking
focusInput: true,
// elements that can receive focus
focusableElements: ':input:enabled:visible',
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
// no longer needed in 2012
// applyPlatformOpacityRules: true,
// callback method invoked when fadeIn has completed and blocking message is visible
onBlock: null,
// callback method invoked when unblocking has completed; the callback is
// passed the element that has been unblocked (which is the window object for page
// blocks) and the options that were passed to the unblock call:
// onUnblock(element, options)
onUnblock: null,
// callback method invoked when the overlay area is clicked.
// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
onOverlayClick: null,
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
quirksmodeOffsetHack: 4,
// class name of the message block
blockMsgClass: 'blockMsg',
// if it is already blocked, then ignore it (don't unblock and reblock)
ignoreIfBlocked: false
};
// private data and functions follow...
var pageBlock = null;
var pageBlockEls = [];
function install(el, opts) {
var css, themedCSS;
var full = (el == window);
var msg = (opts && opts.message !== undefined ? opts.message : undefined);
opts = $.extend({}, $.blockUI.defaults, opts || {});
if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
return;
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
if (opts.onOverlayClick)
opts.overlayCSS.cursor = 'pointer';
themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
msg = msg === undefined ? opts.message : msg;
// remove the current block (if there is one)
if (full && pageBlock)
remove(window, {fadeOut:0});
// if an existing element is being used as the blocking content then we capture
// its current place in the DOM (and current display style) so we can restore
// it when we unblock
if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
var node = msg.jquery ? msg[0] : msg;
var data = {};
$(el).data('blockUI.history', data);
data.el = node;
data.parent = node.parentNode;
data.display = node.style.display;
data.position = node.style.position;
if (data.parent)
data.parent.removeChild(node);
}
$(el).data('blockUI.onUnblock', opts.onUnblock);
var z = opts.baseZ;
// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
// layer1 is the iframe layer which is used to supress bleed through of underlying content
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
// layer3 is the message content that is displayed while blocking
var lyr1, lyr2, lyr3, s;
if (msie || opts.forceIframe)
lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>');
else
lyr1 = $('<div class="blockUI" style="display:none"></div>');
if (opts.theme)
lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>');
else
lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
if (opts.theme && full) {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
if ( opts.title ) {
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
}
s += '<div class="ui-widget-content ui-dialog-content"></div>';
s += '</div>';
}
else if (opts.theme) {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
if ( opts.title ) {
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
}
s += '<div class="ui-widget-content ui-dialog-content"></div>';
s += '</div>';
}
else if (full) {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>';
}
else {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>';
}
lyr3 = $(s);
// if we have a message, style it
if (msg) {
if (opts.theme) {
lyr3.css(themedCSS);
lyr3.addClass('ui-widget-content');
}
else
lyr3.css(css);
}
// style the overlay
if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
lyr2.css(opts.overlayCSS);
lyr2.css('position', full ? 'fixed' : 'absolute');
// make iframe layer transparent in IE
if (msie || opts.forceIframe)
lyr1.css('opacity',0.0);
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
$.each(layers, function() {
this.appendTo($par);
});
if (opts.theme && opts.draggable && $.fn.draggable) {
lyr3.draggable({
handle: '.ui-dialog-titlebar',
cancel: 'li'
});
}
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
if (ie6 || expr) {
// give body 100% height
if (full && opts.allowBodyStretch && $.support.boxModel)
$('html,body').css('height','100%');
// fix ie6 issue when blocked element has a border width
if ((ie6 || !$.support.boxModel) && !full) {
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
var fixT = t ? '(0 - '+t+')' : 0;
var fixL = l ? '(0 - '+l+')' : 0;
}
// simulate fixed position
$.each(layers, function(i,o) {
var s = o[0].style;
s.position = 'absolute';
if (i < 2) {
if (full)
s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
else
s.setExpression('height','this.parentNode.offsetHeight + "px"');
if (full)
s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
else
s.setExpression('width','this.parentNode.offsetWidth + "px"');
if (fixL) s.setExpression('left', fixL);
if (fixT) s.setExpression('top', fixT);
}
else if (opts.centerY) {
if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
s.marginTop = 0;
}
else if (!opts.centerY && full) {
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
s.setExpression('top',expression);
}
});
}
// show the message
if (msg) {
if (opts.theme)
lyr3.find('.ui-widget-content').append(msg);
else
lyr3.append(msg);
if (msg.jquery || msg.nodeType)
$(msg).show();
}
if ((msie || opts.forceIframe) && opts.showOverlay)
lyr1.show(); // opacity is zero
if (opts.fadeIn) {
var cb = opts.onBlock ? opts.onBlock : noOp;
var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
var cb2 = msg ? cb : noOp;
if (opts.showOverlay)
lyr2._fadeIn(opts.fadeIn, cb1);
if (msg)
lyr3._fadeIn(opts.fadeIn, cb2);
}
else {
if (opts.showOverlay)
lyr2.show();
if (msg)
lyr3.show();
if (opts.onBlock)
opts.onBlock.bind(lyr3)();
}
// bind key and mouse events
bind(1, el, opts);
if (full) {
pageBlock = lyr3[0];
pageBlockEls = $(opts.focusableElements,pageBlock);
if (opts.focusInput)
setTimeout(focus, 20);
}
else
center(lyr3[0], opts.centerX, opts.centerY);
if (opts.timeout) {
// auto-unblock
var to = setTimeout(function() {
if (full)
$.unblockUI(opts);
else
$(el).unblock(opts);
}, opts.timeout);
$(el).data('blockUI.timeout', to);
}
}
// remove the block
function remove(el, opts) {
var count;
var full = (el == window);
var $el = $(el);
var data = $el.data('blockUI.history');
var to = $el.data('blockUI.timeout');
if (to) {
clearTimeout(to);
$el.removeData('blockUI.timeout');
}
opts = $.extend({}, $.blockUI.defaults, opts || {});
bind(0, el, opts); // unbind events
if (opts.onUnblock === null) {
opts.onUnblock = $el.data('blockUI.onUnblock');
$el.removeData('blockUI.onUnblock');
}
var els;
if (full) // crazy selector to handle odd field errors in ie6/7
els = $('body').children().filter('.blockUI').add('body > .blockUI');
else
els = $el.find('>.blockUI');
// fix cursor issue
if ( opts.cursorReset ) {
if ( els.length > 1 )
els[1].style.cursor = opts.cursorReset;
if ( els.length > 2 )
els[2].style.cursor = opts.cursorReset;
}
if (full)
pageBlock = pageBlockEls = null;
if (opts.fadeOut) {
count = els.length;
els.stop().fadeOut(opts.fadeOut, function() {
if ( --count === 0)
reset(els,data,opts,el);
});
}
else
reset(els, data, opts, el);
}
// move blocking element back into the DOM where it started
function reset(els,data,opts,el) {
var $el = $(el);
if ( $el.data('blockUI.isBlocked') )
return;
els.each(function(i,o) {
// remove via DOM calls so we don't lose event handlers
if (this.parentNode)
this.parentNode.removeChild(this);
});
if (data && data.el) {
data.el.style.display = data.display;
data.el.style.position = data.position;
data.el.style.cursor = 'default'; // #59
if (data.parent)
data.parent.appendChild(data.el);
$el.removeData('blockUI.history');
}
if ($el.data('blockUI.static')) {
$el.css('position', 'static'); // #22
}
if (typeof opts.onUnblock == 'function')
opts.onUnblock(el,opts);
// fix issue in Safari 6 where block artifacts remain until reflow
var body = $(document.body), w = body.width(), cssW = body[0].style.width;
body.width(w-1).width(w);
body[0].style.width = cssW;
}
// bind/unbind the handler
function bind(b, el, opts) {
var full = el == window, $el = $(el);
// don't bother unbinding if there is nothing to unbind
if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
return;
$el.data('blockUI.isBlocked', b);
// don't bind events when overlay is not in use or if bindEvents is false
if (!full || !opts.bindEvents || (b && !opts.showOverlay))
return;
// bind anchors and inputs for mouse and key events
var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
if (b)
$(document).bind(events, opts, handler);
else
$(document).unbind(events, handler);
// former impl...
// var $e = $('a,:input');
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
}
// event handler to suppress keyboard/mouse events when blocking
function handler(e) {
// allow tab navigation (conditionally)
if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
if (pageBlock && e.data.constrainTabKey) {
var els = pageBlockEls;
var fwd = !e.shiftKey && e.target === els[els.length-1];
var back = e.shiftKey && e.target === els[0];
if (fwd || back) {
setTimeout(function(){focus(back);},10);
return false;
}
}
}
var opts = e.data;
var target = $(e.target);
if (target.hasClass('blockOverlay') && opts.onOverlayClick)
opts.onOverlayClick(e);
// allow events within the message content
if (target.parents('div.' + opts.blockMsgClass).length > 0)
return true;
// allow events for content that is not being blocked
return target.parents().children().filter('div.blockUI').length === 0;
}
function focus(back) {
if (!pageBlockEls)
return;
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
if (e)
e.focus();
}
function center(el, x, y) {
var p = el.parentNode, s = el.style;
var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
if (x) s.left = l > 0 ? (l+'px') : '0';
if (y) s.top = t > 0 ? (t+'px') : '0';
}
function sz(el, p) {
return parseInt($.css(el,p),10)||0;
}
}
/*global define:true */
if (typeof define === 'function' && define.amd && define.amd.jQuery) {
define(['jquery'], setup);
} else {
setup(jQuery);
}
})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,704 @@
/**
* Internet Explorer support for `Object.assign()`
*/
if (typeof Object.assign != 'function') {
Object.assign = function(target) {
'use strict';
if (target == null) {
throw new TypeError('Cannot convert undefined or null to object');
}
target = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source != null) {
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
}
return target;
};
}
var rcp_processing = false;
jQuery( document ).ready( function ( $ ) {
// Validate the default/current registration state.
rcp_validate_registration_state();
// Toggle membership renew/change.
$('#rcp-membership-renew-upgrade-toggle').on( 'click', function( e ) {
e.preventDefault();
$('#rcp-membership-renew-upgrade-choice').toggle();
} );
// When the gateway changes, trigger the "rcp_gateway_change" event.
$( '#rcp_payment_gateways select, #rcp_payment_gateways input' ).on( 'change', function () {
$( 'body' ).trigger( 'rcp_gateway_change', {gateway: rcp_get_gateway().val()} );
} );
// When the chosen membership level changes, trigger the "rcp_level_change" event.
$( '.rcp_level' ).on( 'change', function () {
$( 'body' ).trigger( 'rcp_level_change', {subscription_level: $( '#rcp_subscription_levels .rcp_level:checked' ).val()} );
} );
// When the "apply discount" button is clicked, trigger the "rcp_discount_change" event.
$( '#rcp_apply_discount' ).on( 'click', function ( e ) {
e.preventDefault();
$( 'body' ).trigger( 'rcp_discount_change', {discount_code: $( '#rcp_discount_code' ).val()} );
} );
// When the auto renew checkbox changes, trigger the rcp_auto_renew_change" event.
$( '#rcp_auto_renew' ).on( 'change', function () {
$( 'body' ).trigger( 'rcp_auto_renew_change', {auto_renew: $( this ).prop( 'checked' )} );
} );
// Validate registration.
$( 'body' ).on( 'rcp_discount_change rcp_level_change rcp_gateway_change rcp_auto_renew_change', function ( event, data ) {
let reg = Object.assign( {}, rcp_get_registration_form_state(), data );
rcp_validate_registration_state( reg, event.type );
} );
if ( '1' === rcp_script_options.recaptcha_enabled && '3' !== rcp_script_options.recaptcha_version ) {
// Disable submit button. It's then re-enabled via rcp_validate_recaptcha()
jQuery( '#rcp_registration_form #rcp_submit' ).prop( 'disabled', true );
}
/**
* Kick off registration when submit button is clicked.
*/
$( document ).on( 'click', '#rcp_registration_form #rcp_submit', function ( e ) {
e.preventDefault();
var submission_form = document.getElementById( 'rcp_registration_form' );
var form = $( '#rcp_registration_form' );
if ( typeof submission_form.checkValidity === "function" && false === submission_form.checkValidity() ) {
return;
}
form.block( {
message: rcp_script_options.pleasewait,
css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
} );
$( '#rcp_submit', form ).val( rcp_script_options.pleasewait );
// Don't allow form to be submitted multiple times simultaneously
if ( rcp_processing ) {
return;
}
rcp_processing = true;
/**
* Registration chain:
* - 1. Get a reCAPTCHA v3 token, if required.
* - 2. Validate form via ajax.
* - 3. Proceed to form processing via ajax.
* - 4. Generate a new nonce.
* - 5. Unless `gateway-submits-form`, submit the HTML form.
*
* If a gateway declares support for `gateway-submits-form`, then the gateway is responsible for
* triggering `rcp_submit_registration_form()` when ready.
*
* @see rcp_get_recaptchav3_token() - Step 1 - get a reCAPTCHA token if required
* @see rcp_validate_registration_form() - Step 1 - ajax validation
* @see rcp_process_registration_form() - Step 3 - ajax processing
* @see rcp_regenerate_registration_nonce() - Step 4 - ajax nonce replacement (after authentication)
* @see rcp_submit_registration_form() - Step 5 - submit the HTML form
*
* @see rcp_handle_registration_errors() - Error handling.
*/
var registrationChecks = ( window.rcpRegistrationChecks || [] ).map( function( callback ) {
return callback( form );
} );
Promise.all( registrationChecks ).then( function() {
return rcp_get_recaptchav3_token( form );
} ).then( function() {
return rcp_validate_registration_form( form );
} ).then( function( response ) {
return rcp_process_registration_form( form );
} ).then( function( response ) {
return rcp_regenerate_registration_nonce( form, response );
} ).then( function( response ) {
// Set payment ID.
let paymentIDField = form.find( 'input[name="rcp_registration_payment_id"]' );
if ( paymentIDField.length ) {
paymentIDField.val( response.payment_id );
} else {
form.append( '<input type="hidden" name="rcp_registration_payment_id" value="' + response.payment_id + '"/>' );
}
$( 'body' ).trigger( 'rcp_register_form_submission', [ response, form.attr( 'id' ) ] );
let gateway_submits_form = false;
if ( response.gateway.supports && response.gateway.supports.indexOf( 'gateway-submits-form' ) !== -1 ) {
gateway_submits_form = true;
}
/**
* Submit the HTML form if:
* - The total due today is $0 and the recurring total is $0; or:
* - The gateway has declared that it would like to be responsible for form submission (e.g. Stripe).
*
* Submitting the form sends the registration information to the gateway for further processing and
* activates the membership if possible.
*
* If the gateway has declared support for submitting the form, then it will then be the gateway's
* responsibility to hook into the `rcp_registration_form_processed` event and manually trigger
* rcp_submit_registration_form().
*/
if ( ( response.total === 0 && response.recurring_total === 0 ) || ! gateway_submits_form ) {
rcp_submit_registration_form( form, response );
} else {
$( 'body' ).trigger( 'rcp_registration_form_processed', [ form, response ] );
}
} ).catch ( function ( error ) {
console.trace( 'Registration Error', error );
// This catches errors from any part of the process (validation, processing, etc.).
rcp_regenerate_registration_nonce( form, error ).then( function( response ) {
rcp_handle_registration_errors( response, form );
} ).catch( function( nonceError ) {
rcp_handle_registration_errors( error, form );
} );
} );
} );
} );
/**
* Step 1: Get a reCAPTCHA v3 token.
*
* @param {*|jQuery|HTMLElement} form
*/
function rcp_get_recaptchav3_token( form ) {
return new Promise( function( resolve, reject ) {
if ( '1' !== rcp_script_options.recaptcha_enabled || '3' !== rcp_script_options.recaptcha_version ) {
resolve();
return;
}
grecaptcha.ready(function () {
grecaptcha.execute( jQuery('#rcp_recaptcha').data('sitekey'), {
action: 'register'
} ).then(function ( token ) {
// Add token to form.
jQuery( form ).find('input[name="g-recaptcha-response"]').val( token );
resolve();
});
});
} );
}
/**
* Step 2: Validate the registration form via ajax.
*
* This ensures required fields are filled out.
*
* @param {*|jQuery|HTMLElement} form
*
* @since 3.2
* @returns {Promise}
*/
function rcp_validate_registration_form( form ) {
let $ = jQuery;
return new Promise( function ( resolve, reject ) {
$.post( rcp_script_options.ajaxurl, form.serialize() + '&action=rcp_process_register_form&rcp_ajax=true&validate_only=true', function ( response ) {
// Remove errors first.
$( '.rcp-submit-ajax', form ).remove();
$( '.rcp_message.error', form ).remove();
// Handle possible validation error.
if ( ! response.success ) {
reject( response.data );
} else {
$( 'body' ).trigger( 'rcp_registration_form_validated', [form, response.data] );
resolve( response.data );
}
} ).done( function ( response ) {
} ).fail( function ( response ) {
console.log( response );
reject( Error( response ) );
} ).always( function ( response ) {
} );
} );
}
/**
* Step 3: Process the registration form via ajax.
*
* - Creates user account.
* - Creates customer record.
* - Creates pending membership record.
* - Creates pending payment record.
* - Sends registration to gateway for ajax processing (Stripe payment intent is created here).
*
* @param {*|jQuery|HTMLElement} form
*
* @since 3.2
* @returns {Promise}
*/
function rcp_process_registration_form( form ) {
let $ = jQuery;
rcp_processing = true;
return new Promise( function ( resolve, reject ) {
$.post( rcp_script_options.ajaxurl, form.serialize() + '&action=rcp_process_register_form&rcp_ajax=true', function ( response ) {
// Handle processing errors.
if ( ! response.success ) {
reject( response.data );
} else {
resolve( response.data );
}
} ).done( function ( response ) {
} ).fail( function ( response ) {
console.log( response );
} ).always( function ( response ) {
} );
} );
}
/**
* Step 4: Generate a new registration nonce.
*
* This is annoying, but logging in a new user (via step #2) will have invalidated our existing nonce
* and we have to start a whole new request to get a valid one.
*
* We will replace the old value in `response` with the new one and return the new response object.
*
* @param {*|jQuery|HTMLElement} form
* @param {object} response Ajax response from initial processing.
*
* @since 3.2
* @returns {Promise}
*/
function rcp_regenerate_registration_nonce( form, response ) {
let $ = jQuery;
rcp_processing = true;
return new Promise( function ( resolve, reject ) {
$.ajax( {
type: 'post',
dataType: 'json',
url: rcp_script_options.ajaxurl,
data: {
action: 'rcp_generate_registration_nonce'
},
success: function ( nonceResponse ) {
if ( ! nonceResponse.success ) {
reject( response );
} else {
response.nonce = nonceResponse.data;
// Replace the nonce field with the new value.
form.find( 'input[name="rcp_register_nonce"]' ).val( response.nonce );
resolve( response );
}
}
} );
} );
}
/**
* Step 5: Submit the registration form.
*
* @param {*|jQuery|HTMLElement} form
* @param {object} response
*
* @since 3.2
*/
function rcp_submit_registration_form( form, response ) {
rcp_processing = true;
// Submit form.
form.submit();
}
/**
* Handle registration errors
*
* - Resets the submit button value
* - Adds error messages before the submit button
* - Resets the nonce
* - Unblocks the form
* - Sets the `rcp_processing` var to `false` to indicate processing is over
*
* @param {object} response
* @param {*|jQuery|HTMLElement} form
*
* @since 3.2
*/
function rcp_handle_registration_errors( response, form ) {
let $ = jQuery;
if ( 'undefined' === typeof form ) {
form = $( '#rcp_registration_form' );
}
if ( 'undefined' === typeof response.errors ) {
response.errors = '<div class="rcp_message error" role="list"><p class="rcp_error" role="listitem">' + rcp_script_options.error_occurred + '</p></div>';
}
form.find( '#rcp_submit' ).val( rcp_script_options.register ).before( response.errors );
form.find( 'input[name="rcp_register_nonce"]' ).val( response.nonce );
form.unblock();
rcp_processing = false;
}
/**
* Returns the selected gateway slug.
*
* @returns {*|jQuery|HTMLElement}
*/
function rcp_get_gateway() {
let gateway;
let $ = jQuery;
if ( $( '#rcp_payment_gateways' ).length > 0 ) {
gateway = $( '#rcp_payment_gateways select option:selected' );
if ( gateway.length < 1 ) {
// Support radio input fields
gateway = $( 'input[name="rcp_gateway"]:checked' );
}
} else {
gateway = $( 'input[name="rcp_gateway"]' );
}
return gateway;
}
/**
* Get registration form state
*
* Returns all data relevant to the current registration, including the selected membership level,
* whether or not it's a free trial, which gateway was selected, gateway data, and auto renew
* checked status.
*
* @returns {{gateway_data: *, membership_level: (jQuery|*), auto_renew: (*|jQuery), discount_code: (jQuery|*), is_free: boolean, lifetime: boolean, gateway: *, level_has_trial: boolean}}
*/
function rcp_get_registration_form_state() {
let $ = jQuery;
let $level = $( '#rcp_subscription_levels .rcp_level:checked' );
if ( ! $level.length ) {
$level = $('#rcp_registration_form').find('input[name=rcp_level]');
}
return {
membership_level: $level.val(),
is_free: $level.attr( 'rel' ) == 0,
lifetime: $level.data( 'duration' ) === 'forever',
level_has_trial: rcp_script_options.trial_levels.indexOf( $level.val() ) !== -1,
discount_code: $( '#rcp_discount_code' ).val(),
gateway: rcp_get_gateway().val(),
gateway_data: rcp_get_gateway(),
auto_renew: $( '#rcp_auto_renew' ).prop( 'checked' )
}
}
/**
* Validate the entire registration state and prepare the registration fields
*
* @param reg_state
* @param event_type
*/
function rcp_validate_registration_state( reg_state, event_type ) {
if ( !reg_state ) {
reg_state = rcp_get_registration_form_state();
}
let $ = jQuery;
let form = $( '#rcp_registration_form' );
form.block( {
message: rcp_script_options.pleasewait,
css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
} );
let data = form.serialize() +
'&action=rcp_validate_registration_state' +
'&rcp_ajax=true' +
'&rcp_level=' + reg_state.membership_level +
'&lifetime=' + reg_state.lifetime +
'&level_has_trial=' + reg_state.level_has_trial +
'&is_free=' + reg_state.is_free +
'&discount_code=' + reg_state.discount_code +
'&rcp_gateway=' + reg_state.gateway +
'&rcp_auto_renew=' + ( true === reg_state.auto_renew ? true : '' ) +
'&event_type=' + event_type +
'&registration_type=' + $( '#rcp-registration-type' ).val() +
'&membership_id=' + $( '#rcp-membership-id' ).val() +
'&rcp_registration_payment_id=' + $( '#rcp-payment-id' ).val();
$.ajax( {
type: 'post',
dataType: 'json',
url: rcp_script_options.ajaxurl,
data: data,
success: function ( response ) {
if ( response.success ) {
// Only refresh the gateway fields if we need to.
if ( ! $( '.rcp_gateway_' + response.data.gateway + '_fields' ).length || ! response.data.show_gateway_fields ) {
$( '#rcp_gateway_extra_fields' ).remove();
if ( true == response.data.show_gateway_fields && response.data.gateway_fields ) {
if ( $( '.rcp_gateway_fields' ).length ) {
$( '<div class="rcp_gateway_' + response.data.gateway + '_fields" id="rcp_gateway_extra_fields">' + response.data.gateway_fields + '</div>' ).insertAfter( '.rcp_gateway_fields' );
} else {
// Pre 2.1 template files
$( '<div class="rcp_gateway_' + response.data.gateway + '_fields" id="rcp_gateway_extra_fields">' + response.data.gateway_fields + '</div>' ).insertAfter( '.rcp_gateways_fieldset' );
}
$( 'body' ).trigger( 'rcp_gateway_loaded', response.data.gateway );
}
}
rcp_prepare_registration_fields( response.data );
} else {
console.log( response );
}
$( '#rcp_registration_form' ).unblock();
}
} );
}
/**
* Show/hide fields according to the arguments.
*
* @param args
*/
function rcp_prepare_registration_fields( args ) {
let $ = jQuery;
// Show recurring checkbox if it's available. Otherwise hide and uncheck it.
if ( args.recurring_available ) {
$( '#rcp_auto_renew_wrap' ).show();
} else {
$( '#rcp_auto_renew_wrap' ).hide();
$( '#rcp_auto_renew_wrap input' ).prop( 'checked', false );
}
// If this is an eligible free trial, auto renew needs to be forced on and hidden.
if ( args.level_has_trial && args.trial_eligible ) {
$( '#rcp_auto_renew_wrap' ).hide();
$( '#rcp_auto_renew_wrap input' ).prop( 'checked', true );
}
// Should the gateway selection be shown?
if ( args.initial_total > 0.00 || args.recurring_total > 0.00 ) {
$( '.rcp_gateway_fields' ).show();
} else {
$( '.rcp_gateway_fields' ).hide();
}
// Should the gateway fields be shown?
if ( args.show_gateway_fields ) {
$( '#rcp_gateway_extra_fields' ).show();
} else {
$( '#rcp_gateway_extra_fields' ).remove();
}
// Show discount code validity.
$( '.rcp_discount_amount' ).remove();
$( '.rcp_discount_valid, .rcp_discount_invalid' ).hide();
if ( args.discount_code ) {
if ( args.discount_valid ) {
// Discount code is valid.
$( '.rcp_discount_valid' ).show();
$( '#rcp_discount_code_wrap label' ).append( '<span class="rcp_discount_amount"> - ' + args.discount_amount + '</span>' );
if ( args.full_discount ) {
$( '.rcp_gateway_fields' ).addClass( 'rcp_discounted_100' );
} else {
$( '.rcp_gateway_fields' ).removeClass( 'rcp_discounted_100' );
}
} else {
// Discount code is invalid.
$( '.rcp_discount_invalid' ).show();
$( '.rcp_gateway_fields' ).removeClass( 'rcp_discounted_100' );
}
let discount_data = {
valid: args.discount_valid,
full: args.full_discount,
amount: args.discount_amount
};
$( 'body' ).trigger( 'rcp_discount_applied', [discount_data] );
}
// Load the total details.
$( '.rcp_registration_total' ).html( args.total_details_html );
}
/**
* Enables the submit button when a successful
* reCAPTCHA response is triggered.
*
* This function is referenced via the data-callback
* attribute on the #rcp_recaptcha element.
*/
function rcp_validate_recaptcha(response) {
jQuery('#rcp_registration_form #rcp_submit').prop('disabled', false);
}
/************* Deprecated Functions Below */
var rcp_validating_discount = false;
var rcp_validating_gateway = false;
var rcp_validating_level = false;
var rcp_calculating_total = false;
/**
* @deprecated In favour of `rcp_validate_registration_state()`
* @see rcp_validate_registration_state()
*
* @param validate_gateways
*/
function rcp_validate_form( validate_gateways ) {
rcp_validate_registration_state();
}
/**
* @deprecated In favour of `rcp_validate_registration_state()`
* @see rcp_validate_registration_state()
*/
function rcp_validate_subscription_level() {
if ( rcp_validating_level ) {
return;
}
rcp_validating_level = true;
rcp_validate_registration_state();
rcp_validating_level = false;
}
/**
* @deprecated In favour of `rcp_validate_registration_state()`
* @see rcp_validate_registration_state()
*/
function rcp_validate_gateways() {
if ( rcp_validating_gateway ) {
return;
}
rcp_validating_gateway = true;
rcp_validate_registration_state();
rcp_validating_gateway = false;
}
/**
* @deprecated In favour of `rcp_validate_registration_state()`
* @see rcp_validate_registration_state()
*/
function rcp_validate_discount() {
if ( rcp_validating_discount ) {
return;
}
rcp_validating_discount = true;
rcp_validate_registration_state();
rcp_validating_discount = false;
}
/**
* @deprecated In favour of `rcp_validate_registration_state()`
* @see rcp_validate_registration_state()
*/
function rcp_calc_total() {
if ( rcp_calculating_total ) {
return;
}
rcp_calculating_total = true;
rcp_validate_registration_state();
rcp_calculating_total = false;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,57 @@
jQuery(document).ready(function($) {
// Dismissible notice hook in
$( document ).on( 'click', '.rcp-plugin-migration-notice .notice-dismiss', function() {
$.ajax({
url: ajaxurl,
method: 'POST',
data: {
action: 'rcp_ajax_dismissed_notice_handler',
name: 'rcp-plugin-migration-notice',
rcp_nonce: rcp_admin_notices_vars.rcp_dismissed_nonce
},
success: function ( response ) {
console.log( response );
},
error: function ( error ) {
console.log( error );
}
});
});
$( document ).on( 'click', '.restrict-content-upgrade-notice .notice-dismiss', function() {
$.ajax({
url: ajaxurl,
method: 'POST',
data: {
action: 'rcp_ajax_dismissed_notice_handler',
name: 'restrict-content-upgrade-notice',
rcp_nonce: rcp_admin_notices_vars.rcp_dismissed_nonce
},
success: function ( response ) {
console.log( response );
},
error: function ( error ) {
console.log( error );
}
});
});
$( document ).on( 'click', '.restrict-content-bfcm-notice .notice-dismiss', function() {
$.ajax({
url: ajaxurl,
method: 'POST',
data: {
action: 'rcp_ajax_dismissed_notice_handler',
name: 'restrict-content-bfcm-notice',
rcp_nonce: rcp_admin_notices_vars.rcp_dismissed_nonce
},
success: function ( response ) {
console.log( response );
},
error: function ( error ) {
console.log( error );
}
});
});
});

View File

@@ -0,0 +1,48 @@
'use strict';
jQuery(document).ready(function($) {
$( '.stripe-form-table' ).css( 'display', 'none' );
$( '.rcp_stripe_marketing_container' ).css( 'display', 'table' );
$( '#restrict-content-stripe-marketing-submit' ).on( 'click', function( event ) {
event.preventDefault();
$.ajax({
data: {
action: 'rcp_add_to_stripe_mailing_list',
stripe_mailing_list_email: $( '#stripe_mailing_list' ).val(),
restrict_content_shown_stripe_marketing: $( '#restrict_content_shown_stripe_marketing' ).val()
},
type: 'POST',
url: rcp_admin_stripe_marketing.ajax_url,
success: function( response ) {
$( '#rcp_stripe_marketing_container_inner_container').css( 'display', 'none');
$( '.stripe-form-table' ).css( 'display', 'block' );
},
error: function( response ) {
//TODO Add error handling
console.error( response );
}
});
});
$( '#skip_stripe_marketing_setup' ).on( 'click', function( event ) {
event.preventDefault();
$.ajax({
data: {
action: 'rcp_add_to_stripe_mailing_list',
stripe_mailing_list_email: $( '#stripe_mailing_list' ).val(),
restrict_content_shown_stripe_marketing: $( '#restrict_content_shown_stripe_marketing' ).val()
},
type: 'POST',
url: rcp_admin_stripe_marketing.ajax_url,
success: function( response ) {
$( '#rcp_stripe_marketing_container_inner_container').css( 'display', 'none');
$( '.stripe-form-table' ).css( 'display', 'block' );
},
error: function( response ) {
//TODO Add error handling
console.error( response );
}
});
});
});