8bb8ad0f49bb6d8e0dbd37df33770f21ba086277
[clearscm.git] / clearadm / viewdetails.cgi
1 #!/usr/bin/perl
2
3 =pod
4
5 =head1 NAME $RCSfile: viewdetails.cgi,v $
6
7 View Details
8
9 =head1 VERSION
10
11 =over
12
13 =item Author
14
15 Andrew DeFaria <Andrew@ClearSCM.com>
16
17 =item Revision
18
19 $Revision: 1.11 $
20
21 =item Created:
22
23 Mon Oct 25 11:10:47 PDT 2008
24
25 =item Modified:
26
27 $Date: 2011/01/14 16:51:58 $
28
29 =back
30
31 =head1 SYNOPSIS
32
33  Usage viewdetails.cgi: [-u|sage] [-r|egion <region>] -vi|ew <viewname>
34                         [-ve|rbose] [-d|ebug]
35
36  Where:
37    -u|sage:           Displays usage
38    -r|egion <region>: Region to use when looking for the view
39    -vi|ew<viewname>:  Name of view to display details for
40
41    -ve|rbose:         Be verbose
42    -d|ebug:           Output debug messages
43
44 =head2 DESCRIPTION
45
46 This script display the details for the given view
47
48 =cut
49
50 use strict;
51 use warnings;
52
53 use FindBin;
54 use Getopt::Long;
55 use CGI qw (:standard :cgi-lib *table start_Tr end_Tr);
56 use CGI::Carp 'fatalsToBrowser';
57
58 use lib "$FindBin::Bin/lib", "$FindBin::Bin/../lib";
59
60 use ClearadmWeb;
61 use Clearcase;
62 use Clearcase::View;
63 use Clearcase::Views;
64 use Display;
65 use Utils;
66
67 my %opts = Vars;
68
69 my $subtitle = 'View Details';
70
71 if ($Clearcase::CC->region) {
72   $opts{region} ||= $Clearcase::CC->region;
73 } else {
74   $opts{region} ||= 'Clearcase not installed';
75 } # if
76
77 my $VERSION  = '$Revision: 1.11 $';
78   ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
79
80 sub DisplayTable ($) {
81   my ($view) = @_;
82
83   # Data fields
84   my $tag             = setField $view->tag;
85   my $server          = setField $view->shost;
86   my $region          = setField $view->region;
87   my $properties      = setField $view->properties;
88   my $text_mode       = setField $view->text_mode;
89   my $permissions     = setField $view->owner_mode
90                       . setField $view->group_mode
91                       . setField $view->other_mode;
92   my $owner           = setField $view->owner;
93   my $active          = ($view->active) ? 'YES' : 'NO';
94   my $created_by      = setField $view->created_by;
95   my $created_date    = setField $view->created_date;
96   my $cs_updated_by   = setField $view->cs_updated_by;
97   my $cs_updated_date = setField $view->cs_updated_date;
98   my $gpath           = setField $view->gpath;
99   my $access_path     = setField $view->access_path;
100   my $uuid            = setField $view->uuid;
101
102   $gpath = font {-class => 'unknown'}, '&lt;no-gpath&gt;'
103     if $gpath eq '<no-gpath>';
104
105   display start_table {
106     -cellspacing    => 1,
107     -class          => 'main',
108   };
109
110   display start_Tr;
111     display th {class => 'label'},              'Tag:';
112     display td {class => 'data', colspan => 3}, $tag;
113     display th {class => 'label'},              'Server:';
114     display td {class => 'data'}, a {
115       href => "serverdetails.cgi?server=$server"
116     }, $server;
117     display th {class => 'label'},               'Region:';
118     display td {class => 'data'},                 $region;
119   display end_Tr;
120
121   display start_Tr;
122     display th {class => 'label'},              'Properties:';
123     display td {class => 'data', colspan => 3}, $properties;
124     display th {class => 'label'},              'Text Mode:';
125     display td {class => 'data'},               $text_mode;
126     display th {class => 'label'},              'Permission:';
127     display td {class => 'data'},               $permissions;
128   display end_Tr;
129
130   display start_Tr;
131     display th {class => 'label'},              'Owner:';
132     display td {class => 'data', colspan => 3}, $owner;
133     display th {class => 'label'},              'Active:';
134     display td {class => 'data', colspan => 3}, $active;
135   display end_Tr;
136
137   display start_Tr;
138     display th {class => 'label'},              'Created by:';
139     display td {class => 'data', colspan => 3}, $created_by;
140     display th {class => 'label'},              'on:';
141     display td {class => 'data', colspan => 3}, $created_date;
142   display end_Tr;
143
144   display start_Tr;
145     display th {class => 'label'},              'CS Updated by:';
146     display td {class => 'data', colspan => 3}, $cs_updated_by;
147     display th {class => 'label'},              'on:';
148     display td {class => 'data', colspan => 3}, $cs_updated_date;
149   display end_Tr;
150
151   display start_Tr;
152     display th {class => 'label'},              'Global Path:';
153     display td {class => 'data', colspan => 7}, $gpath;
154   display end_Tr;
155
156   display start_Tr;
157     display th {class => 'label'},              'Access Path:';
158     display td {class => 'data', colspan => 7}, $access_path;
159   display end_Tr;
160
161   display start_Tr;
162     display th {class => 'label'},              'UUID:';
163     display td {class => 'data', colspan => 7}, $uuid;
164   display end_Tr;
165
166   display end_table;
167   
168   return
169 } # DisplayTable
170
171 sub DisplayRegion {
172   display start_form (action => 'viewdetails.cgi');
173
174   display 'Region ';
175
176   my ($defaultRegion, @regions) = ('', ('Clearcase not installed'));
177
178   display popup_menu (
179     -name     => 'region',
180     -values   => [@regions],
181     -default  => $defaultRegion,
182     -onchange => 'submit();',
183   );
184
185   display submit (
186     -value => 'Go',
187   );
188
189   display end_form;
190   
191   return
192 } # DisplayRegion
193
194 sub DisplayViews ($) {
195   my ($region) = @_;
196
197   my $views = Clearcase::Views->new ($region);
198   my @views = $views->views;
199
200   unless (@views) {
201     push @views, 'No Views';
202   } # unless
203
204   display start_form (action => 'viewdetails.cgi');
205
206   display 'Region ';
207
208   display popup_menu (
209     -name     => 'region',
210     -values   => [$Clearcase::CC->regions],
211     -default  => $region,
212     -onchange => 'submit();',
213   );
214
215   display b ' View: ';
216
217   display popup_menu (
218      -name     => 'view',
219      -values   => \@views,
220      -onchange => 'submit();',
221   );
222
223   display submit (
224     -value     => 'Go',
225   );
226
227   display end_form;
228   
229   return;
230 } # DisplayViews
231
232 # Main
233 GetOptions (
234   \%opts,
235   'usage'        => sub { Usage },
236   'verbose'      => sub { set_verbose },
237   'debug'        => sub { set_debug },
238   'view=s',
239   'region=s',
240 ) or Usage "Invalid parameter";
241
242 # Announce ourselves
243 verbose "$FindBin::Script v$VERSION";
244
245 heading $subtitle;
246
247 display h1 {
248   -class => 'center',
249 }, $subtitle;
250
251 unless ($opts{tag}) {
252   unless ($opts{region}) {
253     DisplayRegion;
254   } else {
255     DisplayViews $opts{region};
256   } # unless
257
258   exit;
259 } # unless
260
261 my $view = Clearcase::View->new ($opts{tag}, $opts{region});
262
263 DisplayTable $view;
264
265 footing;
266
267 =pod
268
269 =head1 CONFIGURATION AND ENVIRONMENT
270
271 DEBUG: If set then $debug is set to this level.
272
273 VERBOSE: If set then $verbose is set to this level.
274
275 TRACE: If set then $trace is set to this level.
276
277 =head1 DEPENDENCIES
278
279 =head2 Perl Modules
280
281 L<CGI>
282
283 L<CGI::Carp|CGI::Carp>
284
285 L<FindBin>
286
287 L<Getopt::Long|Getopt::Long>
288
289 =head2 ClearSCM Perl Modules
290
291 =begin man 
292
293  ClearadmWeb
294  Clearcase
295  Clearcase::View
296  Clearcase::Views
297  Display
298  Utils
299
300 =end man
301
302 =begin html
303
304 <blockquote>
305 <a href="http://clearscm.com/php/cvs_man.php?file=clearadm/lib/ClearadmWeb.pm">ClearadmWeb</a><br>
306 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Clearcase.pm">Clearcase</a><br>
307 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Clearcase/View.pm">Clearcase::View</a><br>
308 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Clearcase/Views.pm">Clearcase::Views</a><br>
309 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Display.pm">Display</a><br>
310 <a href="http://clearscm.com/php/cvs_man.php?file=lib/Utils.pm">Utils</a><br>
311 </blockquote>
312
313 =end html
314
315 =head1 BUGS AND LIMITATIONS
316
317 There are no known bugs in this script
318
319 Please report problems to Andrew DeFaria <Andrew@ClearSCM.com>.
320
321 =head1 LICENSE AND COPYRIGHT
322
323 Copyright (c) 2010, ClearSCM, Inc. All rights reserved.
324
325 =cut