diff --git a/app/assets/javascripts/app/controllers/_application_controller.js.coffee b/app/assets/javascripts/app/controllers/_application_controller.js.coffee index 4a1b20afb..e5ad8a225 100644 --- a/app/assets/javascripts/app/controllers/_application_controller.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller.js.coffee @@ -29,14 +29,16 @@ class App.Controller extends Spine.Controller ajaxId = App.Ajax.request(data) @ajaxCalls.push ajaxId - navigate: (location, hide_current_location_from_history = false) -> - @log 'notice', "navigate to '#{location}'" + navigate: (location, hideCurrentLocationFromHistory = false) -> + @log 'notice', "navigate to '#{location}', hide from history '#{hideCurrentLocationFromHistory}'" # hide current location from browser history, allow to use back button in browser - if hide_current_location_from_history - @log 'debug', "ignore new location from browser histroy '#{location}'" + if hideCurrentLocationFromHistory if window.history - window.history.replaceState(null, null, location) + history = App.Config.get('History') + oldLocation = history[history.length-2] + if oldLocation + window.history.replaceState(null, null, oldLocation) super location bind: (event, callback) => diff --git a/app/assets/javascripts/app/controllers/_default_navbar.js.coffee b/app/assets/javascripts/app/controllers/_default_navbar.js.coffee index 9d6be0afe..9cb526801 100644 --- a/app/assets/javascripts/app/controllers/_default_navbar.js.coffee +++ b/app/assets/javascripts/app/controllers/_default_navbar.js.coffee @@ -1,4 +1,5 @@ -App.Config.set( 'User', { +App.Config.set('History', []) +App.Config.set('User', { prio: 1000, parent: '', callback: -> diff --git a/app/assets/javascripts/app/controllers/default_route.js.coffee b/app/assets/javascripts/app/controllers/default_route.js.coffee index e0e96218c..bb27f5425 100644 --- a/app/assets/javascripts/app/controllers/default_route.js.coffee +++ b/app/assets/javascripts/app/controllers/default_route.js.coffee @@ -1,4 +1,4 @@ -class Index extends App.Controller +class DefaultRouter extends App.Controller constructor: -> super @@ -28,5 +28,5 @@ class Index extends App.Controller @navigate '#dashboard', true -App.Config.set( '', Index, 'Routes' ) -App.Config.set( '/', Index, 'Routes' ) +App.Config.set( '', DefaultRouter, 'Routes' ) +App.Config.set( '/', DefaultRouter, 'Routes' ) diff --git a/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee b/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee index 1d17c34f8..8b441f358 100644 --- a/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee +++ b/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee @@ -87,6 +87,13 @@ class App.Content extends App.ControllerWidgetPermanent params: params_only, ) + # remember history + # needed to mute "redirect" url to support browser back + history = App.Config.get('History') + if history[10] + history.pop() + history.push window.location.hash + # execute controller controller = (params) => params.el = @el