/[A3C]/lib/A3C/View/Strix.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/View/Strix.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 166 - (hide annotations)
Sun Jun 15 22:26:07 2008 UTC (15 years, 10 months ago) by dpavlin
File size: 4841 byte(s)
cleanup templates to look somewhat nicer
(and have more consistent naming)
1 dpavlin 142 package A3C::View::Strix;
2    
3     =head1 NAME
4    
5     A3C::View::Strix
6    
7     =head1 DESCRIPTION
8    
9     Display information about Strix sites
10    
11 dpavlin 157 =head1 TEMPLATES
12    
13 dpavlin 142 =cut
14    
15     use strict;
16     use warnings;
17    
18     use Jifty::View::Declare -base;
19     use Data::Dump qw/dump/;
20    
21 dpavlin 157 =head2 /
22    
23     Display sites search and some stats
24    
25     =cut
26    
27 dpavlin 142 template 'index.html' => page {
28    
29 dpavlin 153 title is _('Strix sites');
30    
31 dpavlin 166 my $orgs = A3C::Model::StrixSiteCollection->new;
32     $orgs->unlimit;
33    
34     div { _('Number of sites in Strix: %1', $orgs->count ) };
35    
36 dpavlin 157 render_region(
37 dpavlin 166 name => 'selected-sites',
38 dpavlin 157 path => '/strix/selected-sites'
39     );
40    
41     render_region(
42 dpavlin 166 name => 'search-sites',
43     path => '/strix/search-sites',
44 dpavlin 157 );
45    
46 dpavlin 153 };
47    
48 dpavlin 157 =head2 name_diff
49    
50     =cut
51    
52 dpavlin 153 template 'name_diff' => page {
53    
54 dpavlin 166 title is _('Strix name differences');
55 dpavlin 153
56 dpavlin 142 my $name_diff = A3C::SQL->new({ query => qq{
57     select
58     site,hreduorgurl,
59     _site_name,o
60     from strix_sites
61     join hr_edu_orgs on cn = site
62     where o != _site_name
63     }});
64    
65 dpavlin 166 if ( $name_diff->count > 0 ) {
66    
67 dpavlin 142 table {
68     row {
69     th { _('Site') }
70     th { _('Strix site name') }
71     th { _('hrEduOrg.o') }
72     };
73     while ( my $row = $name_diff->next ) {
74     row {
75     cell { hyperlink( url => 'http://' . $row->hreduorgurl, label => $row->site ) }
76     cell { $row->_site_name }
77     cell { $row->o }
78     }
79     }
80     }
81 dpavlin 166
82     } else {
83     div { _("Can't find any site in strix which has different name than data from LDAP") }
84 dpavlin 142 }
85    
86     };
87    
88 dpavlin 161 =head2 sql
89    
90     Execute SQL query on site
91    
92     =cut
93    
94     template 'sql' => page {
95    
96     title is _('Execute SQL');
97    
98 dpavlin 166 render_region(
99     name => 'selected-sites',
100     path => '/strix/selected-sites'
101     );
102    
103     render_region(
104     name => 'execute-sql',
105     path => '/strix/execute-sql',
106     );
107    
108     };
109    
110     =head1 REGIONS
111    
112     =head2 execute-sql
113    
114     Execute SQL query on site
115    
116     =cut
117    
118     template 'execute-sql' => sub {
119    
120 dpavlin 161 my $action = new_action(
121     class => 'StrixSQL',
122     moniker => 'strix-sql',
123     sticky_on_success => 1,
124     sticky_on_failure => 1,
125 dpavlin 166 arguments => {
126     strix => get('strix')
127     }
128 dpavlin 161 );
129    
130     form {
131     render_action( $action => [ 'strix', 'sql' ] );
132     form_submit( label => _('Execute SQL') );
133     };
134    
135     if ( my $sql = $action->result->content('sql') ) {
136     div { _('Found %1 results', $sql->count ) }
137     table {
138     row { map { th { $_ } } $sql->_column_names };
139     while (my $row = $sql->next) {
140     row {
141     foreach my $col ( $sql->_column_names ) {
142     cell { $row->$col }
143     }
144     }
145     }
146     }
147     }
148     };
149    
150 dpavlin 166 =head2 search-sites
151 dpavlin 157
152     =cut
153    
154 dpavlin 166 template 'search-sites' => sub {
155 dpavlin 157
156     h1 { _('Find site') }
157    
158     my $action = new_action(
159     class => 'SearchStrixSite',
160     moniker => 'search-strix-site',
161     sticky_on_success => 1,
162     sticky_on_failure => 1,
163     );
164    
165    
166     form {
167     render_action( $action => [ 'site_contains', '_site_name_contains' ] );
168     form_submit( label => _('Search') );
169     };
170    
171     # warn dump( $action->result->content );
172    
173     if ( my $search = $action->result->content('search') ) {
174     div { _('Found %1 results', $search->count ) }
175     table {
176     while (my $strix = $search->next) {
177     row {
178     cell { tt { $strix->site } }
179     cell { $strix->_site_name }
180 dpavlin 166 cell { show( 'site-op', 'Create', '+', $strix->site ) }
181 dpavlin 157 }
182     }
183     }
184     }
185    
186     };
187    
188 dpavlin 166 =head2 selected-sites
189 dpavlin 157
190     Show Selected sites for current user
191    
192     =cut
193    
194     template 'selected-sites' => sub {
195     my $self = shift;
196    
197     warn "## IN selected-sites ",dump( @_ );
198    
199     if ( my $op = get 'op' ) {
200     my $site = get 'site' or die "no site?";
201     warn "# selected-sites $op on $site";
202    
203     my $a;
204    
205     if ( $op eq 'Create' ) {
206    
207     $a = new_action(
208     class => $op . 'StrixSiteSelection',
209     moniker => $op,
210     arguments => {
211     strix => $site,
212     by_user => $self->current_user->id,
213     },
214     );
215    
216     } elsif ( $op eq 'Delete' ) {
217    
218     my $strix = A3C::Model::StrixSiteSelection->new;
219     $strix->load_by_cols( strix => $site, by_user => $self->current_user->id );
220     die "can't find site $site" unless $strix->id;
221     $a = $strix->as_delete_action;
222    
223     }
224     warn "# argument_values = ",dump( $a->argument_values );
225     $a->run;
226     warn "can't $op site $site" unless $a->result->success;
227     }
228    
229     my $selected = A3C::Model::StrixSiteSelectionCollection->new;
230     $selected->limit( column => 'by_user', value => Jifty->web->current_user->id );
231    
232     if ( $selected->count > 0 ) {
233    
234     div { _('%1 sites selected', $selected->count ) }
235     table {
236     while (my $s = $selected->next) {
237     row {
238     cell { tt { $s->strix->site } }
239     cell { $s->strix->_site_name }
240 dpavlin 166 cell { show( 'site-op', 'Delete', '-', $s->strix->site ) }
241 dpavlin 157 }
242     }
243     }
244     } else {
245     div { _('No sites selected') }
246     }
247     };
248    
249 dpavlin 166 =head2 site-op
250 dpavlin 157
251     Display button to add/remove site from selection
252    
253 dpavlin 166 show( 'site-op', 'Delete', '-', $strix->site );
254 dpavlin 157
255     =cut
256    
257 dpavlin 166 template 'site-op' => sub {
258 dpavlin 157 my $self = shift;
259    
260 dpavlin 166 warn "# site-op = ",dump( @_ );
261 dpavlin 157
262     my ( $op, $label, $site ) = @_;
263    
264     form {
265     hyperlink(
266     label => $label,
267     onclick => {
268 dpavlin 166 refresh => 'selected-sites',
269 dpavlin 157 path => '/strix/selected-sites',
270     args => {
271     site => $site,
272     op => $op,
273     }
274     },
275     );
276     }
277    
278     };
279    
280    
281 dpavlin 142 1;

  ViewVC Help
Powered by ViewVC 1.1.26