--- lib/A3C/View/Strix.pm 2008/06/14 22:04:46 156 +++ lib/A3C/View/Strix.pm 2008/06/15 10:51:57 157 @@ -8,6 +8,8 @@ Display information about Strix sites +=head1 TEMPLATES + =cut use strict; @@ -16,10 +18,26 @@ use Jifty::View::Declare -base; use Data::Dump qw/dump/; +=head2 / + +Display sites search and some stats + +=cut + template 'index.html' => page { title is _('Strix sites'); + render_region( + name => 'user-selected-sites', + path => '/strix/selected-sites' + ); + + render_region( + name => 'search_sites', + path => '/strix/search_sites', + ); + h1 { _('Statistics') } my $orgs = A3C::Model::StrixSiteCollection->new; @@ -30,9 +48,13 @@ }; +=head2 name_diff + +=cut + template 'name_diff' => page { - title is _('Strix sites'); + title is _('Strix sites | name differences between php config and internal state'); my $name_diff = A3C::SQL->new({ query => qq{ select @@ -63,4 +85,137 @@ }; +=head1 REGIONS + +=head2 search_sites + +=cut + +template 'search_sites' => sub { + + h1 { _('Find site') } + + my $action = new_action( + class => 'SearchStrixSite', + moniker => 'search-strix-site', + sticky_on_success => 1, + sticky_on_failure => 1, + ); + + + form { + render_action( $action => [ 'site_contains', '_site_name_contains' ] ); + form_submit( label => _('Search') ); + }; + +# warn dump( $action->result->content ); + + if ( my $search = $action->result->content('search') ) { + div { _('Found %1 results', $search->count ) } + table { + while (my $strix = $search->next) { + row { + cell { tt { $strix->site } } + cell { $strix->_site_name } + cell { show( 'site_selection', 'Create', '+', $strix->site ) } + } + } + } + } + +}; + +=head2 selected_sites + +Show Selected sites for current user + +=cut + +template 'selected-sites' => sub { + my $self = shift; + + warn "## IN selected-sites ",dump( @_ ); + + if ( my $op = get 'op' ) { + my $site = get 'site' or die "no site?"; + warn "# selected-sites $op on $site"; + + my $a; + + if ( $op eq 'Create' ) { + + $a = new_action( + class => $op . 'StrixSiteSelection', + moniker => $op, + arguments => { + strix => $site, + by_user => $self->current_user->id, + }, + ); + + } elsif ( $op eq 'Delete' ) { + + my $strix = A3C::Model::StrixSiteSelection->new; + $strix->load_by_cols( strix => $site, by_user => $self->current_user->id ); + die "can't find site $site" unless $strix->id; + $a = $strix->as_delete_action; + + } + warn "# argument_values = ",dump( $a->argument_values ); + $a->run; + warn "can't $op site $site" unless $a->result->success; + } + + my $selected = A3C::Model::StrixSiteSelectionCollection->new; + $selected->limit( column => 'by_user', value => Jifty->web->current_user->id ); + + if ( $selected->count > 0 ) { + + div { _('%1 sites selected', $selected->count ) } + table { + while (my $s = $selected->next) { + row { + cell { tt { $s->strix->site } } + cell { $s->strix->_site_name } + cell { show( 'site_selection', 'Delete', '-', $s->strix->site ) } + } + } + } + } else { + div { _('No sites selected') } + } +}; + +=head2 site_selection + +Display button to add/remove site from selection + + show( 'site_selection', 'Delete', '-', $strix->site ); + +=cut + +template 'site_selection' => sub { + my $self = shift; + + warn "# site_selection = ",dump( @_ ); + + my ( $op, $label, $site ) = @_; + + form { + hyperlink( + label => $label, + onclick => { + refresh => 'user-selected-sites', + path => '/strix/selected-sites', + args => { + site => $site, + op => $op, + } + }, + ); + } + +}; + + 1;