28 |
|
|
29 |
title is _('Strix sites'); |
title is _('Strix sites'); |
30 |
|
|
31 |
|
my $orgs = A3C::Model::StrixSiteCollection->new; |
32 |
|
$orgs->unlimit; |
33 |
|
|
34 |
|
div { _('Number of sites in Strix: %1', $orgs->count ) }; |
35 |
|
|
36 |
render_region( |
render_region( |
37 |
name => 'user-selected-sites', |
name => 'selected-sites', |
38 |
path => '/strix/selected-sites' |
path => '/strix/selected-sites' |
39 |
); |
); |
40 |
|
|
41 |
render_region( |
render_region( |
42 |
name => 'search_sites', |
name => 'search-sites', |
43 |
path => '/strix/search_sites', |
path => '/strix/search-sites', |
44 |
); |
); |
45 |
|
|
|
h1 { _('Statistics') } |
|
|
|
|
|
my $orgs = A3C::Model::StrixSiteCollection->new; |
|
|
$orgs->unlimit; |
|
|
|
|
|
dt { _('Number of Strix sites') } |
|
|
dd { $orgs->count } |
|
|
|
|
46 |
}; |
}; |
47 |
|
|
48 |
=head2 name_diff |
=head2 name_diff |
51 |
|
|
52 |
template 'name_diff' => page { |
template 'name_diff' => page { |
53 |
|
|
54 |
title is _('Strix sites | name differences between php config and internal state'); |
title is _('Strix name differences'); |
55 |
|
|
56 |
my $name_diff = A3C::SQL->new({ query => qq{ |
my $name_diff = A3C::SQL->new({ query => qq{ |
57 |
select |
select |
62 |
where o != _site_name |
where o != _site_name |
63 |
}}); |
}}); |
64 |
|
|
65 |
h1 { _('Name differences') } |
if ( $name_diff->count > 0 ) { |
66 |
dd { |
|
67 |
table { |
table { |
68 |
row { |
row { |
69 |
th { _('Site') } |
th { _('Site') } |
78 |
} |
} |
79 |
} |
} |
80 |
} |
} |
81 |
|
|
82 |
|
} else { |
83 |
|
div { _("Can't find any site in strix which has different name than data from LDAP") } |
84 |
} |
} |
85 |
|
|
86 |
}; |
}; |
95 |
|
|
96 |
title is _('Execute SQL'); |
title is _('Execute SQL'); |
97 |
|
|
98 |
|
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 |
my $action = new_action( |
my $action = new_action( |
121 |
class => 'StrixSQL', |
class => 'StrixSQL', |
122 |
moniker => 'strix-sql', |
moniker => 'strix-sql', |
123 |
sticky_on_success => 1, |
sticky_on_success => 1, |
124 |
sticky_on_failure => 1, |
sticky_on_failure => 1, |
125 |
|
arguments => { |
126 |
|
strix => get('strix') |
127 |
|
} |
128 |
); |
); |
129 |
|
|
130 |
form { |
form { |
139 |
while (my $row = $sql->next) { |
while (my $row = $sql->next) { |
140 |
row { |
row { |
141 |
foreach my $col ( $sql->_column_names ) { |
foreach my $col ( $sql->_column_names ) { |
|
warn "++ $col\n"; |
|
142 |
cell { $row->$col } |
cell { $row->$col } |
143 |
} |
} |
144 |
} |
} |
147 |
} |
} |
148 |
}; |
}; |
149 |
|
|
150 |
=head1 REGIONS |
=head2 search-sites |
|
|
|
|
=head2 search_sites |
|
151 |
|
|
152 |
=cut |
=cut |
153 |
|
|
154 |
template 'search_sites' => sub { |
template 'search-sites' => sub { |
155 |
|
|
156 |
h1 { _('Find site') } |
h1 { _('Find site') } |
157 |
|
|
177 |
row { |
row { |
178 |
cell { tt { $strix->site } } |
cell { tt { $strix->site } } |
179 |
cell { $strix->_site_name } |
cell { $strix->_site_name } |
180 |
cell { show( 'site_selection', 'Create', '+', $strix->site ) } |
cell { show( 'site-op', 'Create', '+', $strix->site ) } |
181 |
} |
} |
182 |
} |
} |
183 |
} |
} |
185 |
|
|
186 |
}; |
}; |
187 |
|
|
188 |
=head2 selected_sites |
=head2 selected-sites |
189 |
|
|
190 |
Show Selected sites for current user |
Show Selected sites for current user |
191 |
|
|
237 |
row { |
row { |
238 |
cell { tt { $s->strix->site } } |
cell { tt { $s->strix->site } } |
239 |
cell { $s->strix->_site_name } |
cell { $s->strix->_site_name } |
240 |
cell { show( 'site_selection', 'Delete', '-', $s->strix->site ) } |
cell { show( 'site-op', 'Delete', '-', $s->strix->site ) } |
241 |
} |
} |
242 |
} |
} |
243 |
} |
} |
246 |
} |
} |
247 |
}; |
}; |
248 |
|
|
249 |
=head2 site_selection |
=head2 site-op |
250 |
|
|
251 |
Display button to add/remove site from selection |
Display button to add/remove site from selection |
252 |
|
|
253 |
show( 'site_selection', 'Delete', '-', $strix->site ); |
show( 'site-op', 'Delete', '-', $strix->site ); |
254 |
|
|
255 |
=cut |
=cut |
256 |
|
|
257 |
template 'site_selection' => sub { |
template 'site-op' => sub { |
258 |
my $self = shift; |
my $self = shift; |
259 |
|
|
260 |
warn "# site_selection = ",dump( @_ ); |
warn "# site-op = ",dump( @_ ); |
261 |
|
|
262 |
my ( $op, $label, $site ) = @_; |
my ( $op, $label, $site ) = @_; |
263 |
|
|
265 |
hyperlink( |
hyperlink( |
266 |
label => $label, |
label => $label, |
267 |
onclick => { |
onclick => { |
268 |
refresh => 'user-selected-sites', |
refresh => 'selected-sites', |
269 |
path => '/strix/selected-sites', |
path => '/strix/selected-sites', |
270 |
args => { |
args => { |
271 |
site => $site, |
site => $site, |