/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 238 - (show 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 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 use Strix::Import;
16
17 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 warn "# available_values( $field )";
36 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 if ( $instance && $coll->count == 0 ) {
57 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 return [{ display => _('No sites') }] unless $coll->count;
65
66 #warn "# intance $instance as ",$coll->count," sites\n";
67
68 my $vv = [];
69 while ( my $i = $coll->next ) {
70 push @$vv, {
71 display => $i->naziv,
72 value => $i->site_id,
73 };
74 #warn "## added ",$i->site_id," to available values\n";
75 }
76 #warn "# $field vv = ",dump( $vv );
77 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