[Bps-public-commit] r19658 - in Net-Google-Code/trunk: . lib/Net/Google t/sample
sunnavy at bestpractical.com
sunnavy at bestpractical.com
Thu May 14 02:57:52 EDT 2009
Author: sunnavy
Date: Thu May 14 02:57:49 2009
New Revision: 19658
Added:
Net-Google-Code/trunk/t/sample/20.code.downloads.html
Removed:
Net-Google-Code/trunk/t/sample/10.downloads.xml
Modified:
Net-Google-Code/trunk/Makefile.PL
Net-Google-Code/trunk/lib/Net/Google/Code.pm
Net-Google-Code/trunk/t/20.code.t
Log:
do *not* parse downloads via feeds: current feed only list 20 downloads, not all. this change results in the uselessness of XML::Atom requirement
Modified: Net-Google-Code/trunk/Makefile.PL
==============================================================================
--- Net-Google-Code/trunk/Makefile.PL (original)
+++ Net-Google-Code/trunk/Makefile.PL Thu May 14 02:57:49 2009
@@ -12,7 +12,6 @@
requires 'WWW::Mechanize';
requires 'HTML::TreeBuilder';
requires 'Params::Validate';
-requires 'XML::Atom';
recursive_author_tests('xt/');
Modified: Net-Google-Code/trunk/lib/Net/Google/Code.pm
==============================================================================
--- Net-Google-Code/trunk/lib/Net/Google/Code.pm (original)
+++ Net-Google-Code/trunk/lib/Net/Google/Code.pm Thu May 14 02:57:49 2009
@@ -111,26 +111,64 @@
sub load_downloads {
- my $self = shift;
-
- require XML::Atom::Feed;
- my $content = $self->fetch( $self->base_feeds_url . 'downloads/basic' );
- my $feed = XML::Atom::Feed->new( \$content );
- my @fentries = $feed->entries;
-
+ my $self = shift;
+
+ my $content = $self->fetch( $self->base_feeds_url . 'downloads/list' );
+ require HTML::TreeBuilder;
+ my $tree = HTML::TreeBuilder->new;
+ $tree->parse_content($content);
+ $tree->elementify;
my @downloads;
- foreach my $entry (@fentries) {
+ my $pagination = $tree->look_down( class => 'pagination' );
+ if ( my ( $start, $end, $total ) =
+ $pagination->as_text =~ /(\d+)\s+-\s+(\d+)\s+of\s+(\d+)/ )
+ {
+
require Net::Google::Code::Download;
- my $title = $entry->title;
- # title is like: Net-Google-Code-0.01.tar.gz (37.4 KB)
- my ($filename) = ( $title =~ /^\s*(.+)\s+\(.+\)\s*$/ );
- my $download = Net::Google::Code::Download->new(
- project => $self->project,
- name => $filename
- );
+ my @name_tags = $tree->look_down( class => 'vt id col_0' );
+ my @names;
+ for my $tag (@name_tags) {
+ my $name = $tag->as_text;
+ $name =~ s/^\s+//;
+ $name =~ s/\s+$//;
+ my $download = Net::Google::Code::Download->new(
+ name => $name,
+ project => $self->project,
+ );
+ push @downloads, $download;
+ }
+
+ while ( scalar @downloads < $total ) {
+ if ( $self->mech->follow_link( text_regex => qr/Next\s+/ ) ) {
+ if ( $self->mech->response->is_success ) {
+ my $content = $self->mech->content;
+ my $tree = HTML::TreeBuilder->new;
+ $tree->parse_content($content);
+ my @name_tags = $tree->look_down( class => 'vt id col_0' );
+ my @names;
+ for my $tag (@name_tags) {
+ my $name = $tag->as_text;
+ $name =~ s/^\s+//;
+ $name =~ s/\s+$//;
+ my $download =
+ Net::Google::Code::Download->new( name => $name );
+ push @downloads, $download;
+ }
+ }
+ else {
+ die "failed to follow 'Next' link";
+ }
+ }
+ else {
+ warn "didn't find enough downloads";
+ last;
+ }
+ }
+ }
+
+ for my $download (@downloads) {
$download->load;
- push @downloads, $download;
- }
+ }
$self->downloads( \@downloads );
}
Modified: Net-Google-Code/trunk/t/20.code.t
==============================================================================
--- Net-Google-Code/trunk/t/20.code.t (original)
+++ Net-Google-Code/trunk/t/20.code.t Thu May 14 02:57:49 2009
@@ -10,11 +10,11 @@
use_ok('Net::Google::Code');
my $homepage_file = "$Bin/sample/20.code.html";
-my $downloads_file = "$Bin/sample/10.downloads.xml";
+my $downloads_file = "$Bin/sample/20.code.downloads.html";
my $download_file = "$Bin/sample/10.download.html";
my $wikis_file = "$Bin/sample/11.wikis.html";
-my $svn_file = "$Bin/sample/11.TestPage.wiki";
+my $wiki_svn_file = "$Bin/sample/11.TestPage.wiki";
my $wiki_file = "$Bin/sample/11.TestPage.html";
my $mock = Test::MockModule->new('Net::Google::Code');
@@ -59,8 +59,8 @@
# test downloads
$project->load_downloads;
-is( scalar @{ $project->downloads }, 1, 'have 1 download' );
-my $download = $project->downloads->[0];
+is( scalar @{ $project->downloads }, 2, 'have 2 downloads' );
+my $download = $project->downloads->[1];
isa_ok( $download, 'Net::Google::Code::Download' );
is( $download->name, 'Net-Google-Code-0.01.tar.gz', 'download name' );
is( $download->size, '37.4 KB', 'download size' );
@@ -74,7 +74,7 @@
shift;
my $url = shift;
if ( $url =~ /svn/ ) {
- read_file($svn_file);
+ read_file($wiki_svn_file);
}
else {
read_file($wiki_file);
Added: Net-Google-Code/trunk/t/sample/20.code.downloads.html
==============================================================================
--- (empty file)
+++ Net-Google-Code/trunk/t/sample/20.code.downloads.html Thu May 14 02:57:49 2009
@@ -0,0 +1,738 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <script type="text/javascript">
+
+
+
+ var codesite_token = "1e80acf41d325e863ad42260ff3d5a87";
+
+ </script>
+ <title>Downloads -
+ net-google-code -
+
+ Google Code</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
+
+ <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/13924206732975079159/css/ph_core.css">
+
+ <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/13924206732975079159/css/ph_list.css" >
+
+
+
+ <link type="application/atom+xml" rel="alternate" href="/feeds/p/net-google-code/downloads/basic">
+
+
+<!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/13924206732975079159/css/d_ie.css" >
+<![endif]-->
+</head>
+<body class="t2">
+ <div id="gaia">
+
+ <span>
+
+ <b>sunnavy at gmail.com</b>
+
+
+ | <a href="/u/sunnavy/" id="projects-dropdown" onclick="return false;">My favorites</a>
+
+ | <a href="/u/sunnavy/" onclick="_CS_click('/gb/ph/profile');" title="Profile, Updates, and Settings">Profile</a>
+ | <a href="http://www.google.com/accounts/Logout?continue=http%3A%2F%2Fcode.google.com%2Fp%2Fnet-google-code%2Fdownloads%2Flist" onclick="_CS_click('/gb/ph/signout');">Sign out</a>
+
+ </span>
+
+ </div>
+ <div class="gbh" style="left: 0pt;"></div>
+ <div class="gbh" style="right: 0pt;"></div>
+
+
+ <div style="height: 1px"></div>
+ <table style="padding:0px; margin: 20px 0px 0px 0px; width:100%" cellpadding="0" cellspacing="0">
+ <tr style="height: 58px;">
+ <td style="width: 55px; text-align:center;">
+ <a href="/p/net-google-code/">
+
+
+
+ <img src="http://www.gstatic.com/codesite/ph/images/defaultlogo.png"
+ alt="Project Logo">
+
+
+
+ </a>
+ </td>
+ <td style="padding-left: 0.8em">
+
+ <div id="pname" style="margin: 0px 0px -3px 0px">
+ <a href="/p/net-google-code/" style="text-decoration:none; color:#000">net-google-code</a>
+ </div>
+ <div id="psum">
+ <i><a id="project_summary_link" href="/p/net-google-code/" style="text-decoration:none; color:#000">a simple client library for google code</a></i>
+ </div>
+
+ </td>
+ <td style="white-space:nowrap; text-align:right">
+
+ <form action="/hosting/search">
+ <input size="30" name="q" value="">
+ <input type="submit" name="projectsearch" value="Search projects" >
+ </form>
+
+ </tr>
+ </table>
+
+
+<table id="mt" cellspacing="0" cellpadding="0" width="100%" border="0">
+ <tr>
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/">Project Home</a>
+ </div>
+ </div>
+ </th><td> </td>
+
+
+
+
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/downloads/list');">
+ <div class="tab active">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/downloads/list">Downloads</a>
+ </div>
+ </div>
+ </th><td> </td>
+
+
+
+
+
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/w/list');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/w/list">Wiki</a>
+ </div>
+ </div>
+ </th><td> </td>
+
+
+
+
+
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/issues/list');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/issues/list">Issues</a>
+ </div>
+ </div>
+ </th><td> </td>
+
+
+
+
+
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/source/checkout');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/source/checkout">Source</a>
+ </div>
+ </div>
+ </th><td> </td>
+
+
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/admin');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/admin">Administer</a>
+ </div>
+ </div>
+ </th>
+ <td width="100%"> </td>
+ </tr>
+</table>
+<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" class="st">
+ <tr>
+
+
+
+
+ <td>
+ <div class="issueList">
+<div class="isf">
+
+
+
+ <span class="inIssueEntry">
+ <a href="entry">New download</a>
+ </span> |
+
+
+ <span class="inIssueList">
+ <span>Search</span>
+ <form action="list" method="GET" style="display:inline">
+ <select id="can" name="can" style="font-size:92%">
+ <option disabled="disabled">Search within:</option>
+
+ <option value="1" > All downloads</option>
+ <option value="3" > Featured downloads</option>
+ <option value="2" selected="selected"> Current downloads</option>
+
+
+ <option value="4" > Deprecated downloads</option>
+
+ </select>
+ <span>for</span>
+ <input type="text" size="32" id="q" name="q" value="" style="font-size:92%" >
+
+ <input type="hidden" name="colspec" value="Filename Summary Uploaded Size DownloadCount" >
+ <input type="submit" value="Search" style="font-size:92%" >
+ </form>
+ </span>
+
+</div>
+</div>
+
+ </td>
+
+
+
+
+
+
+
+ <td height="4" align="right" valign="top" class="bevel-right">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ </td>
+ </tr>
+</table>
+<script type="text/javascript">
+ var cancelBubble = false;
+ function _go(url) { document.location = url; }
+</script>
+
+<div id="maincol">
+
+
+<!-- IE -->
+
+
+
+
+<script type="text/javascript">
+function _showBelow(){}
+function _toggleStar(){}
+function _rowRolloverOn(){}
+function _rowRolloverOff(){}
+function _goIssue(){}
+function _goFile(){}
+</script>
+
+<div id="colcontrol">
+<div class="bubble_bg">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner" id="bub">
+ <div style="margin-bottom: 6px;">
+
+
+ <div class="pagination">
+
+ 1 - 2
+ of 2
+
+ </div>
+
+
+
+
+
+
+ <form id="colspecform" action="list" method="GET" autocomplete="off" style="display:inline">
+ <input type="hidden" name="can" value=2 >
+ <input type="hidden" name="q" value="" >
+ <input type="hidden" name="sort" value="" >
+ <span id="columnspec" style="display:none;"><span style="font-size: 95%">Columns: </span><input type="text" size="60" style="font-size: 80%" name="colspec" id="colspec"
+ value="Filename Summary Uploaded Size DownloadCount" /> <input type="submit" style="font-size: 80%" name="nobtn" value="Update" >
+
+ </span>
+ </form>
+ </div>
+ <table cellspacing="0" cellpadding="2" border="0" class="results" id="resultstable" width="100%">
+ <tbody>
+ <tr id="headingrow"><th style="border-left: 0"> </th>
+
+
+ <th class="col_0" nowrap="nowrap" onclick="_showBelow('pop_0',this)"><a href="#" style="text-decoration: none">Filename</a></th>
+
+
+
+
+ <th class="col_1" nowrap="nowrap" id="summaryheading" onclick="_showBelow('pop_1',this)" width="100%"><a href="#" style="text-decoration: none">Summary + Labels</a></th>
+
+
+
+
+
+ <th class="col_2" nowrap="nowrap" onclick="_showBelow('pop_2',this)"><a href="#" style="text-decoration: none">Uploaded</a></th>
+
+
+
+
+
+ <th class="col_3" nowrap="nowrap" onclick="_showBelow('pop_3',this)"><a href="#" style="text-decoration: none">Size</a></th>
+
+
+
+
+
+ <th class="col_4" nowrap="nowrap" onclick="_showBelow('pop_4',this)"><a href="#" style="text-decoration: none">DownloadCount</a></th>
+
+
+
+ <th onclick="return _showBelow('pop__dot',this)" style="width:3ex"><a href="#columnprefs" style="text-decoration: none; background: none; margin-right:0; padding-right:0">...</a></th>
+ </tr>
+
+
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this); cancelBubble=false">
+ <td class="vt" nowrap="nowrap" style="padding:2px 2px 0 2px">
+ </td>
+
+
+
+
+ <td class="vt id col_0">
+ <a href="http://net-google-code.googlecode.com/files/Net-Google-Code-0.04.tar.gz" style="white-space:nowrap"
+
+ >
+
+ Net-Google-Code-0.04.tar.gz
+
+
+</a>
+ </td>
+
+
+
+
+
+
+
+
+
+ <td class="vt col_1" width="100%"
+ onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=">
+
+ Net-Google-Code-0.04
+
+
+</a>
+
+<a
+ onclick="cancelBubble=true;"
+ class="label" href="list?q=label:0.04"
+ >0.04</a>
+
+
+ </td>
+
+
+
+
+
+
+
+
+
+
+ <td class="vt col_2" onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=" style="white-space:nowrap">
+
+ 60 minutes ago
+
+
+</a></td>
+
+
+
+
+
+
+
+
+ <td class="vt col_3" onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=" style="white-space:nowrap">
+
+ 48.0 KB
+
+
+</a></td>
+
+
+
+
+
+
+
+
+ <td class="vt col_4" onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.04.tar.gz&can=2&q=" style="white-space:nowrap">
+
+ 0
+
+
+</a></td>
+
+
+ <td> </td>
+ </tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this); cancelBubble=false">
+ <td class="vt" nowrap="nowrap" style="padding:2px 2px 0 2px">
+ </td>
+
+
+
+
+ <td class="vt id col_0">
+ <a href="http://net-google-code.googlecode.com/files/Net-Google-Code-0.01.tar.gz" style="white-space:nowrap"
+
+ >
+
+ Net-Google-Code-0.01.tar.gz
+
+
+</a>
+ </td>
+
+
+
+
+
+
+
+
+
+ <td class="vt col_1" width="100%"
+ onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=">
+
+ Net-Google-Code-0.01
+
+
+</a>
+
+<a
+ onclick="cancelBubble=true;"
+ class="label" href="list?q=label:0.01"
+ >0.01</a>
+<a
+ onclick="cancelBubble=true;"
+ class="label" href="list?q=label:simple"
+ >simple</a>
+
+
+ </td>
+
+
+
+
+
+
+
+
+
+
+ <td class="vt col_2" onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=" style="white-space:nowrap">
+
+ Jan 06
+
+
+</a></td>
+
+
+
+
+
+
+
+
+ <td class="vt col_3" onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=" style="white-space:nowrap">
+
+ 37.4 KB
+
+
+</a></td>
+
+
+
+
+
+
+
+
+ <td class="vt col_4" onclick="if (!cancelBubble) _go('detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=')"
+ ><a onclick="cancelBubble=true;" href="detail?name=Net-Google-Code-0.01.tar.gz&can=2&q=" style="white-space:nowrap">
+
+ 16
+
+
+</a></td>
+
+
+ <td> </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+
+
+ <div class="pagination">
+
+ 1 - 2
+ of 2
+
+ </div>
+
+
+
+
+ <div style="margin-top: 1px; font-size: small">
+
+
+ </div>
+
+
+ <div id="pop_0" class="popup">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortUp('filename')"><td>Sort Up</td></tr>
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortDown('filename')"><td>Sort Down</td></tr>
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_0')"><td>Hide Column</td></tr>
+ </table>
+ </div>
+
+
+
+
+ <div id="pop_1" class="popup">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortUp('summary')"><td>Sort Up</td></tr>
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortDown('summary')"><td>Sort Down</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this);" onmouseout="_rowRolloverOff(this)"><td onmouseover="_showRight('filter_1', this);">Show only <img src="http://www.gstatic.com/codesite/ph/images/triangle.gif" border="0/"></td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_1')"><td>Hide Column</td></tr>
+ </table>
+ </div>
+
+
+
+
+
+ <div id="pop_2" class="popup">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortUp('uploaded')"><td>Sort Up</td></tr>
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortDown('uploaded')"><td>Sort Down</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_2')"><td>Hide Column</td></tr>
+
+ </table>
+ </div>
+
+
+
+
+
+ <div id="pop_3" class="popup">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortUp('size')"><td>Sort Up</td></tr>
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortDown('size')"><td>Sort Down</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_3')"><td>Hide Column</td></tr>
+
+ </table>
+ </div>
+
+
+
+
+
+ <div id="pop_4" class="popup">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortUp('downloadcount')"><td>Sort Up</td></tr>
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_sortDown('downloadcount')"><td>Sort Down</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this);_closeSubmenus()" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_4')"><td>Hide Column</td></tr>
+
+ </table>
+ </div>
+
+
+
+
+ <div id="filter_0" class="popup subpopup">
+ <table cellspacing="0" cellpadding="0" border="0">
+
+ </table>
+ </div>
+
+ <div id="filter_1" class="popup subpopup">
+ <table cellspacing="0" cellpadding="0" border="0">
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_filterTo('label','simple');">
+ <td>simple</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_filterTo('label','0.01');">
+ <td>0.01</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_filterTo('label','0.04');">
+ <td>0.04</td></tr>
+
+ </table>
+ </div>
+
+ <div id="filter_2" class="popup subpopup">
+ <table cellspacing="0" cellpadding="0" border="0">
+
+ </table>
+ </div>
+
+ <div id="filter_3" class="popup subpopup">
+ <table cellspacing="0" cellpadding="0" border="0">
+
+ </table>
+ </div>
+
+ <div id="filter_4" class="popup subpopup">
+ <table cellspacing="0" cellpadding="0" border="0">
+
+ </table>
+ </div>
+
+ <div id="pop__dot" class="popup">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <tr><th>Show columns:</th></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_0')"><td> <span class="col_0">♦</span> Filename</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_1')"><td> <span class="col_1">♦</span> Summary</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_2')"><td> <span class="col_2">♦</span> Uploaded</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_3')"><td> <span class="col_3">♦</span> Size</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);_toggleColumn('hide_col_4')"><td> <span class="col_4">♦</span> DownloadCount</td></tr>
+
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this);addcol('UploadedBy')"><td> UploadedBy</td></tr>
+
+ <tr onmouseover="_rowRolloverOn(this)" onmouseout="_rowRolloverOff(this)" onclick="_closeAllPopups(this); document.getElementById('columnspec').style.display=''; return true;"><td> Edit column spec...</td></tr>
+ </table>
+ </div>
+ </div>
+ <div class="round1"></div>
+ <div class="round2"></div>
+ <div class="round4"></div>
+</div>
+</div>
+<script type="text/javascript" src="http://www.gstatic.com/codesite/ph/13924206732975079159/js/dit_scripts_20081013.js"></script>
+
+<script type="text/javascript">
+ var cancelBubble = false;
+ var _allColumnNames = [
+ 'filename', 'summary', 'uploaded', 'size', 'downloadcount'
+ ];
+
+ function addcol(colname) {
+ var colspec = _getElById('colspec');
+ colspec.value += ' ' + colname;
+ document.getElementById('colspecform').submit();
+ }
+ _onload();
+</script>
+
+ <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/13924206732975079159/js/core_scripts_20081103.js"></script>
+ <script type="text/javascript" src="/js/codesite_product_dictionary_ph.pack.04102009.js"></script>
+
+
+
+ </div>
+<div id="footer" dir="ltr">
+
+ <div class="text">
+
+ ©2009 Google -
+ <a href="/">Code Home</a> -
+ <a href="/tos.html">Terms of Service</a> -
+ <a href="http://www.google.com/privacy.html">Privacy Policy</a> -
+ <a href="/more/">Site Directory</a> -
+ <a href="/p/support/">Project Hosting Help</a>
+
+ </div>
+</div>
+<script type="text/javascript">
+/**
+ * Reports analytics.
+ * It checks for the analytics functionality (window._gat) every 100ms
+ * until the analytics script is fully loaded in order to invoke siteTracker.
+ */
+function _CS_reportAnalytics() {
+ window.setTimeout(function() {
+ if (window._gat) {
+ var siteTracker = _gat._getTracker("UA-18071-1");
+ siteTracker._initData();
+ siteTracker._trackPageview();
+
+ } else {
+ _CS_reportAnalytics();
+ }
+ }, 100);
+}
+</script>
+
+
+
+ <div class="hostedBy" style="margin-top: -20px;">
+ <span style="vertical-align: top;">Hosted by</span>
+ <a href="/hosting/">
+ <img src="http://www.gstatic.com/codesite/ph/images/google_code_tiny.gif" width="107" height="24" alt="Google Code">
+ </a>
+ </div>
+
+
+
+
+
+
+
+ </body>
+</html>
+
More information about the Bps-public-commit
mailing list