Diff for /loncom/interface/slotrequest.pm between versions 1.125.2.3.4.2 and 1.125.2.10.2.2

version 1.125.2.3.4.2, 2020/04/08 20:06:59 version 1.125.2.10.2.2, 2023/07/10 01:49:09
Line 56  sub fail { Line 56  sub fail {
 }  }
   
 sub start_page {  sub start_page {
     my ($r,$title,$brcrum,$js)=@_;      my ($r,$title,$brcrum,$bread_crumbs_component,$js,$mgr)=@_;
     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) {    
               $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')) {
         my %loaditems = (          my %loaditems = (
Line 71  sub start_page { Line 74  sub start_page {
             $args = { 'add_entries' => \%loaditems };              $args = { 'add_entries' => \%loaditems };
         }          }
     }      }
       unless (($env{'form.context'} eq 'usermanage') || (($mgr eq 'F') &&
               (($env{'form.command'} eq 'release') ||
                ($env{'form.command'} eq 'remove_registration')))) {
           if ($env{'form.symb'}) {
               my $symb=&unescape($env{'form.symb'});
               my ($mapurl,$id,$resurl) = &Apache::lonnet::decode_symb($symb);
               if ($resurl =~ /ext\.tool$/) {
                   my $target;
                   my ($marker,$exttool) = (split(m{/},$resurl))[3,4];
                   $marker=~s/\D//g;
                   if (($marker) && ($exttool) && ($env{'request.course.id'})) {
                       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                       my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                       my ($idx,$crstool,$is_tool,%toolhash,%toolsettings);
                       if ($resurl eq "adm/$cdom/$cnum/$marker/$exttool") {
                           my %toolsettings=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum);
                           $target = $toolsettings{'target'};
                       }
                   }
                   if ($target eq 'iframe') {
                       $args->{'only_body'} = 1;
                   }
               }
           }
       }
     $r->print(&Apache::loncommon::start_page($title,$js,$args));      $r->print(&Apache::loncommon::start_page($title,$js,$args));
 }  }
   
Line 368  sub get_consumed_uniqueperiods { Line 396  sub get_consumed_uniqueperiods {
         return 'error: Unable to determine current status';          return 'error: Unable to determine current status';
     }      }
     my @problems = $navmap->retrieveResources(undef,      my @problems = $navmap->retrieveResources(undef,
       sub { $_[0]->is_problem() },1,0);        sub { $_[0]->is_problem() || $_[0]->is_tool() },1,0);
     my %used_slots;      my %used_slots;
     foreach my $problem (@problems) {      foreach my $problem (@problems) {
  my $symb = $problem->symb();   my $symb = $problem->symb();
Line 866  sub release_reservation { Line 894  sub release_reservation {
         if ($passed_resource->is_map()) {          if ($passed_resource->is_map()) {
     my ($a_resource) =       my ($a_resource) = 
                 $navmap->retrieveResources($passed_resource,                   $navmap->retrieveResources($passed_resource, 
                                            sub {$_[0]->is_problem()},0,1);                      sub {$_[0]->is_problem() || $_[0]->is_tool() },0,1);
             $parm_symb = $a_resource->symb();              $parm_symb = $a_resource->symb();
         }          }
     } else {      } else {
Line 962  sub update_selectable { Line 990  sub update_selectable {
     if ($passed_resource->is_map()) {      if ($passed_resource->is_map()) {
         my ($a_resource) =          my ($a_resource) =
             $navmap->retrieveResources($passed_resource,              $navmap->retrieveResources($passed_resource,
                                        sub {$_[0]->is_problem()},0,1);                                         sub {$_[0]->is_problem() || $_[0]->is_tool() },0,1);
         $symb_for_parm = $a_resource->symb();          $symb_for_parm = $a_resource->symb();
     }      }
     # get parameter string, check for existence, rebuild string with the slot      # get parameter string, check for existence, rebuild string with the slot
Line 1038  sub delete_slot { Line 1066  sub delete_slot {
   
 sub return_link {  sub return_link {
     my ($r) = @_;      my ($r) = @_;
       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">'.   $r->print('<p><a href="/adm/slotrequest?command=manageresv" target="'.$target.'">'.
                   &mt('Return to reservations'));                      &mt('Return to reservations'));  
     } else {      } else {
         $r->print('<p><a href="/adm/flip?postdata=return:">'.          $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>');
     }      }
 }  }
   
   sub return_target {
       my ($target,$ltitarget,$deeplinktarget);
       if ($env{'request.lti.login'}) {
            $ltitarget = $env{'request.lti.target'};
       }
       if ($env{'request.deeplink.login'}) {
           $deeplinktarget = $env{'request.deeplink.target'};
       }
       if (($ltitarget eq 'iframe') || ($deeplinktarget eq '_self')) {
           $target = '_self';
       } else {
           $target = '_top';
       }
       return $target;
   }
   
 sub get_slot {  sub get_slot {
     my ($r,$symb,$conflictable_slot,$inhibit_return_link)=@_;      my ($r,$symb,$conflictable_slot,$inhibit_return_link)=@_;
   
Line 1284  sub show_choices { Line 1329  sub show_choices {
     if (!@{$available}) {      if (!@{$available}) {
         $output = '<span class="LC_info">'.&mt('No available times.').'</span>';          $output = '<span class="LC_info">'.&mt('No available times.').'</span>';
         if ($env{'form.command'} ne 'manageresv') {          if ($env{'form.command'} ne 'manageresv') {
             $output .= ' <a href="/adm/flip?postdata=return:">'.              my $target = &return_target();
               $output .= ' <a href="/adm/flip?postdata=return:" target="'.$target.'">'.
                        &mt('Return to last resource').'</a>';                         &mt('Return to last resource').'</a>';
         }          }
         $r->print($output);          $r->print($output);
Line 1538  sub show_table { Line 1584  sub show_table {
     }       } 
     my $available;      my $available;
     if ($mgr eq 'F') {      if ($mgr eq 'F') {
     # FIXME: This line should be deleted once Slots uses breadcrumbs  
     $r->print('<br />'.&Apache::loncommon::help_open_topic(  
         'Slot About', &mt('Help on slots')));  
   
  $r->print('<div>');   $r->print('<div>');
  $r->print('<form method="post" action="/adm/slotrequest">   $r->print('<form method="post" action="/adm/slotrequest">
 <input type="hidden" name="command" value="uploadstart" />  <input type="hidden" name="command" value="uploadstart" />
Line 1551  sub show_table { Line 1593  sub show_table {
  $r->print('<form method="post" action="/adm/helper/newslot.helper">   $r->print('<form method="post" action="/adm/helper/newslot.helper">
 <input type="submit" name="newslot" value="'.&mt('Create a New Slot').'" />  <input type="submit" name="newslot" value="'.&mt('Create a New Slot').'" />
 </form>');  </form>');
  $r->print(&Apache::loncommon::help_open_topic('Slot AddInterface'));   $r->print(&Apache::loncommon::help_open_topic('Slot About'));
  $r->print('</div>');   $r->print('</div>');
     }      }
   
Line 2029  sub manage_reservations { Line 2071  sub manage_reservations {
             my $symb = $resource->symb();              my $symb = $resource->symb();
             my $ressymb = $symb;              my $ressymb = $symb;
             $contents{$lastcontainer} ++;              $contents{$lastcontainer} ++;
             next if (!$resource->is_problem() && !$resource->is_sequence() &&               next if (!$resource->is_problem() && !$resource->is_tool() &&
                      !$resource->is_page());                        !$resource->is_sequence() && !$resource->is_page()); 
             $count ++;              $count ++;
             if (($resource->is_sequence()) || ($resource->is_page())) {              if (($resource->is_sequence()) || ($resource->is_page())) {
                 $lastcontainer = $count;                  $lastcontainer = $count;
                 $container{$lastcontainer} = $resource;                  $container{$lastcontainer} = $resource;
                 $container_title{$lastcontainer} = $resource->compTitle();                  $container_title{$lastcontainer} = $resource->compTitle();
             }              }
             if ($resource->is_problem()) {              if ($resource->is_problem() || $resource->is_tool()) {
                 my ($useslots) = $resource->slot_control();                  my ($useslots) = $resource->slot_control();
                 next if (($useslots eq '') || ($useslots =~ /^\s*no\s*$/i));                  next if (($useslots eq '') || ($useslots =~ /^\s*no\s*$/i));
                 my ($msg,$get_choices,$slotdescription);                  my ($msg,$get_choices,$slotdescription);
Line 2894  sub csv_upload_map { Line 2936  sub csv_upload_map {
     if (!$env{'form.datatoken'}) {      if (!$env{'form.datatoken'}) {
  $datatoken=&Apache::loncommon::upfile_store($r);   $datatoken=&Apache::loncommon::upfile_store($r);
     } else {      } else {
  $datatoken=$env{'form.datatoken'};          $datatoken=&Apache::loncommon::valid_datatoken($env{'form.datatoken'});
  &Apache::loncommon::load_tmp_file($r);          if ($datatoken ne '') {
               &Apache::loncommon::load_tmp_file($r,$datatoken);
           }
     }      }
     my @records=&Apache::loncommon::upfile_record_sep();      my @records=&Apache::loncommon::upfile_record_sep();
     if ($env{'form.noFirstLine'}) { shift(@records); }      if ($env{'form.noFirstLine'}) { shift(@records); }
Line 2945  sub csvupload_fields { Line 2989  sub csvupload_fields {
   
 sub csv_upload_assign {  sub csv_upload_assign {
     my ($r,$mgr)= @_;      my ($r,$mgr)= @_;
     &Apache::loncommon::load_tmp_file($r);      my $datatoken = &Apache::loncommon::valid_datatoken($env{'form.datatoken'});
       if ($datatoken ne '') {
           &Apache::loncommon::load_tmp_file($r,$datatoken);
       }
     my @slotdata = &Apache::loncommon::upfile_record_sep();      my @slotdata = &Apache::loncommon::upfile_record_sep();
     if ($env{'form.noFirstLine'}) { shift(@slotdata); }      if ($env{'form.noFirstLine'}) { shift(@slotdata); }
     my %fields=&Apache::grades::get_fields();      my %fields=&Apache::grades::get_fields();
Line 3048  sub csv_upload_assign { Line 3095  sub csv_upload_assign {
  'secret','symb') {   'secret','symb') {
     if ($entries{$fields{$key}}) {      if ($entries{$fields{$key}}) {
  $slot{$key}=$entries{$fields{$key}};   $slot{$key}=$entries{$fields{$key}};
                   if ($key eq 'maxspace') {
                       $slot{$key} =~ s/\D+//g;
                   }
     }      }
  }   }
         if ($entries{$fields{'allowedusers'}}) {          if ($entries{$fields{'allowedusers'}}) {
Line 3150  sub handler { Line 3200  sub handler {
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
   
     my %crumb_titles = &slot_command_titles();      my %crumb_titles = &slot_command_titles();
     my $brcrum;      my ($brcrum,$bread_crumbs_component);
   
     my $vgr=&Apache::lonnet::allowed('vgr',$env{'request.course.id'});      my $vgr=&Apache::lonnet::allowed('vgr',$env{'request.course.id'});
     my $mgr=&Apache::lonnet::allowed('mgr',$env{'request.course.id'});      my $mgr=&Apache::lonnet::allowed('mgr',$env{'request.course.id'});
Line 3186  sub handler { Line 3236  sub handler {
     } elsif ($vgr eq 'F') {      } elsif ($vgr eq 'F') {
         if ($env{'form.command'} =~ /^(slotlog|showslots|uploadstart|csvuploadmap|csvuploadassign|delete|release|remove_registration)$/) {          if ($env{'form.command'} =~ /^(slotlog|showslots|uploadstart|csvuploadmap|csvuploadassign|delete|release|remove_registration)$/) {
             $brcrum =[{href=>"/adm/slotrequest?command=showslots",              $brcrum =[{href=>"/adm/slotrequest?command=showslots",
                        text=>$crumb_titles{'showslots'}}];                         text=>$crumb_titles{'showslots'},
                          help=>'Slot_Use'}];
     $title = 'Managing Slots';      $title = 'Managing Slots';
               $bread_crumbs_component = 'Slots';
             unless ($env{'form.command'} eq 'showslots') {              unless ($env{'form.command'} eq 'showslots') {
                 if (ref($brcrum) eq 'ARRAY') {                  if (ref($brcrum) eq 'ARRAY') {
                     push(@{$brcrum},{href=>"/adm/slotrequest?command=$env{'form.command'}",text=>$crumb_titles{$env{'form.command'}}});                      push(@{$brcrum},{href=>"/adm/slotrequest?command=$env{'form.command'}",text=>$crumb_titles{$env{'form.command'}}});
Line 3215  sub handler { Line 3267  sub handler {
     if (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) {      if (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) {
         $js = &reservation_js(\%slots,$consumed_uniqueperiods,$available,$got_slots,$symb);          $js = &reservation_js(\%slots,$consumed_uniqueperiods,$available,$got_slots,$symb);
     }      }
     &start_page($r,$title,$brcrum,$js);      &start_page($r,$title,$brcrum,$bread_crumbs_component,$js,$mgr);
   
     if ($env{'form.command'} eq 'manageresv') {      if ($env{'form.command'} eq 'manageresv') {
         $allavailable = $available;          $allavailable = $available;

Removed from v.1.125.2.3.4.2  
changed lines
  Added in v.1.125.2.10.2.2


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