]> mj.ucw.cz Git - pciids.git/commitdiff
Links not only to parent but all the way up
authorMichal Vaner <vorner@ucw.cz>
Fri, 29 Aug 2008 14:32:11 +0000 (16:32 +0200)
committerMichal Vaner <vorner@ucw.cz>
Fri, 29 Aug 2008 14:32:11 +0000 (16:32 +0200)
PciIds/Address/Base.pm
PciIds/Address/Pci.pm
PciIds/Address/Toplevel.pm
PciIds/Html/List.pm
PciIds/Html/Util.pm
static/screen.css

index 5f78ec95585b26c0c11c82ab537dc671e1d87fdf..d390c9d3e17ede93a7de272e8ede64aedb02e8f0 100644 (file)
@@ -35,4 +35,14 @@ sub defaultRestrict( $ ) { return "" };
 
 sub defaultRestrictList( $ ) { return [] };
 
+sub path( $ ) {
+       my( $self ) = @_;
+       my @result;
+       my $address = $self;
+       while( defined( $address = $address->parent() ) ) {
+               push @result, $address;
+       }
+       return \@result;
+}
+
 1;
index 61bead444a087b7c89b2a23208173666eb196c00..54a15afdbbcb6cfe7769093b146ecf7a99da80c9 100644 (file)
@@ -15,7 +15,7 @@ sub pretty( $ ) {
        $_ = $self->get();
        s/^PC\/?//;
        s/\//:/g;
-       s/([0-9a-f]{4,4})([0-9a-f]{4,4})/$1 $2/g;
+       s/([0-9a-f]{4})([0-9a-f]{4})/$1 $2/g;
        my $prefix = '';
        if( /:.*:/ ) {
                $prefix = 'Subsystem';
@@ -30,7 +30,7 @@ sub pretty( $ ) {
 sub tail( $ ) {
        my( $new ) = ( shift->get() );
        $new =~ s/.*\/(.)/$1/;
-       $new =~ s/([0-9a-f]{4,4})([0-9a-f]{4,4})/$1 $2/g;
+       $new =~ s/([0-9a-f]{4})([0-9a-f]{4})/$1 $2/g;
        return $new;
 }
 
@@ -52,4 +52,12 @@ sub append( $$ ) {
        return ( PciIds::Address::Base::new( $self->{'value'} . ( ( $self->{'value'} =~ /\/$/ ) ? '' : '/' ) . $suffix ), undef );
 }
 
+sub path( $ ) {
+       my( $self ) = @_;
+       my $result = PciIds::Address::Base::path( $self );
+       my( $vid ) = ( $self->get() =~ /^PC\/[0-9a-f]{4}\/[0-9a-f]{4}\/([0-9a-f]{4})/ );
+       splice @{$result}, 2, 0, PciIds::Address::new( "PC/$vid" ) if( defined $vid ) && ( $result->[1]->get() ne "PC/$vid" );
+       return $result;
+}
+
 1;
index 26e78bb395cc180103e8c2c9bd674afc9a9fbc63..55e50394994aa3ae2fc4ac261204087bb51d937a 100644 (file)
@@ -69,4 +69,8 @@ sub defaultRestrictList( $ ) {
        }
 }
 
+sub parent( $ ) {
+       return undef;
+}
+
 1;
index 2e08e2dc9b37346778f0fd932818e909fd9a132e..4115bbb7caf9cecf4c85bcd5373405db39d1c85d 100644 (file)
@@ -28,11 +28,7 @@ sub list( $$$$ ) {
        genMenu( $address, $args, $auth );
        print htmlDiv( 'name', '<p>'.encode( $name ) ) if( defined( $name ) );
        print htmlDiv( 'description', '<p>'.encode( $description ) ) if( defined( $description ) );
-       if( defined( $address->parent() ) ) {
-               print '<p><a class="navigation" href="/read/'.$address->parent()->get().'/">'.encode( $address->parent()->pretty() )."</a>";
-       } else {
-               print '<p><a class="navigation" href="/index.html">Main page</a>';
-       }
+       genPath( $address, 0 );
        my $diss = 0;
        my $comment;
        foreach $comment ( @{$tables->history( $address->get() )} ) {
index 54d1935572e0a8bcc27523754859b12b549ae21e..790421d696e88e52663ac5ab48372d1350876f09 100644 (file)
@@ -7,7 +7,7 @@ use PciIds::Users;
 use Apache2::Const qw(:common :http);
 use APR::Table;
 
-our @EXPORT = qw(&genHtmlHead &htmlDiv &genHtmlTail &genTableHead &genTableTail &parseArgs &buildExcept &buildArgs &genMenu &genCustomMenu &encode &setAddrPrefix &HTTPRedirect);
+our @EXPORT = qw(&genHtmlHead &htmlDiv &genHtmlTail &genTableHead &genTableTail &parseArgs &buildExcept &buildArgs &genMenu &genCustomMenu &encode &setAddrPrefix &HTTPRedirect &genPath);
 
 sub encode( $ ) {
        return encode_entities( shift, "\"'&<>" );
@@ -120,4 +120,16 @@ sub HTTPRedirect( $$ ) {
        return HTTP_SEE_OTHER;
 }
 
+sub genPath( $$ ) {
+       my( $address, $printAddr ) = @_;
+       my $path = $address->path();
+       push @{$path}, $address if( $printAddr );
+       print "<div class='navigation'><ul>\n";
+       foreach my $addr ( @{$path} ) {
+               print "  <li><a href='/read/".$addr->get()."/'>".encode( $addr->pretty() )."</a>\n";
+       }
+       print "<li><a href='/index.html'>Main page</a>\n";
+       print "</div>\n";
+}
+
 1;
index 0aca1956ca6bb77f9f928f9c781c41947181b113..d5aee1f234a005b956a5c8f60948d10317aa8f9c 100644 (file)
@@ -39,7 +39,8 @@ body
        padding-left: 5px;
        padding-right: 5px;
 }
-.menu ul
+.menu ul,
+.navigation ul
 {
        list-style-type: none;
 }