1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

[ticket/14039] Revamp updater

PHPBB3-14039
This commit is contained in:
Mate Bartus
2015-07-24 09:20:50 +02:00
parent f1047ac854
commit 8f5a0ad6f7
94 changed files with 4514 additions and 263 deletions

View File

@@ -11,6 +11,7 @@
var progressBarTriggered = false;
var progressTimer = null;
var currentProgress = 0;
var refreshRequested = false;
// Template related variables
var $contentWrapper = $('.install-body').find('.main');
@@ -67,7 +68,8 @@
break;
case 'log':
$msgElement.addClass('log');
$logContainer.append($msgElement);
$logContainer.prepend($msgElement);
$logContainer.addClass('show_border');
break;
case 'success':
$msgElement.addClass('successbox');
@@ -77,13 +79,54 @@
}
}
/**
* Render a download box
*/
function addDownloadBox(downloadArray)
{
var $downloadContainer = $('#download-wrapper');
var $downloadBox, $title, $content, $link;
for (var i = 0; i < downloadArray.length; i++) {
$downloadBox = $('<div />');
$downloadBox.addClass('download-box');
$title = $('<strong />');
$title.text(downloadArray[i].title);
$downloadBox.append($title);
if (downloadArray[i].hasOwnProperty('msg')) {
$content = $('<p />');
$content.text(downloadArray[i].msg);
$downloadBox.append($content);
}
$link = $('<a />');
$link.addClass('button1');
$link.attr('href', downloadArray[i].href);
$link.text(downloadArray[i].download);
$downloadBox.append($link);
$downloadContainer.append($downloadBox);
}
}
/**
* Render update files' status
*/
function addUpdateFileStatus(fileStatus)
{
var $statusContainer = $('#file-status-wrapper');
$statusContainer.html(fileStatus);
}
/**
* Displays a form from the response
*
* @param formHtml
*/
function addForm(formHtml) {
var $formContainer = $('#content-container');
var $formContainer = $('#form-wrapper');
$formContainer.html(formHtml);
var $form = $('#install_install');
interceptFormSubmit($form);
@@ -139,7 +182,7 @@
if (progressObject.task_name.length) {
if (!progressBarTriggered) {
// Create progress bar
var $contentContainer = $('#content-container');
var $progressBarWrapper = $('#progress-bar-container');
// Create progress bar elements
$progressBar = $('<div />');
@@ -155,10 +198,21 @@
$progressBar.append($progressFiller);
$progressBar.append($progressText);
$contentContainer.append($statusText);
$contentContainer.append($progressBar);
$progressBarWrapper.append($statusText);
$progressBarWrapper.append($progressBar);
progressBarTriggered = true;
} else if (progressObject.hasOwnProperty('restart')) {
clearInterval(progressTimer);
$progressFiller = $('#progress-bar-filler');
$progressText = $('#progress-bar-text');
$statusText = $('#progress-status-text');
$progressText.text('0%');
$progressFiller.css('width', '0%');
currentProgress = 0;
} else {
$statusText = $('#progress-status-text');
}
@@ -217,6 +271,14 @@
setProgress(responseObject.progress);
}
if (responseObject.hasOwnProperty('download')) {
addDownloadBox(responseObject.download);
}
if (responseObject.hasOwnProperty('file_status')) {
addUpdateFileStatus(responseObject.file_status);
}
if (responseObject.hasOwnProperty('nav')) {
updateNavbarStatus(responseObject.nav);
}
@@ -224,6 +286,10 @@
if (responseObject.hasOwnProperty('cookies')) {
setCookies(responseObject.cookies);
}
if (responseObject.hasOwnProperty('refresh')) {
refreshRequested = true;
}
}
/**
@@ -243,7 +309,7 @@
if (messageEndIndex !== -1) {
endOfMessageIndex = messageEndIndex + msgSeparator.length;
message = unprocessed.substring(0, endOfMessageIndex);
parseMessage(message);
parseMessage($.trim(message));
nextReadPosition += endOfMessageIndex;
}
} while (messageEndIndex !== -1);
@@ -251,6 +317,11 @@
if (xhReq.readyState === 4) {
$('#loading_indicator').css('display', 'none');
resetPolling();
if (refreshRequested) {
refreshRequested = false;
doRefresh();
}
}
}
@@ -309,10 +380,26 @@
}, 250);
}
/**
* Refresh page
*/
function doRefresh() {
resetPolling();
var xhReq = createXhrObject();
xhReq.open('GET', $(location).attr('pathname'), true);
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhReq.send();
startPolling(xhReq);
}
/**
* Renders the AJAX UI layout
*/
function setupAjaxLayout() {
progressBarTriggered = false;
// Clear content
$contentWrapper.html('');
@@ -332,14 +419,30 @@
$warningContainer.attr('id', 'warning-container');
$contentWrapper.append($warningContainer);
var $installerContentWrapper = $('<div />');
$installerContentWrapper.attr('id', 'content-container');
$contentWrapper.append($installerContentWrapper);
var $progressContainer = $('<div />');
$progressContainer.attr('id', 'progress-bar-container');
$contentWrapper.append($progressContainer);
var $logContainer = $('<div />');
$logContainer.attr('id', 'log-container');
$contentWrapper.append($logContainer);
var $installerContentWrapper = $('<div />');
$installerContentWrapper.attr('id', 'content-container');
$contentWrapper.append($installerContentWrapper);
var $installerDownloadWrapper = $('<div />');
$installerDownloadWrapper.attr('id', 'download-wrapper');
$installerContentWrapper.append($installerDownloadWrapper);
var $updaterFileStatusWrapper = $('<div />');
$updaterFileStatusWrapper.attr('id', 'file-status-wrapper');
$installerContentWrapper.append($updaterFileStatusWrapper);
var $formWrapper = $('<div />');
$formWrapper.attr('id', 'form-wrapper');
$installerContentWrapper.append($formWrapper);
var $spinner = $('<div />');
$spinner.attr('id', 'loading_indicator');
$spinner.html('&nbsp;');