/[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 183 - (hide annotations)
Mon Jun 16 21:33:59 2008 UTC (15 years, 9 months ago) by dpavlin
File size: 6727 byte(s)
stirx instances selection is now usable

- show instances added to buffer on each page
- click on instance name will select that instance for operation
1 dpavlin 142 package A3C::View::Strix;
2    
3     =head1 NAME
4    
5     A3C::View::Strix
6    
7     =head1 DESCRIPTION
8    
9 dpavlin 174 Display information about Strix instances
10 dpavlin 142
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 dpavlin 174 Display instaces search and some stats
24 dpavlin 157
25     =cut
26    
27 dpavlin 142 template 'index.html' => page {
28    
29 dpavlin 174 title is _('Strix instances');
30 dpavlin 153
31 dpavlin 174 my $orgs = A3C::Model::StrixInstanceCollection->new;
32 dpavlin 166 $orgs->unlimit;
33    
34 dpavlin 174 div { _('Number of instances in Strix: %1', $orgs->count ) };
35 dpavlin 166
36 dpavlin 157 render_region(
37 dpavlin 174 name => 'selected-instances',
38     path => '/strix/selected-instances'
39 dpavlin 157 );
40    
41     render_region(
42 dpavlin 174 name => 'search-instances',
43     path => '/strix/search-instances',
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 183 render_region(
57     name => 'selected-instances',
58     path => '/strix/selected-instances'
59     );
60    
61 dpavlin 142 my $name_diff = A3C::SQL->new({ query => qq{
62     select
63 dpavlin 174 instance,hreduorgurl,
64 dpavlin 142 _site_name,o
65 dpavlin 174 from strix_instances
66     join hr_edu_orgs on cn = instance
67 dpavlin 142 where o != _site_name
68     }});
69    
70 dpavlin 166 if ( $name_diff->count > 0 ) {
71    
72 dpavlin 142 table {
73     row {
74 dpavlin 183 th {}
75 dpavlin 174 th { _('Instance') }
76     th { _('Strix instance name') }
77 dpavlin 142 th { _('hrEduOrg.o') }
78     };
79     while ( my $row = $name_diff->next ) {
80     row {
81 dpavlin 183 cell { show( 'instance-op', 'Create', '+', $row->instance ) }
82     cell { $row->instance }
83 dpavlin 142 cell { $row->_site_name }
84     cell { $row->o }
85     }
86     }
87     }
88 dpavlin 166
89     } else {
90 dpavlin 174 div { _("Can't find any instance of strix which has different name than data from LDAP") }
91 dpavlin 142 }
92    
93     };
94    
95 dpavlin 161 =head2 sql
96    
97 dpavlin 174 Execute SQL query on instance
98 dpavlin 161
99     =cut
100    
101     template 'sql' => page {
102    
103     title is _('Execute SQL');
104    
105 dpavlin 166 render_region(
106 dpavlin 174 name => 'selected-instances',
107     path => '/strix/selected-instances'
108 dpavlin 166 );
109    
110     render_region(
111     name => 'execute-sql',
112     path => '/strix/execute-sql',
113     );
114    
115     };
116    
117 dpavlin 174 sub strix {
118     my $instance = get('instance') || shift || 'new';
119     return Strix->new({ instance => $instance });
120     }
121    
122 dpavlin 172 =head2 sitemap
123    
124     =cut
125    
126     template 'sitemap' => page {
127    
128     title is _('Sitemap');
129    
130 dpavlin 183 render_region(
131     name => 'selected-instances',
132     path => '/strix/selected-instances'
133     );
134    
135 dpavlin 174 my $site_id = get('site_id') || 1;
136 dpavlin 172
137 dpavlin 174 my $sitemap = strix->site_navigation( $site_id );
138    
139 dpavlin 172 sub full_url {
140     my $p = shift;
141     hyperlink(
142     url => 'http://new.cms-qa.skole.hr' . $p->{url},
143     label => $p->{naziv},
144     );
145 dpavlin 174 if ( $p->{type} eq 'category' ) {
146     outs_raw(' ');
147     hyperlink(
148     url => '/strix/layout?url=' . $p->{url},
149     label => '[layout]',
150     );
151     }
152 dpavlin 172 }
153    
154     sub children {
155     my $c = shift;
156     return unless defined $c->{children};
157     ul {
158     foreach my $p ( @{ $c->{children} } ) {
159     li {
160 dpavlin 183 { class is $p->{class} };
161 dpavlin 172 full_url( $p );
162     children( $p );
163     }
164     }
165     }
166     }
167    
168     ul {
169     foreach my $p ( @$sitemap ) {
170     li {
171     full_url( $p );
172     children( $p );
173     }
174     }
175     }
176    
177     };
178    
179 dpavlin 174 =head2 layout
180    
181     =cut
182    
183     template 'layout' => page {
184    
185     my $url = get('url') || '/';
186    
187     my $category = strix->category( $url );
188    
189     warn dump( $category );
190    
191     title is _('Layout %1 : %2',
192     $category->{sitename},
193     $category->{naziv},
194     );
195    
196     hyperlink(
197     url => 'http://' . $category->{sitename} . '/' . $category->{url},
198     label => $category->{naziv},
199     );
200    
201     my $layout = strix->layout( $url );
202    
203     pre {
204     dump( $layout );
205     }
206    
207     };
208    
209 dpavlin 166 =head1 REGIONS
210    
211     =head2 execute-sql
212    
213 dpavlin 174 Execute SQL query on instance
214 dpavlin 166
215     =cut
216    
217     template 'execute-sql' => sub {
218    
219 dpavlin 161 my $action = new_action(
220     class => 'StrixSQL',
221     moniker => 'strix-sql',
222     sticky_on_success => 1,
223     sticky_on_failure => 1,
224 dpavlin 166 arguments => {
225 dpavlin 183 instance => get('instance')
226 dpavlin 166 }
227 dpavlin 161 );
228    
229     form {
230 dpavlin 183 render_action( $action => [ 'instance', 'sql' ] );
231 dpavlin 161 form_submit( label => _('Execute SQL') );
232     };
233    
234     if ( my $sql = $action->result->content('sql') ) {
235     div { _('Found %1 results', $sql->count ) }
236     table {
237     row { map { th { $_ } } $sql->_column_names };
238     while (my $row = $sql->next) {
239     row {
240     foreach my $col ( $sql->_column_names ) {
241     cell { $row->$col }
242     }
243     }
244     }
245     }
246     }
247     };
248    
249 dpavlin 174 =head2 search-instances
250 dpavlin 157
251     =cut
252    
253 dpavlin 174 template 'search-instances' => sub {
254 dpavlin 157
255 dpavlin 174 h1 { _('Find instance') }
256 dpavlin 157
257     my $action = new_action(
258 dpavlin 174 class => 'SearchStrixInstance',
259     moniker => 'search-strix-instance',
260 dpavlin 157 sticky_on_success => 1,
261     sticky_on_failure => 1,
262     );
263    
264    
265     form {
266 dpavlin 174 render_action( $action => [ 'instance_contains', '_site_name_contains' ] );
267 dpavlin 157 form_submit( label => _('Search') );
268     };
269    
270     # warn dump( $action->result->content );
271    
272     if ( my $search = $action->result->content('search') ) {
273     div { _('Found %1 results', $search->count ) }
274     table {
275     while (my $strix = $search->next) {
276     row {
277 dpavlin 174 cell { tt { $strix->instance } }
278 dpavlin 157 cell { $strix->_site_name }
279 dpavlin 174 cell { show( 'instance-op', 'Create', '+', $strix->instance ) }
280 dpavlin 157 }
281     }
282     }
283     }
284    
285     };
286    
287 dpavlin 174 =head2 selected-instances
288 dpavlin 157
289 dpavlin 174 Show Selected instances for current user
290 dpavlin 157
291     =cut
292    
293 dpavlin 174 template 'selected-instances' => sub {
294 dpavlin 157 my $self = shift;
295    
296 dpavlin 174 warn "## IN selected-instances ",dump( @_ );
297 dpavlin 157
298     if ( my $op = get 'op' ) {
299 dpavlin 174 my $instance = get 'instance' or die "no instance?";
300     warn "# selected-instances $op on $instance";
301 dpavlin 157
302     my $a;
303    
304     if ( $op eq 'Create' ) {
305    
306     $a = new_action(
307 dpavlin 174 class => $op . 'StrixInstanceSelection',
308 dpavlin 157 moniker => $op,
309     arguments => {
310 dpavlin 174 instance => $instance,
311 dpavlin 157 by_user => $self->current_user->id,
312     },
313     );
314    
315     } elsif ( $op eq 'Delete' ) {
316    
317 dpavlin 174 my $strix = A3C::Model::StrixInstanceSelection->new;
318     $strix->load_by_cols( instance => $instance, by_user => $self->current_user->id );
319     die "can't find instance $instance" unless $strix->id;
320 dpavlin 157 $a = $strix->as_delete_action;
321    
322     }
323     warn "# argument_values = ",dump( $a->argument_values );
324     $a->run;
325 dpavlin 174 warn "can't $op instance $instance" unless $a->result->success;
326 dpavlin 157 }
327    
328 dpavlin 174 my $selected = A3C::Model::StrixInstanceSelectionCollection->new;
329 dpavlin 157 $selected->limit( column => 'by_user', value => Jifty->web->current_user->id );
330    
331     if ( $selected->count > 0 ) {
332    
333 dpavlin 183 div { _('%1 instances selected', $selected->count ) };
334 dpavlin 157 table {
335     while (my $s = $selected->next) {
336     row {
337 dpavlin 183 cell { tt {
338     hyperlink(
339     url => '?instance=' . $s->instance->instance,
340     label => $s->instance->instance
341     )
342     } }
343     cell { $s->instance->_site_name }
344     cell { show( 'instance-op', 'Delete', '-', $s->instance->instance ) }
345 dpavlin 157 }
346     }
347     }
348     } else {
349 dpavlin 174 div { _('No instances selected') }
350 dpavlin 157 }
351     };
352    
353 dpavlin 174 =head2 instance-op
354 dpavlin 157
355 dpavlin 174 Display button to add/remove instance from selection
356 dpavlin 157
357 dpavlin 174 show( 'instance-op', 'Delete', '-', $strix->instace );
358 dpavlin 157
359     =cut
360    
361 dpavlin 174 template 'instance-op' => sub {
362 dpavlin 157 my $self = shift;
363    
364 dpavlin 174 warn "# instance-op = ",dump( @_ );
365 dpavlin 157
366 dpavlin 174 my ( $op, $label, $instance ) = @_;
367 dpavlin 157
368     form {
369     hyperlink(
370     label => $label,
371     onclick => {
372 dpavlin 174 refresh => 'selected-instances',
373     path => '/strix/selected-instances',
374 dpavlin 157 args => {
375 dpavlin 174 instance => $instance,
376 dpavlin 157 op => $op,
377     }
378     },
379     );
380     }
381    
382     };
383    
384    
385 dpavlin 142 1;

  ViewVC Help
Powered by ViewVC 1.1.26