From: Don Armstrong Date: Fri, 15 Jun 2007 18:14:53 +0000 (+0100) Subject: * Add munge_url to Debbugs::CGI to abstract out code in _url methods X-Git-Tag: release/2.6.0~551^2~2 X-Git-Url: https://git.donarmstrong.com/?p=debbugs.git;a=commitdiff_plain;h=e049f374a389aa98ce7b886546f352c009fbc297 * Add munge_url to Debbugs::CGI to abstract out code in _url methods * Add support for switching between version graphs --- diff --git a/Debbugs/CGI.pm b/Debbugs/CGI.pm index a9afdd9..66637c0 100644 --- a/Debbugs/CGI.pm +++ b/Debbugs/CGI.pm @@ -55,7 +55,7 @@ BEGIN{ @EXPORT = (); %EXPORT_TAGS = (url => [qw(bug_url bug_links bug_linklist maybelink), qw(set_url_params pkg_url version_url), - qw(submitterurl mainturl) + qw(submitterurl mainturl munge_url) ], html => [qw(html_escape htmlize_bugs htmlize_packagelinks), qw(maybelink htmlize_addresslinks htmlize_maintlinks), @@ -112,9 +112,7 @@ sub bug_url{ else { %params = @_; } - my $url = Debbugs::URI->new('bugreport.cgi?'); - $url->query_form(bug=>$ref,%params); - return $url->as_string; + return munge_url('bugreport.cgi?',%params,bug=>$ref); } sub pkg_url{ @@ -126,11 +124,27 @@ sub pkg_url{ else { %params = @_; } - my $url = Debbugs::URI->new('pkgreport.cgi?'); - $url->query_form(%params); - return $url->as_string; + return munge_url('pkgreport.cgi?',%params); +} + +=head2 munge_url + + my $url = munge_url($url,%params_to_munge); + +Munges a url, replacing parameters with %params_to_munge as appropriate. + +=cut + +sub munge_url { + my $url = shift; + my %params = @_; + my $new_url = Debbugs::URI->new($url); + %params = ($new_url->query_form(),%params); + $new_url->query_form(%params); + return $new_url->as_string; } + =head2 version_url version_url($package,$found,$fixed) @@ -147,7 +161,7 @@ sub version_url{ fixed => $fixed, (defined $width)?(width => $width):(), (defined $height)?(height => $height):(), - (defined $width or defined $height)?(collapse => 1):(), + (defined $width or defined $height)?(collapse => 1):(info => 1), ); return $url->as_string; } diff --git a/cgi/version.cgi b/cgi/version.cgi index 8d575ff..b5967be 100755 --- a/cgi/version.cgi +++ b/cgi/version.cgi @@ -17,7 +17,7 @@ use CGI::Simple; use CGI::Alert 'don@donarmstrong.com'; use Debbugs::Config qw(:config); -use Debbugs::CGI qw(htmlize_packagelinks html_escape cgi_parameters); +use Debbugs::CGI qw(htmlize_packagelinks html_escape cgi_parameters munge_url); use Debbugs::Versions; use Debbugs::Versions::Dpkg; use Debbugs::Packages qw(getversions makesourceversions); @@ -34,7 +34,7 @@ my %img_types = (svg => 'image/svg+xml', my $q = new CGI::Simple; my %cgi_var = cgi_parameters(query => $q, - single => [qw(package format ignore_boring width height collapse)], + single => [qw(package format ignore_boring width height collapse info)], default => {package => 'spamass-milter', found => [], fixed => [], @@ -43,8 +43,12 @@ my %cgi_var = cgi_parameters(query => $q, format => 'png', width => undef, height => undef, + info => 0, }, ); +my $this = munge_url('version.cgi?', + %cgi_var, + ); # we want to first load the appropriate file, # then figure out which versions are there in which architectures, @@ -75,6 +79,28 @@ else { $cgi_var{format} = 'png'; } +if ($cgi_var{info} and not defined $cgi_var{dot}) { + print "Content-Type: text/html\n\n"; + print < + +$cgi_var{package} Version Graph + +END + print '['.($cgi_var{ignore_boring}?"Don't i":'I').'gnore boring] '; + print '['.($cgi_var{collapse}?"Don't c":'C').'ollapse] '; + print '[Dot]
'; + print ''; + print < + +END + exit 0; +} + # then figure out which are affected. # turn found and fixed into full versions @{$cgi_var{found}} = makesourceversions($cgi_var{package},undef,@{$cgi_var{found}});