From a6d2edbe9972b4f1a8cb45f26a0c4db051ef90ef Mon Sep 17 00:00:00 2001
From: Markus Hoelzle <typo3@markus-hoelzle.de>
Date: Fri, 8 Sep 2017 18:19:59 +0200
Subject: [PATCH] [TASK] Install tool: Improve ajax error handling

Show an error message if the server answer ajax calls
with http status code 200. This could happen if a proxy
responses to the http request or a network failures
occures.

Releases: master
Resolves: #82388

Change-Id: Ie91832dde42c7d17323be084cfaf67cc98de8535
Reviewed-on: https://review.typo3.org/54035
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 .../Public/JavaScript/Modules/Cache.js        |  3 ++
 .../Modules/ChangeInstallToolPassword.js      |  3 ++
 .../Public/JavaScript/Modules/ClearTables.js  | 10 +++++++
 .../JavaScript/Modules/ClearTypo3tempFiles.js |  3 ++
 .../Public/JavaScript/Modules/CreateAdmin.js  |  3 ++
 .../JavaScript/Modules/DatabaseAnalyzer.js    |  3 ++
 .../Public/JavaScript/Modules/DumpAutoload.js |  3 ++
 .../JavaScript/Modules/EnvironmentCheck.js    |  3 ++
 .../JavaScript/Modules/ExtensionScanner.js    |  5 +++-
 .../JavaScript/Modules/FolderStructure.js     |  3 ++
 .../JavaScript/Modules/LocalConfiguration.js  |  3 ++
 .../Public/JavaScript/Modules/MailTest.js     |  3 ++
 .../Public/JavaScript/Modules/Presets.js      |  3 ++
 .../JavaScript/Modules/ResetBackendUserUc.js  |  3 ++
 .../JavaScript/Modules/SystemMaintainer.js    |  3 ++
 .../JavaScript/Modules/TcaExtTablesCheck.js   |  3 ++
 .../JavaScript/Modules/TcaMigrationsCheck.js  |  3 ++
 .../JavaScript/Modules/UpgradeWizards.js      | 29 +++++++++++++++++++
 18 files changed, 88 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/Cache.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/Cache.js
index eb071d9a8d22..f2802740969c 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/Cache.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/Cache.js
@@ -49,6 +49,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 								$outputContainer.append(message);
 							}));
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ChangeInstallToolPassword.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ChangeInstallToolPassword.js
index 0f518e0deaa6..c8bb85a9b200 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ChangeInstallToolPassword.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ChangeInstallToolPassword.js
@@ -55,6 +55,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 							var message = InfoBox.render(element.severity, element.title, element.message);
 							$outputContainer.append(message);
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTables.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTables.js
index 0f3a34efe81d..8f8c6073b594 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTables.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTables.js
@@ -89,7 +89,14 @@ define([
 							});
 							$statContainer.find(self.selectorStatLastRuler + ':last').remove();
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.append(message);
 					}
+				},
+				error: function () {
+					var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+					$outputContainer.append(message);
 				}
 			});
 		},
@@ -118,6 +125,9 @@ define([
 							var message = InfoBox.render(element.severity, element.title, element.message);
 							$outputContainer.append(message);
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.append(message);
 					}
 				},
 				error: function () {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTypo3tempFiles.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTypo3tempFiles.js
index a6ee77878088..dcb06fae0a4a 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTypo3tempFiles.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ClearTypo3tempFiles.js
@@ -56,6 +56,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 							var message = InfoBox.render(element.severity, element.title, element.message);
 							$outputContainer.html(message);
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function () {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/CreateAdmin.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/CreateAdmin.js
index 849c49fbdfbe..230384b43fc0 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/CreateAdmin.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/CreateAdmin.js
@@ -57,6 +57,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 							var message = InfoBox.render(element.severity, element.title, element.message);
 							$outputContainer.html(message);
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function () {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/DatabaseAnalyzer.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/DatabaseAnalyzer.js
index 313c0e98426d..cb7c26dd928b 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/DatabaseAnalyzer.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/DatabaseAnalyzer.js
@@ -112,6 +112,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 							$(self.selectorExecuteTrigger).prop('disabled', false);
 							$(self.selectorAnalyzeTrigger).prop('disabled', false);
 						}
+					} else {
+						var message = InfoBox.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/DumpAutoload.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/DumpAutoload.js
index e219c30eb9e1..a042e9bf444d 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/DumpAutoload.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/DumpAutoload.js
@@ -49,6 +49,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 								$outputContainer.append(message);
 							}));
 						}
+					} else {
+						var message = InfoBox.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/EnvironmentCheck.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/EnvironmentCheck.js
index 4f0a8aeb8324..55ca1b17e0d7 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/EnvironmentCheck.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/EnvironmentCheck.js
@@ -79,6 +79,9 @@ define([
                         } else if (warningCount > 0) {
                             $errorBadge.removeClass('label-error').addClass('label-warning').text(warningCount).show();
                         }
+                    } else {
+                      var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+                      $outputContainer.empty().append(message);
                     }
                 },
                 error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ExtensionScanner.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ExtensionScanner.js
index 82335067aeff..ad2707f3c533 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ExtensionScanner.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ExtensionScanner.js
@@ -25,7 +25,7 @@ define(['jquery', 'TYPO3/CMS/Backend/Notification'], function($, Notification) {
 
 		initialize: function() {
 			var self = this;
-			$(document).on('click', this.selectorScanSingleTrigger,  function(e) {
+			$(document).on('click', this.selectorScanSingleTrigger, function(e) {
 				// Scan a single extension
 				var extension = $(e.target).data('extension');
 				e.preventDefault();
@@ -293,6 +293,9 @@ define(['jquery', 'TYPO3/CMS/Backend/Notification'], function($, Notification) {
 						} else {
 							Notification.warning('No files found', 'The extension EXT:' + extension + ' contains no files we can scan');
 						}
+					} else {
+						Notification.error('Oops, an error occurred', 'Please look at the console output for details');
+						console.error(data);
 					}
 				},
 				error: function(data) {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/FolderStructure.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/FolderStructure.js
index 771d7742a2d9..13ef254f6b22 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/FolderStructure.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/FolderStructure.js
@@ -125,6 +125,9 @@ define(['jquery',
 							$outputContainer.append(message);
 						}
 						self.getStatus();
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/LocalConfiguration.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/LocalConfiguration.js
index 790ea24e2db2..66e629e98ba5 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/LocalConfiguration.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/LocalConfiguration.js
@@ -130,6 +130,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 							var message = InfoBox.render(element.severity, element.title, element.message);
 							$outputContainer.append(message);
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/MailTest.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/MailTest.js
index 3dba7c912f99..ce238c9a1b9d 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/MailTest.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/MailTest.js
@@ -61,6 +61,9 @@ define(['jquery',
 							var message = InfoBox.render(element.severity, element.title, element.message);
 							$outputContainer.html(message);
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function () {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/Presets.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/Presets.js
index cdfd37361321..f570a88e8910 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/Presets.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/Presets.js
@@ -60,6 +60,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 							var message = InfoBox.render(element.severity, element.title, element.message);
 							$outputContainer.append(message);
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ResetBackendUserUc.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ResetBackendUserUc.js
index 34e423cebeed..0b4e3ba0dfa9 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/ResetBackendUserUc.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/ResetBackendUserUc.js
@@ -50,6 +50,9 @@ define(['jquery', 'TYPO3/CMS/Install/FlashMessage', 'TYPO3/CMS/Install/ProgressB
 								$outputContainer.append(message);
 							});
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function () {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/SystemMaintainer.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/SystemMaintainer.js
index 8bee9736912c..a4e3f328339b 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/SystemMaintainer.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/SystemMaintainer.js
@@ -129,6 +129,9 @@ define([
 								$outputContainer.empty().append(message);
 							});
 						}
+					} else {
+						var message = InfoBox.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaExtTablesCheck.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaExtTablesCheck.js
index 0f5bff16f1bb..acc7712ecc81 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaExtTablesCheck.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaExtTablesCheck.js
@@ -65,6 +65,9 @@ define([
 							var message = InfoBox.render(Severity.ok, 'No TCA changes in ext_tables.php files. Good job!', '');
 							$outputContainer.empty().html(message);
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', 'Use "Check for broken extensions"');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaMigrationsCheck.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaMigrationsCheck.js
index 6e28941882cb..4a068ff08bf1 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaMigrationsCheck.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/TcaMigrationsCheck.js
@@ -65,6 +65,9 @@ define([
 							var message = InfoBox.render(Severity.ok, 'No TCA migrations need to be applied', 'Your TCA looks good.');
 							$outputContainer.empty().html(message);
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', 'Use "Check for broken extensions"');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/Modules/UpgradeWizards.js b/typo3/sysext/install/Resources/Public/JavaScript/Modules/UpgradeWizards.js
index 403e0e9b25c7..76afe8192ef9 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/Modules/UpgradeWizards.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/Modules/UpgradeWizards.js
@@ -117,6 +117,9 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 							}));
 						}
 						self.blockingUpgradesDatabaseCharsetTest();
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
@@ -176,6 +179,10 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 								$outputContainer.append(message);
 							});
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						self.removeLoadingMessage($outputContainer);
+						$outputContainer.append(message);
 					}
 				},
 				error: function() {
@@ -222,6 +229,10 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 						} else {
 							self.wizardsList();
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						self.removeLoadingMessage($outputContainer);
+						$outputContainer.append(message);
 					}
 				},
 				error: function() {
@@ -253,6 +264,10 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 							});
 							self.wizardsList();
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						self.removeLoadingMessage($outputContainer);
+						$outputContainer.append(message);
 					}
 				},
 				error: function() {
@@ -308,6 +323,10 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 							.find('span')
 							.text(parseInt(percent) + '%');
 						$outputContainer.append(list);
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						self.removeLoadingMessage($outputContainer);
+						$outputContainer.append(message);
 					}
 				},
 				error: function() {
@@ -393,6 +412,9 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 						self.wizardsList();
 						$outputDoneContainer.empty();
 						self.doneUpgrades();
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
@@ -448,6 +470,10 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 						if (hasBodyContent === true) {
 							$outputContainer.append(body);
 						}
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						self.removeLoadingMessage($outputContainer);
+						$outputContainer.append(message);
 					}
 				},
 				error: function() {
@@ -484,6 +510,9 @@ function($, FlashMessage, ProgressBar, InfoBox, Severity) {
 							self.doneUpgrades();
 							self.blockingUpgradesDatabaseCharsetTest();
 						});
+					} else {
+						var message = FlashMessage.render(Severity.error, 'Something went wrong', '');
+						$outputContainer.empty().html(message);
 					}
 				},
 				error: function() {
-- 
GitLab