1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-22 01:21:23 +02:00

[ticket/13740] Use tabs instead of spaces in JS file

PHPBB3-13740
This commit is contained in:
Mate Bartus
2015-07-23 23:46:36 +02:00
parent 3840882b93
commit 27d2d58e05

View File

@@ -3,398 +3,398 @@
*/ */
(function($) { // Avoid conflicts with other libraries (function($) { // Avoid conflicts with other libraries
'use strict'; 'use strict';
// Installer variables // Installer variables
var pollTimer = null; var pollTimer = null;
var nextReadPosition = 0; var nextReadPosition = 0;
var progressBarTriggered = false; var progressBarTriggered = false;
var progressTimer = null; var progressTimer = null;
var currentProgress = 0; var currentProgress = 0;
// Template related variables // Template related variables
var $contentWrapper = $('.install-body').find('.main'); var $contentWrapper = $('.install-body').find('.main');
// Intercept form submits // Intercept form submits
interceptFormSubmit($('#install_install')); interceptFormSubmit($('#install_install'));
/** /**
* Creates an XHR object * Creates an XHR object
* *
* jQuery cannot be used as the response is streamed, and * jQuery cannot be used as the response is streamed, and
* as of now, jQuery does not provide access to the response until * as of now, jQuery does not provide access to the response until
* the connection is not closed. * the connection is not closed.
* *
* @return XMLHttpRequest * @return XMLHttpRequest
*/ */
function createXhrObject() { function createXhrObject() {
return new XMLHttpRequest(); return new XMLHttpRequest();
} }
/** /**
* Displays error, warning and log messages * Displays error, warning and log messages
* *
* @param type * @param type
* @param messages * @param messages
*/ */
function addMessage(type, messages) { function addMessage(type, messages) {
// Get message containers // Get message containers
var $errorContainer = $('#error-container'); var $errorContainer = $('#error-container');
var $warningContainer = $('#warning-container'); var $warningContainer = $('#warning-container');
var $logContainer = $('#log-container'); var $logContainer = $('#log-container');
var $title, $description, $msgElement, arraySize = messages.length; var $title, $description, $msgElement, arraySize = messages.length;
for (var i = 0; i < arraySize; i++) { for (var i = 0; i < arraySize; i++) {
$msgElement = $('<div />'); $msgElement = $('<div />');
$title = $(document.createElement('strong')); $title = $(document.createElement('strong'));
$title.text(messages[i].title); $title.text(messages[i].title);
$msgElement.append($title); $msgElement.append($title);
if (messages[i].hasOwnProperty('description')) { if (messages[i].hasOwnProperty('description')) {
$description = $(document.createElement('p')); $description = $(document.createElement('p'));
$description.html(messages[i].description); $description.html(messages[i].description);
$msgElement.append($description); $msgElement.append($description);
} }
switch (type) { switch (type) {
case 'error': case 'error':
$msgElement.addClass('errorbox'); $msgElement.addClass('errorbox');
$errorContainer.append($msgElement); $errorContainer.append($msgElement);
break; break;
case 'warning': case 'warning':
$msgElement.addClass('warningbox'); $msgElement.addClass('warningbox');
$warningContainer.append($msgElement); $warningContainer.append($msgElement);
break; break;
case 'log': case 'log':
$msgElement.addClass('log'); $msgElement.addClass('log');
$logContainer.append($msgElement); $logContainer.append($msgElement);
break; break;
case 'success': case 'success':
$msgElement.addClass('successbox'); $msgElement.addClass('successbox');
$errorContainer.prepend($msgElement); $errorContainer.prepend($msgElement);
break; break;
} }
} }
} }
/** /**
* Displays a form from the response * Displays a form from the response
* *
* @param formHtml * @param formHtml
*/ */
function addForm(formHtml) { function addForm(formHtml) {
var $formContainer = $('#content-container'); var $formContainer = $('#content-container');
$formContainer.html(formHtml); $formContainer.html(formHtml);
var $form = $('#install_install'); var $form = $('#install_install');
interceptFormSubmit($form); interceptFormSubmit($form);
} }
/** /**
* Handles navigation status updates * Handles navigation status updates
* *
* @param navObj * @param navObj
*/ */
function updateNavbarStatus(navObj) { function updateNavbarStatus(navObj) {
var navID, $stage, $stageListItem, $active; var navID, $stage, $stageListItem, $active;
$active = $('#activemenu'); $active = $('#activemenu');
if (navObj.hasOwnProperty('finished')) { if (navObj.hasOwnProperty('finished')) {
// This should be an Array // This should be an Array
var navItems = navObj.finished; var navItems = navObj.finished;
for (var i = 0; i < navItems.length; i++) { for (var i = 0; i < navItems.length; i++) {
navID = 'installer-stage-' + navItems[i]; navID = 'installer-stage-' + navItems[i];
$stage = $('#' + navID); $stage = $('#' + navID);
$stageListItem = $stage.parent(); $stageListItem = $stage.parent();
if ($active.length && $active.is($stageListItem)) { if ($active.length && $active.is($stageListItem)) {
$active.removeAttr('id'); $active.removeAttr('id');
} }
$stage.addClass('completed'); $stage.addClass('completed');
} }
} }
if (navObj.hasOwnProperty('active')) { if (navObj.hasOwnProperty('active')) {
navID = 'installer-stage-' + navObj.active; navID = 'installer-stage-' + navObj.active;
$stage = $('#' + navID); $stage = $('#' + navID);
$stageListItem = $stage.parent(); $stageListItem = $stage.parent();
if ($active.length && !$active.is($stageListItem)) { if ($active.length && !$active.is($stageListItem)) {
$active.removeAttr('id'); $active.removeAttr('id');
} }
$stageListItem.attr('id', 'activemenu'); $stageListItem.attr('id', 'activemenu');
} }
} }
/** /**
* Renders progress bar * Renders progress bar
* *
* @param progressObject * @param progressObject
*/ */
function setProgress(progressObject) { function setProgress(progressObject) {
var $statusText, $progressBar, $progressText, $progressFiller; var $statusText, $progressBar, $progressText, $progressFiller;
if (progressObject.task_name.length) { if (progressObject.task_name.length) {
if (!progressBarTriggered) { if (!progressBarTriggered) {
// Create progress bar // Create progress bar
var $contentContainer = $('#content-container'); var $contentContainer = $('#content-container');
// Create progress bar elements // Create progress bar elements
$progressBar = $('<div />'); $progressBar = $('<div />');
$progressBar.attr('id', 'progress-bar'); $progressBar.attr('id', 'progress-bar');
$progressText = $('<p />'); $progressText = $('<p />');
$progressText.attr('id', 'progress-bar-text'); $progressText.attr('id', 'progress-bar-text');
$progressFiller = $('<span />'); $progressFiller = $('<span />');
$progressFiller.attr('id', 'progress-bar-filler'); $progressFiller.attr('id', 'progress-bar-filler');
$statusText = $('<p />'); $statusText = $('<p />');
$statusText.attr('id', 'progress-status-text'); $statusText.attr('id', 'progress-status-text');
$progressBar.append($progressFiller); $progressBar.append($progressFiller);
$progressBar.append($progressText); $progressBar.append($progressText);
$contentContainer.append($statusText); $contentContainer.append($statusText);
$contentContainer.append($progressBar); $contentContainer.append($progressBar);
progressBarTriggered = true; progressBarTriggered = true;
} else { } else {
$statusText = $('#progress-status-text'); $statusText = $('#progress-status-text');
} }
// Update progress bar // Update progress bar
$statusText.text(progressObject.task_name + '…'); $statusText.text(progressObject.task_name + '…');
incrementProgressBar(Math.round(progressObject.task_num / progressObject.task_count * 100)); incrementProgressBar(Math.round(progressObject.task_num / progressObject.task_count * 100));
} }
} }
// Set cookies // Set cookies
function setCookies(cookies) { function setCookies(cookies) {
var cookie; var cookie;
for (var i = 0; i < cookies.length; i++) { for (var i = 0; i < cookies.length; i++) {
// Set cookie name and value // Set cookie name and value
cookie = encodeURIComponent(cookies[i].name) + '=' + encodeURIComponent(cookies[i].value); cookie = encodeURIComponent(cookies[i].name) + '=' + encodeURIComponent(cookies[i].value);
// Set path // Set path
cookie += '; path=/'; cookie += '; path=/';
document.cookie = cookie; document.cookie = cookie;
} }
} }
/** /**
* Parse messages from the response object * Parse messages from the response object
* *
* @param messageJSON * @param messageJSON
*/ */
function parseMessage(messageJSON) { function parseMessage(messageJSON) {
$('#loading_indicator').css('display', 'none'); $('#loading_indicator').css('display', 'none');
var responseObject = JSON.parse(messageJSON); var responseObject = JSON.parse(messageJSON);
// Parse object // Parse object
if (responseObject.hasOwnProperty('errors')) { if (responseObject.hasOwnProperty('errors')) {
addMessage('error', responseObject.errors); addMessage('error', responseObject.errors);
} }
if (responseObject.hasOwnProperty('warnings')) { if (responseObject.hasOwnProperty('warnings')) {
addMessage('warning', responseObject.warnings); addMessage('warning', responseObject.warnings);
} }
if (responseObject.hasOwnProperty('logs')) { if (responseObject.hasOwnProperty('logs')) {
addMessage('log', responseObject.logs); addMessage('log', responseObject.logs);
} }
if (responseObject.hasOwnProperty('success')) { if (responseObject.hasOwnProperty('success')) {
addMessage('success', responseObject.success); addMessage('success', responseObject.success);
} }
if (responseObject.hasOwnProperty('form')) { if (responseObject.hasOwnProperty('form')) {
addForm(responseObject.form); addForm(responseObject.form);
} }
if (responseObject.hasOwnProperty('progress')) { if (responseObject.hasOwnProperty('progress')) {
setProgress(responseObject.progress); setProgress(responseObject.progress);
} }
if (responseObject.hasOwnProperty('nav')) { if (responseObject.hasOwnProperty('nav')) {
updateNavbarStatus(responseObject.nav); updateNavbarStatus(responseObject.nav);
} }
if (responseObject.hasOwnProperty('cookies')) { if (responseObject.hasOwnProperty('cookies')) {
setCookies(responseObject.cookies); setCookies(responseObject.cookies);
} }
} }
/** /**
* Process updates in streamed response * Process updates in streamed response
* *
* @param xhReq XHR object * @param xhReq XHR object
*/ */
function pollContent(xhReq) { function pollContent(xhReq) {
var messages = xhReq.responseText; var messages = xhReq.responseText;
var msgSeparator = '}\n\n'; var msgSeparator = '}\n\n';
var unprocessed, messageEndIndex, endOfMessageIndex, message; var unprocessed, messageEndIndex, endOfMessageIndex, message;
do { do {
unprocessed = messages.substring(nextReadPosition); unprocessed = messages.substring(nextReadPosition);
messageEndIndex = unprocessed.indexOf(msgSeparator); messageEndIndex = unprocessed.indexOf(msgSeparator);
if (messageEndIndex !== -1) { if (messageEndIndex !== -1) {
endOfMessageIndex = messageEndIndex + msgSeparator.length; endOfMessageIndex = messageEndIndex + msgSeparator.length;
message = unprocessed.substring(0, endOfMessageIndex); message = unprocessed.substring(0, endOfMessageIndex);
parseMessage(message); parseMessage(message);
nextReadPosition += endOfMessageIndex; nextReadPosition += endOfMessageIndex;
} }
} while (messageEndIndex !== -1); } while (messageEndIndex !== -1);
if (xhReq.readyState === 4) { if (xhReq.readyState === 4) {
$('#loading_indicator').css('display', 'none'); $('#loading_indicator').css('display', 'none');
resetPolling(); resetPolling();
} }
} }
/** /**
* Animates the progress bar * Animates the progress bar
* *
* @param $progressText * @param $progressText
* @param $progressFiller * @param $progressFiller
* @param progressLimit * @param progressLimit
*/ */
function incrementFiller($progressText, $progressFiller, progressLimit) { function incrementFiller($progressText, $progressFiller, progressLimit) {
if (currentProgress >= progressLimit || currentProgress >= 100) { if (currentProgress >= progressLimit || currentProgress >= 100) {
clearInterval(progressTimer); clearInterval(progressTimer);
return; return;
} }
currentProgress++; currentProgress++;
$progressText.text(currentProgress + '%'); $progressText.text(currentProgress + '%');
$progressFiller.css('width', currentProgress + '%'); $progressFiller.css('width', currentProgress + '%');
} }
/** /**
* Wrapper function for progress bar rendering and animating * Wrapper function for progress bar rendering and animating
* *
* @param progressLimit * @param progressLimit
*/ */
function incrementProgressBar(progressLimit) { function incrementProgressBar(progressLimit) {
var $progressFiller = $('#progress-bar-filler'); var $progressFiller = $('#progress-bar-filler');
var $progressText = $('#progress-bar-text'); var $progressText = $('#progress-bar-text');
var progressStart = $progressFiller.width() / $progressFiller.offsetParent().width() * 100; var progressStart = $progressFiller.width() / $progressFiller.offsetParent().width() * 100;
currentProgress = Math.floor(progressStart); currentProgress = Math.floor(progressStart);
clearInterval(progressTimer); clearInterval(progressTimer);
progressTimer = setInterval(function() { progressTimer = setInterval(function() {
incrementFiller($progressText, $progressFiller, progressLimit); incrementFiller($progressText, $progressFiller, progressLimit);
}, 10); }, 10);
} }
/** /**
* Resets the polling timer * Resets the polling timer
*/ */
function resetPolling() { function resetPolling() {
clearInterval(pollTimer); clearInterval(pollTimer);
nextReadPosition = 0; nextReadPosition = 0;
} }
/** /**
* Sets up timer for processing the streamed HTTP response * Sets up timer for processing the streamed HTTP response
* *
* @param xhReq * @param xhReq
*/ */
function startPolling(xhReq) { function startPolling(xhReq) {
resetPolling(); resetPolling();
pollTimer = setInterval(function () { pollTimer = setInterval(function () {
pollContent(xhReq); pollContent(xhReq);
}, 250); }, 250);
} }
/** /**
* Renders the AJAX UI layout * Renders the AJAX UI layout
*/ */
function setupAjaxLayout() { function setupAjaxLayout() {
// Clear content // Clear content
$contentWrapper.html(''); $contentWrapper.html('');
var $header = $('<div />'); var $header = $('<div />');
$header.attr('id', 'header-container'); $header.attr('id', 'header-container');
$contentWrapper.append($header); $contentWrapper.append($header);
var $description = $('<div />'); var $description = $('<div />');
$description.attr('id', 'description-container'); $description.attr('id', 'description-container');
$contentWrapper.append($description); $contentWrapper.append($description);
var $errorContainer = $('<div />'); var $errorContainer = $('<div />');
$errorContainer.attr('id', 'error-container'); $errorContainer.attr('id', 'error-container');
$contentWrapper.append($errorContainer); $contentWrapper.append($errorContainer);
var $warningContainer = $('<div />'); var $warningContainer = $('<div />');
$warningContainer.attr('id', 'warning-container'); $warningContainer.attr('id', 'warning-container');
$contentWrapper.append($warningContainer); $contentWrapper.append($warningContainer);
var $installerContentWrapper = $('<div />'); var $installerContentWrapper = $('<div />');
$installerContentWrapper.attr('id', 'content-container'); $installerContentWrapper.attr('id', 'content-container');
$contentWrapper.append($installerContentWrapper); $contentWrapper.append($installerContentWrapper);
var $logContainer = $('<div />'); var $logContainer = $('<div />');
$logContainer.attr('id', 'log-container'); $logContainer.attr('id', 'log-container');
$contentWrapper.append($logContainer); $contentWrapper.append($logContainer);
var $spinner = $('<div />'); var $spinner = $('<div />');
$spinner.attr('id', 'loading_indicator'); $spinner.attr('id', 'loading_indicator');
$spinner.html('&nbsp;'); $spinner.html('&nbsp;');
$contentWrapper.append($spinner); $contentWrapper.append($spinner);
} }
// Submits a form // Submits a form
function submitForm($form, $submitBtn) { function submitForm($form, $submitBtn) {
$form.css('display', 'none'); $form.css('display', 'none');
var xhReq = createXhrObject(); var xhReq = createXhrObject();
xhReq.open('POST', $form.attr('action'), true); xhReq.open('POST', $form.attr('action'), true);
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhReq.send(getFormFields($form, $submitBtn)); xhReq.send(getFormFields($form, $submitBtn));
// Disable language selector // Disable language selector
$('#language_selector :input, label').css('display', 'none'); $('#language_selector :input, label').css('display', 'none');
// Clear content // Clear content
setupAjaxLayout(); setupAjaxLayout();
$('#loading_indicator').css('display', 'block'); $('#loading_indicator').css('display', 'block');
startPolling(xhReq); startPolling(xhReq);
} }
/** /**
* Add submit button to the POST information * Add submit button to the POST information
* *
* @param $form * @param $form
* @param $submitBtn * @param $submitBtn
* *
* @returns {*} * @returns {*}
*/ */
function getFormFields($form, $submitBtn) { function getFormFields($form, $submitBtn) {
var formData = $form.serialize(); var formData = $form.serialize();
formData += ((formData.length) ? '&' : '') + encodeURIComponent($submitBtn.attr('name')) + '='; formData += ((formData.length) ? '&' : '') + encodeURIComponent($submitBtn.attr('name')) + '=';
formData += encodeURIComponent($submitBtn.attr('value')); formData += encodeURIComponent($submitBtn.attr('value'));
return formData; return formData;
} }
/** /**
* Intercept form submit events and determine the submit button used * Intercept form submit events and determine the submit button used
* *
* @param $form * @param $form
*/ */
function interceptFormSubmit($form) { function interceptFormSubmit($form) {
if (!$form.length) { if (!$form.length) {
return; return;
} }
$form.find(':submit').bind('click', function (event) { $form.find(':submit').bind('click', function (event) {
event.preventDefault(); event.preventDefault();
submitForm($form, $(this)); submitForm($form, $(this));
}); });
} }
})(jQuery); // Avoid conflicts with other libraries })(jQuery); // Avoid conflicts with other libraries