Joomla! PHP Cross Reference Web Portals

Source: /installation/template/js/installation.js - 331 lines - 8624 bytes - Text - Print

   1  /**
   2   * @package        Joomla.Installation
   3   * @subpackage    JavaScript
   4   * @copyright    Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.
   5   * @license        GNU General Public License version 2 or later; see LICENSE.txt
   6   */
   7  
   8  var Installation = new Class({
   9      initialize: function(container, base) {
  10          this.busy = false;
  11          this.container = container;
  12          this.spinner = new Spinner(this.container);
  13          this.baseUrl = base;
  14          this.view = '';
  15  
  16          this.pageInit();
  17      },
  18  
  19      pageInit: function() {
  20          this.addToggler();
  21          // Attach the validator
  22          $$('form.form-validate').each(function(form){ this.attachToForm(form); }, document.formvalidator);
  23      },
  24  
  25      submitform: function() {
  26          var form = document.id('adminForm');
  27  
  28          if (this.busy) {
  29              alert(Joomla.JText._('INSTL_PROCESS_BUSY', 'Process is in progress. Please wait...'));
  30              return false;
  31          }
  32          
  33          var req = new Request.JSON({
  34              url: this.baseUrl,
  35              data: form,
  36              format: 'json',
  37              onRequest: function() {
  38                  this.spinner.show(true);
  39                  this.busy = true;
  40                  Joomla.removeMessages();
  41              }.bind(this),
  42              onSuccess: function(r) {
  43                  Joomla.replaceTokens(r.token);
  44                  if (r.messages) {
  45                      Joomla.renderMessages(r.messages);
  46                  }
  47                  var lang = $$('html').getProperty('lang')[0];
  48                  if (r.lang !== null && lang.toLowerCase() === r.lang.toLowerCase()) {
  49                      Install.goToPage(r.data.view, true);
  50                  } else {
  51                      window.location = this.baseUrl+'?view='+r.data.view;
  52                  }
  53              }.bind(this),
  54              onFailure: function(xhr) {
  55                  this.spinner.hide(true);
  56                  this.busy = false;
  57                  var r = JSON.decode(xhr.responseText);
  58                  if (r) {
  59                      Joomla.replaceTokens(r.token);
  60                      alert(r.message);
  61                  }
  62              }.bind(this)
  63          }).send();
  64  
  65          return false;
  66      },
  67  
  68      setlanguage: function() {
  69          var form = document.id('languageForm');
  70  
  71          if (this.busy) {
  72              alert(Joomla.JText._('INSTL_PROCESS_BUSY', 'Process is in progress. Please wait...'));
  73              return false;
  74          }
  75  
  76          var req = new Request.JSON({
  77              url: this.baseUrl,
  78              data: form,
  79              format: 'json',
  80              onRequest: function() {
  81                  this.spinner.show(true);
  82                  this.busy = true;
  83                  Joomla.removeMessages();
  84              }.bind(this),
  85              onSuccess: function(r) {
  86                  Joomla.replaceTokens(r.token);
  87                  if (r.messages) {
  88                      Joomla.renderMessages(r.messages);
  89                  }
  90                  var lang = $$('html').getProperty('lang')[0];
  91                  if (lang.toLowerCase() === r.lang.toLowerCase()) {
  92                      Install.goToPage(r.data.view, true);
  93                  } else {
  94                      window.location = this.baseUrl+'?view='+r.data.view;
  95                  }
  96              }.bind(this),
  97              onFailure: function(xhr) {
  98                  this.spinner.hide(true);
  99                  this.busy = false;
 100                  var r = JSON.decode(xhr.responseText);
 101                  if (r) {
 102                      Joomla.replaceTokens(r.token);
 103                      alert(r.message);
 104                  }
 105              }.bind(this)
 106          }).send();
 107  
 108          return false;
 109      },
 110  
 111      goToPage: function(page, fromSubmit) {
 112          var req = new Request.HTML({
 113              method: 'get',
 114              url: this.baseUrl + '?tmpl=body&view=' + page,
 115              update: this.container,
 116              onRequest: function() {
 117                  if (!fromSubmit) {
 118                      Joomla.removeMessages();
 119                      this.spinner.show(true);
 120                  }
 121              }.bind(this),
 122              onSuccess: function (r) {
 123                  this.view = page;
 124  
 125                  // Attach JS behaviors to the newly loaded HTML
 126                  this.pageInit();
 127  
 128                  this.spinner.hide(true);
 129                  this.busy = false;
 130  
 131                  initElements();
 132              }.bind(this)
 133          }).send();
 134  
 135          return false;
 136      },
 137  
 138  
 139      install: function(tasks, step_width) {
 140          var progress = document.id('install_progress').getElement('div.bar');
 141  
 142          if (!tasks.length) {
 143              progress.setStyle('width',(progress.getStyle('width').toFloat()+(step_width*3))+'%');
 144              this.goToPage('complete');
 145              return;
 146          }
 147  
 148          if (!step_width) {
 149              var step_width = (100 / tasks.length) / 11;
 150          }
 151  
 152          var task = tasks.shift();
 153          var form = document.id('adminForm');
 154          var tr = document.id('install_'+task);
 155          var taskSpinner = tr.getElement('div.spinner');
 156  
 157          var req = new Request.JSON({
 158              url: this.baseUrl + '?task=setup.install_' + task,
 159              data: form,
 160              format: 'json',
 161              onRequest: function() {
 162                  progress.setStyle('width',(progress.getStyle('width').toFloat()+step_width)+'%');
 163                  tr.addClass('active');
 164                  taskSpinner.setStyle('visibility','visible');
 165              }.bind(this),
 166              onSuccess: function(r) {
 167                  Joomla.replaceTokens(r.token);
 168                  if (r.messages) {
 169                      Joomla.renderMessages(r.messages);
 170                      Install.goToPage(r.data.view, true);
 171                  } else {
 172                      progress.setStyle('width',(progress.getStyle('width').toFloat()+(step_width*10))+'%');
 173                      tr.removeClass('active');
 174                      taskSpinner.setStyle('visibility','hidden');
 175  
 176                      this.install(tasks, step_width);
 177                  }
 178              }.bind(this),
 179              onError: function(text, error) {
 180                  Joomla.renderMessages([['',Joomla.JText._('JLIB_DATABASE_ERROR_DATABASE_CONNECT', 'A Database error occurred.')]]);
 181                  Install.goToPage('summary');
 182              }.bind(this),
 183              onFailure: function(xhr) {
 184                  var r = JSON.decode(xhr.responseText);
 185                  if (r) {
 186                      Joomla.replaceTokens(r.token);
 187                      alert(r.message);
 188                  }
 189              }.bind(this)
 190          }).send();
 191      },
 192  
 193      /**
 194        * Method to detect the FTP root via AJAX request.
 195        */
 196      detectFtpRoot: function(el) {
 197          el = document.id(el);
 198          var req = new Request.JSON({
 199              url: this.baseUrl + '?task=setup.detectFtpRoot',
 200              data: document.id(el.form),
 201              format: 'json',
 202              onRequest: function() {
 203                  el.set('disabled', 'disabled');
 204              },
 205              onFailure: function(xhr) {
 206                  var r = JSON.decode(xhr.responseText);
 207                  if (r) {
 208                      Joomla.replaceTokens(r.token)
 209                      alert(xhr.status+': '+r.message);
 210                  } else {
 211                      alert(xhr.status+': '+xhr.statusText);
 212                  }
 213              },
 214              onSuccess: function(r) {
 215                  if (r) {
 216                      Joomla.replaceTokens(r.token)
 217                      if (r.error == false) {
 218                          document.id('jform_ftp_root').set('value', r.data.root);
 219                      } else {
 220                          alert(r.message);
 221                      }
 222                  }
 223                  el.set('disabled', '');
 224              }
 225          }).send();
 226      },
 227  
 228      verifyFtpSettings: function(el) {
 229          // make the ajax call
 230          el = document.id(el);
 231          var req = new Request.JSON({
 232              url: this.baseUrl + '?task=setup.verifyFtpSettings',
 233              data: document.id(el.form),
 234              format: 'json',
 235              onRequest: function() {
 236                  el.set('disabled', 'disabled'); },
 237                  onFailure: function(xhr) {
 238                  var r = JSON.decode(xhr.responseText);
 239                  if (r) {
 240                      Joomla.replaceTokens(r.token)
 241                      alert(xhr.status+': '+r.message);
 242                  } else {
 243                      alert(xhr.status+': '+xhr.statusText);
 244                  }
 245              },
 246              onSuccess: function(r) {
 247                  if (r) {
 248                      Joomla.replaceTokens(r.token)
 249                      if (r.error == false) {
 250                          alert(Joomla.JText._('INSTL_FTP_SETTINGS_CORRECT', 'Settings correct'));
 251                      } else {
 252                          alert(r.message);
 253                      }
 254                  }
 255                  el.set('disabled', '');
 256              },
 257              onError: function(response) {
 258                  alert('error');
 259              }
 260          }).send();
 261      },
 262  
 263      /**
 264       * Method to remove the installation Folder after a successful installation.
 265        */
 266      removeFolder: function(el) {
 267          el = document.id(el);
 268          var req = new Request.JSON({
 269              url: this.baseUrl + '?task=setup.removeFolder',
 270              data: document.id(el.form),
 271              format: 'json',
 272              onRequest: function() {
 273                  el.set('disabled', 'disabled');
 274                  document.id('theDefaultError').setStyle('display','none');
 275              },
 276              onComplete: function(r) {
 277                  if (r) {
 278                      Joomla.replaceTokens(r.token);
 279                      if (r.error == false) {
 280                          el.set('value', r.data.text);
 281                          el.set('onclick','');
 282                          el.set('disabled', 'disabled');
 283                          // Stop keep alive requests
 284                          window.keepAlive = function(){};
 285                      } else {
 286                          document.id('theDefaultError').setStyle('display','block');
 287                          document.id('theDefaultErrorMessage').set('html', r.message);
 288                          el.set('disabled', '');
 289                      }
 290                  } else {
 291                      document.id('theDefaultError').setStyle('display','block');
 292                      document.id('theDefaultErrorMessage').set('html', r);
 293                      el.set('disabled', 'disabled');
 294                  }
 295              },
 296              onFailure: function(xhr) {
 297                  var r = JSON.decode(xhr.responseText);
 298                  if (r) {
 299                      Joomla.replaceTokens(r.token);
 300                      document.id('theDefaultError').setStyle('display','block');
 301                      document.id('theDefaultErrorMessage').set('html', r.message);
 302                  }
 303                  el.set('disabled', '');
 304              }
 305          }).send();
 306      },
 307  
 308      addToggler: function() {
 309          new Fx.Accordion($$('h4.moofx-toggler'), $$('div.moofx-slider'), {
 310              onActive: function(toggler, i) {
 311                  toggler.addClass('moofx-toggler-down');
 312              },
 313              onBackground: function(toggler, i) {
 314                  toggler.removeClass('moofx-toggler-down');
 315              },
 316              duration: 300,
 317              opacity: false,
 318              alwaysHide:true,
 319              show: 1
 320          });
 321      },
 322  
 323      toggle: function(id, el, value) {
 324          var val = document.getElement('input[name=jform['+el+']]:checked').value;
 325          if(val == value) {
 326              document.id(id).setStyle('display', '');
 327          } else {
 328              document.id(id).setStyle('display', 'none');
 329          }
 330      }
 331  });

title

Description

title

Description

title

Description

title

title

Body