diff --git a/app/assets/javascripts/app/controllers/_application_controller_generic.coffee b/app/assets/javascripts/app/controllers/_application_controller_generic.coffee index 9a459f310..5aa752432 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_generic.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_generic.coffee @@ -419,8 +419,14 @@ class App.ControllerNavSidbar extends App.ControllerContent group.items = _.sortBy( itemsUnsorted, (item) -> return item.prio ) - # set active item + # check last selected item selectedItem = undefined + selectedItemMeta = App.Config.get("Runtime::#{@configKey}") + keepLastMenuFor = 1000 * 60 * 10 + if selectedItemMeta && selectedItemMeta.date && new Date < new Date( selectedItemMeta.date.getTime() + keepLastMenuFor ) + selectedItem = selectedItemMeta.selectedItem + + # set active item for group in @groupsSorted if group.items for item in group.items @@ -441,15 +447,22 @@ class App.ControllerNavSidbar extends App.ControllerContent @render(selectedItem, true) ) - render: (selectedItem, force) -> - if !$( '.' + @configKey )[0] || force + render: (selectedItem, force) => + + # remember latest selected item + selectedItemMeta = + selectedItem: selectedItem + date: new Date + App.Config.set("Runtime::#{@configKey}", selectedItemMeta) + + if !$( ".#{@configKey}" )[0] || force @html App.view('generic/navbar_l2')( groups: @groupsSorted className: @configKey ) if selectedItem @el.find('li').removeClass('active') - @el.find('a[href="' + selectedItem.target + '"]').parent().addClass('active') + @el.find("a[href=\"#{selectedItem.target}\"]").parent().addClass('active') new selectedItem.controller( el: @el.find('.main')