[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
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(/&/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 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |