[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/installation/template/js/ -> template.js (source)

   1  /**
   2   * @package     Joomla.Installation
   3   * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
   4   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   5   */
   6  (function() {
   7    // Make sure that we have the Joomla object
   8    Joomla = window.Joomla || {};
   9    Joomla.installation = Joomla.installation || {};
  10  
  11    Joomla.serialiseForm = function( form ) {
  12      var i, l, obj = [], elements = form.querySelectorAll( "input, select, textarea" );
  13      for(i = 0, l = elements.length; i < l; i++) {
  14        var name = elements[i].name;
  15        var value = elements[i].value;
  16        if(name) {
  17          if (((elements[i].type === 'checkbox' || elements[i].type === 'radio') && elements[i].checked === true) || (elements[i].type !== 'checkbox' && elements[i].type !== 'radio')) {
  18            obj.push(name.replace('[', '%5B').replace(']', '%5D') + '=' + encodeURIComponent(value));
  19          }
  20        }
  21      }
  22      return obj.join("&");
  23    };
  24  
  25  
  26    /**
  27     * Method to request a different page via AJAX
  28     *
  29     * @param  page        The name of the view to request
  30     * @param  fromSubmit  Unknown use
  31     *
  32     * @return {Boolean}
  33     */
  34    Joomla.goToPage = function(page, fromSubmit) {
  35      if (!fromSubmit) {
  36        Joomla.removeMessages();
  37        document.body.appendChild(document.createElement('joomla-core-loader'));
  38      }
  39  
  40      if (page) {
  41        window.location = Joomla.baseUrl + '?view=' + page + '&layout=default';
  42      }
  43  
  44      return false;
  45    };
  46  
  47    /**
  48     * Method to submit a form from the installer via AJAX
  49     *
  50     * @return {Boolean}
  51     */
  52    Joomla.submitform = function(form) {
  53      var data = Joomla.serialiseForm(form);
  54  
  55      document.body.appendChild(document.createElement('joomla-core-loader'));
  56      Joomla.removeMessages();
  57  
  58      Joomla.request({
  59        type     : "POST",
  60        url      : Joomla.baseUrl,
  61        data     : data,
  62        dataType : 'json',
  63        onSuccess: function (response, xhr) {
  64          response = JSON.parse(response);
  65          var spinnerElement = document.querySelector('joomla-core-loader');
  66  
  67          if (response.messages) {
  68            Joomla.renderMessages(response.messages);
  69          }
  70  
  71          if (response.error) {
  72            Joomla.renderMessages({'error': [response.message]});
  73            spinnerElement.parentNode.removeChild(spinnerElement);
  74          } else {
  75            spinnerElement.parentNode.removeChild(spinnerElement);
  76            if (response.data && response.data.view) {
  77              Install.goToPage(response.data.view, true);
  78            }
  79          }
  80        },
  81        onError  : function (xhr) {
  82          var spinnerElement = document.querySelector('joomla-core-loader');
  83          spinnerElement.parentNode.removeChild(spinnerElement);
  84          busy = false;
  85          try {
  86            var r = JSON.parse(xhr.responseText);
  87            Joomla.replaceTokens(r.token);
  88            alert(r.message);
  89          } catch (e) {
  90          }
  91        }
  92      });
  93  
  94      return false;
  95    };
  96  
  97    Joomla.scrollTo = function (elem, pos)
  98    {
  99      var y = elem.scrollTop;
 100      y += (pos - y) * 0.3;
 101      if (Math.abs(y-pos) < 2)
 102      {
 103        elem.scrollTop = pos;
 104        return;
 105      }
 106      elem.scrollTop = y;
 107      setTimeout(Joomla.scrollTo, 40, elem, pos);
 108    };
 109  
 110    Joomla.checkFormField = function(fields) {
 111      var state = [];
 112      fields.forEach(function(field) {
 113        state.push(document.formvalidator.validate(document.querySelector(field)));
 114      });
 115  
 116      if (state.indexOf(false) > -1) {
 117        return false;
 118      }
 119      return true;
 120    };
 121  
 122    // Init on dom content loaded event
 123    Joomla.makeRandomDbPrefix = function() {
 124      var numbers = '0123456789', letters = 'abcdefghijklmnopqrstuvwxyz', symbols = numbers + letters;
 125      var prefix = letters[Math.floor(Math.random() * 24)];
 126  
 127      for (var i = 0; i < 4; i++ ) {
 128        prefix += symbols[Math.floor(Math.random() * 34)];
 129      }
 130  
 131      document.getElementById('jform_db_prefix').value = prefix + '_';
 132  
 133      return prefix + '_';
 134    };
 135  
 136    /**
 137     * Initializes JavaScript events on each request, required for AJAX
 138     */
 139    Joomla.pageInit = function() {
 140      // Attach the validator
 141      [].slice.call(document.querySelectorAll('form.form-validate')).forEach(function(form) {
 142        document.formvalidator.attachToForm(form);
 143      });
 144  
 145      Joomla.installation = Joomla.installation || {};
 146  
 147      return 'Loaded...'
 148    };
 149  
 150  
 151    /**
 152     * Executes the required tasks to complete site installation
 153     *
 154     * @param tasks       An array of install tasks to execute
 155     */
 156    Joomla.install = function(tasks, form) {
 157      if (!form) {
 158        throw new Error('No form provided')
 159      }
 160      if (!tasks.length) {
 161        Joomla.goToPage('remove');
 162        return;
 163      }
 164  
 165      var task = tasks.shift();
 166      var data = Joomla.serialiseForm(form);
 167      document.body.appendChild(document.createElement('joomla-core-loader'));
 168  
 169      Joomla.request({
 170        method: "POST",
 171        url : Joomla.baseUrl + '?task=installation.' + task + '&format=json',
 172        data: data,
 173        perform: true,
 174        onSuccess: function(response, xhr){
 175          var spinnerElement = document.querySelector('joomla-core-loader');
 176  
 177          try {
 178            response = JSON.parse(response);
 179          } catch (e) {
 180            spinnerElement.parentNode.removeChild(spinnerElement);
 181            console.error('Error in ' + task + ' Endpoint');
 182            console.error(response);
 183            Joomla.renderMessages({'error': [Joomla.Text._('INSTL_DATABASE_RESPONSE_ERROR')]});
 184  
 185            return false;
 186          }
 187  
 188          Joomla.replaceTokens(response.token);
 189  
 190          if (response.error === true)
 191          {
 192            spinnerElement.parentNode.removeChild(spinnerElement);
 193            Joomla.renderMessages({"error": [response.message]});
 194            return false;
 195          }
 196  
 197          if (response.messages) {
 198            spinnerElement.parentNode.removeChild(spinnerElement);
 199            Joomla.renderMessages(response.messages);
 200            return false;
 201          }
 202  
 203          spinnerElement.parentNode.removeChild(spinnerElement);
 204          Joomla.install(tasks, form);
 205        },
 206        onError: function(xhr){
 207          Joomla.renderMessages([['', Joomla.Text._('JLIB_DATABASE_ERROR_DATABASE_CONNECT', 'A Database error occurred.')]]);
 208          Joomla.goToPage('remove');
 209  
 210          try {
 211            var r = JSON.parse(xhr.responseText);
 212            Joomla.replaceTokens(r.token);
 213            alert(r.message);
 214          } catch (e) {
 215          }
 216        }
 217      });
 218    };
 219  
 220    /* Load scripts async */
 221    document.addEventListener('DOMContentLoaded', function() {
 222      var page = document.getElementById('installer-view');
 223  
 224      // Set the base URL
 225      Joomla.baseUrl = Joomla.getOptions('system.installation').url ? Joomla.getOptions('system.installation').url.replace(/&amp;/g, '&') : 'index.php';
 226  
 227      // Show the container
 228      var container = document.getElementById('container-installation');
 229      if (container) {
 230        Joomla.installationBaseUrl = container.getAttribute('data-base-url');
 231        Joomla.installationBaseUrl += "installation/index.php"
 232      } else {
 233        throw new Error('"container-installation" container is missed')
 234      }
 235  
 236      if (page && page.getAttribute('data-page-name')) {
 237        var script = document.querySelector('script[src*="template.js"]');
 238        el = document.createElement('script');
 239        el.src = script.src.replace("template.js", page.getAttribute('data-page-name') + '.js');
 240        document.head.appendChild(el);
 241      }
 242  
 243      if (container) {
 244        container.classList.remove('no-js');
 245        container.classList.remove('hidden');
 246      }
 247    });
 248  })();


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