From cc4cf9573dfc518ded0fbd0ee96115e2524fa95a Mon Sep 17 00:00:00 2001 From: Dan Untenzu Date: Mon, 26 Feb 2018 13:13:09 +0100 Subject: [PATCH] [BUGFIX] Load all tours on start already MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tour may not start and throw an error instead: "startTour: SomeTourName tour not found" This is because the tour is not loaded/initialized yet. with this fix all available tours are always loaded. * Pro: Tours working again. * Con: Very negative perfomance impact (one request & data handling for each tour) → his fix should be replaced again soon --- .../JavaScript/BootstrapTourController.js | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/Resources/Public/JavaScript/BootstrapTourController.js b/Resources/Public/JavaScript/BootstrapTourController.js index 6e38267..a88b2f3 100644 --- a/Resources/Public/JavaScript/BootstrapTourController.js +++ b/Resources/Public/JavaScript/BootstrapTourController.js @@ -248,7 +248,7 @@ define(['jquery', 'TYPO3/CMS/Guide/BootstrapTourParser', 'TYPO3/CMS/Guide/Logger } }); }; - + return function() { Logger.log("Start up guided tour"); // Bind button events @@ -332,15 +332,12 @@ define(['jquery', 'TYPO3/CMS/Guide/BootstrapTourParser', 'TYPO3/CMS/Guide/Logger } // Get tours top.TYPO3.Guide.TourData = result.tours; - // Init core tours - if(typeof(top.TYPO3.Guide.TourData['Tree']) !== 'undefined') { - top.TYPO3.Guide.loadTour('Tree', false); - } - if(typeof(top.TYPO3.Guide.TourData['Menu']) !== 'undefined') { - top.TYPO3.Guide.loadTour('Menu', false); - } - if(typeof(top.TYPO3.Guide.TourData['Topbar']) !== 'undefined') { - top.TYPO3.Guide.loadTour('Topbar', false); + + // Bugfix: Always initialize *all* tours because of the + // required tour data may be missing upon startTour() execution + for (var key in top.TYPO3.Guide.TourData) { + top.TYPO3.Guide.loadTour(key); + Logger.log('Init tour on start already: ', key); } } }); @@ -357,11 +354,9 @@ define(['jquery', 'TYPO3/CMS/Guide/BootstrapTourParser', 'TYPO3/CMS/Guide/Logger // Restart a tour else if(typeof top.TYPO3.Guide.restartTourName !== 'undefined' && top.TYPO3.Guide.restartTourName !== '') { - // First! End some tours - top.TYPO3.Guide.Tours.Menu.end(); - top.TYPO3.Guide.Tours.Tree.end(); - top.TYPO3.Guide.Tours.Topbar.end(); - // Now grab the reminded tour. + // First end some tours + top.TYPO3.Guide.end(); + // Now grab the reminded tour top.TYPO3.Guide.currentTourName = top.TYPO3.Guide.restartTourName; top.TYPO3.Guide.restartTourName = ''; Logger.log('Restart: ', top.TYPO3.Guide.currentTourName);