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

Contents of /lib/A3C/View/Strix.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 183 - (show annotations)
Mon Jun 16 21:33:59 2008 UTC (15 years, 10 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 package A3C::View::Strix;
2
3 =head1 NAME
4
5 A3C::View::Strix
6
7 =head1 DESCRIPTION
8
9 Display information about Strix instances
10
11 =head1 TEMPLATES
12
13 =cut
14
15 use strict;
16 use warnings;
17
18 use Jifty::View::Declare -base;
19 use Data::Dump qw/dump/;
20
21 =head2 /
22
23 Display instaces search and some stats
24
25 =cut
26
27 template 'index.html' => page {
28
29 title is _('Strix instances');
30
31 my $orgs = A3C::Model::StrixInstanceCollection->new;
32 $orgs->unlimit;
33
34 div { _('Number of instances in Strix: %1', $orgs->count ) };
35
36 render_region(
37 name => 'selected-instances',
38 path => '/strix/selected-instances'
39 );
40
41 render_region(
42 name => 'search-instances',
43 path => '/strix/search-instances',
44 );
45
46 };
47
48 =head2 name_diff
49
50 =cut
51
52 template 'name_diff' => page {
53
54 title is _('Strix name differences');
55
56 render_region(
57 name => 'selected-instances',
58 path => '/strix/selected-instances'
59 );
60
61 my $name_diff = A3C::SQL->new({ query => qq{
62 select
63 instance,hreduorgurl,
64 _site_name,o
65 from strix_instances
66 join hr_edu_orgs on cn = instance
67 where o != _site_name
68 }});
69
70 if ( $name_diff->count > 0 ) {
71
72 table {
73 row {
74 th {}
75 th { _('Instance') }
76 th { _('Strix instance name') }
77 th { _('hrEduOrg.o') }
78 };
79 while ( my $row = $name_diff->next ) {
80 row {
81 cell { show( 'instance-op', 'Create', '+', $row->instance ) }
82 cell { $row->instance }
83 cell { $row->_site_name }
84 cell { $row->o }
85 }
86 }
87 }
88
89 } else {
90 div { _("Can't find any instance of strix which has different name than data from LDAP") }
91 }
92
93 };
94
95 =head2 sql
96
97 Execute SQL query on instance
98
99 =cut
100
101 template 'sql' => page {
102
103 title is _('Execute SQL');
104
105 render_region(
106 name => 'selected-instances',
107 path => '/strix/selected-instances'
108 );
109
110 render_region(
111 name => 'execute-sql',
112 path => '/strix/execute-sql',
113 );
114
115 };
116
117 sub strix {
118 my $instance = get('instance') || shift || 'new';
119 return Strix->new({ instance => $instance });
120 }
121
122 =head2 sitemap
123
124 =cut
125
126 template 'sitemap' => page {
127
128 title is _('Sitemap');
129
130 render_region(
131 name => 'selected-instances',
132 path => '/strix/selected-instances'
133 );
134
135 my $site_id = get('site_id') || 1;
136
137 my $sitemap = strix->site_navigation( $site_id );
138
139 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 if ( $p->{type} eq 'category' ) {
146 outs_raw(' ');
147 hyperlink(
148 url => '/strix/layout?url=' . $p->{url},
149 label => '[layout]',
150 );
151 }
152 }
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 { class is $p->{class} };
161 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 =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 =head1 REGIONS
210
211 =head2 execute-sql
212
213 Execute SQL query on instance
214
215 =cut
216
217 template 'execute-sql' => sub {
218
219 my $action = new_action(
220 class => 'StrixSQL',
221 moniker => 'strix-sql',
222 sticky_on_success => 1,
223 sticky_on_failure => 1,
224 arguments => {
225 instance => get('instance')
226 }
227 );
228
229 form {
230 render_action( $action => [ 'instance', 'sql' ] );
231 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 =head2 search-instances
250
251 =cut
252
253 template 'search-instances' => sub {
254
255 h1 { _('Find instance') }
256
257 my $action = new_action(
258 class => 'SearchStrixInstance',
259 moniker => 'search-strix-instance',
260 sticky_on_success => 1,
261 sticky_on_failure => 1,
262 );
263
264
265 form {
266 render_action( $action => [ 'instance_contains', '_site_name_contains' ] );
267 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 cell { tt { $strix->instance } }
278 cell { $strix->_site_name }
279 cell { show( 'instance-op', 'Create', '+', $strix->instance ) }
280 }
281 }
282 }
283 }
284
285 };
286
287 =head2 selected-instances
288
289 Show Selected instances for current user
290
291 =cut
292
293 template 'selected-instances' => sub {
294 my $self = shift;
295
296 warn "## IN selected-instances ",dump( @_ );
297
298 if ( my $op = get 'op' ) {
299 my $instance = get 'instance' or die "no instance?";
300 warn "# selected-instances $op on $instance";
301
302 my $a;
303
304 if ( $op eq 'Create' ) {
305
306 $a = new_action(
307 class => $op . 'StrixInstanceSelection',
308 moniker => $op,
309 arguments => {
310 instance => $instance,
311 by_user => $self->current_user->id,
312 },
313 );
314
315 } elsif ( $op eq 'Delete' ) {
316
317 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 $a = $strix->as_delete_action;
321
322 }
323 warn "# argument_values = ",dump( $a->argument_values );
324 $a->run;
325 warn "can't $op instance $instance" unless $a->result->success;
326 }
327
328 my $selected = A3C::Model::StrixInstanceSelectionCollection->new;
329 $selected->limit( column => 'by_user', value => Jifty->web->current_user->id );
330
331 if ( $selected->count > 0 ) {
332
333 div { _('%1 instances selected', $selected->count ) };
334 table {
335 while (my $s = $selected->next) {
336 row {
337 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 }
346 }
347 }
348 } else {
349 div { _('No instances selected') }
350 }
351 };
352
353 =head2 instance-op
354
355 Display button to add/remove instance from selection
356
357 show( 'instance-op', 'Delete', '-', $strix->instace );
358
359 =cut
360
361 template 'instance-op' => sub {
362 my $self = shift;
363
364 warn "# instance-op = ",dump( @_ );
365
366 my ( $op, $label, $instance ) = @_;
367
368 form {
369 hyperlink(
370 label => $label,
371 onclick => {
372 refresh => 'selected-instances',
373 path => '/strix/selected-instances',
374 args => {
375 instance => $instance,
376 op => $op,
377 }
378 },
379 );
380 }
381
382 };
383
384
385 1;

  ViewVC Help
Powered by ViewVC 1.1.26