Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions Classes/Utility/GuideUtility.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,11 @@ public function getRegisteredGuideTours()
$tour['name'] = $tourKey;
// Merge user configuration
if (isset($backendUser->uc['moduleData']['guide'][$tour['name']])) {
$tours[$tour['name']] = array_merge($tour,
$backendUser->uc['moduleData']['guide'][$tour['name']]);
// Keep original values → no mergeRecursiveWithOverrule() here
$tours[$tour['name']] = array_merge(
$tour,
$backendUser->uc['moduleData']['guide'][$tour['name']]
);
} else {
$tours[$tour['name']] = $tour;
}
Expand Down
59 changes: 34 additions & 25 deletions Resources/Public/JavaScript/BootstrapTourController.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,17 +240,24 @@ define(['jquery', 'TYPO3/CMS/Guide/BootstrapTourParser', 'TYPO3/CMS/Guide/Logger
});
};


top.TYPO3.Guide.getTourNameByModuleName = function() {
jQuery.each(top.TYPO3.Guide.TourData, function(tourName, tour) {
if(tour.moduleName === top.TYPO3.Guide.currentModule) {
top.TYPO3.Guide.currentTourName = tourName;
}
});
};




/**
* Start Guide Tour Script
*
* Bind events, load all tours, (re)start current tour
*/
return function() {
Logger.log("Start up guided tour");
Logger.log("Start up guided tours");

// Bind button events
var onclickEnableTour = jQuery('a[data-onclick=\'enableTour\']');
if(onclickEnableTour.length>0) {
Expand Down Expand Up @@ -309,17 +316,18 @@ define(['jquery', 'TYPO3/CMS/Guide/BootstrapTourParser', 'TYPO3/CMS/Guide/Logger
return false;
});
}

// Executed within a frame?
var inFrame = false;
if(window.top !== window.self) {
inFrame = true;
}
// Get module identifier
// Get current module identifier
var currentModuleId = top.TYPO3.Guide.getUrlParameterByName('M', window.location.href);
var isLoggedIn = top.TYPO3.Guide.getUrlParameterByName('token', window.location.href) !== null || currentModuleId !== null;
// Logged in and in top frame
var isLoggedIn = top.TYPO3.Guide.getUrlParameterByName('token', window.location.href) !== null || currentModuleId !== null;
// Logged in and no frame/module selected yet
if(isLoggedIn && !inFrame) {
// Get all tours
// First get all tours via Ajax
jQuery.ajax({
dataType: 'json',
url: TYPO3.settings.ajaxUrls['GuideController::ajaxRequest'],
Expand All @@ -330,9 +338,10 @@ define(['jquery', 'TYPO3/CMS/Guide/BootstrapTourParser', 'TYPO3/CMS/Guide/Logger
if(result.debug) {
Logger.enableLogger();
}
// Get tours
// Get all available tours via Ajax
top.TYPO3.Guide.TourData = result.tours;
// Init core tours

// Initialize core tours, if available
if(typeof(top.TYPO3.Guide.TourData['Tree']) !== 'undefined') {
top.TYPO3.Guide.loadTour('Tree', false);
}
Expand All @@ -347,7 +356,6 @@ define(['jquery', 'TYPO3/CMS/Guide/BootstrapTourParser', 'TYPO3/CMS/Guide/Logger
}
// Init frame tours
if(inFrame) {
//top.TYPO3.Guide.end();
// Current identifier
top.TYPO3.Guide.currentModule = currentModuleId;
// Reset current tour
Expand All @@ -357,40 +365,41 @@ 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
if(typeof(top.TYPO3.Guide.TourData['Tree']) !== 'undefined') {
top.TYPO3.Guide.Tours.Tree.end();
}
if(typeof(top.TYPO3.Guide.TourData['Menu']) !== 'undefined') {
top.TYPO3.Guide.Tours.Menu.end();
}
if(typeof(top.TYPO3.Guide.TourData['Topbar']) !== 'undefined') {
top.TYPO3.Guide.Tours.Topbar.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);
}


// top.TYPO3.Guide.currentTourName = '';
if(typeof(top.TYPO3.Guide.TourData) !== 'undefined') {
Logger.log('frame: tourdata is available', top.TYPO3.Guide.TourData);
Logger.log('frame: start currentTourname', top.TYPO3.Guide.currentTourName);
if((top.TYPO3.Guide.currentTourName === '' || typeof top.TYPO3.Guide.currentTourName === 'undefined') && currentModuleId === 'help_AboutAboutmodules') {
top.TYPO3.Guide.getTourNameByModuleName();
}

Logger.log('currentModule: ', top.TYPO3.Guide.currentModule);
Logger.log('currentTourName: ', top.TYPO3.Guide.currentTourName);
/**
* @todo Always initialize tours because of a bug
*/
if(top.TYPO3.Guide.currentTourName !== '') {

top.TYPO3.Guide.loadTour(top.TYPO3.Guide.currentTourName, true);
if(top.TYPO3.Guide.currentTourName !== '' && typeof(top.TYPO3.Guide.currentTourName) !== 'undefined') {
if(typeof(top.TYPO3.Guide.Tours[top.TYPO3.Guide.currentTourName]) === 'undefined') {
Logger.log('frame: tour ' + top.TYPO3.Guide.currentTourName + ' is not available -> load');
// top.TYPO3.Guide.loadTour(top.TYPO3.Guide.currentTourName, true);
}
else {
Logger.log('frame: tour ' + top.TYPO3.Guide.currentTourName + ' is available -> start');
// top.TYPO3.Guide.startTour(top.TYPO3.Guide.currentTourName);
top.TYPO3.Guide.loadTour(top.TYPO3.Guide.currentTourName, true);
}
Logger.log('frame: tour ' + top.TYPO3.Guide.currentTourName + ' is available -> start');
top.TYPO3.Guide.startTour(top.TYPO3.Guide.currentTourName);
}
}
else {
Expand Down