Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wpforms-.../assets/js/frontend
File: wpforms.js
} else if ( 'prev' === action ) {
[2000] Fix | Delete
nextPage -= 1;
[2001] Fix | Delete
}
[2002] Fix | Delete
[2003] Fix | Delete
const event = WPFormsUtils.triggerEvent( $this, 'wpformsBeforePageChange', [ nextPage, $form, action ] );
[2004] Fix | Delete
[2005] Fix | Delete
// Allow callbacks on `wpformsBeforePageChange` to cancel page changing by triggering `event.preventDefault()`.
[2006] Fix | Delete
if ( event.isDefaultPrevented() ) {
[2007] Fix | Delete
return;
[2008] Fix | Delete
}
[2009] Fix | Delete
[2010] Fix | Delete
$form.find( '.wpforms-page' ).hide();
[2011] Fix | Delete
[2012] Fix | Delete
const $destinationPage = $form.find( '.wpforms-page-' + nextPage );
[2013] Fix | Delete
$destinationPage.show();
[2014] Fix | Delete
[2015] Fix | Delete
app.toggleReCaptchaAndSubmitDisplay( $form, action, $destinationPage );
[2016] Fix | Delete
app.checkTurnstileVisibility( $form );
[2017] Fix | Delete
[2018] Fix | Delete
const pageScroll = app.getPageScroll( $form );
[2019] Fix | Delete
if ( pageScroll ) {
[2020] Fix | Delete
app.animateScrollTop( $form.offset().top - pageScroll, 750, null );
[2021] Fix | Delete
}
[2022] Fix | Delete
[2023] Fix | Delete
$this.trigger( 'wpformsPageChange', [ nextPage, $form, action ] );
[2024] Fix | Delete
[2025] Fix | Delete
app.manipulateIndicator( nextPage, $form );
[2026] Fix | Delete
},
[2027] Fix | Delete
[2028] Fix | Delete
/**
[2029] Fix | Delete
* Toggle the reCaptcha and submit container display.
[2030] Fix | Delete
*
[2031] Fix | Delete
* @since 1.7.6
[2032] Fix | Delete
*
[2033] Fix | Delete
* @param {jQuery} $form WPForms element object.
[2034] Fix | Delete
* @param {string} action The navigation action.
[2035] Fix | Delete
* @param {jQuery} $destinationPage Destination Page element object.
[2036] Fix | Delete
*/
[2037] Fix | Delete
toggleReCaptchaAndSubmitDisplay( $form, action, $destinationPage ) {
[2038] Fix | Delete
const $submit = $form.find( '.wpforms-submit-container' ),
[2039] Fix | Delete
$reCAPTCHA = $form.find( '.wpforms-recaptcha-container' );
[2040] Fix | Delete
[2041] Fix | Delete
if ( 'next' === action && $destinationPage.hasClass( 'last' ) ) {
[2042] Fix | Delete
$reCAPTCHA.show();
[2043] Fix | Delete
$submit.show();
[2044] Fix | Delete
} else if ( 'prev' === action ) {
[2045] Fix | Delete
$reCAPTCHA.hide();
[2046] Fix | Delete
$submit.hide();
[2047] Fix | Delete
}
[2048] Fix | Delete
},
[2049] Fix | Delete
[2050] Fix | Delete
/**
[2051] Fix | Delete
* Update Turnstile container class if invisible mode is chosen.
[2052] Fix | Delete
*
[2053] Fix | Delete
* @since 1.8.9.6
[2054] Fix | Delete
*
[2055] Fix | Delete
* @param {jQuery} $form WPForms element object.
[2056] Fix | Delete
*/
[2057] Fix | Delete
checkTurnstileVisibility( $form ) {
[2058] Fix | Delete
const $turnstile = $form.find( '.wpforms-recaptcha-container' );
[2059] Fix | Delete
[2060] Fix | Delete
// Check if Turnstile captcha is enabled.
[2061] Fix | Delete
if ( ! $turnstile.hasClass( 'wpforms-is-turnstile' ) ) {
[2062] Fix | Delete
return;
[2063] Fix | Delete
}
[2064] Fix | Delete
[2065] Fix | Delete
const iframeWrapperHeight = $turnstile.find( '.g-recaptcha' ).height();
[2066] Fix | Delete
[2067] Fix | Delete
parseInt( iframeWrapperHeight, 10 ) === 0
[2068] Fix | Delete
? $turnstile.addClass( 'wpforms-is-turnstile-invisible' )
[2069] Fix | Delete
: $turnstile.removeClass( 'wpforms-is-turnstile-invisible' );
[2070] Fix | Delete
},
[2071] Fix | Delete
[2072] Fix | Delete
/**
[2073] Fix | Delete
* Get the page scroll position.
[2074] Fix | Delete
*
[2075] Fix | Delete
* @since 1.7.6
[2076] Fix | Delete
*
[2077] Fix | Delete
* @param {jQuery} $form WPForms element object.
[2078] Fix | Delete
* @return {number|boolean} Returns a number if position to page scroll is found.
[2079] Fix | Delete
* Otherwise, return `false` if position isn't found.
[2080] Fix | Delete
*/
[2081] Fix | Delete
getPageScroll( $form ) {
[2082] Fix | Delete
if ( false === window.wpforms_pageScroll ) {
[2083] Fix | Delete
return false;
[2084] Fix | Delete
}
[2085] Fix | Delete
[2086] Fix | Delete
if ( ! app.empty( window.wpform_pageScroll ) ) {
[2087] Fix | Delete
return window.wpform_pageScroll;
[2088] Fix | Delete
}
[2089] Fix | Delete
[2090] Fix | Delete
// Page scroll.
[2091] Fix | Delete
return $form.find( '.wpforms-page-indicator' ).data( 'scroll' ) !== 0 ? 75 : false;
[2092] Fix | Delete
},
[2093] Fix | Delete
[2094] Fix | Delete
/**
[2095] Fix | Delete
* Manipulate the indicator.
[2096] Fix | Delete
*
[2097] Fix | Delete
* @since 1.7.6
[2098] Fix | Delete
*
[2099] Fix | Delete
* @param {number} nextPage The next's / destination's page number.
[2100] Fix | Delete
* @param {jQuery} $form WPForms element object.
[2101] Fix | Delete
*/
[2102] Fix | Delete
manipulateIndicator( nextPage, $form ) {
[2103] Fix | Delete
const $indicator = $form.find( '.wpforms-page-indicator' );
[2104] Fix | Delete
[2105] Fix | Delete
if ( ! $indicator ) {
[2106] Fix | Delete
return;
[2107] Fix | Delete
}
[2108] Fix | Delete
[2109] Fix | Delete
const theme = $indicator.data( 'indicator' );
[2110] Fix | Delete
[2111] Fix | Delete
if ( 'connector' === theme || 'circles' === theme ) {
[2112] Fix | Delete
app.manipulateConnectorAndCirclesIndicator( $indicator, theme, nextPage );
[2113] Fix | Delete
return;
[2114] Fix | Delete
}
[2115] Fix | Delete
[2116] Fix | Delete
if ( 'progress' === theme ) {
[2117] Fix | Delete
app.manipulateProgressIndicator( $indicator, $form, nextPage );
[2118] Fix | Delete
}
[2119] Fix | Delete
},
[2120] Fix | Delete
[2121] Fix | Delete
/**
[2122] Fix | Delete
* Manipulate 'circles' or 'connector' theme indicator.
[2123] Fix | Delete
*
[2124] Fix | Delete
* @since 1.7.6
[2125] Fix | Delete
*
[2126] Fix | Delete
* @param {jQuery} $indicator The indicator jQuery element object.
[2127] Fix | Delete
* @param {string} theme Indicator theme.
[2128] Fix | Delete
* @param {number} nextPage The next's / destination's page number.
[2129] Fix | Delete
*/
[2130] Fix | Delete
manipulateConnectorAndCirclesIndicator( $indicator, theme, nextPage ) {
[2131] Fix | Delete
const color = $indicator.data( 'indicator-color' );
[2132] Fix | Delete
[2133] Fix | Delete
$indicator.find( '.wpforms-page-indicator-page' ).removeClass( 'active' );
[2134] Fix | Delete
$indicator.find( '.wpforms-page-indicator-page-' + nextPage ).addClass( 'active' );
[2135] Fix | Delete
$indicator.find( '.wpforms-page-indicator-page-number' ).removeAttr( 'style' );
[2136] Fix | Delete
$indicator.find( '.active .wpforms-page-indicator-page-number' ).css( 'background-color', color );
[2137] Fix | Delete
[2138] Fix | Delete
if ( 'connector' === theme ) {
[2139] Fix | Delete
$indicator.find( '.wpforms-page-indicator-page-triangle' ).removeAttr( 'style' );
[2140] Fix | Delete
$indicator.find( '.active .wpforms-page-indicator-page-triangle' ).css( 'border-top-color', color );
[2141] Fix | Delete
}
[2142] Fix | Delete
},
[2143] Fix | Delete
[2144] Fix | Delete
/**
[2145] Fix | Delete
* Manipulate 'progress' theme indicator.
[2146] Fix | Delete
*
[2147] Fix | Delete
* @since 1.7.6
[2148] Fix | Delete
*
[2149] Fix | Delete
* @param {jQuery} $indicator The indicator jQuery element object.
[2150] Fix | Delete
* @param {jQuery} $form WPForms element object.
[2151] Fix | Delete
* @param {number} nextPage The next's / destination's page number.
[2152] Fix | Delete
*/
[2153] Fix | Delete
manipulateProgressIndicator( $indicator, $form, nextPage ) {
[2154] Fix | Delete
const $pageTitle = $indicator.find( '.wpforms-page-indicator-page-title' ),
[2155] Fix | Delete
$pageSep = $indicator.find( '.wpforms-page-indicator-page-title-sep' ),
[2156] Fix | Delete
totalPages = $form.find( '.wpforms-page' ).length,
[2157] Fix | Delete
width = ( nextPage / totalPages ) * 100;
[2158] Fix | Delete
[2159] Fix | Delete
$indicator.find( '.wpforms-page-indicator-page-progress' ).css( 'width', width + '%' );
[2160] Fix | Delete
$indicator.find( '.wpforms-page-indicator-steps-current' ).text( nextPage );
[2161] Fix | Delete
[2162] Fix | Delete
if ( $pageTitle.data( 'page-' + nextPage + '-title' ) ) {
[2163] Fix | Delete
$pageTitle.css( 'display', 'inline' ).text( $pageTitle.data( 'page-' + nextPage + '-title' ) );
[2164] Fix | Delete
$pageSep.css( 'display', 'inline' );
[2165] Fix | Delete
} else {
[2166] Fix | Delete
$pageTitle.css( 'display', 'none' );
[2167] Fix | Delete
$pageSep.css( 'display', 'none' );
[2168] Fix | Delete
}
[2169] Fix | Delete
},
[2170] Fix | Delete
[2171] Fix | Delete
/**
[2172] Fix | Delete
* OptinMonster compatibility.
[2173] Fix | Delete
*
[2174] Fix | Delete
* Re-initialize after OptinMonster loads to accommodate changes that
[2175] Fix | Delete
* have occurred to the DOM.
[2176] Fix | Delete
*
[2177] Fix | Delete
* @since 1.5.0
[2178] Fix | Delete
*/
[2179] Fix | Delete
bindOptinMonster() {
[2180] Fix | Delete
// OM v5.
[2181] Fix | Delete
document.addEventListener( 'om.Campaign.load', function( event ) {
[2182] Fix | Delete
app.ready();
[2183] Fix | Delete
app.optinMonsterRecaptchaReset( event.detail.Campaign.data.id );
[2184] Fix | Delete
} );
[2185] Fix | Delete
[2186] Fix | Delete
// OM Legacy.
[2187] Fix | Delete
$( document ).on( 'OptinMonsterOnShow', function( event, data, object ) {
[2188] Fix | Delete
app.ready();
[2189] Fix | Delete
app.optinMonsterRecaptchaReset( data.optin );
[2190] Fix | Delete
} );
[2191] Fix | Delete
},
[2192] Fix | Delete
[2193] Fix | Delete
/**
[2194] Fix | Delete
* Reset/recreate hCaptcha/reCAPTCHA v2 inside OptinMonster.
[2195] Fix | Delete
*
[2196] Fix | Delete
* @since 1.5.0
[2197] Fix | Delete
* @since 1.6.4 Added hCaptcha support.
[2198] Fix | Delete
*
[2199] Fix | Delete
* @param {string} optinId OptinMonster ID.
[2200] Fix | Delete
*/
[2201] Fix | Delete
optinMonsterRecaptchaReset( optinId ) {
[2202] Fix | Delete
const $form = $( '#om-' + optinId ).find( '.wpforms-form' ),
[2203] Fix | Delete
$captchaContainer = $form.find( '.wpforms-recaptcha-container' ),
[2204] Fix | Delete
$captcha = $form.find( '.g-recaptcha' );
[2205] Fix | Delete
[2206] Fix | Delete
if ( $form.length && $captcha.length ) {
[2207] Fix | Delete
const captchaSiteKey = $captcha.attr( 'data-sitekey' ),
[2208] Fix | Delete
captchaID = 'recaptcha-' + Date.now(),
[2209] Fix | Delete
apiVar = $captchaContainer.hasClass( 'wpforms-is-hcaptcha' ) ? hcaptcha : grecaptcha;
[2210] Fix | Delete
[2211] Fix | Delete
$captcha.remove();
[2212] Fix | Delete
$captchaContainer.prepend( '<div class="g-recaptcha" id="' + captchaID + '" data-sitekey="' + captchaSiteKey + '"></div>' );
[2213] Fix | Delete
[2214] Fix | Delete
apiVar.render(
[2215] Fix | Delete
captchaID,
[2216] Fix | Delete
{
[2217] Fix | Delete
sitekey: captchaSiteKey,
[2218] Fix | Delete
callback() {
[2219] Fix | Delete
wpformsRecaptchaCallback( $( '#' + captchaID ) );
[2220] Fix | Delete
},
[2221] Fix | Delete
}
[2222] Fix | Delete
);
[2223] Fix | Delete
}
[2224] Fix | Delete
},
[2225] Fix | Delete
[2226] Fix | Delete
//--------------------------------------------------------------------//
[2227] Fix | Delete
// Other functions.
[2228] Fix | Delete
//--------------------------------------------------------------------//
[2229] Fix | Delete
[2230] Fix | Delete
/**
[2231] Fix | Delete
* Payments: Run amount calculation and update the Total field value.
[2232] Fix | Delete
*
[2233] Fix | Delete
* @since 1.2.3
[2234] Fix | Delete
* @since 1.5.1 Added support for payment-checkbox field.
[2235] Fix | Delete
*
[2236] Fix | Delete
* @param {Object} el jQuery DOM object.
[2237] Fix | Delete
* @param {boolean} validate Whether to validate or not.
[2238] Fix | Delete
*/
[2239] Fix | Delete
amountTotal( el, validate ) {
[2240] Fix | Delete
validate = validate || false;
[2241] Fix | Delete
[2242] Fix | Delete
const $form = $( el ).closest( '.wpforms-form' ),
[2243] Fix | Delete
total = app.amountTotalCalc( $form ),
[2244] Fix | Delete
totalFormattedSymbol = app.amountFormatSymbol( total );
[2245] Fix | Delete
[2246] Fix | Delete
$form.find( '.wpforms-payment-total' ).each( function() {
[2247] Fix | Delete
if ( 'hidden' === $( this ).attr( 'type' ) || 'text' === $( this ).attr( 'type' ) ) {
[2248] Fix | Delete
$( this ).val( totalFormattedSymbol );
[2249] Fix | Delete
if ( 'text' === $( this ).attr( 'type' ) && validate && $form.data( 'validator' ) ) {
[2250] Fix | Delete
$( this ).valid();
[2251] Fix | Delete
}
[2252] Fix | Delete
} else {
[2253] Fix | Delete
$( this ).text( totalFormattedSymbol );
[2254] Fix | Delete
}
[2255] Fix | Delete
} );
[2256] Fix | Delete
[2257] Fix | Delete
app.updateOrderSummaryItems( $form, $( el ), totalFormattedSymbol );
[2258] Fix | Delete
},
[2259] Fix | Delete
[2260] Fix | Delete
/**
[2261] Fix | Delete
* Update summary table items visibility and total amount.
[2262] Fix | Delete
*
[2263] Fix | Delete
* @since 1.8.7
[2264] Fix | Delete
*
[2265] Fix | Delete
* @param {jQuery} $form Form object.
[2266] Fix | Delete
* @param {jQuery} $paymentField Payment field object.
[2267] Fix | Delete
* @param {string} total Formatted form total.
[2268] Fix | Delete
*/
[2269] Fix | Delete
updateOrderSummaryItems( $form, $paymentField, total ) {
[2270] Fix | Delete
$form.find( '.wpforms-order-summary-preview' ).each( function() {
[2271] Fix | Delete
const $summary = $( this );
[2272] Fix | Delete
[2273] Fix | Delete
if ( total !== '' ) {
[2274] Fix | Delete
$summary.find( '.wpforms-order-summary-preview-total .wpforms-order-summary-item-price' ).text( total );
[2275] Fix | Delete
}
[2276] Fix | Delete
[2277] Fix | Delete
if ( $paymentField.hasClass( 'wpforms-payment-total' ) ) {
[2278] Fix | Delete
// Update each payment field price in case it was changed while total calculation.
[2279] Fix | Delete
$form.find( '.wpforms-payment-price' ).each( function() {
[2280] Fix | Delete
app.updateOrderSummaryItem( $( this ), $summary );
[2281] Fix | Delete
} );
[2282] Fix | Delete
[2283] Fix | Delete
return;
[2284] Fix | Delete
}
[2285] Fix | Delete
[2286] Fix | Delete
app.updateOrderSummaryItem( $paymentField, $summary );
[2287] Fix | Delete
} );
[2288] Fix | Delete
},
[2289] Fix | Delete
[2290] Fix | Delete
/**
[2291] Fix | Delete
* Update summary table item visibility and amount.
[2292] Fix | Delete
*
[2293] Fix | Delete
* @since 1.8.7
[2294] Fix | Delete
*
[2295] Fix | Delete
* @param {jQuery} $paymentField Payment field object.
[2296] Fix | Delete
* @param {jQuery} $summary Summary object.
[2297] Fix | Delete
*/
[2298] Fix | Delete
// eslint-disable-next-line complexity
[2299] Fix | Delete
updateOrderSummaryItem( $paymentField, $summary ) {
[2300] Fix | Delete
if ( ! $paymentField.hasClass( 'wpforms-payment-price' ) ) {
[2301] Fix | Delete
return;
[2302] Fix | Delete
}
[2303] Fix | Delete
[2304] Fix | Delete
const $field = $paymentField.closest( '.wpforms-field' ),
[2305] Fix | Delete
fieldId = $field.data( 'field-id' ),
[2306] Fix | Delete
type = $paymentField.prop( 'type' );
[2307] Fix | Delete
[2308] Fix | Delete
if ( type === 'checkbox' ) {
[2309] Fix | Delete
$summary.find( `tr[data-field="${ fieldId }"][data-choice="${ $paymentField.val() }"]` ).toggle( $paymentField.is( ':checked' ) );
[2310] Fix | Delete
} else if ( type === 'radio' || type === 'select-one' ) {
[2311] Fix | Delete
// Show only selected items.
[2312] Fix | Delete
$summary.find( `tr[data-field="${ fieldId }"]` ).each( function() {
[2313] Fix | Delete
const choiceID = $( this ).data( 'choice' );
[2314] Fix | Delete
[2315] Fix | Delete
if ( type === 'radio' ) {
[2316] Fix | Delete
$( this ).toggle( $field.find( `input[value="${ choiceID }"]` ).is( ':checked' ) );
[2317] Fix | Delete
} else {
[2318] Fix | Delete
$( this ).toggle( choiceID === parseInt( $field.find( 'select' ).val(), 10 ) );
[2319] Fix | Delete
}
[2320] Fix | Delete
} );
[2321] Fix | Delete
} else {
[2322] Fix | Delete
const $item = $summary.find( `tr[data-field="${ fieldId }"]` ),
[2323] Fix | Delete
amount = $paymentField.val();
[2324] Fix | Delete
[2325] Fix | Delete
$item.find( '.wpforms-order-summary-item-price' ).text( app.amountFormatSymbol( amount ) );
[2326] Fix | Delete
$item.toggle( $field.css( 'display' ) === 'block' );
[2327] Fix | Delete
}
[2328] Fix | Delete
[2329] Fix | Delete
if ( ! $field.hasClass( 'wpforms-payment-quantities-enabled' ) ) {
[2330] Fix | Delete
app.updateSummaryPriceWidth( $summary );
[2331] Fix | Delete
app.toggleSummaryPlaceholder( $summary );
[2332] Fix | Delete
[2333] Fix | Delete
return;
[2334] Fix | Delete
}
[2335] Fix | Delete
[2336] Fix | Delete
app.updateOrderSummaryItemQuantity( $paymentField );
[2337] Fix | Delete
},
[2338] Fix | Delete
[2339] Fix | Delete
/**
[2340] Fix | Delete
* Update summary table item quantity and price.
[2341] Fix | Delete
*
[2342] Fix | Delete
* @since 1.8.7
[2343] Fix | Delete
*
[2344] Fix | Delete
* @param {jQuery} $input Payment input object.
[2345] Fix | Delete
*/
[2346] Fix | Delete
updateOrderSummaryItemQuantity( $input ) {
[2347] Fix | Delete
const $field = $input.closest( '.wpforms-field' ),
[2348] Fix | Delete
$paymentField = $field.find( 'input.wpforms-payment-price, select.wpforms-payment-price' ),
[2349] Fix | Delete
$form = $input.closest( '.wpforms-form' ),
[2350] Fix | Delete
fieldId = $field.data( 'field-id' ),
[2351] Fix | Delete
quantity = app.getPaymentFieldQuantity( $paymentField ),
[2352] Fix | Delete
amount = app.getPaymentFieldAmount( $paymentField ),
[2353] Fix | Delete
type = $paymentField.prop( 'type' );
[2354] Fix | Delete
[2355] Fix | Delete
$form.find( '.wpforms-order-summary-preview' ).each( function() {
[2356] Fix | Delete
const $summary = $( this );
[2357] Fix | Delete
[2358] Fix | Delete
let $item;
[2359] Fix | Delete
[2360] Fix | Delete
if ( type === 'checkbox' || type === 'radio' || type === 'select-one' ) {
[2361] Fix | Delete
const choiceId = $paymentField.val();
[2362] Fix | Delete
[2363] Fix | Delete
$item = $summary.find( `tr[data-field="${ fieldId }"][data-choice="${ choiceId }"]` );
[2364] Fix | Delete
} else {
[2365] Fix | Delete
$item = $summary.find( `tr[data-field="${ fieldId }"]` );
[2366] Fix | Delete
}
[2367] Fix | Delete
[2368] Fix | Delete
$item.toggle( quantity > 0 );
[2369] Fix | Delete
[2370] Fix | Delete
// Update field quantity and amount.
[2371] Fix | Delete
$item.find( '.wpforms-order-summary-item-quantity' ).text( quantity );
[2372] Fix | Delete
$item.find( '.wpforms-order-summary-item-price' ).text( app.amountFormatSymbol( amount * quantity ) );
[2373] Fix | Delete
[2374] Fix | Delete
app.updateSummaryPriceWidth( $summary );
[2375] Fix | Delete
app.toggleSummaryPlaceholder( $summary );
[2376] Fix | Delete
} );
[2377] Fix | Delete
},
[2378] Fix | Delete
[2379] Fix | Delete
/**
[2380] Fix | Delete
* Update summary price column width.
[2381] Fix | Delete
*
[2382] Fix | Delete
* @since 1.8.7
[2383] Fix | Delete
*
[2384] Fix | Delete
* @param {jQuery} $summary Summary table object.
[2385] Fix | Delete
*/
[2386] Fix | Delete
updateSummaryPriceWidth( $summary ) {
[2387] Fix | Delete
const priceColumnWidth = Math.max( $summary.find( '.wpforms-order-summary-preview-coupon-total .wpforms-order-summary-item-price' ).text().length, $summary.find( '.wpforms-order-summary-preview-total .wpforms-order-summary-item-price' ).text().length + 3 );
[2388] Fix | Delete
[2389] Fix | Delete
$summary.find( '.wpforms-order-summary-item-price' ).css( 'width', `${ priceColumnWidth }ch` );
[2390] Fix | Delete
},
[2391] Fix | Delete
[2392] Fix | Delete
/**
[2393] Fix | Delete
* Update summary placeholder visibility.
[2394] Fix | Delete
*
[2395] Fix | Delete
* @since 1.8.7
[2396] Fix | Delete
*
[2397] Fix | Delete
* @param {jQuery} $summary Summary table object.
[2398] Fix | Delete
*/
[2399] Fix | Delete
toggleSummaryPlaceholder( $summary ) {
[2400] Fix | Delete
const $placeholder = $summary.find( '.wpforms-order-summary-placeholder' );
[2401] Fix | Delete
[2402] Fix | Delete
let showPlaceholder = true;
[2403] Fix | Delete
[2404] Fix | Delete
$summary.find( '.wpforms-order-summary-field' ).each( function() {
[2405] Fix | Delete
if ( $( this ).css( 'display' ) !== 'none' ) {
[2406] Fix | Delete
showPlaceholder = false;
[2407] Fix | Delete
[2408] Fix | Delete
return false;
[2409] Fix | Delete
}
[2410] Fix | Delete
} );
[2411] Fix | Delete
[2412] Fix | Delete
$placeholder.toggle( showPlaceholder );
[2413] Fix | Delete
},
[2414] Fix | Delete
[2415] Fix | Delete
/**
[2416] Fix | Delete
* Payments: Calculate a total amount without formatting.
[2417] Fix | Delete
*
[2418] Fix | Delete
* @since 1.6.7.1
[2419] Fix | Delete
*
[2420] Fix | Delete
* @param {jQuery} $form Form element.
[2421] Fix | Delete
*
[2422] Fix | Delete
* @return {number} Total amount.
[2423] Fix | Delete
*/
[2424] Fix | Delete
amountTotalCalc( $form ) {
[2425] Fix | Delete
let total = 0;
[2426] Fix | Delete
[2427] Fix | Delete
$( '.wpforms-payment-price', $form ).each( function() {
[2428] Fix | Delete
const $this = $( this );
[2429] Fix | Delete
[2430] Fix | Delete
if ( $this.closest( '.wpforms-field-payment-single' ).hasClass( 'wpforms-conditional-hide' ) ) {
[2431] Fix | Delete
return;
[2432] Fix | Delete
}
[2433] Fix | Delete
[2434] Fix | Delete
const amount = app.getPaymentFieldAmount( $this );
[2435] Fix | Delete
[2436] Fix | Delete
if ( amount ) {
[2437] Fix | Delete
total = Number( total ) + ( amount * app.getPaymentFieldQuantity( $this ) );
[2438] Fix | Delete
}
[2439] Fix | Delete
} );
[2440] Fix | Delete
[2441] Fix | Delete
const $document = $( document );
[2442] Fix | Delete
[2443] Fix | Delete
/**
[2444] Fix | Delete
* Trigger whe the total amount has been calculated.
[2445] Fix | Delete
*
[2446] Fix | Delete
* Allow addons to modify the total amount.
[2447] Fix | Delete
*
[2448] Fix | Delete
* @since 1.8.2.2
[2449] Fix | Delete
*
[2450] Fix | Delete
* @param {Object} data Form element and total.
[2451] Fix | Delete
*/
[2452] Fix | Delete
const event = WPFormsUtils.triggerEvent( $document, 'wpformsAmountTotalCalculate', [ $form, total ] );
[2453] Fix | Delete
[2454] Fix | Delete
total = event.result !== undefined && event.result >= 0 ? event.result : total;
[2455] Fix | Delete
[2456] Fix | Delete
/**
[2457] Fix | Delete
* Trigger on the end of the process of calculating the total amount.
[2458] Fix | Delete
*
[2459] Fix | Delete
* @since 1.8.0.2
[2460] Fix | Delete
*
[2461] Fix | Delete
* @param {Object} data Form element and total.
[2462] Fix | Delete
*/
[2463] Fix | Delete
WPFormsUtils.triggerEvent( $document, 'wpformsAmountTotalCalculated', [ $form, total ] );
[2464] Fix | Delete
[2465] Fix | Delete
return total;
[2466] Fix | Delete
},
[2467] Fix | Delete
[2468] Fix | Delete
/**
[2469] Fix | Delete
* Get payment field sanitized amount.
[2470] Fix | Delete
*
[2471] Fix | Delete
* @since 1.8.7
[2472] Fix | Delete
*
[2473] Fix | Delete
* @param {jQuery} $field Field element.
[2474] Fix | Delete
*
[2475] Fix | Delete
* @return {number} Sanitized amount.
[2476] Fix | Delete
*/
[2477] Fix | Delete
// eslint-disable-next-line complexity
[2478] Fix | Delete
getPaymentFieldAmount( $field ) {
[2479] Fix | Delete
const type = $field.attr( 'type' );
[2480] Fix | Delete
[2481] Fix | Delete
if ( type === 'text' || type === 'hidden' ) {
[2482] Fix | Delete
return Number( app.amountSanitize( $field.val() ) );
[2483] Fix | Delete
}
[2484] Fix | Delete
[2485] Fix | Delete
if ( ( type === 'radio' || type === 'checkbox' ) && $field.is( ':checked' ) ) {
[2486] Fix | Delete
return Number( app.amountSanitize( $field.data( 'amount' ) ) );
[2487] Fix | Delete
}
[2488] Fix | Delete
[2489] Fix | Delete
if ( $field.is( 'select' ) && $field.find( 'option:selected' ).length > 0 && $field.find( 'option:selected' ).data( 'amount' ) ) {
[2490] Fix | Delete
return Number( app.amountSanitize( $field.find( 'option:selected' ).data( 'amount' ) ) );
[2491] Fix | Delete
}
[2492] Fix | Delete
[2493] Fix | Delete
return 0;
[2494] Fix | Delete
},
[2495] Fix | Delete
[2496] Fix | Delete
/**
[2497] Fix | Delete
* Get payment field quantity.
[2498] Fix | Delete
*
[2499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function