From 9da5d164807425353b980359a1691ed8e48f8c66 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Wed, 11 Jul 2012 15:26:45 +0200 Subject: [PATCH] Some changes to the navigation thing Hopefully this is an improvement... --- www/index.pl | 16 ++------- www/man.js | 93 ++++++++++++++++++++++++++++++---------------------- 2 files changed, 55 insertions(+), 54 deletions(-) diff --git a/www/index.pl b/www/index.pl index 000d4a1..4183d93 100755 --- a/www/index.pl +++ b/www/index.pl @@ -328,19 +328,7 @@ sub browsepkg { sub manjslist { my($self, $m) = @_; - # For JS: (Already sorted) - # [ - # ["System", "Full name", "short" [ - # [ "package", "version", [ - # [ "section", "locale"||null ], - # ... - # ], - # ], - # ... - # ], - # ], - # ... - # ] + # The structure we generate is described in the JS code. my %sys; push @{$sys{$_->{system}}}, $_ for (@$m); [ @@ -419,7 +407,7 @@ sub man { my $man = getman($self, $name, $hash, $m); $self->htmlHeader(title => $name); - div id => 'nav', ' '; # To be filled in by JS + div id => 'nav', 'Sorry, this navigation menu won\'t display without Javascript. :-('; h1 $man->{name}; p; diff --git a/www/man.js b/www/man.js index 2e73d01..6a7b45c 100644 --- a/www/man.js +++ b/www/man.js @@ -90,18 +90,31 @@ function setClass(obj, c, set) { // TODO: Fix the 'pkg' link // TODO: Keep same view when switching to different version of the same man page -// TODO: Allow showing/hiding old package versions individually. -// TODO: Allow complete hiding of old systems. (And enable that by default) + +/* Structure of VARS.mans: + [ + ["System", "Full name", "short", [ + [ "package", "version", [ + [ "section", "locale"||null ], + ... + ], + oldvisible // <- this is only set by JS + ], + ... + ], + oldvisible // <- this is only set by JS + ], + ... + ] +*/ navShowLocales = false; navHasLocale = false; -navHasOldSys = false; -navHasHiddenSys = false; // OldSys, actually function navCreate(nav) { setText(nav, ''); - navHasLocale = navHasHiddenSys = navHasOldSys = false; + navHasLocale = false; var dl = tag('dl', null); for(var i=0; i 0 && VARS.mans[i-1][0] == sys[0]; if(typeof sys[4] === 'undefined') sys[4] = !isold; - navHasOldSys = navHasOldSys || isold; - navHasHiddenSys = navHasHiddenSys || (isold && !sys[4]); var pkgnum = 0; var dd = tag('dd', null); - if(sys[4]) { - for(var j=0; j 0 && sys[3][j-1][0] == sys[3][j][0]) - continue; - - if(navCreatePkg(dd, sys, sys[3][j])) + if(sys[4]) + for(var j=0; j 0) dl.appendChild(dd); } @@ -138,17 +153,22 @@ function navCreate(nav) { } -function navCreatePkg(dd, sys, pkg) { +function navCreatePkg(nav, dd, sys, n) { + var pkg = sys[3][n]; + + var isold = n > 0 && sys[3][n-1][0] == pkg[0]; + if(isold && !pkg[3]) + return false; + var mannum = 0; var pdd = tag('dd', null); - - for(var k=0; k 0) + if(i > 0) pdd.appendChild(tag(' ')); pdd.appendChild(man[2] == VARS.hash ? tag('b', txt) : tag('a', {href:'/'+VARS.name+'/'+man[2]}, txt)); mannum++; @@ -156,7 +176,15 @@ function navCreatePkg(dd, sys, pkg) { } if(mannum > 0) { - dd.appendChild(tag('dt', tag('a', {href:'/browse/'+sys[2]+'/'+pkg[0]}, pkg[0]), tag('i', pkg[1]))); + dd.appendChild(tag('dt', + isold || !sys[3][n+1] || sys[3][n+1][0] != pkg[0] ? null : tag('a', + {href:'#', _pkgn: pkg[0], _pkgi:n, onclick: function() { + for(var j=this._pkgi+1; j