/[A3C]/lib/A3C/Action/StrixSelectSite.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /lib/A3C/Action/StrixSelectSite.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 238 - (hide annotations)
Sun Sep 7 22:00:36 2008 UTC (15 years, 7 months ago) by dpavlin
File size: 2313 byte(s)
sigh! make on-demand sync really work :-)

1 dpavlin 197 use strict;
2     use warnings;
3    
4     =head1 NAME
5    
6     A3C::Action::StrixSelectSite
7    
8     =cut
9    
10     package A3C::Action::StrixSelectSite;
11     use base qw/A3C::Action Jifty::Action/;
12    
13     use Data::Dump qw/dump/;
14    
15 dpavlin 238 use Strix::Import;
16    
17 dpavlin 197 use Jifty::Param::Schema;
18     use Jifty::Action schema {
19    
20     param instance =>
21     label is _('Strix instance'),
22     render as 'Select',
23     is mandatory;
24    
25     param site_id =>
26     label is _('Strix site'),
27     render as 'Select',
28     is mandatory;
29    
30     };
31    
32     sub available_values {
33     my $self = shift;
34     my $field = shift;
35 dpavlin 236 warn "# available_values( $field )";
36 dpavlin 197 if ( $field eq 'instance' ) {
37     my $coll = A3C::Model::StrixInstanceCollection->new;
38     $coll->unlimit;
39     $coll->order_by( column => 'instance' );
40    
41     my $vv = [];
42     while ( my $i = $coll->next ) {
43     push @$vv, {
44     display => ( $i->_site_name || '['.$i->instance.']' ),
45     value => $i->instance,
46     };
47     }
48     #warn "# $field vv = ",dump( $vv );
49     return $vv;
50     } elsif ( $field eq 'site_id' ) {
51     my $instance = $self->argument_value('instance');
52    
53     my $coll = A3C::Model::StrixSiteCollection->new;
54     $coll->limit( column => 'instance', value => $instance );
55    
56 dpavlin 238 if ( $instance && $coll->count == 0 ) {
57 dpavlin 236 warn "SYNC sites for $instance\n";
58     Strix::Import->sites( $instance );
59     # FIXME re-run query?
60     $coll = A3C::Model::StrixSiteCollection->new;
61     $coll->limit( column => 'instance', value => $instance );
62     }
63    
64 dpavlin 197 return [{ display => _('No sites') }] unless $coll->count;
65    
66 dpavlin 215 #warn "# intance $instance as ",$coll->count," sites\n";
67 dpavlin 197
68     my $vv = [];
69     while ( my $i = $coll->next ) {
70     push @$vv, {
71     display => $i->naziv,
72     value => $i->site_id,
73     };
74 dpavlin 215 #warn "## added ",$i->site_id," to available values\n";
75 dpavlin 197 }
76 dpavlin 215 #warn "# $field vv = ",dump( $vv );
77 dpavlin 197 return $vv;
78     } else {
79     die "unknown field $field";
80     }
81     }
82    
83     sub sticky_on_success { 1 }
84     sub sticky_on_failure { 1 }
85    
86     =head2 take_action
87    
88     =cut
89    
90     sub take_action {
91     my $self = shift;
92    
93     if ( $self->result->success ) {
94     $self->result->message(
95     _("Selected instance %1 site %2",
96     $self->argument_value('instance'),
97     $self->argument_value('site_id')
98     )
99     );
100     # XXX we can't really set two content fields in one pass!!
101     $self->result->content( 'instance' => $self->argument_value('instance') );
102     $self->result->content( 'site_id' => $self->argument_value('site_id') );
103     }
104    
105     return 1;
106     }
107    
108     1;

  ViewVC Help
Powered by ViewVC 1.1.26