[Lxr-general] Variables in drop down boxes
Brought to you by:
ajlittoz
From: Jan-Benedict G. <jb...@lu...> - 2006-12-17 12:28:13
|
Hi! This is Maximilian's first cut on variables in drop down boxes. It's *not* yet ready for real use! It already works mostly, but ./lxr/diff is broken now, needs to be fixed :) (The patch is -b generated, I've done some more whitespace cleanups to the html-head template, too.) diff --git a/lib/LXR/Common.pm b/lib/LXR/Common.pm index 908f690..36bcba2 100644 --- a/lib/LXR/Common.pm +++ b/lib/LXR/Common.pm @@ -750,6 +750,45 @@ sub varexpand { return ($varex); } =20 +sub varexpand_select { + my ($template, $who) =3D @_; + # XXX WTF is $who? + my $varexpand =3D ''; + +# $varexpand .=3D "<form name=3D\"variables\" method=3D\"GET\" action=3D\"= source\">\n"; + foreach my $var ($config->allvariables) { + $varexpand .=3D expandtemplate( + $template, + ( + 'varname' =3D> sub { $config->vardescription($var) }, + 'varlinks' =3D> sub { varlinks_select( $template, $who, $var) } + ) + ); + } +# $varexpand .=3D "<button type=3Dsubmit name=3D\"Update\" value=3D\"Updat= e\"></form>\n"; + return $varexpand; +} + +sub varlinks_select { + my ($template, $who, $var) =3D @_; + my $current_val =3D $config->variable($var); + + my $output_string =3D "<select name=3D\"$var\" onChange=3D\"document.vari= ables.submit()\">\n"; + foreach my $val ($config->varrange($var)) { + # Preselect current value of variable + if ($val eq $current_val) { + $output_string .=3D "<option value=3D\"$val\" selected> $val </option>\= n"; + } else { + $output_string .=3D "<option value=3D\"$val\"> $val </option>\n"; + } + } + $output_string .=3D "</select>\n"; + + return $output_string; +} + + + sub devinfo { my ($templ) =3D @_; my (@mods, $mod, $path); @@ -837,7 +876,7 @@ sub makeheader { 'thisurl' =3D> sub { thisurl(@_) }, 'pathname' =3D> sub { pathname(@_) }, 'modes' =3D> sub { modeexpand(@_, $who) }, - 'variables' =3D> sub { varexpand(@_, $who) }, + 'variables' =3D> sub { varexpand_select(@_, $who) }, 'devinfo' =3D> sub { devinfo(@_) }, 'atticlink' =3D> sub { atticlink(@_) }, ) @@ -876,7 +915,7 @@ sub makefooter { 'banner' =3D> sub { bannerexpand(@_, $who) }, 'thisurl' =3D> sub { thisurl(@_) }, 'modes' =3D> sub { modeexpand(@_, $who) }, - 'variables' =3D> sub { varexpand(@_, $who) }, + 'variables' =3D> sub { varexpand_select( @_, $who ) }, 'devinfo' =3D> sub { devinfo(@_) } ) ) diff --git a/templates/html-head.html b/templates/html-head.html index 2dbafa2..6e1b61f 100644 --- a/templates/html-head.html +++ b/templates/html-head.html @@ -1,21 +1,20 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> -<head> -<title>$title</title> -<base href=3D"$baseurl"> -<link href=3D"$stylesheet" rel=3D"STYLESHEET" type=3D"text/css"> -</head> - -<body> -<table width=3D'100%' border=3D'0' cellpadding=3D'0' cellspacing=3D'0'> + <head> + <title>$title</title> + <base href=3D"$baseurl"> + <link href=3D"$stylesheet" rel=3D"STYLESHEET" type=3D"text/css"> + </head> + <body> + <table width=3D"100%" border=3D"0" cellpadding=3D"0" cellspacing=3D"0"> <tr> - <td valign=3D'top'> + <td valign=3D"top"> <!-- put local logo or links here --> </td> <td> - <table width=3D'100%' border=3D'0' cellpadding=3D'0' cellspacing=3D'= 0'> + <table width=3D"100%" border=3D"0" cellpadding=3D"0" cellspacing=3D"0"> <tr> - <td align=3D'center'> + <td align=3D"center"> <h1>The LXR Cross Referencer</h1> </td> </tr> @@ -24,30 +23,40 @@ </tr> </table> </td> - <td align=3D'right'> + <td align=3D"right"> + <!-- diff/source/identifier search/... --> $modes{ - [ $modelink ]<br>} + [ $modelink ]<br> + } </td> </tr> - <tr><td colspan=3D'3'> </td></tr> + <tr> + <td colspan=3D'3'> </td> + </tr> <tr> <td>$atticlink</td> <td colspan=3D'2'> - <table width=3D"100%" border=3D"0" cellpadding=3D'0' cellspacing=3D'0= '> + <form name=3D"variables" method=3D"GET" action=3D""> + <table width=3D"100%" border=3D"0" cellpadding=3D"0" cellspacing=3D"0= "> $variables{ <tr> - <td align=3D"left"> + <td align=3D"right"> $varname: </td> - <td align=3D"right"> + <td align=3D"left"> $varlinks{ - [ $varvalue ]} - <br> + [ $varvalue ] + } </td> - </tr>} + </tr> + } + <tr> + <td> </td> + <td><input type=3D"submit" value=3D"Submit"></td> + </tr> </table> + </form> </td> </tr> -</table> - -<hr> + </table> + <hr> --=20 Jan-Benedict Glaw jb...@lu... +49-172-7608481 Signature of: The real problem with C++ for kernel modules is: the languag= e just sucks. the second : -- Linus Torvalds |