diff options
Diffstat (limited to 'phpBB/assets/javascript/installer.js')
-rw-r--r-- | phpBB/assets/javascript/installer.js | 62 |
1 files changed, 56 insertions, 6 deletions
diff --git a/phpBB/assets/javascript/installer.js b/phpBB/assets/javascript/installer.js index d9f446a28d..03b5b7deae 100644 --- a/phpBB/assets/javascript/installer.js +++ b/phpBB/assets/javascript/installer.js @@ -13,6 +13,9 @@ var currentProgress = 0; var refreshRequested = false; var transmissionOver = false; + var status = ''; + var statusCount = 0; + var statusTimeout = null; // Template related variables var $contentWrapper = $('.install-body').find('.main'); @@ -372,12 +375,45 @@ } if (timeoutDetected) { - addMessage('error', - [{ - title: installLang.title, - description: installLang.msg - }] - ); + status = queryInstallerStatus(); + statusCount = 0; + + if (status === 'continue') { + refreshRequested = false; + doRefresh(); + } else if (status === 'running') { + statusTimeout = setTimeout(function() { + var s = queryInstallerStatus(); + if (statusCount === 12) { // 1 minute hard cap + s = 'fail'; + } + + if (s === 'continue') { + refreshRequested = false; + doRefresh(); + clearTimeout(statusTimeout); + } else if (s === 'fail') { + addMessage('error', + [{ + title: installLang.title, + description: installLang.msg + }] + ); + clearTimeout(statusTimeout); + } + + statusCount++; + }, + 5000 + ); + } else { + addMessage('error', + [{ + title: installLang.title, + description: installLang.msg + }] + ); + } } } } @@ -564,4 +600,18 @@ submitForm($form, $(this)); }); } + + /** + * Queries the installer's status + */ + function queryInstallerStatus() + { + var data = null; + $.ajax({url: "../installer/status", dataType: "json"}) + .done(function(d) { + data = d; + }); + + return data.status; + } })(jQuery); // Avoid conflicts with other libraries |