[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/installation/template/js/ -> setup.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  
   7  /**
   8   * Method to set the language for the installation UI via AJAX
   9   *
  10   * @return {Boolean}
  11   */
  12  Joomla.setlanguage = function(form) {
  13    var data = Joomla.serialiseForm(form);
  14    Joomla.removeMessages();
  15    document.body.appendChild(document.createElement('joomla-core-loader'));
  16  
  17    Joomla.request({
  18      url: Joomla.baseUrl,
  19      method: 'POST',
  20      data: data,
  21      perform: true,
  22      onSuccess: function(response, xhr){
  23        response = JSON.parse(response);
  24        Joomla.replaceTokens(response.token);
  25        var loaderElement = document.querySelector('joomla-core-loader');
  26  
  27        if (response.messages) {
  28          Joomla.renderMessages(response.messages);
  29        }
  30  
  31        if (response.error) {
  32          loaderElement.parentNode.removeChild(loaderElement);
  33          Joomla.renderMessages({'error': [response.message]});
  34        } else {
  35          loaderElement.parentNode.removeChild(loaderElement);
  36          Joomla.goToPage(response.data.view, true);
  37        }
  38      },
  39      onError:   function(xhr){
  40        var loaderElement = document.querySelector('joomla-core-loader');
  41        loaderElement.parentNode.removeChild(loaderElement);
  42        try {
  43          var r = JSON.parse(xhr.responseText);
  44          Joomla.replaceTokens(r.token);
  45          alert(r.message);
  46        } catch (e) {}
  47      }
  48    });
  49  
  50    return false;
  51  };
  52  
  53  Joomla.checkInputs = function() {
  54    document.getElementById('jform_admin_password2').value = document.getElementById('jform_admin_password').value;
  55  
  56    var inputs = [].slice.call(document.querySelectorAll('input[type="password"], input[type="text"], input[type="email"], select')),
  57      state = true;
  58    inputs.forEach(function(item) {
  59      if (!item.valid) state = false;
  60    });
  61  
  62    // Reveal everything
  63    document.getElementById('installStep1').classList.add('active');
  64    document.getElementById('installStep2').classList.add('active');
  65    document.getElementById('installStep3').classList.add('active');
  66  
  67  
  68    if (Joomla.checkFormField(['#jform_site_name', '#jform_admin_user', '#jform_admin_email', '#jform_admin_password', '#jform_db_type', '#jform_db_host', '#jform_db_user', '#jform_db_name'])) {
  69      Joomla.checkDbCredentials();
  70    }
  71  };
  72  
  73  
  74  Joomla.checkDbCredentials = function() {
  75    document.body.appendChild(document.createElement('joomla-core-loader'));
  76    var form = document.getElementById('adminForm'),
  77      data = Joomla.serialiseForm(form);
  78  
  79    Joomla.request({
  80      method: "POST",
  81      url : Joomla.installationBaseUrl + '?task=installation.dbcheck&format=json',
  82      data: data,
  83      perform: true,
  84      headers: {'Content-Type': 'application/x-www-form-urlencoded'},
  85      onSuccess: function(response, xhr){
  86        var loaderElement = document.querySelector('joomla-core-loader');
  87        try {
  88          response = JSON.parse(response);
  89        } catch (e) {
  90          loaderElement.parentNode.removeChild(loaderElement);
  91          console.error('Error in DB Check Endpoint');
  92          console.error(response);
  93          Joomla.renderMessages({'error': [Joomla.Text._('INSTL_DATABASE_RESPONSE_ERROR')]});
  94  
  95          return false;
  96        }
  97  
  98        if (response.messages) {
  99          Joomla.renderMessages(response.messages);
 100        }
 101  
 102        Joomla.replaceTokens(response.token);
 103        loaderElement.parentNode.removeChild(loaderElement);
 104  
 105        if (response.error) {
 106          Joomla.renderMessages({'error': [response.message]});
 107        } else if (response.data && response.data.validated === true) {
 108          // Run the installer - we let this handle the redirect for now
 109          // @todo: Convert to promises
 110          Joomla.install(['create', 'populate1', 'populate2', 'populate3', 'custom1', 'custom2', 'config'], form);
 111        }
 112      },
 113      onError:   function(xhr){
 114        Joomla.renderMessages([['', Joomla.Text._('JLIB_DATABASE_ERROR_DATABASE_CONNECT', 'A Database error occurred.')]]);
 115        //Install.goToPage('summary');
 116        var loaderElement = document.querySelector('joomla-core-loader');
 117        loaderElement.parentNode.removeChild(loaderElement);
 118  
 119        try {
 120          var r = JSON.parse(xhr.responseText);
 121          Joomla.replaceTokens(r.token);
 122          alert(r.message);
 123        } catch (e) {
 124        }
 125      }
 126    });
 127  };
 128  
 129  
 130  (function() {
 131    // Merge options from the session storage
 132    if (sessionStorage && sessionStorage.getItem('installation-data')) {
 133      Joomla.extend(this.options, sessionStorage.getItem('installation-data'));
 134    }
 135  
 136    Joomla.pageInit();
 137    var el = document.querySelector('.nav-steps.hidden');
 138    if (el) {
 139      el.classList.remove('hidden');
 140    }
 141  
 142    // Focus to the next field
 143    if (document.getElementById('jform_site_name')) {
 144      document.getElementById('jform_site_name').focus();
 145    }
 146  
 147    // Select language
 148    var languageEl = document.getElementById('jform_language');
 149  
 150    if (languageEl) {
 151      languageEl.addEventListener('change', function(e) {
 152        var form = document.getElementById('languageForm');
 153        Joomla.setlanguage(form)
 154      })
 155    }
 156  
 157    if (document.getElementById('step1')) {
 158      document.getElementById('step1').addEventListener('click', function(e) {
 159        e.preventDefault();
 160        if (Joomla.checkFormField(['#jform_site_name'])) {
 161          if (document.getElementById('languageForm')) {
 162            document.getElementById('languageForm').classList.add('hidden');
 163          }
 164          if (document.getElementById('installStep2')) {
 165            document.getElementById('installStep2').classList.add('active');
 166            document.getElementById('installStep1').classList.remove('active');
 167  
 168            // Focus to the next field
 169            if (document.getElementById('jform_admin_user')) {
 170              document.getElementById('jform_admin_user').focus();
 171            }
 172          }
 173        }
 174      })
 175    }
 176  
 177    if (document.getElementById('step2')) {
 178      document.getElementById('step2').addEventListener('click', function(e) {
 179        e.preventDefault();
 180        if (Joomla.checkFormField(['#jform_admin_user', '#jform_admin_email', '#jform_admin_password'])) {
 181          if (document.getElementById('installStep3')) {
 182            document.getElementById('installStep3').classList.add('active');
 183            document.getElementById('installStep2').classList.remove('active');
 184            document.getElementById('setupButton').classList.remove('hidden');
 185  
 186            Joomla.makeRandomDbPrefix();
 187  
 188            // Focus to the next field
 189            if (document.getElementById('jform_db_type')) {
 190              document.getElementById('jform_db_type').focus();
 191            }
 192          }
 193        }
 194      });
 195  
 196      document.getElementById('setupButton').addEventListener('click', function(e) {
 197        e.preventDefault();
 198        e.stopPropagation();
 199        Joomla.checkInputs();
 200      })
 201    }
 202  
 203  })();


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