JAVASCRIPT 46
Userswitch.js Guest on 23rd April 2021 03:18:08 PM
  1. (function () {
  2.     'use strict';
  3.  
  4.     var ajax = function (url, settings) {
  5.         var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
  6.  
  7.         if (typeof url === 'object' && url.hasOwnProperty('url')) {
  8.             settings = url;
  9.             url = settings.url;
  10.             delete settings.url;
  11.         }
  12.  
  13.         settings = settings || {};
  14.         xhr.open(settings.method || 'GET', url, true);
  15.         xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  16.         xhr.setRequestHeader('Accept', 'text/html');
  17.         xhr.onreadystatechange = function () {
  18.             if (xhr.readyState === 4) {
  19.                 if (xhr.status === 200 && settings.success) {
  20.                     settings.success(xhr);
  21.                 } else if (xhr.status !== 200 && settings.error) {
  22.                     settings.error(xhr);
  23.                 }
  24.             }
  25.         };
  26.         xhr.send(settings.data || '');
  27.     }, on = function (element, event, handler) {
  28.         if (element instanceof NodeList) {
  29.             element.forEach(function (value) {
  30.                 value.addEventListener(event, handler, false);
  31.             });
  32.             return;
  33.         }
  34.         if (!(element instanceof Array)) {
  35.             element = [element];
  36.         }
  37.         for (var i in element) {
  38.             if (typeof element[i].addEventListener !== 'function') {
  39.                 continue;
  40.             }
  41.             element[i].addEventListener(event, handler, false);
  42.         }
  43.     }, serialize = function (form) {
  44.         if (!form || form.nodeName !== "FORM") {
  45.             return;
  46.         }
  47.         var i, j, q = [];
  48.         for (i = form.elements.length - 1; i >= 0; i = i - 1) {
  49.             if (form.elements[i].name === "") {
  50.                 continue;
  51.             }
  52.             switch (form.elements[i].nodeName) {
  53.                 case 'INPUT':
  54.                     switch (form.elements[i].type) {
  55.                         case 'text':
  56.                         case 'hidden':
  57.                         case 'password':
  58.                         case 'button':
  59.                         case 'reset':
  60.                         case 'submit':
  61.                             q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
  62.                             break;
  63.                         case 'checkbox':
  64.                         case 'radio':
  65.                             if (form.elements[i].checked) {
  66.                                 q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
  67.                             }
  68.                             break;
  69.                         case 'file':
  70.                             break;
  71.                     }
  72.                     break;
  73.                 case 'TEXTAREA':
  74.                     q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
  75.                     break;
  76.                 case 'SELECT':
  77.                     switch (form.elements[i].type) {
  78.                         case 'select-one':
  79.                             q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
  80.                             break;
  81.                         case 'select-multiple':
  82.                             for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {
  83.                                 if (form.elements[i].options[j].selected) {
  84.                                     q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value));
  85.                                 }
  86.                             }
  87.                             break;
  88.                     }
  89.                     break;
  90.                 case 'BUTTON':
  91.                     switch (form.elements[i].type) {
  92.                         case 'reset':
  93.                         case 'submit':
  94.                         case 'button':
  95.                             q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
  96.                             break;
  97.                     }
  98.                     break;
  99.             }
  100.         }
  101.         return q.join("&");
  102.     };
  103.  
  104.     var sendSetIdentity = function () {
  105.         var form = this;
  106.         var formData = serialize(form);
  107.         ajax({
  108.             url: form.action,
  109.             type: form.method,
  110.             data: formData,
  111.             success: function () {
  112.                 window.top.location.reload();
  113.             },
  114.             error: function (data) {
  115.                 if (window.jQuery) {
  116.                     window.jQuery(form).yiiActiveForm('updateMessages', data.responseJSON, true);
  117.                 }
  118.             }
  119.         });
  120.     };
  121.  
  122.     on(document.getElementById('debug-userswitch__set-identity'), 'beforeSubmit', sendSetIdentity);
  123.     on(document.getElementById('debug-userswitch__set-identity'), 'submit', function (e) { e.preventDefault(); });
  124.     on(document.getElementById('debug-userswitch__reset-identity'), 'beforeSubmit', sendSetIdentity);
  125.     on(document.getElementById('debug-userswitch__reset-identity'), 'submit', function (e) { e.preventDefault(); });
  126.  
  127.     on(document.getElementById('debug-userswitch__filter'), 'click', function (e) {
  128.        if (e.target.tagName.toLowerCase() === 'tr' && e.target.parentElement.tagName.toLowerCase() === 'tbody') {
  129.            document.getElementById('user_id').value = this.dataset.getDataAttr('key');
  130.            document.getElementById('debug-userswitch__set-identity').submit();
  131.            e.stopPropagation();
  132.        }
  133.     });
  134. })();

Paste-bin is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

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