--- trunk/lib/SVNBrowser/View.pm 2007/09/04 16:07:18 67 +++ trunk/lib/SVNBrowser/View.pm 2008/01/31 22:41:30 75 @@ -9,7 +9,7 @@ use Data::Dump qw/dump/; -template '/x' => page { +template '/x-list' => page { h1 { _("SVN Repository browser") }; form { @@ -21,7 +21,8 @@ render_param( $filter => 'author' ); render_param( $filter => 'branch' ); - render_param( $filter => 'rel_path' ); + render_param( $filter => 'rel_path', default => get('rel_path') ); + render_param( $filter => 'path' ); render_param( $filter => 'search' ); div { attr { class => 'inline' } @@ -31,63 +32,100 @@ render_param( $filter => 'per_page' ); render_param( $filter => 'show_actions' ); - } + }; form_submit( label => _("Filter commits") ); - warn "####",dump( $filter->result->content ); + #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 { - 'foobar'; - if ( $revisions->pager->previous_page ) { - outs_raw $filter->button( - submit => $filter, + attr { class => 'pager' }; + + if ( $collection->pager->previous_page ) { + outs_raw $action->button( + submit => $action, label => _("previous page"), - arguments => { page => $revisions->pager->previous_page }, + arguments => { page => $collection->pager->previous_page }, ); } - if ($revisions->pager->last_page > 1) { + if ($collection->pager->last_page > 1) { span { - _("page"), ' ', $revisions->pager->current_page, ' ',_("of"), ' ', $revisions->pager->last_page + _("page"), ' ', $collection->pager->current_page, ' ',_("of"), ' ', $collection->pager->last_page } }; - if ($revisions->pager->next_page) { - outs_raw( $filter->button( - submit => $filter, + if ($collection->pager->next_page) { + outs_raw( $action->button( + submit => $action, label => _("next page"), - arguments => { page => $revisions->pager->next_page }, + arguments => { page => $collection->pager->next_page }, ) ); } } } - pager; + 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 } - # actions - span { $r->id } } + dd { - pre { attr { class => 'commit_message' } $r->message } + 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; + pager( $filter, $revisions ); } @@ -95,4 +133,3 @@ }; -