Diff for /loncom/interface/slotrequest.pm between versions 1.48.2.3 and 1.49

version 1.48.2.3, 2006/03/30 05:13:38 version 1.49, 2006/03/07 16:15:48
Line 315  sub make_reservation { Line 315  sub make_reservation {
   
 sub remove_registration {  sub remove_registration {
     my ($r) = @_;      my ($r) = @_;
     if ($env{'form.entry'} ne 'remove all') {  
  return &remove_registration_user($r);  
     }  
     my $slot_name = $env{'form.slotname'};  
     my %slot=&Apache::lonnet::get_slot($slot_name);  
   
     my ($cnum,$cdom)=&get_course();  
     my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,  
        "^$slot_name\0");  
     if (&network_error(%consumed)) {  
  $r->print("<p>".&mt('A network error has occured.').'</p>');  
  return;  
     }  
     if (!%consumed) {  
  $r->print("<p>".&mt('Slot <tt>[_1]</tt> has no reservations.',  
     $slot_name)."</p>");  
  return;  
     }  
   
     my @names = map { $consumed{$_}{'name'} } (sort(keys(%consumed)));  
     my $names = join(' ',@names);  
   
     my $msg = &mt('Remove all of [_1] from slot [_2]?',$names,$slot_name);  
     &remove_registration_confirmation($r,$msg,['entry','slotname']);  
 }  
   
 sub remove_registration_user {  
     my ($r) = @_;  
       
     my $slot_name = $env{'form.slotname'};  
   
     my $name = &Apache::loncommon::plainname($env{'form.uname'},      my $name = &Apache::loncommon::plainname($env{'form.uname'},
      $env{'form.udom'});       $env{'form.udom'});
   
     my $title = &Apache::lonnet::gettitle($env{'form.symb'});      my $title = &Apache::lonnet::gettitle($env{'form.symb'});
   
     my $msg = &mt('Remove [_1] from slot [_2] for [_3]',  
   $name,$slot_name,$title);  
       
     &remove_registration_confirmation($r,$msg,['uname','udom','slotname',  
        'entry','symb']);  
 }  
   
 sub remove_registration_confirmation {  
     my ($r,$msg,$inputs) =@_;  
   
     my $hidden_input;      my $hidden_input;
     foreach my $parm (@{$inputs}) {      foreach my $parm ('uname','udom','slotname','entry','symb') {
  $hidden_input .=   $hidden_input .=
     '<input type="hidden" name="'.$parm.'" value="'      '<input type="hidden" name="'.$parm.'" value="'
     .&HTML::Entities::encode($env{'form.'.$parm},'"<>&\'').'" />'."\n";      .&HTML::Entities::encode($env{'form.'.$parm},'"<>&\'').'" />'."\n";
     }      }
     my %lt = &Apache::lonlocal::texthash('yes' => 'Yes',  
  'no'  => 'No',);  
     $r->print(<<"END_CONFIRM");      $r->print(<<"END_CONFIRM");
 <p> $msg </p>  <p> Remove $name from slot $env{'form.slotname'} for $title</p>
 <form action="/adm/slotrequest" method="POST">  <form action="/adm/slotrequest" method="POST">
     <input type="hidden" name="command" value="release" />      <input type="hidden" name="command" value="release" />
     <input type="hidden" name="button" value="yes" />  
     $hidden_input      $hidden_input
     <input type="submit" value="$lt{'yes'}" />      <input type="submit" name="Yes" value="yes" />
 </form>  </form>
 <form action="/adm/slotrequest" method="POST">  <form action="/adm/slotrequest" method="POST">
     <input type="hidden" name="command" value="showslots" />      <input type="hidden" name="command" value="showslots" />
     <input type="submit" value="$lt{'no'}" />      <input type="submit" name="No" value="no" />
 </form>  </form>
 END_CONFIRM  END_CONFIRM
   
 }  }
   
 sub release_all_slot {  
     my ($r,$mgr)=@_;  
       
     my $slot_name = $env{'form.slotname'};  
   
     my ($cnum,$cdom)=&get_course();  
   
     my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,  
        "^$slot_name\0");  
       
     $r->print('<p>'.&mt('Releasing reservations').'</p>');  
   
     foreach my $entry (sort { $consumed{$a}{'name'} cmp   
   $consumed{$b}{'name'} } (keys(%consumed))) {  
  my ($uname,$udom) = split('@',$consumed{$entry}{'name'});  
  my ($result,$msg) =  
     &release_reservation($slot_name,$uname,$udom,  
  $consumed{$entry}{'symb'},$mgr);  
  $r->print("<p>$msg</p>");  
  $r->rflush();  
     }  
     $r->print('<p><a href="/adm/slotrequest?command=showslots">'.  
       &mt('Return to slot list').'</a></p>');  
     &return_link($r);  
 }  
   
 sub release_slot {  sub release_slot {
     my ($r,$symb,$slot_name,$inhibit_return_link,$mgr)=@_;      my ($r,$symb,$slot_name,$inhibit_return_link,$mgr)=@_;
   
     if ($slot_name eq '') { $slot_name=$env{'form.slotname'}; }      if ($slot_name eq '') { $slot_name=$env{'form.slotname'}; }
       my ($cnum,$cdom)=&get_course();
   
     my ($uname,$udom) = ($env{'user.name'}, $env{'user.domain'});      my ($uname,$udom) = ($env{'user.name'}, $env{'user.domain'});
     if ($mgr eq 'F'       if ($mgr eq 'F' 
Line 426  sub release_slot { Line 357  sub release_slot {
  && defined($env{'form.symb'})) {   && defined($env{'form.symb'})) {
  $symb = $env{'form.symb'};   $symb = $env{'form.symb'};
     }      }
   
     my ($result,$msg) =  
  &release_reservation($slot_name,$uname,$udom,$symb,$mgr);  
     $r->print("<p>$msg</p>");  
       
     if ($mgr eq 'F') {  
  $r->print('<p><a href="/adm/slotrequest?command=showslots">'.  
   &mt('Return to slot list').'</a></p>');  
     }  
   
     if (!$inhibit_return_link) { &return_link($r);  }  
     return $result;  
 }  
   
 sub release_reservation {  
     my ($slot_name,$uname,$udom,$symb,$mgr) = @_;  
     my %slot=&Apache::lonnet::get_slot($slot_name);      my %slot=&Apache::lonnet::get_slot($slot_name);
     my $description=&get_description($slot_name,\%slot);      my $description=&get_description($env{'form.slotname'},\%slot);
   
     if ($mgr ne 'F') {      if ($mgr ne 'F') {
  if ($slot{'starttime'} < time) {   if ($slot{'starttime'} < time) {
     return (0,&mt('Not allowed to release Reservation: [_1], as it has already ended.',$description));      $r->print("<p>Not allowed to release Reservation: $description, as it has already ended.  </p>");
       &return_link($r);
       return 0;
  }   }
     }      }
     # get parameter string, check for existance, rebuild string with the slot      # get parameter string, check for existance, rebuild string with the slot
Line 461  sub release_reservation { Line 378  sub release_reservation {
     }      }
     my $new_param = join(':',@new_slots);      my $new_param = join(':',@new_slots);
   
     my ($cnum,$cdom)=&get_course();  
   
     # get slot reservations, check if user has one, if so remove reservation      # get slot reservations, check if user has one, if so remove reservation
     my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,      my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,
        "^$slot_name\0");         "^$slot_name\0");
Line 478  sub release_reservation { Line 393  sub release_reservation {
       '0_availablestudent',        '0_availablestudent',
       1, $new_param, 'string',        1, $new_param, 'string',
       $uname,$udom);        $uname,$udom);
       $r->print("<p>Released Reservation: $description</p>");
     my $msg;  
     if ($mgr eq 'F') {      if ($mgr eq 'F') {
  $msg = &mt('Released Reservation for user: [_1]',"$uname:$udom");   $r->print('<p><a href="/adm/slotrequest?command=showslots">'.
     } else {    &mt('Return to slot list').'</a></p>');
  $msg = &mt('Released Reservation: [_1]',$description);  
     }      }
     return (1,$msg);      if (!$inhibit_return_link) { &return_link($r);  }
       return 1;
 }  }
   
 sub delete_slot {  sub delete_slot {
Line 615  STUFF Line 529  STUFF
   
 sub allowed_slot {  sub allowed_slot {
     my ($slot_name,$slot,$symb,$slots,$consumed_uniqueperiods)=@_;      my ($slot_name,$slot,$symb,$slots,$consumed_uniqueperiods)=@_;
   
     #already started      #already started
     if ($slot->{'starttime'} < time) {      if ($slot->{'starttime'} < time) {
  # all open slot to be schedulable   # all open slot to be schedulable
  #return 0;   #return 0;
     }      }
     &Apache::lonxml::debug("$slot_name starttime good");      &Apache::lonxml::debug("$slot_name starttime good");
   
     #already ended      #already ended
     if ($slot->{'endtime'} < time) {      if ($slot->{'endtime'} < time) {
  return 0;   return 0;
     }      }
     &Apache::lonxml::debug("$slot_name endtime good");      &Apache::lonxml::debug("$slot_name endtime good");
   
     # not allowed to pick this one      # not allowed to pick this one
     if (defined($slot->{'type'})      if (defined($slot->{'type'})
  && $slot->{'type'} ne 'schedulable_student') {   && $slot->{'type'} ne 'schedulable_student') {
  return 0;   return 0;
     }      }
     &Apache::lonxml::debug("$slot_name type good");      &Apache::lonxml::debug("$slot_name type good");
     # not allowed for this resource  
     if (defined($slot->{'symb'})      # its for a different set of users
  && $slot->{'symb'} ne $symb) {      if (defined($slot->{'allowedsection'})) {
   
  return 0;   return 0;
     }      }
     # reserve time not yet started      &Apache::lonxml::debug("$slot_name type good");
     if ($slot->{'startreserve'} > time) {  
       # its for a different set of users
       if (defined($slot->{'allowedusers'})) {
   
  return 0;   return 0;
     }      }
     &Apache::lonxml::debug("$slot_name reserve good");      &Apache::lonxml::debug("$slot_name type good");
   
       # not allowed for this resource
       if (defined($slot->{'symb'})
    && $slot->{'symb'} ne $symb) {
    return 0;
       }
     my $conflict = &check_for_conflict($symb,$slot_name,$slot,$slots,      my $conflict = &check_for_conflict($symb,$slot_name,$slot,$slots,
        $consumed_uniqueperiods);         $consumed_uniqueperiods);
     if ($conflict) {      if ($conflict) {
Line 730  STUFF Line 656  STUFF
 }  }
   
 sub to_show {  sub to_show {
     my ($slotname,$slot,$when,$deleted,$name) = @_;      my ($slot,$when,$deleted) = @_;
     my $time=time;      my $time=time;
     my $week=60*60*24*7;      my $week=60*60*24*7;
   
     if ($deleted eq 'hide' && $slot->{'type'} eq 'deleted') {      if ($deleted eq 'hide' && $slot->{'type'} eq 'deleted') {
  return 0;   return 0;
     }      }
   
     if ($name && $name->{'value'} =~ /\w/) {  
  if ($name->{'type'} eq 'substring') {  
     if ($slotname !~ /\Q$name->{'value'}\E/) {  
  return 0;  
     }  
  }  
  if ($name->{'type'} eq 'exact') {  
     if ($slotname eq $name->{'value'}) {  
  return 0;  
     }  
  }  
     }  
   
     if ($when eq 'any') {      if ($when eq 'any') {
  return 1;   return 1;
     } elsif ($when eq 'now') {      } elsif ($when eq 'now') {
Line 795  sub to_show { Line 706  sub to_show {
 sub remove_link {  sub remove_link {
     my ($slotname,$entry,$uname,$udom,$symb) = @_;      my ($slotname,$entry,$uname,$udom,$symb) = @_;
   
     my $remove = &mt('Remove');  
   
     if ($entry eq 'remove all') {  
  $remove = &mt('Remove All');  
  undef($uname);  
  undef($udom);  
     }  
   
     $slotname  = &Apache::lonnet::escape($slotname);      $slotname  = &Apache::lonnet::escape($slotname);
     $entry     = &Apache::lonnet::escape($entry);      $entry     = &Apache::lonnet::escape($entry);
     $uname     = &Apache::lonnet::escape($uname);      $uname     = &Apache::lonnet::escape($uname);
     $udom      = &Apache::lonnet::escape($udom);      $udom      = &Apache::lonnet::escape($udom);
     $symb      = &Apache::lonnet::escape($symb);      $symb      = &Apache::lonnet::escape($symb);
   
       my $remove= &mt('Remove');
   
     return <<"END_LINK";      return <<"END_LINK";
  <a href="/adm/slotrequest?command=remove_registration&slotname=$slotname&entry=$entry&uname=$uname&udom=$udom&symb=$symb"   <a href="/adm/slotrequest?command=remove_registration&slotname=$slotname&entry=$entry&uname=$uname&udom=$udom&symb=$symb"
    >($remove)</a>     >($remove)</a>
Line 837  sub show_table { Line 742  sub show_table {
  $r->print('</div>');   $r->print('</div>');
     }      }
           
     my %Saveable_Parameters = ('show'              => 'array',      my %Saveable_Parameters = ('show'    => 'array',
        'when'              => 'scalar',         'when'    => 'scalar',
        'order'             => 'scalar',         'order'   => 'scalar',
        'deleted'           => 'scalar',         'deleted' => 'scalar',
        'name_filter_type'  => 'scalar',  
        'name_filter_value' => 'scalar',  
        );         );
     &Apache::loncommon::store_course_settings('slotrequest',      &Apache::loncommon::store_course_settings('slotrequest',
       \%Saveable_Parameters);        \%Saveable_Parameters);
Line 852  sub show_table { Line 755  sub show_table {
     my ($classlist,$section,$fullname)=&Apache::grades::getclasslist('all');      my ($classlist,$section,$fullname)=&Apache::grades::getclasslist('all');
     &Apache::grades::reset_perm();      &Apache::grades::reset_perm();
   
     # what to display filtering  
     my %show_fields=&Apache::lonlocal::texthash(      my %show_fields=&Apache::lonlocal::texthash(
      'name'         => 'Slot Name',       'name'            => 'Slot Name',
      'description'  => 'Description',       'description'     => 'Description',
      'type'         => 'Type',       'type'            => 'Type',
      'starttime'    => 'Start time',       'starttime'       => 'Start time',
      'endtime'      => 'End Time',       'endtime'         => 'End Time',
              'startreserve' => 'Time students can start reserving',               'startreserve'    => 'Time students can start reserving',
      'secret'       => 'Secret Word',       'secret'          => 'Secret Word',
      'maxspace'     => 'Maximum # of students',       'maxspace'        => 'Maximum # of students',
      'ip'           => 'IP or DNS restrictions',       'ip'              => 'IP or DNS restrictions',
      'symb'         => 'Resource slot is restricted to.',       'symb'            => 'Resource slot is restricted to.',
      'uniqueperiod' => 'Period of time slot is unique',       'allowedsections' => 'Sections slot is restricted to.',
      'scheduled'    => 'Scheduled Students',       'allowedusers'    => 'Users slot is restricted to.',
      'proctor'      => 'List of proctors');       'uniqueperiod'    => 'Period of time slot is unique',
        'scheduled'       => 'Scheduled Students',
        'proctor'         => 'List of proctors');
     my @show_order=('name','description','type','starttime','endtime',      my @show_order=('name','description','type','starttime','endtime',
        'startreserve','secret','maxspace','ip','symb',      'startreserve','secret','maxspace','ip','symb',
        'uniqueperiod','scheduled','proctor');      'allowedsections','allowedusers','uniqueperiod',
       'scheduled','proctor');
     my @show =       my @show = 
  (exists($env{'form.show'})) ? &Apache::loncommon::get_env_multiple('form.show')   (exists($env{'form.show'})) ? &Apache::loncommon::get_env_multiple('form.show')
                             : keys(%show_fields);                              : keys(%show_fields);
     my %show =  map { $_ => 1 } (@show);      my %show =  map { $_ => 1 } (@show);
   
     #when filtering setup  
     my %when_fields=&Apache::lonlocal::texthash(      my %when_fields=&Apache::lonlocal::texthash(
      'now'      => 'Open now',       'now'      => 'Open now',
      'nextweek' => 'Open within the next week',       'nextweek' => 'Open within the next week',
Line 889  sub show_table { Line 793  sub show_table {
     my $when = (exists($env{'form.when'})) ? $env{'form.when'}      my $when = (exists($env{'form.when'})) ? $env{'form.when'}
                                             : 'now';                                              : 'now';
   
     #display of students setup  
     my %stu_display_fields=      my %stu_display_fields=
  &Apache::lonlocal::texthash('username' => 'User name',   &Apache::lonlocal::texthash('username' => 'User name',
     'fullname' => 'Full name',      'fullname' => 'Full name',
Line 900  sub show_table { Line 803  sub show_table {
                                   : keys(%stu_display_fields);                                    : keys(%stu_display_fields);
     my %stu_display =  map { $_ => 1 } (@stu_display);      my %stu_display =  map { $_ => 1 } (@stu_display);
   
     #name filtering setup  
     my %name_filter_type_fields=  
  &Apache::lonlocal::texthash('substring' => 'Substring',  
     'exact'     => 'Exact',  
     #'reg'       => 'Regular Expression',  
     );  
     my @name_filter_type_order=('substring','exact');  
   
     $name_filter_type_fields{'select_form_order'} = \@name_filter_type_order;  
     my $name_filter_type =   
  (exists($env{'form.name_filter_type'})) ? $env{'form.name_filter_type'}  
                                                 : 'substring';  
     my $name_filter = {'type'  => $name_filter_type,  
        'value' => $env{'form.name_filter_value'},};  
   
     #deleted slot filtering  
     my $hide_radio =       my $hide_radio = 
  &Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'hide');   &Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'hide');
     my $show_radio =       my $show_radio = 
Line 928  sub show_table { Line 815  sub show_table {
       <tr><th>'.&mt('Show').'</th>        <tr><th>'.&mt('Show').'</th>
           <th>'.&mt('Student Display').'</th>            <th>'.&mt('Student Display').'</th>
           <th>'.&mt('Open').'</th>            <th>'.&mt('Open').'</th>
           <th>'.&mt('Slot Name Filter').'</th>  
           <th>'.&mt('Options').'</th>            <th>'.&mt('Options').'</th>
       </tr>        </tr>
       <tr><td>'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order).        <tr><td>'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order).
Line 940  sub show_table { Line 826  sub show_table {
            </td>             </td>
            <td>'.&Apache::loncommon::select_form($when,'when',%when_fields).             <td>'.&Apache::loncommon::select_form($when,'when',%when_fields).
           '</td>            '</td>
            <td>'.&Apache::loncommon::select_form($name_filter_type,  
  'name_filter_type',  
  %name_filter_type_fields).  
       '<br />'.  
       &Apache::lonhtmlcommon::textbox('name_filter_value',  
       $env{'form.name_filter_value'},  
       15).  
           '</td>  
            <td>             <td>
             <table>              <table>
               <tr>                <tr>
Line 975  sub show_table { Line 853  sub show_table {
   
     my %name_cache;      my %name_cache;
     my $slotsort = sub {      my $slotsort = sub {
  if ($env{'form.order'}=~/^(type|description|endtime|startreserve|maxspace|ip|symb)$/) {   if ($env{'form.order'}=~/^(type|description|endtime|startreserve|maxspace|ip|symb|allowedsections|allowedusers)$/) {
     if (lc($slots{$a}->{$env{'form.order'}})      if (lc($slots{$a}->{$env{'form.order'}})
  ne lc($slots{$b}->{$env{'form.order'}})) {   ne lc($slots{$b}->{$env{'form.order'}})) {
  return (lc($slots{$a}->{$env{'form.order'}})    return (lc($slots{$a}->{$env{'form.order'}}) 
Line 1001  sub show_table { Line 879  sub show_table {
  return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'};   return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'};
     };      };
     foreach my $slot (sort $slotsort (keys(%slots)))  {      foreach my $slot (sort $slotsort (keys(%slots)))  {
  if (!&to_show($slot,$slots{$slot},$when,   if (!&to_show($slots{$slot},$when,$env{'form.deleted'})) { next; }
       $env{'form.deleted'},$name_filter)) { next; }  
  if (defined($slots{$slot}->{'type'})   if (defined($slots{$slot}->{'type'})
     && $slots{$slot}->{'type'} ne 'schedulable_student') {      && $slots{$slot}->{'type'} ne 'schedulable_student') {
     #next;      #next;
Line 1014  sub show_table { Line 891  sub show_table {
        "^$slot\0");         "^$slot\0");
     my ($tmp)=%consumed;      my ($tmp)=%consumed;
     if ($tmp !~ /^error: /) {      if ($tmp !~ /^error: /) {
  foreach my $entry (sort { $consumed{$a}{name} cmp    foreach my $entry (sort(keys(%consumed))) {
       $consumed{$b}{name} }  
    (keys(%consumed))) {  
     my (undef,$id)=split("\0",$entry);      my (undef,$id)=split("\0",$entry);
     my ($uname,$udom) = split('@',$consumed{$entry}{'name'});      my ($uname,$udom) = split('@',$consumed{$entry}{'name'});
     $ids.= '<nobr>';      $ids.= '<nobr>';
Line 1057  sub show_table { Line 932  sub show_table {
     $title='<a href="'.$res.'?symb='.$slots{$slot}{'symb'}.'">'.$title.'</a>';      $title='<a href="'.$res.'?symb='.$slots{$slot}{'symb'}.'">'.$title.'</a>';
  }   }
   
    my $allowedsections;
    if (exists($show{'allowedsections'})) {
       $allowedsections = 
    join(', ',sort(split(/\s*,\s*/,
        $slots{$slot}->{'allowedsections'})));
    }
   
    my @allowedusers;
    if (exists($show{'allowedusers'})) {
       @allowedusers= map {
    my ($uname,$udom)=split(/:/,$_);
    my $fullname=$name_cache{$_};
    if (!defined($fullname)) {
       $fullname = &Apache::loncommon::plainname($uname,$udom);
       $fullname =~s/\s/&nbsp;/g;
       $name_cache{$_} = $fullname;
    }
    &Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);
       } (sort(split(/\s*,\s*/,$slots{$slot}->{'allowedusers'})));
    }
    my $allowedusers=join(', ',@allowedusers);
   
  my @proctors;   my @proctors;
  my $rowspan=1;   my $rowspan=1;
  my $colspan=1;   my $colspan=1;
Line 1066  sub show_table { Line 963  sub show_table {
  my ($uname,$udom)=split(/@/,$_);   my ($uname,$udom)=split(/@/,$_);
  my $fullname=$name_cache{$_};   my $fullname=$name_cache{$_};
  if (!defined($fullname)) {   if (!defined($fullname)) {
     &Apache::lonnet::logthis("Gettign $uname $udom");  
     $fullname = &Apache::loncommon::plainname($uname,$udom);      $fullname = &Apache::loncommon::plainname($uname,$udom);
     $fullname =~s/\s/&nbsp;/g;      $fullname =~s/\s/&nbsp;/g;
     $name_cache{$_} = $fullname;      $name_cache{$_} = $fullname;
Line 1083  EDITLINK Line 979  EDITLINK
  my $delete=(<<"DELETELINK");   my $delete=(<<"DELETELINK");
 <a href="/adm/slotrequest?command=delete&slotname=$slot">Delete</a>  <a href="/adm/slotrequest?command=delete&slotname=$slot">Delete</a>
 DELETELINK  DELETELINK
   
         my $remove_all=&remove_link($slot,'remove all').'<br />';  
   
         if ($ids ne '') { undef($delete); }          if ($ids ne '') { undef($delete); }
  if ($slots{$slot}{'type'} ne 'schedulable_student'   
     || $ids eq '') {   
     undef($remove_all);  
  }  
   
         $r->print("<tr>\n<td rowspan=\"$rowspan\">$edit $delete</td>\n");          $r->print("<tr>\n<td rowspan=\"$rowspan\">$edit $delete</td>\n");
  if (exists($show{'name'})) {   if (exists($show{'name'})) {
Line 1123  DELETELINK Line 1012  DELETELINK
  if (exists($show{'symb'})) {   if (exists($show{'symb'})) {
     $colspan++;$r->print("<td>$title</td>\n");      $colspan++;$r->print("<td>$title</td>\n");
  }   }
  if (exists($show{'uniqueperiod'})) {   if (exists($show{'allowedsections'})) {
     $colspan++;$r->print("<td>$unique</td>\n");      $colspan++;$r->print("<td>$allowedsections</td>\n");
    }
    if (exists($show{'allowedusers'})) {
       $colspan++;$r->print("<td>$allowedusers</td>\n");
  }   }
  if (exists($show{'scheduled'})) {   if (exists($show{'scheduled'})) {
     $colspan++;$r->print("<td>$remove_all $ids</td>\n</tr>\n");      $colspan++;$r->print("<td>$ids</td>\n</tr>\n");
  }   }
  if (exists($show{'proctor'})) {   if (exists($show{'proctor'})) {
     $r->print(<<STUFF);      $r->print(<<STUFF);
Line 1309  sub csvupload_fields { Line 1201  sub csvupload_fields {
     ['maxspace','Maximum number of reservations'],      ['maxspace','Maximum number of reservations'],
     ['symb','Resource Restriction'],      ['symb','Resource Restriction'],
     ['uniqueperiod','Date range of slot exclusion'],      ['uniqueperiod','Date range of slot exclusion'],
     ['secret','Secret word proctor uses to validate']);      ['secret','Secret word proctor uses to validate'],
       ['allowedsections','Sections slot is restricted to'],
       ['allowedusers','Users slot is restricted to'],
       );
 }  }
   
 sub csv_upload_assign {  sub csv_upload_assign {
Line 1411  sub handler { Line 1306  sub handler {
     } elsif ($env{'form.command'} eq 'remove_registration' && $mgr eq 'F') {      } elsif ($env{'form.command'} eq 'remove_registration' && $mgr eq 'F') {
  &remove_registration($r);   &remove_registration($r);
     } elsif ($env{'form.command'} eq 'release' && $mgr eq 'F') {      } elsif ($env{'form.command'} eq 'release' && $mgr eq 'F') {
  if ($env{'form.entry'} eq 'remove all') {   &release_slot($r,undef,undef,undef,$mgr);
     &release_all_slot($r,$mgr);  
  } else {  
     &release_slot($r,undef,undef,undef,$mgr);  
  }  
     } elsif ($env{'form.command'} eq 'delete' && $mgr eq 'F') {      } elsif ($env{'form.command'} eq 'delete' && $mgr eq 'F') {
  &delete_slot($r);   &delete_slot($r);
     } elsif ($env{'form.command'} eq 'uploadstart' && $mgr eq 'F') {      } elsif ($env{'form.command'} eq 'uploadstart' && $mgr eq 'F') {

Removed from v.1.48.2.3  
changed lines
  Added in v.1.49


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>