|
From: <han...@us...> - 2012-01-07 18:40:50
|
Revision: 638
http://openautomation.svn.sourceforge.net/openautomation/?rev=638&view=rev
Author: hannesloehr
Date: 2012-01-07 18:40:43 +0000 (Sat, 07 Jan 2012)
Log Message:
-----------
Added handling for browser back button => go one level higher in page hierarchy.
Modified Paths:
--------------
CometVisu/trunk/visu/lib/templateengine.js
Modified: CometVisu/trunk/visu/lib/templateengine.js
===================================================================
--- CometVisu/trunk/visu/lib/templateengine.js 2012-01-06 19:01:35 UTC (rev 637)
+++ CometVisu/trunk/visu/lib/templateengine.js 2012-01-07 18:40:43 UTC (rev 638)
@@ -292,6 +292,19 @@
main_scroll.seekTo( $(this).text() );
});
+
+ // reaction on browser back button
+ window.onpopstate = function(e) {
+
+ // where do we come frome?
+ lastpage = $.getUrlVar("lastpage");
+ if (lastpage) {
+ // browser back button takes us one level higher
+ scrollToPage(lastpage);
+ }
+ }
+
+
visu.subscribe( ga_list );
$("#pages").triggerHandler("done");
}
@@ -344,6 +357,40 @@
function scrollToPage( page_id, speed )
{
$('#'+page_id).css( 'display', '' ); // show new page
+
+
+ // build url string with new lastpage parameter
+ url_vars = $.getUrlVars();
+ parameters = [];
+
+ // filter old lastpage parameter
+ for (var i = 0; i < url_vars.length; i++) {
+ key = url_vars[i];
+ value = url_vars[key];
+ if (key != "lastpage"){
+ parameters.push(key+"="+value);
+ }
+ }
+
+ // which is the parent of target page_id?
+ // => set this id as lastpage in url for window.onpopstate handling
+ var path = page_id.split( '_' );
+ if (path.length > 1){
+ // above top level
+ // the next to last item of path is the parent id
+ path.pop();
+ parameters.push("lastpage="+path.pop());
+ }
+ else {
+ // top level
+ parameters.push("lastpage="+page_id);
+ }
+
+ // manipulate browser url
+ path = window.location.pathname+"?"+parameters.join("&");
+ window.history.pushState(page_id, page_id, path);
+
+
main_scroll.seekTo( $('.page').index( $('#'+page_id)[0] ), speed ); // scroll to it
var pagedivs=$('div', '#'+page_id);
for( var i = 0; i<pagedivs.length; i++) //check for inline diagrams & refresh
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|