[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 (function () { 2 'use strict'; 3 4 /** 5 * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> 6 * @license GNU General Public License version 2 or later; see LICENSE.txt 7 */ 8 // eslint-disable no-alert 9 (function (Joomla, document) { 10 if (!Joomla) { 11 throw new Error('core.js was not properly initialised'); 12 } 13 14 Joomla.finderIndexer = function () { 15 var getRequest; 16 var totalItems = null; 17 var offset = null; 18 var progress = null; 19 var optimized = false; 20 var path = 'index.php?option=com_finder&tmpl=component&format=json'; 21 var token = "&" + document.getElementById('finder-indexer-token').getAttribute('name') + "=1"; 22 23 var removeElement = function removeElement(id) { 24 var element = document.getElementById(id); 25 26 if (element) { 27 return element.parentNode.removeChild(element); 28 } 29 30 return null; 31 }; 32 33 var updateProgress = function updateProgress(header, message) { 34 progress = offset / totalItems * 100; 35 var progressBar = document.getElementById('progress-bar'); 36 var progressHeader = document.getElementById('finder-progress-header'); 37 var progressMessage = document.getElementById('finder-progress-message'); 38 39 if (progressHeader) { 40 progressHeader.innerText = header; 41 } 42 43 if (progressMessage) { 44 progressMessage.innerHTML = Joomla.sanitizeHtml(message); 45 } 46 47 if (progressBar) { 48 if (progress < 100) { 49 progressBar.style.width = progress + "%"; 50 progressBar.setAttribute('aria-valuenow', progress); 51 } else { 52 progressBar.classList.remove('bar-success'); 53 progressBar.classList.add('bar-warning'); 54 progressBar.setAttribute('aria-valuemin', 100); 55 progressBar.setAttribute('aria-valuemax', 200); 56 progressBar.style.width = progress + "%"; 57 progressBar.setAttribute('aria-valuenow', progress); 58 } // Auto close the window 59 60 61 if (message === Joomla.Text._('COM_FINDER_INDEXER_MESSAGE_COMPLETE')) { 62 removeElement('progress'); 63 window.parent.Joomla.Modal.getCurrent().close(); 64 } 65 } 66 }; 67 68 var handleResponse = function handleResponse(json, resp) { 69 var progressHeader = document.getElementById('finder-progress-header'); 70 var progressMessage = document.getElementById('finder-progress-message'); 71 72 try { 73 if (json === null) { 74 throw new Error(resp); 75 } 76 77 if (json.error) { 78 throw new Error(json); 79 } 80 81 if (json.start) { 82 // eslint-disable-next-line prefer-destructuring 83 totalItems = json.totalItems; 84 85 if (document.getElementById('finder-debug-data')) { 86 var debuglist = document.getElementById('finder-debug-data'); 87 Object.entries(json.pluginState).forEach(function (context) { 88 var item = "<dt class=\"col-sm-3\">" + context[0] + "</dt>"; 89 item += "<dd id=\"finder-" + context[0].replace(/\s+/g, '-').toLowerCase() + "\" class=\"col-sm-9\"></dd>"; 90 debuglist.insertAdjacentHTML('beforeend', Joomla.sanitizeHtml(item, { 91 dd: ['class', 'id'], 92 dt: ['class'] 93 })); 94 }); 95 } 96 } 97 98 offset += json.batchOffset; 99 updateProgress(json.header, json.message); 100 101 if (document.getElementById('finder-debug-data')) { 102 Object.entries(json.pluginState).forEach(function (context) { 103 document.getElementById("finder-" + context[0].replace(/\s+/g, '-').toLowerCase()).innerHTML = Joomla.sanitizeHtml(json.pluginState[context[0]].offset + " of " + json.pluginState[context[0]].total); 104 }); 105 } 106 107 if (offset < totalItems) { 108 getRequest('indexer.batch'); 109 } else if (!optimized) { 110 optimized = true; 111 getRequest('indexer.optimize'); 112 } 113 } catch (error) { 114 removeElement('progress'); 115 116 try { 117 if (json.error) { 118 if (progressHeader) { 119 progressHeader.innerText = json.header; 120 progressHeader.classList.add('finder-error'); 121 } 122 123 if (progressMessage) { 124 progressMessage.innerHTML = Joomla.sanitizeHtml(json.message); 125 progressMessage.classList.add('finder-error'); 126 } 127 } 128 } catch (ignore) { 129 if (error === '') { 130 // eslint-disable-next-line no-ex-assign 131 error = Joomla.Text._('COM_FINDER_NO_ERROR_RETURNED'); 132 } 133 134 if (progressHeader) { 135 progressHeader.innerText = Joomla.Text._('COM_FINDER_AN_ERROR_HAS_OCCURRED'); 136 progressHeader.classList.add('finder-error'); 137 } 138 139 if (progressMessage) { 140 progressMessage.innerHTML = Joomla.sanitizeHtml(error); 141 progressMessage.classList.add('finder-error'); 142 } 143 } 144 } 145 146 return true; 147 }; 148 149 var handleFailure = function handleFailure(xhr) { 150 var progressHeader = document.getElementById('finder-progress-header'); 151 var progressMessage = document.getElementById('finder-progress-message'); 152 var data = typeof xhr === 'object' && xhr.responseText ? xhr.responseText : null; 153 data = data ? JSON.parse(data) : null; 154 removeElement('progress'); 155 var header = data ? data.header : Joomla.Text._('COM_FINDER_AN_ERROR_HAS_OCCURRED'); 156 var message = data ? data.message : Joomla.Text._('COM_FINDER_MESSAGE_RETURNED') + "<br>" + data; 157 158 if (progressHeader) { 159 progressHeader.innerText = header; 160 progressHeader.classList.add('finder-error'); 161 } 162 163 if (progressMessage) { 164 progressMessage.innerHTML = Joomla.sanitizeHtml(message); 165 progressMessage.classList.add('finder-error'); 166 } 167 }; 168 169 getRequest = function getRequest(task) { 170 Joomla.request({ 171 url: path + "&task=" + task + token, 172 method: 'GET', 173 data: '', 174 perform: true, 175 headers: { 176 'Content-Type': 'application/x-www-form-urlencoded' 177 }, 178 onSuccess: function onSuccess(response) { 179 handleResponse(JSON.parse(response)); 180 }, 181 onError: function onError(xhr) { 182 handleFailure(xhr); 183 } 184 }); 185 }; 186 187 var initialize = function initialize() { 188 offset = 0; 189 progress = 0; 190 getRequest('indexer.start'); 191 }; 192 193 initialize(); 194 }; 195 })(Joomla, document); // @todo use directly the Joomla.finderIndexer() instead of the Indexer()!!! 196 197 198 document.addEventListener('DOMContentLoaded', function () { 199 window.Indexer = Joomla.finderIndexer(); 200 }); 201 202 })();
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 |