[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/com_joomlaupdate/js/ -> admin-update-default-es5.js (source)

   1  (function () {
   2    'use strict';
   3  
   4    /**
   5     * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
   6     * @license     GNU General Public License version 2 or later; see LICENSE.txt
   7     */
   8    if (!Joomla) {
   9      throw new Error('Joomla API was not initialised properly');
  10    }
  11  
  12    Joomla.Update = window.Joomla.Update || {
  13      stat_total: 0,
  14      stat_files: 0,
  15      stat_inbytes: 0,
  16      stat_outbytes: 0,
  17      password: null,
  18      totalsize: 0,
  19      ajax_url: null,
  20      return_url: null,
  21      cached_instance: null,
  22      genericErrorMessage: function genericErrorMessage(message) {
  23        var headerDiv = document.getElementById('errorDialogLabel');
  24        var messageDiv = document.getElementById('errorDialogMessage');
  25        var progressDiv = document.getElementById('joomlaupdate-progress');
  26        var errorDiv = document.getElementById('joomlaupdate-error');
  27        headerDiv.innerHTML = Joomla.Text._('COM_JOOMLAUPDATE_ERRORMODAL_HEAD_GENERIC');
  28        messageDiv.innerHTML = message;
  29  
  30        if (message.toLowerCase() === 'invalid login') {
  31          messageDiv.innerHTML = Joomla.Text._('COM_JOOMLAUPDATE_ERRORMODAL_BODY_INVALIDLOGIN');
  32        }
  33  
  34        progressDiv.classList.add('d-none');
  35        errorDiv.classList.remove('d-none');
  36      },
  37      handleErrorResponse: function handleErrorResponse(xhr) {
  38        var isForbidden = xhr.status === 403;
  39        var headerDiv = document.getElementById('errorDialogLabel');
  40        var messageDiv = document.getElementById('errorDialogMessage');
  41        var progressDiv = document.getElementById('joomlaupdate-progress');
  42        var errorDiv = document.getElementById('joomlaupdate-error');
  43  
  44        if (isForbidden) {
  45          headerDiv.innerHTML = Joomla.Text._('COM_JOOMLAUPDATE_ERRORMODAL_HEAD_FORBIDDEN');
  46          messageDiv.innerHTML = Joomla.Text._('COM_JOOMLAUPDATE_ERRORMODAL_BODY_FORBIDDEN');
  47        } else {
  48          headerDiv.innerHTML = Joomla.Text._('COM_JOOMLAUPDATE_ERRORMODAL_HEAD_SERVERERROR');
  49          messageDiv.innerHTML = Joomla.Text._('COM_JOOMLAUPDATE_ERRORMODAL_BODY_SERVERERROR');
  50        }
  51  
  52        progressDiv.classList.add('d-none');
  53        errorDiv.classList.remove('d-none');
  54      },
  55      startExtract: function startExtract() {
  56        // Reset variables
  57        Joomla.Update.stat_files = 0;
  58        Joomla.Update.stat_inbytes = 0;
  59        Joomla.Update.stat_outbytes = 0;
  60        Joomla.Update.cached_instance = null;
  61        document.getElementById('extbytesin').innerText = Joomla.Update.formatBytes(Joomla.Update.stat_inbytes);
  62        document.getElementById('extbytesout').innerText = Joomla.Update.formatBytes(Joomla.Update.stat_outbytes);
  63        document.getElementById('extfiles').innerText = Joomla.Update.stat_files;
  64        var postData = new FormData();
  65        postData.append('task', 'startExtract');
  66        postData.append('password', Joomla.Update.password); // Make the initial request to the extraction script
  67  
  68        Joomla.request({
  69          url: Joomla.Update.ajax_url,
  70          data: postData,
  71          method: 'POST',
  72          perform: true,
  73          onSuccess: function onSuccess(rawJson) {
  74            try {
  75              // If we can decode the response as JSON step through the update
  76              var data = JSON.parse(rawJson);
  77              Joomla.Update.stepExtract(data);
  78            } catch (e) {
  79              // Decoding failed; display an error
  80              Joomla.Update.genericErrorMessage(e.message);
  81            }
  82          },
  83          onError: Joomla.Update.handleErrorResponse
  84        });
  85      },
  86      stepExtract: function stepExtract(data) {
  87        // Did we get an error from the ZIP extraction engine?
  88        if (data.status === false) {
  89          Joomla.Update.genericErrorMessage(data.message);
  90          return;
  91        }
  92  
  93        var progressDiv = document.getElementById('progress-bar');
  94        var titleDiv = document.getElementById('update-title'); // Add data to variables
  95  
  96        Joomla.Update.stat_inbytes = data.bytesIn;
  97        Joomla.Update.stat_percent = data.percent;
  98        Joomla.Update.stat_percent = Joomla.Update.stat_percent || 100 * (Joomla.Update.stat_inbytes / Joomla.Update.totalsize); // Update GUI
  99  
 100        Joomla.Update.stat_outbytes = data.bytesOut;
 101        Joomla.Update.stat_files = data.files;
 102  
 103        if (Joomla.Update.stat_percent < 100) {
 104          progressDiv.classList.remove('bg-success');
 105          progressDiv.style.width = Joomla.Update.stat_percent + "%";
 106          progressDiv.setAttribute('aria-valuenow', Joomla.Update.stat_percent);
 107        } else if (Joomla.Update.stat_percent >= 100) {
 108          progressDiv.classList.add('bg-success');
 109          progressDiv.style.width = '100%';
 110          progressDiv.setAttribute('aria-valuenow', 100);
 111        }
 112  
 113        progressDiv.innerText = Joomla.Update.stat_percent.toFixed(1) + "%";
 114        document.getElementById('extbytesin').innerText = Joomla.Update.formatBytes(Joomla.Update.stat_inbytes);
 115        document.getElementById('extbytesout').innerText = Joomla.Update.formatBytes(Joomla.Update.stat_outbytes);
 116        document.getElementById('extfiles').innerText = Joomla.Update.stat_files; // Are we done extracting?
 117  
 118        if (data.done) {
 119          progressDiv.classList.add('bg-success');
 120          progressDiv.style.width = '100%';
 121          progressDiv.setAttribute('aria-valuenow', 100);
 122          titleDiv.innerHTML = Joomla.Text._('COM_JOOMLAUPDATE_UPDATING_COMPLETE');
 123          Joomla.Update.finalizeUpdate();
 124          return;
 125        } // This is required so we can get outside the scope of the previous XHR's success handler.
 126  
 127  
 128        window.setTimeout(function () {
 129          Joomla.Update.delayedStepExtract(data.instance);
 130        }, 50);
 131      },
 132      delayedStepExtract: function delayedStepExtract(instance) {
 133        Joomla.Update.cached_instance = instance;
 134        var postData = new FormData();
 135        postData.append('task', 'stepExtract');
 136        postData.append('password', Joomla.Update.password);
 137  
 138        if (instance) {
 139          postData.append('instance', instance);
 140        }
 141  
 142        Joomla.request({
 143          url: Joomla.Update.ajax_url,
 144          data: postData,
 145          method: 'POST',
 146          perform: true,
 147          onSuccess: function onSuccess(rawJson) {
 148            try {
 149              var newData = JSON.parse(rawJson);
 150              Joomla.Update.stepExtract(newData);
 151            } catch (e) {
 152              Joomla.Update.genericErrorMessage(e.message);
 153            }
 154          },
 155          onError: Joomla.Update.handleErrorResponse
 156        });
 157      },
 158      finalizeUpdate: function finalizeUpdate() {
 159        var postData = new FormData();
 160        postData.append('task', 'finalizeUpdate');
 161        postData.append('password', Joomla.Update.password);
 162        Joomla.request({
 163          url: Joomla.Update.ajax_url,
 164          data: postData,
 165          method: 'POST',
 166          perform: true,
 167          onSuccess: function onSuccess() {
 168            window.location = Joomla.Update.return_url;
 169          },
 170          onError: Joomla.Update.handleErrorResponse
 171        });
 172      },
 173      formatBytes: function formatBytes(bytes, decimals) {
 174        if (decimals === void 0) {
 175          decimals = 2;
 176        }
 177  
 178        if (bytes === 0) return "0 " + Joomla.Text._('JLIB_SIZE_BYTES');
 179        var k = 1024;
 180        var dm = decimals < 0 ? 0 : decimals;
 181        var sizes = [Joomla.Text._('JLIB_SIZE_BYTES'), Joomla.Text._('JLIB_SIZE_KB'), Joomla.Text._('JLIB_SIZE_MB'), Joomla.Text._('JLIB_SIZE_GB'), Joomla.Text._('JLIB_SIZE_TB'), Joomla.Text._('JLIB_SIZE_PB'), Joomla.Text._('JLIB_SIZE_EB'), Joomla.Text._('JLIB_SIZE_ZB'), Joomla.Text._('JLIB_SIZE_YB')];
 182        var i = Math.floor(Math.log(bytes) / Math.log(k));
 183        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
 184      },
 185      resumeButtonHandler: function resumeButtonHandler(e) {
 186        e.preventDefault();
 187        document.getElementById('joomlaupdate-progress').classList.remove('d-none');
 188        document.getElementById('joomlaupdate-error').classList.add('d-none');
 189  
 190        if (Joomla.Update.cached_instance === false) {
 191          Joomla.Update.startExtract();
 192        } else {
 193          Joomla.Update.delayedStepExtract(Joomla.Update.cached_instance);
 194        }
 195      },
 196      restartButtonHandler: function restartButtonHandler(e) {
 197        e.preventDefault();
 198        document.getElementById('joomlaupdate-progress').classList.remove('d-none');
 199        document.getElementById('joomlaupdate-error').classList.add('d-none');
 200        Joomla.Update.startExtract();
 201      }
 202    }; // Add click handlers for the Resume and Restart Update buttons in the error pane.
 203  
 204    var elResume = document.getElementById('joomlaupdate-resume');
 205    var elRestart = document.getElementById('joomlaupdate-restart');
 206  
 207    if (elResume) {
 208      elResume.addEventListener('click', Joomla.Update.resumeButtonHandler);
 209    }
 210  
 211    if (elRestart) {
 212      elRestart.addEventListener('click', Joomla.Update.restartButtonHandler);
 213    } // Start the update
 214  
 215  
 216    var JoomlaUpdateOptions = Joomla.getOptions('joomlaupdate');
 217  
 218    if (JoomlaUpdateOptions && Object.keys(JoomlaUpdateOptions).length) {
 219      Joomla.Update.password = JoomlaUpdateOptions.password;
 220      Joomla.Update.totalsize = JoomlaUpdateOptions.totalsize;
 221      Joomla.Update.ajax_url = JoomlaUpdateOptions.ajax_url;
 222      Joomla.Update.return_url = JoomlaUpdateOptions.return_url;
 223      Joomla.Update.startExtract();
 224    }
 225  
 226  })();


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer