Plugin Directory

Changeset 2329508


Ignore:
Timestamp:
06/23/2020 06:02:23 PM (6 years ago)
Author:
transact
Message:

version 4.4.0

Location:
transact
Files:
6 edited
14 copied

Legend:

Unmodified
Added
Removed
  • transact/tags/4.4.0/frontend/assets/transact_post.js

    r2328822 r2329508  
    2424    };
    2525
    26     jQuery(function() {
    27         let nonce_value = getNonceValue();
    28 
    29         if (transact_params.redirect_after_donation) {
    30             custom_redirect = transact_params.redirect_after_donation;
    31         }
    32 
    33         getPremiumContent();
    34 
    35         transactApi.setFrontendUrl(transact_params.purchase_url);
    36         if(transact_params.theme) {
    37             transactApi.setThemeParams({
    38                 bgcolor: transact_params.theme.background_color,
    39                 tcolor: transact_params.theme.text_color
    40             });
    41         }
    42 
    43         if (transact_params.donation == 1) {
    44             getDonationTokenAjaxCall(transact_params.price || 1, nonce_value);
    45         } else {
    46             if(document.getElementById('button_purchase_single')) {
    47                 enabledPurchase = true;
    48                 loadingPurchase = true;
    49 
    50                 jQuery('#button_purchase_single_loading').css('display', 'block');
    51                 jQuery('#button_purchase_single').css('display', 'none');
    52 
    53                 var tokenUrl = transact_params.ajaxurl + 'token/' + transact_params.post_id;
    54                 if(transact_params.affiliate_id) {
    55                     tokenUrl += '/' + transact_params.affiliate_id;
    56                 }
    57                 ajaxGet(tokenUrl)
     26    let nonce_value = getNonceValue();
     27
     28    if (transact_params.redirect_after_donation) {
     29        custom_redirect = transact_params.redirect_after_donation;
     30    }
     31
     32    getPremiumContent(true);
     33
     34    transactApi.setFrontendUrl(transact_params.purchase_url);
     35    if(transact_params.theme) {
     36        transactApi.setThemeParams({
     37            bgcolor: transact_params.theme.background_color,
     38            tcolor: transact_params.theme.text_color
     39        });
     40    }
     41
     42    if (transact_params.donation == 1) {
     43        getDonationTokenAjaxCall(transact_params.price || 1, nonce_value);
     44    } else {
     45        if(document.getElementById('button_purchase_single')) {
     46            enabledPurchase = true;
     47            loadingPurchase = true;
     48
     49            jQuery('#button_purchase_single_loading').css('display', 'block');
     50            jQuery('#button_purchase_single').css('display', 'none');
     51
     52            var tokenUrl = transact_params.ajaxurl + 'token/' + transact_params.post_id;
     53            if(transact_params.affiliate_id) {
     54                tokenUrl += '/' + transact_params.affiliate_id;
     55            }
     56            ajaxGet(tokenUrl)
     57                .done(function(data) {
     58                    loadingPurchase = false;
     59                    jQuery('#button_purchase_single_loading').css('display', 'none');
     60                    jQuery('#button_purchase_single').css('display', 'block');
     61
     62                    // If purchase token loads and subscribe token is not loaded yet, display the subscribe loading spinner
     63                    if (enabledSubscribe && loadingSubscribe) {
     64                        jQuery('#button_purchase_subscription_loading').css('display', 'block');
     65                    }
     66
     67                    purchase_token = data.token;
     68                    //transactApi.setToken(data.token);
     69                })
     70                .fail(function(data) {
     71                    console.warn('Failed to get Transact token');
     72                });
     73
     74        }
     75
     76        // If subscription button is on the site, get subscription token too
     77        if(document.getElementById('button_purchase_subscription')) {
     78            enabledSubscribe = true;
     79            loadingSubscribe = true;
     80
     81            // Only show the subscribe token spinner initially if purchase is disabled, so we don't show two spinners.
     82            if (!enabledPurchase) {
     83                jQuery('#button_purchase_subscription_loading').css('display', 'block');
     84            }
     85            jQuery('#button_purchase_subscription').css('display', 'none');
     86
     87            var subscribeTokenUrl = transact_params.ajaxurl + 'subscription/' + transact_params.post_id;
     88            if(transact_params.affiliate_id) {
     89                subscribeTokenUrl += '/' + transact_params.affiliate_id;
     90            }
     91            ajaxGet(subscribeTokenUrl)
     92                .done(function(data) {
     93                    loadingSubscribe = false;
     94                    jQuery('#button_purchase_subscription_loading').css('display', 'none');
     95                    jQuery('#button_purchase_subscription').css('display', 'block');
     96
     97                    subscribe_token = data.token;
     98                })
     99                .fail(function(data) {
     100                    console.warn('Failed to get Transact token');
     101                });
     102
     103        }
     104    }
     105
     106    transactApi.getCurrentPromo('en', function(arg, result) {
     107        let promoBlock = jQuery('#transact_promo');
     108
     109        if (promoBlock && promoBlock.length) {
     110            promoBlock.css('color', transact_params.theme.background_color);
     111            // this text comes from transact.io who we trust
     112            // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
     113            promoBlock.html(result.text);
     114        }
     115    });
     116
     117    function getPremiumContent(synchronous) {
     118        let comment_form_wrapper = jQuery('#transact-comments');
     119
     120        var premiumUrl = transact_params.ajaxurl + 'premium/' + transact_params.post_id;
     121        let result = ajaxGet(premiumUrl, synchronous);
     122
     123        if(synchronous) {
     124            appendPremiumContent(result);
     125        } else {
     126            result
     127                .fail(function(data) {
     128                    console.error('Could not load premium state', data);
     129                })
     130                .done(data => {
     131                    appendPremiumContent(data);
     132                });
     133        }
     134
     135        function appendPremiumContent(data) {
     136            if(data.is_premium) {
     137                gtmEvent('view-premium-content', { 'viewingPastPurchase': !purchasedInSession });
     138
     139                // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
     140                jQuery('#transact_content').html(jQuery.parseHTML(data.content));
     141
     142                // Get comments
     143                var commentsUrl = transact_params.ajaxurl + 'comments_template/' + transact_params.post_id;
     144                ajaxGet(commentsUrl)
    58145                    .done(function(data) {
    59                         loadingPurchase = false;
    60                         jQuery('#button_purchase_single_loading').css('display', 'none');
    61                         jQuery('#button_purchase_single').css('display', 'block');
    62 
    63                         // If purchase token loads and subscribe token is not loaded yet, display the subscribe loading spinner
    64                         if (enabledSubscribe && loadingSubscribe) {
    65                             jQuery('#button_purchase_subscription_loading').css('display', 'block');
    66                         }
    67 
    68                         console.log('got token: '+ data.token);
    69                         purchase_token = data.token;
    70                         //transactApi.setToken(data.token);
     146                        // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append
     147                        comment_form_wrapper.append(jQuery.parseHTML(data.content));
    71148                    })
    72149                    .fail(function(data) {
    73                         console.log('Failed to get Transact token');
     150                        console.warn('Could not fetch comments', data);
    74151                    });
    75152
    76             }
    77 
    78             // If subscription button is on the site, get subscription token too
    79             if(document.getElementById('button_purchase_subscription')) {
    80                 enabledSubscribe = true;
    81                 loadingSubscribe = true;
    82 
    83                 // Only show the subscribe token spinner initially if purchase is disabled, so we don't show two spinners.
    84                 if (!enabledPurchase) {
    85                     jQuery('#button_purchase_subscription_loading').css('display', 'block');
     153                reloadKnownScripts();
     154            } else {
     155                if(data.has_premium) {
     156                    jQuery('.transact-purchase_button').addClass('active');
    86157                }
    87                 jQuery('#button_purchase_subscription').css('display', 'none');
    88 
    89                 var subscribeTokenUrl = transact_params.ajaxurl + 'subscription/' + transact_params.post_id;
    90                 if(transact_params.affiliate_id) {
    91                     subscribeTokenUrl += '/' + transact_params.affiliate_id;
    92                 }
    93                 ajaxGet(subscribeTokenUrl)
    94                     .done(function(data) {
    95                         loadingSubscribe = false;
    96                         jQuery('#button_purchase_subscription_loading').css('display', 'none');
    97                         jQuery('#button_purchase_subscription').css('display', 'block');
    98 
    99                         console.log('got subscribe_token: '+ data.token);
    100                         subscribe_token = data.token;
    101                         //transactApi.setToken(data.token);
    102                     })
    103                     .fail(function(data) {
    104                         console.log('Failed to get Transact token');
    105                     });
    106 
    107             }
    108         }
    109 
    110         transactApi.getCurrentPromo('en', function(arg, result) {
    111             let promoBlock = jQuery('#transact_promo');
    112 
    113             if (promoBlock && promoBlock.length) {
    114                 promoBlock.css('color', transact_params.theme.background_color);
    115                 // this text comes from transact.io who we trust
    116                 // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
    117                 promoBlock.html(result.text);
    118             }
    119         });
    120     });
    121 
    122     function getPremiumContent() {
    123         let comment_form_wrapper = jQuery('#transact-comments');
    124 
    125         var premiumUrl = transact_params.ajaxurl + 'premium/' + transact_params.post_id;
    126         ajaxGet(premiumUrl)
    127             .done(function(data) {
    128                 if(data.is_premium) {
    129                     gtmEvent('view-premium-content', { 'viewingPastPurchase': !purchasedInSession });
    130 
    131                     // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
    132                     jQuery('#transact_content').html(jQuery.parseHTML(data.content));
    133 
    134                     // Get comments
    135                     var commentsUrl = transact_params.ajaxurl + 'comments_template/' + transact_params.post_id;
    136                     ajaxGet(commentsUrl)
    137                         .done(function(data) {
    138                             // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append
    139                             comment_form_wrapper.append(jQuery.parseHTML(data.content));
    140                         })
    141                         .fail(function(data) {
    142                             console.log('Could not fetch comments', data);
    143                         });
    144 
    145                     reloadKnownScripts();
    146                 } else {
    147                     if(data.has_premium) {
    148                         jQuery('.transact-purchase_button').addClass('active');
    149                     }
    150 
    151                     gtmEvent('view-preview-content');
    152                 }
    153             })
    154             .fail(function(data) {
    155                 console.error('Could not load premium state', data);
    156             });
     158
     159                gtmEvent('view-preview-content');
     160            }
     161        }
    157162    }
    158163
     
    164169            nonce_value = nonce_element.getAttribute('value');
    165170        } else {
    166             console.log('getNonceValue nonce not found.');
     171            console.warn('getNonceValue nonce not found.');
    167172        }
    168173        return nonce_value;
     
    178183            return;
    179184        }
    180         console.log('setDonateAmount', donate);
     185
    181186        let nonce_value = getNonceValue();
    182187        getDonationTokenAjaxCall(donate, nonce_value);
     
    200205                jQuery('#button_purchase_donation').css('display', 'block');
    201206
    202                 console.log('got donate_token: '+ data.token);
    203207                donate_token = data.token;
    204208                jQuery('#donation').removeAttr("disabled");
     
    206210            .fail(function(data) {
    207211                jQuery('#donation').attr("disabled");
    208                 console.log('Failed to get Transact donate token');
     212                console.warn('Failed to get Transact donate token');
    209213            });
    210214    }
     
    216220     */
    217221    function doPurchase() {
    218         console.log('doPurchase');
    219         console.log('Setting Purchase token');
    220 
    221222        transactApi.setToken(purchase_token);
    222223        gtmEvent('start-purchase', { 'purchaseType': 'purchase' });
    223224        var frame = openPurchaseIFrame();
    224225        // Call authorizeInIframe() which will load the popup,
    225         // passing in callback function (PurchaseFrameClosed)
    226         transactApi.authorizeInIframe(frame, PurchaseFrameClosed, (height) => {
     226        // passing in callback function (purchaseFrameClosed)
     227        transactApi.authorizeInIframe(frame, purchaseFrameClosed, (height) => {
    227228            frame.style.height = height + 'px';
    228229        });
     
    230231
    231232    function doDonate() {
    232         console.log('doDonate');
    233233        transactApi.setToken(donate_token);
    234234        gtmEvent('start-purchase', { 'purchaseType': 'donation' });
    235235        var frame = openPurchaseIFrame();
    236236        // Call authorizeInIframe() which will load the popup,
    237         // passing in callback function (PurchaseFrameClosed)
    238         transactApi.authorizeInIframe(frame, PurchaseFrameClosed, (height) => {
     237        // passing in callback function (purchaseFrameClosed)
     238        transactApi.authorizeInIframe(frame, purchaseFrameClosed, (height) => {
    239239            frame.style.height = height + 'px';
    240240        });
     
    247247     */
    248248    function doSubscription() {
    249         console.log('doSubscription');
    250         console.log('Setting Subscription token');
    251         console.log(subscribe_token);
    252249        transactApi.setToken(subscribe_token);
    253250        gtmEvent('start-purchase', { 'purchaseType': 'subscription' });
    254251        var frame = openPurchaseIFrame();
    255252        // Call authorizeInIframe() which will load the popup,
    256         // passing in callback function (PurchaseFrameClosed)
    257         transactApi.authorizeInIframe(frame, PurchaseFrameClosed, (height) => {
     253        // passing in callback function (purchaseFrameClosed)
     254        transactApi.authorizeInIframe(frame, purchaseFrameClosed, (height) => {
    258255            frame.style.height = height + 'px';
    259256        });
     
    269266        close_button.classList.add('transact-purchase_modal__close-button');
    270267        jQuery([transact_backdrop, close_button]).click(function() {
    271             PurchaseFrameClosed(null, {});
     268            purchaseFrameClosed(null, {});
    272269        })
    273270
     
    295292    }
    296293
    297     function PurchaseFrameClosed(popup, event) {
     294    function purchaseFrameClosed(popup, event) {
    298295        if(transact_modal) {
    299296            document.querySelector('body').removeChild(transact_modal);
     
    301298        }
    302299
    303         console.log('PurchaseFrameClosed');
    304         console.log('PurchaseFrameClosed Event data:', event.data);
    305 
    306300        if (event && event.data) {
    307             console.log(event.data);
    308301            var validation_data = {};
    309302            validation_data.post_id = transact_params.post_id;
     
    315308
    316309                    purchasedInSession = true;
    317                     console.log('Success Response data:', resp_data);
    318310                    // Handles cookie
    319311                    handleCookies(validation_data, resp_data);
     
    324316                        window.location = custom_redirect;
    325317                    } else {
    326                         getPremiumContent();
     318                        getPremiumContent(false);
    327319                        // location.reload();
    328320                    }
    329321                })
    330322                .fail(function(resp_data) {
    331                     console.log('Error Response data:', resp_data);
     323                    console.warn('Error Response data:', resp_data);
    332324                    jQuery('#button_purchase').html('purchase failed');
    333                 })
    334                 .always(function() {
    335                     console.log( "finished" );
    336325                });
    337326        } else {
     
    342331    function handleCookies(validation_data, resp_data)
    343332    {
    344         console.log(resp_data, resp_data.decoded);
    345333        // Set or Update Cookie
    346334        if (resp_data.subscription == '1' || resp_data.subscription == 1) {
     
    353341    function handleSubscriptionCookies(resp_data)
    354342    {
    355         console.log('setting wp_subscription_transact_ cookie', resp_data);
    356343        var cookie = getCookie('wp_subscription_transact_');
    357344        if (cookie != '') {
     
    376363    function handlePurchaseCookies(validation_data, resp_data)
    377364    {
    378         console.log('setting wp_transact_ cookie');
    379365        var cookie = getCookie('wp_transact_');
    380366        if (cookie != '') {
     
    421407    function reloadKnownScripts() {
    422408        document.body.querySelectorAll('script').forEach(script => {
    423             if(script.src.match(/tiled-gallery/)) {
     409            if(
     410                script.src.match(/tiled-gallery/) || script.src.match(/slideshow/)
     411            ) {
    424412                var newScript = document.createElement('script');
    425413                newScript.src = script.src;
     
    447435    }
    448436
    449     function ajaxGet(url) {
     437    function ajaxGet(url, synchronous) {
    450438        // Set the nonce token so we can get the user object in wordpress
    451         return jQuery.ajax({
    452             url: url,
    453             type: "GET",
    454             beforeSend: function(xhr){
    455                 if(window.WP_REST_NONCE) {
    456                     xhr.setRequestHeader('X-WP-Nonce', window.WP_REST_NONCE);
     439
     440        if(synchronous) {
     441            var xhr = new XMLHttpRequest();
     442            xhr.open('GET', url, false); // sync request
     443            xhr.setRequestHeader('X-WP-Nonce', window.WP_REST_NONCE);
     444            xhr.send();
     445            xhr.responseJson = JSON.parse(xhr.response);
     446            return JSON.parse(xhr.response);
     447        } else {
     448            return jQuery.ajax({
     449                url: url,
     450                type: "GET",
     451                beforeSend: function(xhr){
     452                    if(window.WP_REST_NONCE) {
     453                        xhr.setRequestHeader('X-WP-Nonce', window.WP_REST_NONCE);
     454                    }
    457455                }
    458             }
    459          });
     456            });
     457        }
    460458    }
    461459})();
  • transact/tags/4.4.0/frontend/controllers/transact-cookie-manager.php

    r2245834 r2329508  
    101101    function validate_purchase($post_id)
    102102    {
    103         if($this->cookie['purchases']) {
     103        if(!empty($this->cookie['purchases'])) {
    104104            foreach ($this->cookie['purchases'] as $cookie) {
    105105                if (intval($cookie->id) === intval($post_id)) {
  • transact/tags/4.4.0/frontend/controllers/transact-single-post.php

    r2328822 r2329508  
    3131class FrontEndPostExtension
    3232{
     33    const VERSION = '4.3.1';
    3334    const DISABLE = 4;
    3435
     
    618619         * Loading transact scripts (callbacks)
    619620         */
    620         wp_register_script( 'transact_callback',  FRONTEND_ASSETS_URL . 'transact_post.js', array('jquery') );
     621        wp_register_script( 'transact_callback',  FRONTEND_ASSETS_URL . 'transact_post.js', array('jquery'), self::VERSION, true );
    621622        wp_localize_script( 'transact_callback', 'transact_params', $url );
    622623        wp_enqueue_script( 'transact_callback' );
  • transact/tags/4.4.0/readme.txt

    r2328822 r2329508  
    66Requires PHP: 5.6
    77Tested up to: 5.3.2
    8 Stable tag: 4.3.1
     8Stable tag: 4.4.0
    99License: APACHE-2.0
    1010License URI: https://www.apache.org/licenses/LICENSE-2.0
     
    8282
    8383
     84= 4.4.0 =
     85* Make loading content syncronous to improve compatibility with other plugins.
     86  This will make content present when jQuery.ready() is triggered.
     87
    8488= 4.3.1 =
    8589* JQuery loading fix
  • transact/tags/4.4.0/transact-plugin.php

    r2328822 r2329508  
    33 * Plugin Name: transact.io
    44 * Description: Integrates transact.io services into WP
    5  * Version: 4.3.1
     5 * Version: 4.4.0
    66 * Author: transact.io
    77 * Author URI: https://transact.io
  • transact/trunk/frontend/assets/transact_post.js

    r2328822 r2329508  
    2424    };
    2525
    26     jQuery(function() {
    27         let nonce_value = getNonceValue();
    28 
    29         if (transact_params.redirect_after_donation) {
    30             custom_redirect = transact_params.redirect_after_donation;
    31         }
    32 
    33         getPremiumContent();
    34 
    35         transactApi.setFrontendUrl(transact_params.purchase_url);
    36         if(transact_params.theme) {
    37             transactApi.setThemeParams({
    38                 bgcolor: transact_params.theme.background_color,
    39                 tcolor: transact_params.theme.text_color
    40             });
    41         }
    42 
    43         if (transact_params.donation == 1) {
    44             getDonationTokenAjaxCall(transact_params.price || 1, nonce_value);
    45         } else {
    46             if(document.getElementById('button_purchase_single')) {
    47                 enabledPurchase = true;
    48                 loadingPurchase = true;
    49 
    50                 jQuery('#button_purchase_single_loading').css('display', 'block');
    51                 jQuery('#button_purchase_single').css('display', 'none');
    52 
    53                 var tokenUrl = transact_params.ajaxurl + 'token/' + transact_params.post_id;
    54                 if(transact_params.affiliate_id) {
    55                     tokenUrl += '/' + transact_params.affiliate_id;
    56                 }
    57                 ajaxGet(tokenUrl)
     26    let nonce_value = getNonceValue();
     27
     28    if (transact_params.redirect_after_donation) {
     29        custom_redirect = transact_params.redirect_after_donation;
     30    }
     31
     32    getPremiumContent(true);
     33
     34    transactApi.setFrontendUrl(transact_params.purchase_url);
     35    if(transact_params.theme) {
     36        transactApi.setThemeParams({
     37            bgcolor: transact_params.theme.background_color,
     38            tcolor: transact_params.theme.text_color
     39        });
     40    }
     41
     42    if (transact_params.donation == 1) {
     43        getDonationTokenAjaxCall(transact_params.price || 1, nonce_value);
     44    } else {
     45        if(document.getElementById('button_purchase_single')) {
     46            enabledPurchase = true;
     47            loadingPurchase = true;
     48
     49            jQuery('#button_purchase_single_loading').css('display', 'block');
     50            jQuery('#button_purchase_single').css('display', 'none');
     51
     52            var tokenUrl = transact_params.ajaxurl + 'token/' + transact_params.post_id;
     53            if(transact_params.affiliate_id) {
     54                tokenUrl += '/' + transact_params.affiliate_id;
     55            }
     56            ajaxGet(tokenUrl)
     57                .done(function(data) {
     58                    loadingPurchase = false;
     59                    jQuery('#button_purchase_single_loading').css('display', 'none');
     60                    jQuery('#button_purchase_single').css('display', 'block');
     61
     62                    // If purchase token loads and subscribe token is not loaded yet, display the subscribe loading spinner
     63                    if (enabledSubscribe && loadingSubscribe) {
     64                        jQuery('#button_purchase_subscription_loading').css('display', 'block');
     65                    }
     66
     67                    purchase_token = data.token;
     68                    //transactApi.setToken(data.token);
     69                })
     70                .fail(function(data) {
     71                    console.warn('Failed to get Transact token');
     72                });
     73
     74        }
     75
     76        // If subscription button is on the site, get subscription token too
     77        if(document.getElementById('button_purchase_subscription')) {
     78            enabledSubscribe = true;
     79            loadingSubscribe = true;
     80
     81            // Only show the subscribe token spinner initially if purchase is disabled, so we don't show two spinners.
     82            if (!enabledPurchase) {
     83                jQuery('#button_purchase_subscription_loading').css('display', 'block');
     84            }
     85            jQuery('#button_purchase_subscription').css('display', 'none');
     86
     87            var subscribeTokenUrl = transact_params.ajaxurl + 'subscription/' + transact_params.post_id;
     88            if(transact_params.affiliate_id) {
     89                subscribeTokenUrl += '/' + transact_params.affiliate_id;
     90            }
     91            ajaxGet(subscribeTokenUrl)
     92                .done(function(data) {
     93                    loadingSubscribe = false;
     94                    jQuery('#button_purchase_subscription_loading').css('display', 'none');
     95                    jQuery('#button_purchase_subscription').css('display', 'block');
     96
     97                    subscribe_token = data.token;
     98                })
     99                .fail(function(data) {
     100                    console.warn('Failed to get Transact token');
     101                });
     102
     103        }
     104    }
     105
     106    transactApi.getCurrentPromo('en', function(arg, result) {
     107        let promoBlock = jQuery('#transact_promo');
     108
     109        if (promoBlock && promoBlock.length) {
     110            promoBlock.css('color', transact_params.theme.background_color);
     111            // this text comes from transact.io who we trust
     112            // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
     113            promoBlock.html(result.text);
     114        }
     115    });
     116
     117    function getPremiumContent(synchronous) {
     118        let comment_form_wrapper = jQuery('#transact-comments');
     119
     120        var premiumUrl = transact_params.ajaxurl + 'premium/' + transact_params.post_id;
     121        let result = ajaxGet(premiumUrl, synchronous);
     122
     123        if(synchronous) {
     124            appendPremiumContent(result);
     125        } else {
     126            result
     127                .fail(function(data) {
     128                    console.error('Could not load premium state', data);
     129                })
     130                .done(data => {
     131                    appendPremiumContent(data);
     132                });
     133        }
     134
     135        function appendPremiumContent(data) {
     136            if(data.is_premium) {
     137                gtmEvent('view-premium-content', { 'viewingPastPurchase': !purchasedInSession });
     138
     139                // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
     140                jQuery('#transact_content').html(jQuery.parseHTML(data.content));
     141
     142                // Get comments
     143                var commentsUrl = transact_params.ajaxurl + 'comments_template/' + transact_params.post_id;
     144                ajaxGet(commentsUrl)
    58145                    .done(function(data) {
    59                         loadingPurchase = false;
    60                         jQuery('#button_purchase_single_loading').css('display', 'none');
    61                         jQuery('#button_purchase_single').css('display', 'block');
    62 
    63                         // If purchase token loads and subscribe token is not loaded yet, display the subscribe loading spinner
    64                         if (enabledSubscribe && loadingSubscribe) {
    65                             jQuery('#button_purchase_subscription_loading').css('display', 'block');
    66                         }
    67 
    68                         console.log('got token: '+ data.token);
    69                         purchase_token = data.token;
    70                         //transactApi.setToken(data.token);
     146                        // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append
     147                        comment_form_wrapper.append(jQuery.parseHTML(data.content));
    71148                    })
    72149                    .fail(function(data) {
    73                         console.log('Failed to get Transact token');
     150                        console.warn('Could not fetch comments', data);
    74151                    });
    75152
    76             }
    77 
    78             // If subscription button is on the site, get subscription token too
    79             if(document.getElementById('button_purchase_subscription')) {
    80                 enabledSubscribe = true;
    81                 loadingSubscribe = true;
    82 
    83                 // Only show the subscribe token spinner initially if purchase is disabled, so we don't show two spinners.
    84                 if (!enabledPurchase) {
    85                     jQuery('#button_purchase_subscription_loading').css('display', 'block');
     153                reloadKnownScripts();
     154            } else {
     155                if(data.has_premium) {
     156                    jQuery('.transact-purchase_button').addClass('active');
    86157                }
    87                 jQuery('#button_purchase_subscription').css('display', 'none');
    88 
    89                 var subscribeTokenUrl = transact_params.ajaxurl + 'subscription/' + transact_params.post_id;
    90                 if(transact_params.affiliate_id) {
    91                     subscribeTokenUrl += '/' + transact_params.affiliate_id;
    92                 }
    93                 ajaxGet(subscribeTokenUrl)
    94                     .done(function(data) {
    95                         loadingSubscribe = false;
    96                         jQuery('#button_purchase_subscription_loading').css('display', 'none');
    97                         jQuery('#button_purchase_subscription').css('display', 'block');
    98 
    99                         console.log('got subscribe_token: '+ data.token);
    100                         subscribe_token = data.token;
    101                         //transactApi.setToken(data.token);
    102                     })
    103                     .fail(function(data) {
    104                         console.log('Failed to get Transact token');
    105                     });
    106 
    107             }
    108         }
    109 
    110         transactApi.getCurrentPromo('en', function(arg, result) {
    111             let promoBlock = jQuery('#transact_promo');
    112 
    113             if (promoBlock && promoBlock.length) {
    114                 promoBlock.css('color', transact_params.theme.background_color);
    115                 // this text comes from transact.io who we trust
    116                 // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
    117                 promoBlock.html(result.text);
    118             }
    119         });
    120     });
    121 
    122     function getPremiumContent() {
    123         let comment_form_wrapper = jQuery('#transact-comments');
    124 
    125         var premiumUrl = transact_params.ajaxurl + 'premium/' + transact_params.post_id;
    126         ajaxGet(premiumUrl)
    127             .done(function(data) {
    128                 if(data.is_premium) {
    129                     gtmEvent('view-premium-content', { 'viewingPastPurchase': !purchasedInSession });
    130 
    131                     // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
    132                     jQuery('#transact_content').html(jQuery.parseHTML(data.content));
    133 
    134                     // Get comments
    135                     var commentsUrl = transact_params.ajaxurl + 'comments_template/' + transact_params.post_id;
    136                     ajaxGet(commentsUrl)
    137                         .done(function(data) {
    138                             // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append
    139                             comment_form_wrapper.append(jQuery.parseHTML(data.content));
    140                         })
    141                         .fail(function(data) {
    142                             console.log('Could not fetch comments', data);
    143                         });
    144 
    145                     reloadKnownScripts();
    146                 } else {
    147                     if(data.has_premium) {
    148                         jQuery('.transact-purchase_button').addClass('active');
    149                     }
    150 
    151                     gtmEvent('view-preview-content');
    152                 }
    153             })
    154             .fail(function(data) {
    155                 console.error('Could not load premium state', data);
    156             });
     158
     159                gtmEvent('view-preview-content');
     160            }
     161        }
    157162    }
    158163
     
    164169            nonce_value = nonce_element.getAttribute('value');
    165170        } else {
    166             console.log('getNonceValue nonce not found.');
     171            console.warn('getNonceValue nonce not found.');
    167172        }
    168173        return nonce_value;
     
    178183            return;
    179184        }
    180         console.log('setDonateAmount', donate);
     185
    181186        let nonce_value = getNonceValue();
    182187        getDonationTokenAjaxCall(donate, nonce_value);
     
    200205                jQuery('#button_purchase_donation').css('display', 'block');
    201206
    202                 console.log('got donate_token: '+ data.token);
    203207                donate_token = data.token;
    204208                jQuery('#donation').removeAttr("disabled");
     
    206210            .fail(function(data) {
    207211                jQuery('#donation').attr("disabled");
    208                 console.log('Failed to get Transact donate token');
     212                console.warn('Failed to get Transact donate token');
    209213            });
    210214    }
     
    216220     */
    217221    function doPurchase() {
    218         console.log('doPurchase');
    219         console.log('Setting Purchase token');
    220 
    221222        transactApi.setToken(purchase_token);
    222223        gtmEvent('start-purchase', { 'purchaseType': 'purchase' });
    223224        var frame = openPurchaseIFrame();
    224225        // Call authorizeInIframe() which will load the popup,
    225         // passing in callback function (PurchaseFrameClosed)
    226         transactApi.authorizeInIframe(frame, PurchaseFrameClosed, (height) => {
     226        // passing in callback function (purchaseFrameClosed)
     227        transactApi.authorizeInIframe(frame, purchaseFrameClosed, (height) => {
    227228            frame.style.height = height + 'px';
    228229        });
     
    230231
    231232    function doDonate() {
    232         console.log('doDonate');
    233233        transactApi.setToken(donate_token);
    234234        gtmEvent('start-purchase', { 'purchaseType': 'donation' });
    235235        var frame = openPurchaseIFrame();
    236236        // Call authorizeInIframe() which will load the popup,
    237         // passing in callback function (PurchaseFrameClosed)
    238         transactApi.authorizeInIframe(frame, PurchaseFrameClosed, (height) => {
     237        // passing in callback function (purchaseFrameClosed)
     238        transactApi.authorizeInIframe(frame, purchaseFrameClosed, (height) => {
    239239            frame.style.height = height + 'px';
    240240        });
     
    247247     */
    248248    function doSubscription() {
    249         console.log('doSubscription');
    250         console.log('Setting Subscription token');
    251         console.log(subscribe_token);
    252249        transactApi.setToken(subscribe_token);
    253250        gtmEvent('start-purchase', { 'purchaseType': 'subscription' });
    254251        var frame = openPurchaseIFrame();
    255252        // Call authorizeInIframe() which will load the popup,
    256         // passing in callback function (PurchaseFrameClosed)
    257         transactApi.authorizeInIframe(frame, PurchaseFrameClosed, (height) => {
     253        // passing in callback function (purchaseFrameClosed)
     254        transactApi.authorizeInIframe(frame, purchaseFrameClosed, (height) => {
    258255            frame.style.height = height + 'px';
    259256        });
     
    269266        close_button.classList.add('transact-purchase_modal__close-button');
    270267        jQuery([transact_backdrop, close_button]).click(function() {
    271             PurchaseFrameClosed(null, {});
     268            purchaseFrameClosed(null, {});
    272269        })
    273270
     
    295292    }
    296293
    297     function PurchaseFrameClosed(popup, event) {
     294    function purchaseFrameClosed(popup, event) {
    298295        if(transact_modal) {
    299296            document.querySelector('body').removeChild(transact_modal);
     
    301298        }
    302299
    303         console.log('PurchaseFrameClosed');
    304         console.log('PurchaseFrameClosed Event data:', event.data);
    305 
    306300        if (event && event.data) {
    307             console.log(event.data);
    308301            var validation_data = {};
    309302            validation_data.post_id = transact_params.post_id;
     
    315308
    316309                    purchasedInSession = true;
    317                     console.log('Success Response data:', resp_data);
    318310                    // Handles cookie
    319311                    handleCookies(validation_data, resp_data);
     
    324316                        window.location = custom_redirect;
    325317                    } else {
    326                         getPremiumContent();
     318                        getPremiumContent(false);
    327319                        // location.reload();
    328320                    }
    329321                })
    330322                .fail(function(resp_data) {
    331                     console.log('Error Response data:', resp_data);
     323                    console.warn('Error Response data:', resp_data);
    332324                    jQuery('#button_purchase').html('purchase failed');
    333                 })
    334                 .always(function() {
    335                     console.log( "finished" );
    336325                });
    337326        } else {
     
    342331    function handleCookies(validation_data, resp_data)
    343332    {
    344         console.log(resp_data, resp_data.decoded);
    345333        // Set or Update Cookie
    346334        if (resp_data.subscription == '1' || resp_data.subscription == 1) {
     
    353341    function handleSubscriptionCookies(resp_data)
    354342    {
    355         console.log('setting wp_subscription_transact_ cookie', resp_data);
    356343        var cookie = getCookie('wp_subscription_transact_');
    357344        if (cookie != '') {
     
    376363    function handlePurchaseCookies(validation_data, resp_data)
    377364    {
    378         console.log('setting wp_transact_ cookie');
    379365        var cookie = getCookie('wp_transact_');
    380366        if (cookie != '') {
     
    421407    function reloadKnownScripts() {
    422408        document.body.querySelectorAll('script').forEach(script => {
    423             if(script.src.match(/tiled-gallery/)) {
     409            if(
     410                script.src.match(/tiled-gallery/) || script.src.match(/slideshow/)
     411            ) {
    424412                var newScript = document.createElement('script');
    425413                newScript.src = script.src;
     
    447435    }
    448436
    449     function ajaxGet(url) {
     437    function ajaxGet(url, synchronous) {
    450438        // Set the nonce token so we can get the user object in wordpress
    451         return jQuery.ajax({
    452             url: url,
    453             type: "GET",
    454             beforeSend: function(xhr){
    455                 if(window.WP_REST_NONCE) {
    456                     xhr.setRequestHeader('X-WP-Nonce', window.WP_REST_NONCE);
     439
     440        if(synchronous) {
     441            var xhr = new XMLHttpRequest();
     442            xhr.open('GET', url, false); // sync request
     443            xhr.setRequestHeader('X-WP-Nonce', window.WP_REST_NONCE);
     444            xhr.send();
     445            xhr.responseJson = JSON.parse(xhr.response);
     446            return JSON.parse(xhr.response);
     447        } else {
     448            return jQuery.ajax({
     449                url: url,
     450                type: "GET",
     451                beforeSend: function(xhr){
     452                    if(window.WP_REST_NONCE) {
     453                        xhr.setRequestHeader('X-WP-Nonce', window.WP_REST_NONCE);
     454                    }
    457455                }
    458             }
    459          });
     456            });
     457        }
    460458    }
    461459})();
  • transact/trunk/frontend/controllers/transact-cookie-manager.php

    r2245834 r2329508  
    101101    function validate_purchase($post_id)
    102102    {
    103         if($this->cookie['purchases']) {
     103        if(!empty($this->cookie['purchases'])) {
    104104            foreach ($this->cookie['purchases'] as $cookie) {
    105105                if (intval($cookie->id) === intval($post_id)) {
  • transact/trunk/frontend/controllers/transact-single-post.php

    r2328822 r2329508  
    3131class FrontEndPostExtension
    3232{
     33    const VERSION = '4.3.1';
    3334    const DISABLE = 4;
    3435
     
    618619         * Loading transact scripts (callbacks)
    619620         */
    620         wp_register_script( 'transact_callback',  FRONTEND_ASSETS_URL . 'transact_post.js', array('jquery') );
     621        wp_register_script( 'transact_callback',  FRONTEND_ASSETS_URL . 'transact_post.js', array('jquery'), self::VERSION, true );
    621622        wp_localize_script( 'transact_callback', 'transact_params', $url );
    622623        wp_enqueue_script( 'transact_callback' );
  • transact/trunk/readme.txt

    r2328822 r2329508  
    66Requires PHP: 5.6
    77Tested up to: 5.3.2
    8 Stable tag: 4.3.1
     8Stable tag: 4.4.0
    99License: APACHE-2.0
    1010License URI: https://www.apache.org/licenses/LICENSE-2.0
     
    8282
    8383
     84= 4.4.0 =
     85* Make loading content syncronous to improve compatibility with other plugins.
     86  This will make content present when jQuery.ready() is triggered.
     87
    8488= 4.3.1 =
    8589* JQuery loading fix
  • transact/trunk/transact-plugin.php

    r2328822 r2329508  
    33 * Plugin Name: transact.io
    44 * Description: Integrates transact.io services into WP
    5  * Version: 4.3.1
     5 * Version: 4.4.0
    66 * Author: transact.io
    77 * Author URI: https://transact.io
Note: See TracChangeset for help on using the changeset viewer.