| Joomla! | PHP Cross Reference | Web Portals |
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
Body
title
Description
Body
title
Description
Body
title
Body
title