<%doc> Closet interface <%args> $id => undef; $edit => undef; $bb_sort => undef; $cable_sort => undef; $pic_sort => undef; $user => $ui->get_current_user($r) <%flags> <%attr> title => 'Closet' section => 'Plant' <%init> my $DEBUG = 0; my $o = undef; my $editCloset = 0; my $editPictures = 0; my $editBackbones = 0; my $editHorizontal = 0; if ( defined $id && $id ne "NEW" ){ $o = Closet->retrieve($id); $m->comp('/generic/error.mhtml', error=>"Cannot retrieve Closet id $id") unless $o; } $editCloset = 1 if ($id eq "NEW" || $edit eq "closetinfo"); $editPictures = 1 if ($edit eq "closetpictures"); $editBackbones = 1 if ($edit eq "bbinfo"); $editHorizontal = 1 if ($edit eq "cableinfo"); my (@field_headers, @cell_data); # For /generic/attribute_table.mhtml calls my (@headers, @rows); # For /generic/data_table.mhtml calls. Aware there need not really be 4 variables. my $manager = $ui->get_permission_manager($r); <%perl> print "
", Dumper(%ARGS), "

" if $DEBUG; # code for inserting/updating # ----------------------------------------------------------------------------- if ( defined($ARGS{_action}) && $ARGS{_action} eq "ADD_PICTURE" && defined($ARGS{__picture}) && $ARGS{__picture} ne "" ) { eval { use Apache2::Upload; my $bindata; my $upload = $r->upload("__picture"); my $upload_fh = $upload->fh; my $size = $upload->slurp($bindata); ClosetPicture->insert({closet=>$id, filename=>$ARGS{__picture}, bindata=>$bindata, filesize=>$size}); }; if ( my $e = $@ ){ $m->comp('/generic/error.mhtml', error=>$e); } }elsif ( defined($ARGS{_action}) ) { my %update_info = (); print "ARGS is
", Dumper(%ARGS), "

" if $DEBUG; eval{ %update_info = $ui->form_to_db(%ARGS); }; if ( my $e = $@ ){ $m->comp('/generic/error.mhtml', error=>$e); } if ( $update_info{Closet}{id} ) { $id = (keys %{$update_info{Closet}{id}})[0]; $editCloset = 0; } # Do this to 'flush' the values associated with the object # before redisplaying $o = undef; if ( $id && $id ne "NEW" ){ $o = Closet->retrieve($id); } } # end insertion/update code # -----------------------------------------------------------------------------
Closet
% if ($editCloset) {    % } else {   % if ( $manager && $manager->can($user, 'access_admin_section', 'closet:new') ){ [new] % } % if ( $manager && $manager->can($user, 'edit', $o) ){ [edit] % } % if ( $manager && $manager->can($user, 'delete', $o) ){ [delete] % } % }
<%perl> (@field_headers, @cell_data) = (); {my @fields = ('name','room','dimensions','racks','outlets','shared_with','hvac_type', 'ground_buss','asbestos_tiles'); my @linkpages = ('', 'view.html', '', '', '', '', '', '', ''); $ui->add_to_fields(o=>$o, table=>"Closet", edit=>$editCloset, fields=>\@fields, field_headers=>\@field_headers, cell_data=>\@cell_data, linkpages=>\@linkpages,); } <& /generic/attribute_table.mhtml, field_headers=>\@field_headers, data=>\@cell_data &> <%perl> (@field_headers, @cell_data) = (); { my @fields = ('ru_avail','patch_panels','ot_blocks','ss_blocks','catv_taps','access_key_type', 'rack_type','pair_count','converted_patch_panels','work_needed'); $ui->add_to_fields(o=>$o, table=>"Closet", edit=>$editCloset, fields=>\@fields, field_headers=>\@field_headers, cell_data=>\@cell_data); } <& /generic/attribute_table.mhtml, field_headers=>\@field_headers, data=>\@cell_data &>
% my %comments = $ui->form_field(object=>$o, table=>"Closet", column=>"info", edit=>$editCloset, % htmlExtra=>"rows='3' cols='80'");
<% $comments{label} %>
<% $comments{value} %>
% if (defined($o)) {
% if (!$editPictures) { % } else { % }
Closet Pictures
% if ($editPictures) {    % } else { % if ( $manager && $manager->can($user, 'edit', $o) ){ [edit] % }else{   % } % }
<%perl> my @pictures; map { push (@pictures, $_) } $o->pictures; % if (scalar(@pictures)) { <%perl> (@headers, @rows) = (); push( @headers, 'File Name' ); push( @headers, 'Size' ); push( @headers, 'File Type' ); push( @headers, 'Comments' ); <%perl> my @sorted_pics; $pic_sort = "filename" if (!$pic_sort); @sorted_pics = sort { $a->$pic_sort cmp $b->$pic_sort } @pictures; <%perl> foreach my $pic (@sorted_pics) { my @row = (); <&| "/generic/HERE.mhtml" &> % if ( $editPictures ) { [del] % $ui->text_field(object=>$pic, table=>"ClosetPicture", column=>"filename", edit=>$editPictures);
% } else { <% $pic->filename %> % } <%perl>push( @row, $_ ); push( @row, $pic->filesize ); push( @row, $ui->form_field(object=>$pic, column=>"filetype", edit=>$editPictures, returnValOnly=>1) ); push( @row, $ui->form_field(object=>$pic, column=>"info", edit=>$editPictures, htmlExtra=>"rows='2' cols='40'", returnValOnly=>1) ); push( @rows, \@row ); } # foreach <& /generic/data_table.mhtml, field_headers=>\@headers, data=>\@rows &> %}
% if (!$editPictures) { % if ( $manager && $manager->can($user, 'access_admin_section', 'closet:add_picture') ){ Add New Picture:     % } % }
% } % if ($o && $o->room && $o->room->floor && $o->room->floor->site){
Device List
% if ( $manager && $manager->can($user, 'access_admin_section', 'closet:new_device') ){ [new] % }else{   % }
% my $site = $o->room->floor->site->id; % my $room = $o->room->id; % my @device_list = Device->search(site=>$site, room=>$room); <& /generic/sortresults.mhtml, object=>\@device_list &>
% } % if (defined($o)) {
<%perl> my @sites; if ($editBackbones) { @sites = Site->retrieve_all(); @sites = sort { $a->name cmp $b->name } @sites; } <%perl> my @bbones; map { push (@bbones, $_) } ($o->backbones_start, $o->backbones_end);
Backbone Cable
% if ($editBackbones) {    % } else { % if ( $manager && $manager->can($user, 'access_admin_section', 'closet:new_backbone') ){ [new] % }else{   % } % }
% if (scalar(@bbones)) {
<%perl> (@headers, @rows) = (); push( @headers, 'Name' ); push( @headers, 'Type' ); push( @headers, 'Start Closet' ); push( @headers, 'End Closet' ); push( @headers, 'Owner' ); <%perl> $bb_sort = "name" if (!defined($bb_sort) || $bb_sort eq ""); my @sorted_bbones; if ($bb_sort eq "name") { @sorted_bbones = sort { $a->name cmp $b->name } @bbones; } elsif ($bb_sort eq "start_closet") { @sorted_bbones = sort { $a->start_closet->name cmp $b->start_closet->name } @bbones; } elsif ($bb_sort eq "end_closet") { @sorted_bbones = sort { $a->end_closet->name cmp $b->end_closet->name } @bbones; } elsif ($bb_sort eq "owner") { @sorted_bbones = sort { $a->owner->name cmp $b->owner->name } @bbones; } else { @sorted_bbones = sort { $a->$bb_sort cmp $b->$bb_sort } @bbones; } <%perl> foreach my $bb (@sorted_bbones) { my @row = (); <&| "/generic/HERE.mhtml" &> % if ($editBackbones) { id . "__delete" %>">[del] % $ui->text_field(object=>$bb, table=>"BackboneCable", column=>"name", % edit=>$editBackbones); % } else { <% $bb->name %> % } <%perl> push( @row, $_ ); push( @row, $ui->form_field(object=>$bb, column=>"type", edit=>$editBackbones, returnValOnly=>1) ); <&| "/generic/HERE.mhtml" &> % if (!$editBackbones) { <% $bb->start_closet->get_label() %> % } else {   % $ui->select_lookup(object=>$bb, table=>"BackboneCable", column=>"start_closet", % lookup=>"Closet", where=>{site=>($bb ? $bb->start_closet->room->floor->site : "")}, % edit=>$editBackbones); % } <%perl> push( @row, $_ ); <&| "/generic/HERE.mhtml" &> % if (!$editBackbones) { <% $bb->end_closet->get_label() %> % } else {   % $ui->select_lookup(object=>$bb, table=>"BackboneCable", column=>"end_closet", % lookup=>"Closet", where=>{site=>($bb ? $bb->end_closet->room->floor->site : "")}, % edit=>$editBackbones); % } <%perl> push( @row, $_ ); push( @row, $ui->form_field(object=>$bb, column=>"owner", edit=>$editBackbones, returnValOnly=>1) ); push( @rows, \@row ); } #foreach my $bb (@sorted_bbones) <& /generic/data_table.mhtml, field_headers=>\@headers, data=>\@rows &>
% } #if scalar (@bbones)
<%perl> my @cables; map { push (@cables, $_) } $o->horizontalcables;
Horizontal Cable
% if ($editHorizontal) {    % } else { % if ( $manager && $manager->can($user, 'access_admin_section', 'closet:new_horizontal') ){ [new] % }else{   % } % }
% if (scalar(@cables)) {
<%perl> $cable_sort = "jackid" if (!defined($cable_sort) || $cable_sort eq ""); my @sorted_cables; if ($cable_sort eq "jackid") { @sorted_cables = sort { $a->jackid cmp $b->jackid } @cables; } elsif ($cable_sort eq "type") { @sorted_cables = sort { $a->type->name cmp $b->type->name } @cables; } elsif ($cable_sort eq "room") { @sorted_cables = sort { $a->room->name cmp $b->room->name } @cables; } else { @sorted_cables = sort { $a->$cable_sort cmp $b->$cable_sort } @cables; } <%perl> (@headers, @rows) = (); push( @headers, 'Jack ID' ); push( @headers, 'Type' ); push( @headers, 'Room' ); foreach my $cable (@sorted_cables) { my @row = (); <&| "/generic/HERE.mhtml" &> % if ($editHorizontal) { id . "__delete" %>">[del] % $ui->text_field(object=>$cable, table=>"HorizontalCable", column=>"jackid", % edit=>$editHorizontal); % } else { <% $cable->jackid %> % } <%perl> push( @row, $_ ); push( @row, $ui->form_field(object=>$cable, column=>"type", edit=>$editHorizontal, returnValOnly=>1) ); push( @row, '' . $cable->room->name . '' ); push( @rows, \@row ); } # foreach my $cable (@sorted_cables) <& /generic/data_table.mhtml, field_headers=>\@headers, data=>\@rows &>
% } # end if scalar cables
% }