JAVASCRIPT   83

xdomain-data

Guest on 7th May 2022 03:56:50 PM

  1. /*globals jQuery, icl_vars, wpml_xdomain_data */
  2.  
  3. (function () {
  4.         "use strict";
  5.  
  6.         jQuery(document).ready(function () {
  7.                 jQuery('.' + wpml_xdomain_data.css_selector + ' a').on('click', function (event) {
  8.  
  9.                         var originalUrl;
  10.                         var currentUrl = window.location.href;
  11.                         var targetUrl = jQuery(this).attr('href');
  12.  
  13.                         if ('#' !== targetUrl && currentUrl !== targetUrl) {
  14.                                 event.preventDefault();
  15.  
  16.                                 originalUrl = jQuery(this).attr('href');
  17.                                 // Filter out xdomain_data if already in the url
  18.                                 originalUrl = originalUrl.replace(/&xdomain_data(=[^&]*)?(?=&|$)|xdomain_data(=[^&]*)?(&|$)/, '');
  19.                                 originalUrl = originalUrl.replace(/\?$/, '');
  20.  
  21.                                 /** @namespace icl_vars.current_language */
  22.                                 jQuery.ajax({
  23.                                         url:      wpml_xdomain_data.ajax_url,
  24.                                         type:     'post',
  25.                                         dataType: 'json',
  26.                                         data:     {
  27.                                                 action:        'switching_language',
  28.                                                 from_language: wpml_xdomain_data.current_language
  29.                                         },
  30.                                         success:  function (response) {
  31.                                                 var argsGlue;
  32.                                                 var url;
  33.                                                 var hash;
  34.                                                 var urlSplit;
  35.                                                 var xdomain;
  36.                                                 var form;
  37.  
  38.                                                 if (response.data.xdomain_data) {
  39.                                                         if (response.success) {
  40.                                                                 if ('post' === response.data.method) {
  41.  
  42.                                                                         // POST
  43.                                                                         form = jQuery('<form method="post" action="' + originalUrl + '" >');
  44.                                                                         xdomain = jQuery('<input type="hidden" name="xdomain_data" value="' + response.data.xdomain_data + '">');
  45.  
  46.                                                                         form.append(xdomain);
  47.                                                                         jQuery('body').append(form);
  48.  
  49.                                                                         form.submit();
  50.  
  51.                                                                 } else {
  52.                                                                         // GET
  53.                                                                         urlSplit = originalUrl.split('#');
  54.                                                                         hash = '';
  55.                                                                         if (1 < urlSplit.length) {
  56.                                                                                 hash = '#' + urlSplit[1];
  57.                                                                         }
  58.                                                                         url = urlSplit[0];
  59.                                                                         if (url.indexOf('?') === -1) {argsGlue = '?';} else {argsGlue = '&';}
  60.                                                                         /** @namespace response.data.xdomain_data */
  61.                                                                         url = originalUrl + argsGlue + 'xdomain_data=' + response.data.xdomain_data + hash;
  62.                                                                         location.href = url;
  63.                                                                 }
  64.  
  65.                                                         } else {
  66.                                                                 url = originalUrl;
  67.                                                                 location.href = url;
  68.                                                         }
  69.                                                 } else {
  70.                                                         location.href = originalUrl;
  71.                                                 }
  72.                                         },
  73.                                         error:    function () {
  74.                                                 location.href = originalUrl;
  75.                                         }
  76.                                 });
  77.                         }
  78.                 });
  79.         });
  80. }());

Raw Paste


Login or Register to edit or fork this paste. It's free.