Diff for /loncom/interface/lonrequestcourse.pm between versions 1.20 and 1.24

version 1.20, 2009/08/21 13:18:46 version 1.24, 2009/08/23 03:51:53
Line 363  sub form_elements { Line 363  sub form_elements {
             for (my $i=0; $i<$env{'form.sectotal'}; $i++) {              for (my $i=0; $i<$env{'form.sectotal'}; $i++) {
                 $extras{'sec_'.$i} = 'checkbox',                  $extras{'sec_'.$i} = 'checkbox',
                 $extras{'secnum_'.$i} = 'text',                  $extras{'secnum_'.$i} = 'text',
                 $extras{'loncapasec_'.$i} = 'checkbox',                  $extras{'loncapasec_'.$i} = 'text',
             }              }
         }          }
         my $crosslisttotal = $env{'form.crosslisttotal'};          my $crosslisttotal = $env{'form.crosslisttotal'};
         if ($env{'form.addcrosslist'}) {          if ($env{'form.addcrosslist'}) {
             $crosslisttotal ++;              $crosslisttotal ++;
         }          }
         if (!defined($crosslisttotal)) {          if (!$crosslisttotal) {
             $crosslisttotal = 1;              $crosslisttotal = 1;
         }          }
         if ($crosslisttotal > 0) {          for (my $i=0; $i<$env{'form.crosslisttotal'}; $i++) {
             for (my $i=0; $i<$env{'form.crosslisttotal'}; $i++) {              if ($numtitles) {
                 if ($numtitles) {                  $extras{'crosslist_'.$i.'_'.$lastitem} = 'text';
                     $extras{'crosslist_'.$i.'_'.$lastitem} = 'text';              }
                 }              if (@codetitles > 0) {
                 if (@codetitles > 0) {                  foreach my $item (@codetitles) {
                     foreach my $item (@codetitles) {                      $extras{'crosslist_'.$i.'_'.$item} = 'selectbox';
                         $extras{'crosslist_'.$i.'_'.$item} = 'selectbox';  
                     }  
                 }                  }
                 $extras{'crosslist_'.$i} = 'checkbox';  
                 $extras{'crosslist_'.$i.'_instsec'} = 'text',  
                 $extras{'crosslist_'.$i.'_lcsec'} = 'text',  
             }              }
               $extras{'crosslist_'.$i} = 'checkbox';
               $extras{'crosslist_'.$i.'_instsec'} = 'text',
               $extras{'crosslist_'.$i.'_lcsec'} = 'text',
         }          }
         my %mergedhash = (%{$elements{'new'}{'enrollment'}},%extras);          my %mergedhash = (%{$elements{'new'}{'enrollment'}},%extras);
         %{$elements{'new'}{'enrollment'}} = %mergedhash;          %{$elements{'new'}{'enrollment'}} = %mergedhash;
Line 792  sub print_request_form { Line 790  sub print_request_form {
                 $message = '<div class="LC_warning">'.                  $message = '<div class="LC_warning">'.
                            &mt('No course was found matching your choice of institutional course category.');                             &mt('No course was found matching your choice of institutional course category.');
             }              }
             unless ($code_chk eq 'ok') {              unless ($code_chk eq 'valid') {
                 $prev = 'crstype';                  $prev = 'crstype';
             }              }
             $r->print($message);              $r->print($message);
Line 856  sub print_request_form { Line 854  sub print_request_form {
         $r->print($result);          $r->print($result);
     }      }
     my @excluded = &get_excluded_elements($dom,$states,$action,$state);      my @excluded = &get_excluded_elements($dom,$states,$action,$state);
       if ($state eq 'personnel') {
           push(@excluded,'persontotal');
       }
     $r->print(&Apache::lonhtmlcommon::echo_form_input(\@excluded).'</form>');      $r->print(&Apache::lonhtmlcommon::echo_form_input(\@excluded).'</form>');
     &display_navbuttons($r,$formname,$prev,$navtxt{'prev'},$next,$navtxt{'next'},$state);      &display_navbuttons($r,$formname,$prev,$navtxt{'prev'},$next,$navtxt{'next'},$state);
     return;      return;
Line 908  sub print_enrollment_menu { Line 909  sub print_enrollment_menu {
             my ($section_form,$crosslist_form,$autoenroll_form);              my ($section_form,$crosslist_form,$autoenroll_form);
             $section_form = &inst_section_selector($dom,$instcode);              $section_form = &inst_section_selector($dom,$instcode);
             my $crosslisttotal = $env{'form.crosslisttotal'};              my $crosslisttotal = $env{'form.crosslisttotal'};
             if (!defined($crosslisttotal)) {              if (!$crosslisttotal) {
                 $crosslisttotal = 1;                  $crosslisttotal = 1;
             }              }
             if ($env{'form.addcrosslist'}) {              if ($env{'form.addcrosslist'}) {
Line 974  sub inst_section_selector { Line 975  sub inst_section_selector {
                     &Apache::loncommon::start_data_table().                      &Apache::loncommon::start_data_table().
                     &Apache::loncommon::start_data_table_row().                      &Apache::loncommon::start_data_table_row().
                     '<th>'.&mt('Include?').'<input type="hidden" name="sectotal" '.                      '<th>'.&mt('Include?').'<input type="hidden" name="sectotal" '.
                     'value="'.$sectotal.'"</th>'.                      'value="'.$sectotal.'"  /></th>'.
                     '<th>'.&mt('Institutional Section').'</th>'.                      '<th>'.&mt('Institutional Section').'</th>'.
                     '<th>'.&mt('LON-CAPA section').'</th>'.                      '<th>'.&mt('LON-CAPA section').'</th>'.
                     &Apache::loncommon::end_data_table_row();                      &Apache::loncommon::end_data_table_row();
         for (my $i=0; $i<@sections; $i++) {          for (my $i=0; $i<@sections; $i++) {
             my $colflag = $i%2;              my $colflag = $i%2;
               my $checked = ' checked="checked"';
               if ($env{'form.origcnum'}) {
                   $checked='';
               }
             $output .= &Apache::loncommon::start_data_table_row().              $output .= &Apache::loncommon::start_data_table_row().
                        '<td><input type="checkbox" name="sec_'.$i.                         '<td><input type="checkbox" name="sec_'.$i.
                        '" checked="checked" /></td>'.                         '"'.$checked.' value="1" /></td>'.
                        '<td>'.$sections[$i].                         '<td>'.$sections[$i].
                        '<input type="hidden" name="secnum_'.$i.'" value="'.                         '<input type="hidden" name="secnum_'.$i.'" value="'.
                        $sections[$i].'" /></td>'.                         $sections[$i].'" /></td>'.
Line 1430  sub print_review { Line 1435  sub print_review {
                                &mt('Institutional course/section').'</th>'.                                 &mt('Institutional course/section').'</th>'.
                                '<th>'.&mt('LON-CAPA section').'</th></tr>';                                 '<th>'.&mt('LON-CAPA section').'</th></tr>';
             my $xlistinfo;              my $xlistinfo;
             if ($env{'form.crosslisttotal'}) {              my $crosslisttotal = $env{'form.crosslisttotal'};
                 for (my $i=0; $i<$env{'form.crosslisttotal'}; $i++) {              if (!$crosslisttotal) {
                     if ($env{'form.crosslist_'.$i}) {                  $crosslisttotal = 1;
                         $xlistinfo .= '<tr><td>';              }
                         if (ref($code_order) eq 'ARRAY') {              for (my $i=0; $i<$crosslisttotal; $i++) {
                             if (@{$code_order} > 0) {                  if ($env{'form.crosslist_'.$i}) {
                                 foreach my $item (@{$code_order}) {                      $xlistinfo .= '<tr><td>';
                                     $xlistinfo .= $env{'form.crosslist_'.$i.'_'.$item};                      if (ref($code_order) eq 'ARRAY') {
                                 }                          if (@{$code_order} > 0) {
                               foreach my $item (@{$code_order}) {
                                   $xlistinfo .= $env{'form.crosslist_'.$i.'_'.$item};
                             }                              }
                         }                          }
                         $xlistinfo .= $env{'form.crosslist_'.$i.'_instsec'}.'</td><td>';  
                         if ($env{'form.crosslist_'.$i.'_lcsec'}) {  
                             $xlistinfo .= $env{'form.crosslist_'.$i.'_lcsec'};  
                         } else {  
                             $xlistinfo .= &mt('None');  
                         }  
                         $xlistinfo .= '</td></tr>';  
                     }                      }
                       $xlistinfo .= $env{'form.crosslist_'.$i.'_instsec'}.'</td><td>';
                       if ($env{'form.crosslist_'.$i.'_lcsec'}) {
                           $xlistinfo .= $env{'form.crosslist_'.$i.'_lcsec'};
                       } else {
                           $xlistinfo .= &mt('None');
                       }
                       $xlistinfo .= '</td></tr>';
                 }                  }
             }              }
             if ($xlistinfo eq '') {              if ($xlistinfo eq '') {
                 $xlistinfo = '<tr><td colspan="2">'.&mt('None').'</td></tr>';                  $xlistinfo = '<tr><td colspan="2">'.&mt('None').'</td></tr>';
             }              }
             $section_values .= $xlistinfo.'</table></td>';              $section_values .= $xlistinfo;
         }          }
           $section_values .= '</table></td>';
     }      }
   
     my %ctxt = &clone_text();      my %ctxt = &clone_text();
Line 1531  sub print_review { Line 1539  sub print_review {
                     }                      }
                 }                  }
             }              }
             my $showsec = 'None';              my $showsec;
             if (@allsecs) {              if (@allsecs) {
                 $showsec = join(', ',@allsecs);                  $showsec = join(', ',@allsecs);
             }              }
               if ($showsec eq '') {
                   $showsec = &mt('None');
               }
               if ($env{'form.person_'.$i.'_role'} eq 'cc') {
                   $showsec = &mt('None');
               }
             $personnel_values .=               $personnel_values .= 
                 '<tr><td>'.$env{'form.person_'.$i.'_firstname'}.' '.                  '<tr><td>'.$env{'form.person_'.$i.'_firstname'}.' '.
                 $env{'form.person_'.$i.'_lastname'}.'</td>'.                  $env{'form.person_'.$i.'_lastname'}.'</td>'.
Line 1832  sub print_request_outcome { Line 1846  sub print_request_outcome {
     my ($dom,$codetitles,$code_order) = @_;      my ($dom,$codetitles,$code_order) = @_;
     my ($output,$cnum,$now,$req_notifylist,$crstype,$enrollstart,$enrollend,      my ($output,$cnum,$now,$req_notifylist,$crstype,$enrollstart,$enrollend,
         %sections,%crosslistings,%personnel,@baduname,@missingdom,%domconfig,);          %sections,%crosslistings,%personnel,@baduname,@missingdom,%domconfig,);
       my $sectotal = $env{'form.sectotal'};
       my $crosslisttotal = 0;
     $cnum = $env{'form.cnum'};      $cnum = $env{'form.cnum'};
     unless ($cnum =~ /^$match_courseid$/) {      unless ($cnum =~ /^$match_courseid$/) {
         $output = &mt('Invalid LON-CAPA course number for the new course')."\n";           $output = &mt('Invalid LON-CAPA course number for the new course')."\n"; 
Line 1873  sub print_request_outcome { Line 1889  sub print_request_outcome {
                         }                          }
                     }                      }
                 }                  }
                 $xlistinfo .= $env{'form.crosslist_'.$i.'_instsec'};                  $crosslistings{$i}{'instcode'} = $xlistinfo;
                 $crosslistings{$i}{'inst'} = $xlistinfo;                  if ($xlistinfo ne '') {
                       $crosslisttotal ++;
                   }
                   $crosslistings{$i}{'instsec'} = $env{'form.crosslist_'.$i.'_instsec'}; 
                 $crosslistings{$i}{'loncapa'} = $env{'form.crosslist_'.$i.'_lcsec'};                  $crosslistings{$i}{'loncapa'} = $env{'form.crosslist_'.$i.'_lcsec'};
             }              }
         }          }
Line 1940  sub print_request_outcome { Line 1959  sub print_request_outcome {
     if ($env{'form.autoadds'}) {      if ($env{'form.autoadds'}) {
         $autodrops = $env{'form.autoadds'};          $autodrops = $env{'form.autoadds'};
     }      }
     my $sectotal = 0;  
     if ($env{'form.sectotal'}) {  
         $sectotal = $env{'form.sectotal'};  
     }  
     if ($env{'form.autoadds'}) {      if ($env{'form.autoadds'}) {
         $autodrops = $env{'form.autoadds'};          $autodrops = $env{'form.autoadds'};
     }      }
     my $crosslisttotal = 0;  
     if ($env{'form.crosslisttotal'}) {  
         $crosslisttotal = $env{'form.crosslisttotal'};  
     }  
     my $instcode = '';      my $instcode = '';
     if (exists($env{'form.instcode'})) {      if (exists($env{'form.instcode'})) {
         $instcode = $env{'form.instcode'};          $instcode = $env{'form.instcode'};
Line 2024  sub print_request_outcome { Line 2035  sub print_request_outcome {
             $disposition = &check_autolimit($env{'user.name'},$env{'user.domain'},              $disposition = &check_autolimit($env{'user.name'},$env{'user.domain'},
                                             $dom,$crstype,$limit,\$message);                                              $dom,$crstype,$limit,\$message);
         } elsif ($val eq 'validate') {          } elsif ($val eq 'validate') {
             my $inststatuslist;              my ($inststatuslist,$validationchk,$validation);
             if (@inststatuses > 0) {              if (@inststatuses > 0) {
                 $inststatuslist = join(',',@inststatuses);                  $inststatuslist = join(',',@inststatuses);
             }              }
Line 2032  sub print_request_outcome { Line 2043  sub print_request_outcome {
             if (@instsections > 0) {              if (@instsections > 0) {
                 $instseclist = join(',',@instsections);                  $instseclist = join(',',@instsections);
             }              }
             my $validation =               $validationchk = 
                 &Apache::lonnet::auto_validate_instcode('',$dom,$instcode,                  &Apache::lonnet::auto_courserequest_validation($dom,
                     $env{'user.name'}.':'.$env{'user.domain'},$inststatuslist,                      $env{'user.name'}.':'.$env{'user.domain'},$crstype,
                     $instseclist);                      $inststatuslist,$instcode,$instseclist);
             if ($validation eq 'valid') {              if ($validationchk =~ /:/) {
                 $disposition = 'process';                  ($validation,$message) = split(':',$validationchk);
             } elsif ($validation eq 'rejected') {              } else {
                 $disposition = 'rejected';                  $validation = $validationchk;
             } elsif ($validation eq 'pending') {              }
                 $disposition = 'pending';              if ($validation =~ /^error(.*)$/) {
             } elsif ($disposition eq 'approval') {  
                 $disposition = 'approval';  
             } elsif ($disposition =~ /^error(.*)$/) {  
                 $disposition = 'approval';                  $disposition = 'approval';
                 $validationerror = $1;                  $validationerror = $1;
             } else {              } else {
                 $disposition = 'approval';                    $disposition = $validation;
             }              }
         } else {          } else {
             $disposition = 'approval';              $disposition = 'approval';
Line 2212  sub get_processtype { Line 2220  sub get_processtype {
             if (ref($domconfig->{'requestcourses'}) eq 'HASH') {              if (ref($domconfig->{'requestcourses'}) eq 'HASH') {
                 %settings = %{$domconfig->{'requestcourses'}};                  %settings = %{$domconfig->{'requestcourses'}};
                 if (ref($settings{$crstype}) eq 'HASH') {                  if (ref($settings{$crstype}) eq 'HASH') {
                     if (($env{'user.adv'}) && (exists($settings{$crstype}{'_LC_adv'}))) {                      if (($env{'user.adv'}) && ($settings{$crstype}{'_LC_adv'} ne '')) {
                         $val = $settings{$crstype}{'_LC_adv'};                          $val = $settings{$crstype}{'_LC_adv'};
                         @{$inststatuses} = ('_LC_adv_');                          @{$inststatuses} = ('_LC_adv_');
                     } else {                      } else {
Line 2345  sub retrieve_settings { Line 2353  sub retrieve_settings {
                  $env{'form.autoadds'} = $reqinfo{'autoadds'};                   $env{'form.autoadds'} = $reqinfo{'autoadds'};
                  $env{'form.autdrops'} = $reqinfo{'autodrops'};                   $env{'form.autdrops'} = $reqinfo{'autodrops'};
                  $env{'form.instcode'} = $reqinfo{'instcode'};                   $env{'form.instcode'} = $reqinfo{'instcode'};
                  my %crscode = (                   my $crscode = { 
                                  instcode => $reqinfo{'instcode'},                                   $cnum => $reqinfo{'instcode'},
                                );                                 };
                  &extract_instcode($dom,'instcode',\%crscode);                   &extract_instcode($dom,'instcode',$crscode,$cnum);
             }              }
             my @currsec;              my @currsec;
             if (ref($reqinfo{'sections'}) eq 'HASH') {              if (ref($reqinfo{'sections'}) eq 'HASH') {
                 foreach my $i (sort(keys(%{$reqinfo{'sections'}}))) {                  foreach my $i (sort(keys(%{$reqinfo{'sections'}}))) {
                     if (ref($reqinfo{'sections'}{$i}) eq 'HASH') {                      if (ref($reqinfo{'sections'}{$i}) eq 'HASH') {
                         my $sec = $reqinfo{'sections'}{$i}{'inst'};;                          my $sec = $reqinfo{'sections'}{$i}{'inst'};
                         $env{'form.secnum_'.$i} = $sec;                          $env{'form.secnum_'.$i} = $sec;
                           $env{'form.sec_'.$i} = '1';
                         if (!grep(/^\Q$sec\E$/,@currsec)) {                          if (!grep(/^\Q$sec\E$/,@currsec)) {
                             push(@currsec,$sec);                              push(@currsec,$sec);
                         }                          }
Line 2363  sub retrieve_settings { Line 2372  sub retrieve_settings {
                     }                      }
                 }                  }
             }              }
             if (ref($reqinfo{'crosslistings'}) eq 'HASH') {              if (ref($reqinfo{'crosslists'}) eq 'HASH') {
                 foreach my $i (sort(keys(%{$reqinfo{'crosslistings'}}))) {                  foreach my $i (sort(keys(%{$reqinfo{'crosslists'}}))) {
                     if (ref($reqinfo{'crosslistings'}{$i}) eq 'HASH') {                      if (ref($reqinfo{'crosslists'}{$i}) eq 'HASH') {
                         $env{'form.crosslist_'.$i.'_lcsec'} = $reqinfo{'crosslistings'}{$i}{'loncapa'};                          $env{'form.crosslist_'.$i} = '1';
                         my $xlistsec = $reqinfo{'crosslistings'}{$i}{'instsec'};                          $env{'form.crosslist_'.$i.'_instsec'} = $reqinfo{'crosslists'}{$i}{'instsec'};
                         my %crscode = (                          $env{'form.crosslist_'.$i.'_lcsec'} = $reqinfo{'crosslists'}{$i}{'loncapa'};
                                         $i => $reqinfo{'crosslistings'}{$i}{'instcode'},                          if ($reqinfo{'crosslists'}{$i}{'instcode'} ne '') {
                                       );                              my $key = $cnum.$i; 
                         &extract_instcode($dom,'crosslist',\%crscode,$1,$xlistsec);                              my $crscode = {
                                                 $key => $reqinfo{'crosslists'}{$i}{'instcode'},
                                             };
                               &extract_instcode($dom,'crosslist',$crscode,$key,$i);
                           }
                     }                      }
                 }                  }
             }              }
Line 2443  sub get_request_settings { Line 2456  sub get_request_settings {
 }  }
   
 sub extract_instcode {  sub extract_instcode {
     my ($cdom,$element,$crscodehashref,$counter,$xlistsec) = @_;      my ($cdom,$element,$crscode,$crskey,$counter) = @_;
     my (%codes,@codetitles,%cat_titles,%cat_order);      my (%codes,@codetitles,%cat_titles,%cat_order);
     if (ref($crscodehashref) eq 'HASH') {      if (&Apache::lonnet::auto_instcode_format('requests',$cdom,$crscode,\%codes,
         if (&Apache::lonnet::auto_instcode_format('requests',$cdom,$crscodehashref,                                                \@codetitles,\%cat_titles,
                        \%codes,\@codetitles,\%cat_titles,\%cat_order) eq 'ok') {                                                \%cat_order) eq 'ok') {
           if (ref($codes{$crskey}) eq 'HASH') {
             if (@codetitles > 0) {              if (@codetitles > 0) {
                 my $sel = $element;                  my $sel = $element;
                 if ($element eq 'crosslist') {                  if ($element eq 'crosslist') {
                     $sel .= '_'.$counter;                      $sel .= '_'.$counter;
                 }                  }
                 my $lastitem = pop(@codetitles);  
                 foreach my $title (@codetitles) {                  foreach my $title (@codetitles) {
                     if (ref($cat_order{$title}) eq 'ARRAY') {                      $env{'form.'.$sel.'_'.$title} = $codes{$crskey}{$title};
                         if (@{$cat_order{$title}} > 0) {  
                             $env{'form.'.$sel.'_'.$title} = $cat_order{$title}[0];  
                         }  
                     }  
                 }  
                 if ($element eq 'crosslist') {   
                     $env{'form.'.$sel.'_'.$lastitem} = $xlistsec;   
                 }                  }
             }              }
         }          }

Removed from v.1.20  
changed lines
  Added in v.1.24


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