Diff for /loncom/interface/slotrequest.pm between versions 1.146 and 1.147

version 1.146, 2023/07/08 16:57:47 version 1.147, 2023/07/12 15:48:23
Line 50  sub fail { Line 50  sub fail {
     } else {      } else {
  $r->print('<p>'.&mt('Failed.').'</p>');   $r->print('<p>'.&mt('Failed.').'</p>');
     }      }
       
     &return_link($r);      &return_link($r);
     &end_page($r);      &end_page($r);
 }  }
Line 60  sub start_page { Line 60  sub start_page {
     my $args;      my $args;
     if (ref($brcrum) eq 'ARRAY') {      if (ref($brcrum) eq 'ARRAY') {
         $args = {bread_crumbs => $brcrum};          $args = {bread_crumbs => $brcrum};
         if ($bread_crumbs_component) {              if ($bread_crumbs_component) {
             $args->{bread_crumbs_component} = $bread_crumbs_component;                  $args->{bread_crumbs_component} = $bread_crumbs_component;
         }          }
     }      }
     if (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) {      if (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) {
Line 284  function uncheckSlotRadio() { Line 284  function uncheckSlotRadio() {
     }      }
     if (slotpicks.length) {      if (slotpicks.length) {
         for (var i=0; i<slotpicks.length; i++) {          for (var i=0; i<slotpicks.length; i++) {
             slotpicks[i].checked = false;                slotpicks[i].checked = false;
         }          }
     }      }
 }  }
Line 333  function toggleSlotMap(maprownum,rownum) Line 333  function toggleSlotMap(maprownum,rownum)
             for (var i=0; i<resrows.length; i++) {              for (var i=0; i<resrows.length; i++) {
                 resrows[i].style.display = rowdisplay;                  resrows[i].style.display = rowdisplay;
                 if (rowdisplay == 'table-row') {                  if (rowdisplay == 'table-row') {
                     mapbgidx ++;                              mapbgidx ++;
                     var bgcolnew = mapbgidx % 2;                      var bgcolnew = mapbgidx % 2;
                     var bgcolold = (mapbgidx+1) % 2;                      var bgcolold = (mapbgidx+1) % 2;
                     var k = i+parseInt(rownum)+1;                       var k = i+parseInt(rownum)+1; 
Line 368  function toggleSlotMap(maprownum,rownum) Line 368  function toggleSlotMap(maprownum,rownum)
                             if (table.rows[i].style.display != 'none') {                              if (table.rows[i].style.display != 'none') {
                                 idx ++;                                  idx ++;
                                 var bgcolnew = idx % 2;                                  var bgcolnew = idx % 2;
                                 var bgcolold = (idx+1) % 2;                                    var bgcolold = (idx+1) % 2;
                                 j = i+1;                                  j = i+1;
                                 if (document.getElementById('LC_slotmaprow_'+j)) {                                  if (document.getElementById('LC_slotmaprow_'+j)) {
                                     document.getElementById('LC_slotmaprow_'+j).className = rowclasses[bgcolnew];                                      document.getElementById('LC_slotmaprow_'+j).className = rowclasses[bgcolnew];
Line 412  sub get_course { Line 412  sub get_course {
   
 sub get_reservation_ids {  sub get_reservation_ids {
     my ($slot_name)=@_;      my ($slot_name)=@_;
       
     my ($cnum,$cdom)=&get_course();      my ($cnum,$cdom)=&get_course();
   
     my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,      my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,
Line 457  sub check_for_reservation { Line 457  sub check_for_reservation {
  || &Apache::lonnet::error($course)   || &Apache::lonnet::error($course)
  || &Apache::lonnet::error(%slots)) {   || &Apache::lonnet::error(%slots)) {
  return 'error: Unable to determine current status';   return 'error: Unable to determine current status';
     }          }
     my @got;      my @got;
     my @sorted_slots = &Apache::loncommon::sorted_slots(\@slots,\%slots,'starttime');      my @sorted_slots = &Apache::loncommon::sorted_slots(\@slots,\%slots,'starttime');
     foreach my $slot_name (@sorted_slots) {      foreach my $slot_name (@sorted_slots) {
Line 592  sub make_reservation { Line 592  sub make_reservation {
     foreach my $other_slot (split(/:/, $value)) {      foreach my $other_slot (split(/:/, $value)) {
  if ($other_slot eq $slot_name) {   if ($other_slot eq $slot_name) {
     my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom,      my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom,
        $cnum, "^$slot_name\0");            $cnum, "^$slot_name\0");
     if (&Apache::lonnet::error($value)) {       if (&Apache::lonnet::error($value)) { 
  return 'error: Unable to determine current status';   return 'error: Unable to determine current status';
     }      }
Line 618  sub make_reservation { Line 618  sub make_reservation {
  my $num=(split('\0',$id))[1];   my $num=(split('\0',$id))[1];
  if ($num > $last) { $last=$num; }   if ($num > $last) { $last=$num; }
     }      }
       
     my $wanted=$last+1;      my $wanted=$last+1;
     &Apache::lonxml::debug("wanted $wanted<br />");      &Apache::lonxml::debug("wanted $wanted<br />");
     if (scalar(@ids) >= $max) {      if (scalar(@ids) >= $max) {
  # full up   # full up
  return undef;   return undef;
     }      }
       
     my %reservation=('name'      => $env{'user.name'}.':'.$env{'user.domain'},      my %reservation=('name'      => $env{'user.name'}.':'.$env{'user.domain'},
      'timestamp' => time,       'timestamp' => time,
      'symb'      => $symb_for_db);       'symb'      => $symb_for_db);
Line 704  sub remove_registration { Line 704  sub remove_registration {
   
 sub remove_registration_user {  sub remove_registration_user {
     my ($r) = @_;      my ($r) = @_;
       
     my $slot_name = $env{'form.slotname'};      my $slot_name = $env{'form.slotname'};
   
     my $name = &Apache::loncommon::plainname($env{'form.uname'},      my $name = &Apache::loncommon::plainname($env{'form.uname'},
Line 714  sub remove_registration_user { Line 714  sub remove_registration_user {
   
     my $msg = &mt('Remove [_1] from slot [_2] for [_3]',      my $msg = &mt('Remove [_1] from slot [_2] for [_3]',
   $name,$slot_name,$title);    $name,$slot_name,$title);
       
     &remove_registration_confirmation($r,$msg,['uname','udom','slotname',      &remove_registration_confirmation($r,$msg,['uname','udom','slotname',
        'entry','symb','context']);         'entry','symb','context']);
 }  }
Line 750  END_CONFIRM Line 750  END_CONFIRM
   
 sub release_all_slot {  sub release_all_slot {
     my ($r,$mgr)=@_;      my ($r,$mgr)=@_;
       
     my $slot_name = $env{'form.slotname'};      my $slot_name = $env{'form.slotname'};
   
     my ($cnum,$cdom)=&get_course();      my ($cnum,$cdom)=&get_course();
   
     my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,      my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,
        "^$slot_name\0");         "^$slot_name\0");
       
     $r->print('<p>'.&mt('Releasing reservations').'</p>');      $r->print('<p>'.&mt('Releasing reservations').'</p>');
   
     foreach my $entry (sort { $consumed{$a}{'name'} cmp       foreach my $entry (sort { $consumed{$a}{'name'} cmp 
Line 801  sub release_slot { Line 801  sub release_slot {
     } else {      } else {
         $r->print("<p>$msg</p>");          $r->print("<p>$msg</p>");
     }      }
       
     if ($mgr eq 'F') {      if ($mgr eq 'F') {
  $r->print('<p><a href="/adm/slotrequest?command=showslots">'.   $r->print('<p><a href="/adm/slotrequest?command=showslots">'.
   &mt('Return to slot list').'</a></p>');    &mt('Return to slot list').'</a></p>');
Line 1166  sub return_link { Line 1166  sub return_link {
     my $target = &return_target();      my $target = &return_target();
     if (($env{'form.command'} eq 'manageresv') || ($env{'form.context'} eq 'usermanage')) {      if (($env{'form.command'} eq 'manageresv') || ($env{'form.context'} eq 'usermanage')) {
  $r->print('<p><a href="/adm/slotrequest?command=manageresv" target="'.$target.'">'.   $r->print('<p><a href="/adm/slotrequest?command=manageresv" target="'.$target.'">'.
                   &mt('Return to reservations').'</a></p>');                      &mt('Return to reservations').'</a></p>'); 
     } else {      } else {
         $r->print('<p><a href="/adm/flip?postdata=return:" target="'.$target.'">'.          $r->print('<p><a href="/adm/flip?postdata=return:" target="'.$target.'">'.
           &mt('Return to last resource').'</a></p>');            &mt('Return to last resource').'</a></p>');
Line 1340  sub allowed_slot { Line 1340  sub allowed_slot {
     if (($slot->{'endreserve'}) &&      if (($slot->{'endreserve'}) &&
         ($slot->{'endreserve'} < time)) {          ($slot->{'endreserve'} < time)) {
         return 0;          return 0;
     }          }
     &Apache::lonxml::debug("$slot_name reserve good");      &Apache::lonxml::debug("$slot_name reserve good");
   
     my $userallowed=0;      my $userallowed=0;
Line 1487  sub show_choices { Line 1487  sub show_choices {
                      );                       );
         foreach my $option (@options) {          foreach my $option (@options) {
             my $onclick = "toggleSlotDisplay(this.form,'$num');";              my $onclick = "toggleSlotDisplay(this.form,'$num');";
             if (($option eq 'show') && ($env{'form.command'} eq 'manageresv')) {                if (($option eq 'show') && ($env{'form.command'} eq 'manageresv')) {
                 $onclick .= "currSlotDisplay$num(this.form,'$num');";                   $onclick .= "currSlotDisplay$num(this.form,'$num');"; 
             }              }
             $output .= '<span class="LC_nobreak"><label>'.              $output .= '<span class="LC_nobreak"><label>'.
Line 1507  sub show_choices { Line 1507  sub show_choices {
 // <![CDATA[  // <![CDATA[
 function currSlotDisplay$num() {  function currSlotDisplay$num() {
     var currslot = new Array($numreserved);      var currslot = new Array($numreserved);
 $js      $js
     for (var j=0; j<$numreserved; j++) {      for (var j=0; j<$numreserved; j++) {
         if (document.getElementById('LC_slotrow_$num\_'+currslot[j])) {          if (document.getElementById('LC_slotrow_$num\_'+currslot[j])) {
             document.getElementById('LC_slotrow_$num\_'+currslot[j]).style.display = '';              document.getElementById('LC_slotrow_$num\_'+currslot[j]).style.display = '';
Line 1670  sub to_show { Line 1670  sub to_show {
  }   }
  return 0;   return 0;
     }      }
       
     return 1;      return 1;
 }  }
   
Line 1730  sub show_table { Line 1730  sub show_table {
         );          );
         return;          return;
     }      }
       
     my %Saveable_Parameters = ('show'              => 'array',      my %Saveable_Parameters = ('show'              => 'array',
        'when'              => 'scalar',         'when'              => 'scalar',
        'order'             => 'scalar',         'order'             => 'scalar',
Line 1820  sub show_table { Line 1820  sub show_table {
     my $name_filter = {'type'  => $name_filter_type,      my $name_filter = {'type'  => $name_filter_type,
        'value' => $env{'form.name_filter_value'},};         'value' => $env{'form.name_filter_value'},};
   
       
     #deleted slot filtering      #deleted slot filtering
     #default to hide if no value      #default to hide if no value
     $env{'form.deleted'} ||= 'hide';      $env{'form.deleted'} ||= 'hide';
Line 1900  sub show_table { Line 1900  sub show_table {
  return lc($a) cmp lc($b);   return lc($a) cmp lc($b);
     }      }
  } elsif ($env{'form.order'} eq 'uniqueperiod') {   } elsif ($env{'form.order'} eq 'uniqueperiod') {
       
     if ($slots{$a}->{'uniqueperiod'}[0]       if ($slots{$a}->{'uniqueperiod'}[0] 
  ne $slots{$b}->{'uniqueperiod'}[0]) {   ne $slots{$b}->{'uniqueperiod'}[0]) {
  return ($slots{$a}->{'uniqueperiod'}[0]   return ($slots{$a}->{'uniqueperiod'}[0]
Line 1934  sub show_table { Line 1934  sub show_table {
  }   }
  my $description=&get_description($slot,$slots{$slot});   my $description=&get_description($slot,$slots{$slot});
  my ($id_count,$ids);   my ($id_count,$ids);
       
  if (exists($show{'scheduled'}) || exists($show{'space'}) ) {   if (exists($show{'scheduled'}) || exists($show{'space'}) ) {
     my $re_str = "$slot\0";      my $re_str = "$slot\0";
     my @this_slot = grep(/^\Q$re_str\E/,keys(%consumed));      my @this_slot = grep(/^\Q$re_str\E/,keys(%consumed));
Line 2488  sub slot_chooser { Line 2488  sub slot_chooser {
                                         }                                          }
                                     }                                      }
                                 }                                  }
                                 next if ($exclude);                                     next if ($exclude);
                             }                              }
                         }                          }
                     }                      }
Line 3024  sub slot_change_messaging { Line 3024  sub slot_change_messaging {
 }  }
   
 sub upload_start {  sub upload_start {
     my ($r)=@_;          my ($r)=@_;
     $r->print(      $r->print(
         &Apache::grades::checkforfile_js()          &Apache::grades::checkforfile_js()
        .'<h2>'.&mt('Upload a file containing the slot definitions').'</h2>'         .'<h2>'.&mt('Upload a file containing the slot definitions').'</h2>'
Line 3477  sub handler { Line 3477  sub handler {
         if (ref($brcrum) eq 'ARRAY') {          if (ref($brcrum) eq 'ARRAY') {
             push(@{$brcrum},{href=>"/adm/slotrequest?command=showresv",text=>$title});              push(@{$brcrum},{href=>"/adm/slotrequest?command=showresv",text=>$title});
         }          }
     } elsif (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) {        } elsif (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) {
         if ($env{'form.command'} eq 'manageresv') {          if ($env{'form.command'} eq 'manageresv') {
             $title = 'Manage Reservations';              $title = 'Manage Reservations';
             $brcrum =[{href=>"/adm/slotrequest?command=manageresv",text=>$title}];              $brcrum =[{href=>"/adm/slotrequest?command=manageresv",text=>$title}];

Removed from v.1.146  
changed lines
  Added in v.1.147


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