diff --git a/assets/js/app.js b/assets/js/app.js
index 65336fed..d81a2cf0 100644
--- a/assets/js/app.js
+++ b/assets/js/app.js
@@ -42,6 +42,7 @@ require('bootstrap');
import "./sidebar"
import "./datatables";
+import "./error_handler";
//import "./tab_remember";
import "./register_events";
diff --git a/assets/js/error_handler.js b/assets/js/error_handler.js
new file mode 100644
index 00000000..4cf3ef77
--- /dev/null
+++ b/assets/js/error_handler.js
@@ -0,0 +1,76 @@
+import * as bootbox from "bootbox";
+
+/**
+ * If this class is imported the user is shown an error dialog if he calls an page via Turbo and an error is responded.
+ * @type {ErrorHandlerHelper}
+ */
+const ErrorHandlerHelper = class {
+ constructor() {
+ console.log('Error Handler registered');
+
+ const content = document.getElementById('content');
+ content.addEventListener('turbo:before-fetch-response', (event) => this.handleError(event));
+ }
+
+ handleError(event) {
+ const fetchResponse = event.detail.fetchResponse;
+ const response = fetchResponse.response;
+
+ //Ignore aborted requests.
+ if (response.statusText =='abort' || response.status == 0) {
+ return;
+ }
+
+ if(fetchResponse.failed) {
+ //Create error text
+ let title = response.statusText + ' (Status ' + response.status + ')';
+
+ /**
+ switch(response.status) {
+ case 500:
+ title = 'Internal Server Error!';
+ break;
+ case 404:
+ title = "Site not found!";
+ break;
+ case 403:
+ title = "Permission denied!";
+ break;
+ } **/
+
+ const alert = bootbox.alert(
+ {
+ size: 'large',
+ message: function() {
+ let url = fetchResponse.location.toString();
+ let msg = `Error calling ${url}. `;
+ msg += 'Try to reload the page or contact the administrator if this error persists.'
+
+ msg += '
' + 'View details' + "";
+ msg += "