--- trunk/lib/SVNBrowser/View.pm 2007/09/03 20:24:03 64 +++ trunk/lib/SVNBrowser/View.pm 2008/01/31 22:41:30 75 @@ -9,31 +9,127 @@ use Data::Dump qw/dump/; -template '/x' => page { - h1 { _("SVN Repository browser") }, +template '/x-list' => page { + h1 { _("SVN Repository browser") }; form { - my $filter = Jifty->web->new_action( - class => 'Filter', - moniker => 'filter_list', - ); - render_param( $filter => 'author' ); - render_param( $filter => 'branch' ); - render_param( $filter => 'rel_path' ); - render_param( $filter => 'search' ); + my $filter = Jifty->web->new_action( + class => 'Filter', + moniker => 'filter_list', + ); + + render_param( $filter => 'author' ); + render_param( $filter => 'branch' ); + render_param( $filter => 'rel_path', default => get('rel_path') ); + render_param( $filter => 'path' ); + render_param( $filter => 'search' ); - div { attr { class => 'inline' } + div { attr { class => 'inline' } render_param( $filter => 'from_date' ); render_param( $filter => 'to_date' ); render_param( $filter => 'per_page' ); render_param( $filter => 'show_actions' ); + + }; + form_submit( + label => _("Filter commits") + ); + + #warn "####",dump( $filter->result->content ); + + my $revisions = $filter->result->content('revisions'); + if ( $revisions ) { + + sub pager { + my ( $action, $collection ) = @_; + + return if $collection->pager->last_page == 1; + + div { + attr { class => 'pager' }; + + if ( $collection->pager->previous_page ) { + outs_raw $action->button( + submit => $action, + label => _("previous page"), + arguments => { page => $collection->pager->previous_page }, + ); + } + + if ($collection->pager->last_page > 1) { + span { + _("page"), ' ', $collection->pager->current_page, ' ',_("of"), ' ', $collection->pager->last_page + } + }; + + if ($collection->pager->next_page) { + outs_raw( $action->button( + submit => $action, + label => _("next page"), + arguments => { page => $collection->pager->next_page }, + ) ); + } + } } - form_submit( label => _("Filter commits") ); + pager( $filter, $revisions ); + + my $show_actions = get('show_actions') || $filter->argument_value('show_actions'); + my $rel_path = get('rel_path') || $filter->argument_value('rel_path'); + warn "### show_actions = $show_actions"; + + dl { + attr { class => 'results' }; + + while (my $r = $revisions->next ) { + dt { + attr { class => 'commit' } + tt { $r->revision } + span { attr { class => 'author' } $r->author } + span { attr { class => 'commit_date' } $r->commit_date } + } + + dd { + pre { attr { class => 'commit_message' } $r->message }; + + if ( $show_actions ) { + my $actions = SVNBrowser::Model::ActionCollection->new(); + $actions->unlimit; + $actions->limit( column => 'revision', value => $r->revision ); + $actions->limit( column => 'rel_path', value => $rel_path, operator => 'STARTSWITH' ) if ($rel_path); + $actions->limit( column => 'rel_path', value => $filter->argument_value('path'), operator => 'MATCHES' ); + + ul { attr { class => 'actions' }; + while (my $a = $actions->next) { + li { + tt { attr { class => 'action-' . $a->type } + outs ( + $a->type, ' ', + $a->branch + ); + hyperlink( + label => $a->rel_path, + parameters => { + rel_path => $a->rel_path, + } + ); + } + } + } + } + } + } + } + } + + pager( $filter, $revisions ); } -} + }; #form + +}; +