diff --git a/blocks/myoverview/amd/build/tab_preferences.min.js b/blocks/myoverview/amd/build/tab_preferences.min.js index 7b3b97f4533..2bfb8fe06b0 100644 --- a/blocks/myoverview/amd/build/tab_preferences.min.js +++ b/blocks/myoverview/amd/build/tab_preferences.min.js @@ -1 +1 @@ -define(["jquery","core/ajax","core/custom_interaction_events"],function(a,b,c){var d=function(d){c.define(d,[c.events.activate]),d.on(c.events.activate,"[data-toggle='tab']",function(c){var d={methodname:"core_user_update_user_preferences",args:{preferences:[{type:"block_myoverview_last_tab",value:a(c.currentTarget).data("tabname")}]}};b.call([d])[0].fail(Notification.exception)})};return{registerEventListeners:d}}); \ No newline at end of file +define(["jquery","core/ajax","core/custom_interaction_events"],function(a,b,c){var d=function(d){c.define(d,[c.events.activate]),d.on(c.events.activate,"[data-toggle='tab']",function(c){var d=a(c.currentTarget).data("tabname");"function"==typeof window.history.pushState&&window.history.pushState(null,null,"?myoverviewtab="+d);var e={methodname:"core_user_update_user_preferences",args:{preferences:[{type:"block_myoverview_last_tab",value:d}]}};b.call([e])[0].fail(Notification.exception)})};return{registerEventListeners:d}}); \ No newline at end of file diff --git a/blocks/myoverview/amd/src/tab_preferences.js b/blocks/myoverview/amd/src/tab_preferences.js index 690e31ad39a..f6afc1b6193 100644 --- a/blocks/myoverview/amd/src/tab_preferences.js +++ b/blocks/myoverview/amd/src/tab_preferences.js @@ -31,13 +31,19 @@ define(['jquery', 'core/ajax', 'core/custom_interaction_events'], function($, Aj var registerEventListeners = function(root) { CustomEvents.define(root, [CustomEvents.events.activate]); root.on(CustomEvents.events.activate, "[data-toggle='tab']", function(e) { + var tabname = $(e.currentTarget).data('tabname'); + // Bootstrap does not change the URL when using BS tabs, so need to do this here. + // Also check to make sure the browser supports the history API. + if (typeof window.history.pushState === "function") { + window.history.pushState(null, null, '?myoverviewtab=' + tabname); + } var request = { methodname: 'core_user_update_user_preferences', args: { preferences: [ { type: 'block_myoverview_last_tab', - value: $(e.currentTarget).data('tabname') + value: tabname } ] } diff --git a/blocks/myoverview/block_myoverview.php b/blocks/myoverview/block_myoverview.php index c18ccf5a436..8afd4a10471 100644 --- a/blocks/myoverview/block_myoverview.php +++ b/blocks/myoverview/block_myoverview.php @@ -50,10 +50,13 @@ class block_myoverview extends block_base { return $this->content; } - // Wasn't set as a user preference so get the site setting. - if (!$tab = get_user_preferences('block_myoverview_last_tab')) { - $config = get_config('block_myoverview'); - $tab = $config->defaulttab; + // Check if the tab to select wasn't passed in the URL, if so see if the user has any preference. + if (!$tab = optional_param('myoverviewtab', null, PARAM_ALPHA)) { + // Check if the user has no preference, if so get the site setting. + if (!$tab = get_user_preferences('block_myoverview_last_tab')) { + $config = get_config('block_myoverview'); + $tab = $config->defaulttab; + } } $renderable = new \block_myoverview\output\main($tab);