--- trunk/share/web/templates/list 2006/12/05 17:16:39 9 +++ branches/filter-action/share/web/templates/list 2006/12/10 14:06:33 28 @@ -1,33 +1,62 @@ <%args> -$page => 1 - +$page => undef; $author => undef; - +$show_actions => undef; +$per_page => undef; +$from_date => undef; +$to_date => undef; +$search => undef; +$branch => undef; <%init> my $filter = Jifty->web->new_action( class => 'Filter', moniker => 'filer_list', +# arguments => { +# author => $author, +# show_actions => $show_actions, +# }, ); my $revisions = SVNBrowser::Model::RevisionCollection->new(); $author ||= $filter->argument_value('author'); - -if ($author) { - $revisions->limit( - column => 'author', - value => $author, +$show_actions ||= $filter->argument_value('show_actions'); +$page ||= $filter->argument_value('page') || 1; +$per_page ||= $filter->argument_value('per_page') || 10; +$from_date ||= $filter->argument_value('from_date'); +$to_date ||= $filter->argument_value('to_date'); +$search ||= $filter->argument_value('search'); +$branch ||= $filter->argument_value('branch'); + +$revisions->unlimit(); + +$revisions->limit( column => 'author', value => $author, entry_aggregator => 'AND' ) if ($author); +$revisions->limit( column => 'commit_date', operator => '>=', value => $from_date, entry_aggregator => 'AND' ) if ($from_date); +$revisions->limit( column => 'commit_date', operator => '<=', value => $to_date, entry_aggregator => 'AND' ) if ($to_date); + +$revisions->limit( column => 'message', operator => 'LIKE', value => '%' . $search . '%' ) if ($search); + +if ($branch) { + my $b = SVNBrowser::Model::Branch->new(); + $b->load_by_cols( path => $branch ); + + my $rev_branches = $revisions->join( + alias1 => 'main', column1 => 'revision', + table2 => 'revision_branches', column2 => 'revision' ); -} else { - $revisions->unlimit(); + $revisions->limit( alias => $rev_branches, column => 'branch', value => $b->id ); } + $revisions->order_by({ column => 'commit_date', order => 'desc' }); $revisions->set_page_info( current_page => $page, - per_page => 20, + per_page => $per_page, ); + +warn $revisions->build_select_query; + $revisions->goto_first_item; @@ -35,25 +64,37 @@ -<&| /_elements/wrapper, title => "Statistics" &> +<&| /_elements/wrapper, title => "SVN Reporitory Browser" &> <% Jifty->web->form->start %> + <% $filter->form_field('author', default_value => $author ) %> -<% $filter->button( label => 'Show just this commiter' ) %> -<% Jifty->web->form->end %> +<% $filter->form_field('branch', default_value => $branch ) %> +<% $filter->form_field('search', default_value => $search ) %> + +
+<% $filter->form_field('from_date', default_value => $from_date ) %> +<% $filter->form_field('to_date', default_value => $to_date ) %> +<% $filter->form_field('per_page', default_value => $per_page ) %> +<% $filter->form_field('show_actions', default_value => $show_actions ) %> +
+ +
+<% $filter->button( label => 'Filter commits' ) %> <%perl> if (my $nr = $revisions->pager->total_entries) { - $m->out("Found $nr revisions"); + $m->out("$nr revisions found"); } else { - $m->out("No revisions found.") + $m->out("No revisions found in repository"); } +
% while (my $r = $revisions->next) {
<% Jifty->web->tangent( - url => '/revision/' . $r->revision, + url => '/rev/' . $r->revision, label => $r->revision, ) %> <% $r->author %> @@ -61,21 +102,30 @@
<% $r->message %>
-
% }
% if ($revisions->pager->previous_page) { - <% Jifty->web->link( - label => "Previous", - onclick => { args => { page => $revisions->pager->previous_page } } + <% $filter->button( + label => "<<", + escape_label => 0, + arguments => { + page => $revisions->pager->previous_page, + } ) %> % } @@ -84,11 +134,15 @@ % } % if ($revisions->pager->next_page) { - <% Jifty->web->link( - label => "Next", - onclick => { args => { page => $revisions->pager->next_page } } + <% $filter->button( + label => ">>", + escape_label => 0, + arguments => { + page => $revisions->pager->next_page, + } ) %> % } - +<% Jifty->web->form->end %> +