/[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 174 - (hide annotations)
Mon Jun 16 16:48:16 2008 UTC (15 years, 10 months ago) by dpavlin
File size: 6378 byte(s)
big rename of StrixSite to StrixInstance, added sitemap and layout

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

  ViewVC Help
Powered by ViewVC 1.1.26