Diff for /loncom/interface/lonrequestcourse.pm between versions 1.41.2.4 and 1.42

version 1.41.2.4, 2010/02/04 21:01:30 version 1.42, 2010/01/01 23:17:31
Line 143  sub handler { Line 143  sub handler {
     $states{'log'} = ['filter','display'];      $states{'log'} = ['filter','display'];
     $states{'new'} = ['courseinfo','enrollment','personnel','review','process'];      $states{'new'} = ['courseinfo','enrollment','personnel','review','process'];
   
     if ($dom eq 'gcitest') {  
         $states{'new'} = ['courseinfo','review','process'];  
     }  
   
     if (($action eq 'new') && ($env{'form.crstype'} eq 'official')) {      if (($action eq 'new') && ($env{'form.crstype'} eq 'official')) {
         unless ($env{'form.state'} eq 'crstype') {          unless ($env{'form.state'} eq 'crstype') {
             unshift(@{$states{'new'}},'codepick');              unshift(@{$states{'new'}},'codepick');
Line 173  sub handler { Line 169  sub handler {
                  cancel        => 'Cancel Request',                   cancel        => 'Cancel Request',
                  removal       => 'Outcome',                   removal       => 'Outcome',
                 );                  );
     if ($dom eq 'gcitest') {  
         $trail{'crstype'} = 'Building a Test';  
         $trail{'courseinfo'} = 'Test Information';  
     }  
   
     if (($env{'form.crstype'} eq 'official') && (&Apache::lonnet::auto_run('',$dom))) {      if (($env{'form.crstype'} eq 'official') && (&Apache::lonnet::auto_run('',$dom))) {
         $trail{'enrollment'} = 'Enrollment';          $trail{'enrollment'} = 'Enrollment';
Line 368  sub get_breadcrumbs { Line 360  sub get_breadcrumbs {
     my ($dom,$action,$state,$states,$trail) = @_;      my ($dom,$action,$state,$states,$trail) = @_;
     my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles,$description);      my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles,$description);
     my $page = 0;      my $page = 0;
     my $firstcrumb = 'Pick Action';  
     my $crumbtitle = 'Course/Community Requests';  
     my $crumbhelp = 'Course_Requests';  
     if ($dom eq 'gcitest') {  
         $firstcrumb = 'Building a Test';  
         $crumbtitle = 'Create Concept Test';  
         $crumbhelp = 'Concept_Test_Creation';  
     }  
     if ((ref($states) eq 'HASH') && (ref($trail) eq 'HASH') && (ref($state))) {      if ((ref($states) eq 'HASH') && (ref($trail) eq 'HASH') && (ref($state))) {
         if (defined($action)) {          if (defined($action)) {
             my $done = 0;              my $done = 0;
Line 417  sub get_breadcrumbs { Line 401  sub get_breadcrumbs {
                 if ($$state eq $states->{$action}[$i]) {                  if ($$state eq $states->{$action}[$i]) {
                     &Apache::lonhtmlcommon::add_breadcrumb(                      &Apache::lonhtmlcommon::add_breadcrumb(
                        {text=>"$trail->{$$state}"});                         {text=>"$trail->{$$state}"});
                     $crumb = &Apache::lonhtmlcommon::breadcrumbs($crumbtitle,$crumbhelp);                      $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
                     last;                      last;
                 } else {                  } else {
                     if (($$state eq 'process') || ($$state eq 'removal')) {                      if (($$state eq 'process') || ($$state eq 'removal')) {
Line 436  sub get_breadcrumbs { Line 420  sub get_breadcrumbs {
            }             }
         } else {          } else {
             &Apache::lonhtmlcommon::add_breadcrumb(              &Apache::lonhtmlcommon::add_breadcrumb(
                     {text=>$firstcrumb});                      {text=>'Pick Action'});
             $crumb = &Apache::lonhtmlcommon::breadcrumbs($crumbtitle,$crumbhelp);              $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
         }          }
     } else {      } else {
         &Apache::lonhtmlcommon::add_breadcrumb(          &Apache::lonhtmlcommon::add_breadcrumb(
                 {text=>$firstcrumb});                  {text=>'Pick Action'});
         $crumb = &Apache::lonhtmlcommon::breadcrumbs($crumbtitle,$crumbhelp);          $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
     }      }
     return ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description);      return ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description);
 }  }
Line 515  sub form_elements { Line 499  sub form_elements {
          },           },
     );      );
     my %servers = &Apache::lonnet::get_servers($dom,'library');      my %servers = &Apache::lonnet::get_servers($dom,'library');
     if ($dom eq 'gcitest') {  
         %{$elements{'new'}{'courseinfo'}} = (  
                                               cdescr      => 'text',  
                                               concepttest => 'radio',   
                                             );  
     }  
     my $numlib = keys(%servers);      my $numlib = keys(%servers);
     if ($numlib > 1) {      if ($numlib > 1) {
         $elements{'new'}{'courseinfo'}{'chome'} = 'selectbox';          $elements{'new'}{'courseinfo'}{'chome'} = 'selectbox';
     } else {      } else {
         $elements{'new'}{'courseinfo'}{'chome'} = 'hidden';          $elements{'new'}{'courseinfo'}{'chome'} = 'hidden';
     }      }
     if ($dom eq 'gcitest') {  
         my %mergedhash = (%{$elements{'new'}{'courseinfo'}},%{$elements{'new'}{'enrollment'}});  
         %{$elements{'new'}{'courseinfo'}} = %mergedhash;  
     }  
     my (@codetitles,%cat_titles,%cat_order,@code_order,$lastitem);      my (@codetitles,%cat_titles,%cat_order,@code_order,$lastitem);
     &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,      &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
                                              \%cat_order,\@code_order);                                               \%cat_order,\@code_order);
Line 627  sub onload_action { Line 601  sub onload_action {
         } else {          } else {
             $loaditems{'onload'} = 'javascript:setFormElements(document.requestcrs)';              $loaditems{'onload'} = 'javascript:setFormElements(document.requestcrs)';
         }          }
         if (($state eq 'process') && ($env{'form.concepttest'} eq 'editmyown')) {  
             $loaditems{'onload'} = 'javascript:setInitialVisibility()';  
         }  
     }      }
     return \%loaditems;      return \%loaditems;
 }  }
Line 655  sub print_main_menu { Line 626  sub print_main_menu {
         }          }
     }      }
   
     my $js;      my $js = <<"END";
     unless ($dom eq 'gcitest') {  
         $js = <<"END";  
   
 function nextPage(formname) {  function nextPage(formname) {
     var crschoice = document.mainmenu_coursetype.crstype.value;      var crschoice = document.mainmenu_coursetype.crstype.value;
Line 681  function check_can_request(crschoice,act Line 650  function check_can_request(crschoice,act
     var unofficial = '';      var unofficial = '';
     var community = '';          var community = '';    
 END  END
         if (ref($can_request) eq 'HASH') {      if (ref($can_request) eq 'HASH') {
             foreach my $item (keys(%{$can_request})) {          foreach my $item (keys(%{$can_request})) {
                     $js .= "                   $js .= " 
             $item = 1;          $item = 1;
 ";  ";
             }  
         }          }
         my %lt = &Apache::lonlocal::texthash(      }
             official => 'You are not permitted to request creation of an official course in this domain.',      my %lt = &Apache::lonlocal::texthash(
             unofficial => 'You are not permitted to request creation of an unofficial course in this domain.',          official => 'You are not permitted to request creation of an official course in this domain.',
             community => 'You are not permitted to request creation of a community this domain.',          unofficial => 'You are not permitted to request creation of an unofficial course in this domain.',
             all => 'You must choose a specific course type when making a new course request.\\nAll types is not allowed.',          community => 'You are not permitted to request creation of a community this domain.',
         );           all => 'You must choose a specific course type when making a new course request.\\nAll types is not allowed.',
         $js .= <<END;      ); 
       $js .= <<END;
     if (crschoice == 'official') {      if (crschoice == 'official') {
         if (official != 1) {          if (official != 1) {
             alert("$lt{'official'}");              alert("$lt{'official'}");
Line 702  END Line 671  END
         }          }
     } else {      } else {
         if (crschoice == 'unofficial') {          if (crschoice == 'unofficial') {
            if (unofficial != 1) {              if (unofficial != 1) {
                alert("$lt{'unofficial'}");                  alert("$lt{'unofficial'}");
                return false;                  return false;
             }              }
         } else {          } else {
             if (crschoice == 'community') {              if (crschoice == 'community') {
Line 716  END Line 685  END
                 if (actionchoice == 'new') {                  if (actionchoice == 'new') {
                     alert("$lt{'all'}");                      alert("$lt{'all'}");
                     return false;                      return false;
                 }                  }               
             }              }
         }          }
     }      }
     return true;      return true;
 }  }
 END  END
     }  
     my ($pagetitle,$pageinfo,$domaintitle);      my ($pagetitle,$pageinfo,$domaintitle);
     if (ref($can_request) eq 'HASH') {      if (ref($can_request) eq 'HASH') {
         if (($can_request->{'official'}) || ($can_request->{'unofficial'})) {          if (($can_request->{'official'}) || ($can_request->{'unofficial'})) {
Line 746  END Line 714  END
             $domaintitle = &mt('Course/Community Domain');              $domaintitle = &mt('Course/Community Domain');
         }          }
     }      }
   
     if ($dom eq 'gcitest') {  
         my $formname = 'requestcrs';  
         my $nexttext = &mt('Continue');  
         $r->print(&header($pagetitle,$js.$jscript,$loaditems).$crumb.  
             '<p>'.&mt('Deployment of a Concept Test requires completion of the following three steps:').'<ol>'.  
             '<li>'.&mt('Creation of a course "container" and setting of access dates').'</li>'.  
             '<li>'.&mt('Assembly of a valid test from Concept Inventory questions').'</li>'.  
             '<li>'.&mt('Enrollment of students').'</li>'.  
             '</ol></p><p>'.&mt('When assembling a test you may either:').  
             '<br />'.&mt('(a) have a valid test built automatically by the WebCenter, or').'<br />'.&mt('(b) select the questions to include by combining questions chosen from eleven bins with four mandatory questions.').'</p><p>'.&mt('The most efficient way to enroll students is to upload a text file containing usernames and passwords.').'<br />'.&mt("Students' full e-mail addresses should be used as their usernames to ensure uniqueness.").'</p><div>'.  
             '<form name="'.$formname.'" method="post" action="/adm/requestcourse">'."\n".  
             '<input type="hidden" name="state" value="courseinfo" />'."\n".  
             '<input type="hidden" name="showdom" value="'.$dom.'" />'."\n".  
             '<input type="hidden" name="crstype" value="unofficial" />'."\n".  
             '<input type="hidden" name="action" value="new" />'."\n".  
             '<input type="button" name="next" value="'.$nexttext.  
             '" onclick="this.form.submit();" />'."\n".  
             '</form></div>'.  
              &Apache::loncommon::end_page());  
         return;  
     }  
   
     if (!$onchange) {  
         $r->print('&nbsp;<input type="submit" name="godom" value="'.  
                    &mt('Change').'" />');  
     }  
     unless ((ref($can_request) eq 'HASH') && (keys(%{$can_request}) > 0)) {  
         $r->print(&Apache::lonhtmlcommon::row_closure(1)."\n".  
                   &Apache::lonhtmlcommon::end_pick_box().'</div>'."\n".  
                   &Apache::loncommon::end_page());  
         return;  
     }  
   
     my @incdoms;      my @incdoms;
     if (ref($request_domains) eq 'HASH') {      if (ref($request_domains) eq 'HASH') {
         foreach my $item (keys(%{$request_domains})) {          foreach my $item (keys(%{$request_domains})) {
Line 896  END Line 830  END
             }              }
         } elsif ($state eq 'personnel') {          } elsif ($state eq 'personnel') {
             $js .= "\n".&section_check_javascript()."\n".&personnel_lcsec_js();              $js .= "\n".&section_check_javascript()."\n".&personnel_lcsec_js();
         } elsif (($state eq 'process') && ($env{'form.concepttest'} eq 'editmyown')) {  
             $js .= "\n".&Apache::londocsgci::builder_javascript()."\n";  
         }          }
         my $title;          my $title;
         if ($env{'form.crstype'} eq 'community') {          if ($env{'form.crstype'} eq 'community') {
Line 1433  sub print_request_form { Line 1365  sub print_request_form {
             &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,              &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
                                                      \%cat_order,\@code_order);                                                       \%cat_order,\@code_order);
         }          }
         my ($storeresult,$result) = &print_request_outcome($r,$dom,\@codetitles,          my ($storeresult,$result) = &print_request_outcome($dom,\@codetitles,
                                                            \@code_order);                                                             \@code_order);
         $r->print($result);          $r->print($result);
         if (($storeresult eq 'ok') || ($storeresult eq 'created')) {          if (($storeresult eq 'ok') || ($storeresult eq 'created')) {
Line 1442  sub print_request_form { Line 1374  sub print_request_form {
                 $r->print('<a href="/adm/requestcourse?action=view&state=details&showdom='.$dom.'&cnum='. $env{'form.cnum'}.'">'.                  $r->print('<a href="/adm/requestcourse?action=view&state=details&showdom='.$dom.'&cnum='. $env{'form.cnum'}.'">'.
                           &mt('Modify this request').'</a>'.('&nbsp;'x4));                            &mt('Modify this request').'</a>'.('&nbsp;'x4));
             }              }
             unless ($env{'form.concepttest'}) {              $r->print('<a href="/adm/requestcourse">'.&mt('Make another request').'</a></p>');
                 $r->print('<a href="/adm/requestcourse">'.&mt('Make another request').'</a></p>');  
             }  
             return;              return;
         }          }
     }      }
Line 1627  sub print_enrollment_menu { Line 1557  sub print_enrollment_menu {
     my $access_dates =       my $access_dates = 
         &date_setting_table($starttime,$endtime,$formname,'access',$hasauto,          &date_setting_table($starttime,$endtime,$formname,'access',$hasauto,
                             %accesstitles);                              %accesstitles);
       $output .= &Apache::lonhtmlcommon::start_pick_box();
     if ($sections) {      if ($sections) {
         $output .=  $sections;          $output .=  $sections;
     }      }
Line 1646  sub print_enrollment_menu { Line 1577  sub print_enrollment_menu {
                    &Apache::lonhtmlcommon::row_closure(1).                     &Apache::lonhtmlcommon::row_closure(1).
                    $access_dates                     $access_dates
     }      }
     if ($dom eq 'gcitest') {      return '<div>'.&Apache::lonhtmlcommon::start_pick_box().$output.
         return $output;             &Apache::lonhtmlcommon::end_pick_box().'</div>';
     } else {  
         return '<div>'.&Apache::lonhtmlcommon::start_pick_box().$output.  
                &Apache::lonhtmlcommon::end_pick_box().'</div>';  
     }  
 }  }
   
 sub show_invalid_crosslists {  sub show_invalid_crosslists {
Line 2243  sub print_review { Line 2170  sub print_review {
     }      }
   
     my %ctxt = &clone_text();      my %ctxt = &clone_text();
     if ($dom eq 'gcitest') {      $inst_headers .= '<th>'.&mt('Clone From').'</th>';
         $inst_headers .= '<th>'.&mt('Test Questions').'</th>';      if (($env{'form.clonecrs'} =~ /^$match_name$/) && 
         my $concepttest;          ($env{'form.clonedom'} =~ /^$match_domain$/)) {
         if ($env{'form.concepttest'} eq 'defchosen') {          my $canclone = &Apache::loncoursequeueadmin::can_clone_course($env{'user.name'},
             $concepttest = 'Auto-generated';  
         } elsif ($env{'form.concepttest'} eq 'editmyown') {  
             $concepttest = 'Manually selected';  
         }  
         $inst_values .= '<td>'.$concepttest.'</td>';  
     } else {  
         $inst_headers .= '<th>'.&mt('Clone From').'</th>';  
         if (($env{'form.clonecrs'} =~ /^$match_name$/) &&   
             ($env{'form.clonedom'} =~ /^$match_domain$/)) {  
             my $canclone = &Apache::loncoursequeueadmin::can_clone_course($env{'user.name'},  
                            $env{'user.domain'},$env{'form.clonecrs'},$env{'form.clonedom'},                             $env{'user.domain'},$env{'form.clonecrs'},$env{'form.clonedom'},
                            $env{'form.crstype'});                             $env{'form.crstype'});
             if ($canclone) {          if ($canclone) {
                 my %courseenv = &Apache::lonnet::userenvironment($env{'form.clonedom'},              my %courseenv = &Apache::lonnet::userenvironment($env{'form.clonedom'},
                               $env{'form.clonecrs'},('description','internal.coursecode'));                                $env{'form.clonecrs'},('description','internal.coursecode'));
                 if (keys(%courseenv) > 0) {              if (keys(%courseenv) > 0) {
                     $inst_headers .= '<th>'.$ctxt{'dsh'}.'</th>';                  $inst_headers .= '<th>'.$ctxt{'dsh'}.'</th>';
                     $inst_values .= '<td>'.$courseenv{'description'}.'&nbsp;';                  $inst_values .= '<td>'.$courseenv{'description'}.'&nbsp;';
                     my $cloneinst = $courseenv{'internal.coursecode'};                  my $cloneinst = $courseenv{'internal.coursecode'};
                     if ($cloneinst ne '') {                  if ($cloneinst ne '') {
                         $inst_values .= $cloneinst.' '.&mt('in').' '.$env{'form.clonedom'};                      $inst_values .= $cloneinst.' '.&mt('in').' '.$env{'form.clonedom'};
                     } else {                  } else {
                         $inst_values .= &mt('from').' '.$env{'form.clonedom'};                      $inst_values .= &mt('from').' '.$env{'form.clonedom'};
                     }                  }
                     $inst_values .= '</td><td>';                  $inst_values .= '</td><td>';
                     if ($env{'form.datemode'} eq 'preserve') {                  if ($env{'form.datemode'} eq 'preserve') {
                         $inst_values .= $ctxt{'prd'};                       $inst_values .= $ctxt{'prd'}; 
                     } elsif ($env{'form.datemode'} eq 'shift') {                  } elsif ($env{'form.datemode'} eq 'shift') {
                         $inst_values .= &mt('Shift dates by [_1] days',$env{'form.dateshift'});                      $inst_values .= &mt('Shift dates by [_1] days',$env{'form.dateshift'});
                     } else {                  } else {
                         $inst_values .= $ctxt{'ncd'};                      $inst_values .= $ctxt{'ncd'};
                     }                  }
                     $inst_values .= '</td>';                  $inst_values .= '</td>';
                  } else {  
                      $inst_values .= '<td>'.&mt('Unknown').'</td>';  
                  }  
              } else {               } else {
                  $inst_values .= '<td>'.&mt('Not permitted'),'</td>';                   $inst_values .= '<td>'.&mt('Unknown').'</td>';
              }               }
         } else {           } else {
             $inst_values .= '<td>'.&mt('None').'</td>';               $inst_values .= '<td>'.&mt('Not permitted'),'</td>';
         }           }
       } else {
           $inst_values .= '<td>'.&mt('None').'</td>';
     }      }
     $enroll_headers .= '<th>'.&mt('Access Starts').'</th>'.      $enroll_headers .= '<th>'.&mt('Access Starts').'</th>'.
                        '<th>'.&mt('Access Ends').'</th>';                         '<th>'.&mt('Access Ends').'</th>';
Line 2442  function validateForm() { Line 2358  function validateForm() {
   
 ENDJS  ENDJS
     my $title = &mt('Brief Course Description');      my $title = &mt('Brief Course Description');
     my $desctitle = &mt('Description');  
     if ($dom eq 'gcitest') {  
         $title = &mt('Concept Test Course Information');  
         $desctitle = &mt('Concept Test Title');  
     }  
     my $clonetitle = &mt('Clone content and settings from an existing course?');      my $clonetitle = &mt('Clone content and settings from an existing course?');
     if ($crstype eq 'community') {      if ($crstype eq 'community') {
         $title = &mt('Brief Community Description');          $title = &mt('Brief Community Description');
Line 2456  ENDJS Line 2367  ENDJS
                   &Apache::lonhtmlcommon::row_headline().                    &Apache::lonhtmlcommon::row_headline().
                   '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Description').'&nbsp;'.$title.'</h3>'.                    '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Description').'&nbsp;'.$title.'</h3>'.
                   &Apache::lonhtmlcommon::row_closure(1).                    &Apache::lonhtmlcommon::row_closure(1).
                   &Apache::lonhtmlcommon::row_title($desctitle).                    &Apache::lonhtmlcommon::row_title(&mt('Description')).
                  '<input type="text" size="60" name="cdescr" value="'.$description.'" />';                   '<input type="text" size="60" name="cdescr" value="'.$description.'" />';
     if ($dom eq 'gcitest') {  
         $output .= &Apache::lonhtmlcommon::row_closure(1).  
                    &concepttest_form();  
     }  
     my ($home_server_pick,$numlib) =      my ($home_server_pick,$numlib) =
         &Apache::loncommon::home_server_form_item($dom,'chome',          &Apache::loncommon::home_server_form_item($dom,'chome',
                                                   'default','hide');                                                    'default','hide');
Line 2470  ENDJS Line 2377  ENDJS
                    &Apache::lonhtmlcommon::row_title(&mt('Home Server for Course'));                     &Apache::lonhtmlcommon::row_title(&mt('Home Server for Course'));
     }      }
     $output .= $home_server_pick.      $output .= $home_server_pick.
                &Apache::lonhtmlcommon::row_closure();                 &Apache::lonhtmlcommon::row_closure().
     if ($dom eq 'gcitest') {  
         my ($instcode,@codetitles,%cat_titles,%cat_order,@code_order);  
         my $invalidcrosslist = [];  
         $output .= &print_enrollment_menu($formname,$instcode,$dom,  
                        \@codetitles,\%cat_titles,\%cat_order,  
                        \@code_order,$invalidcrosslist);  
     } else {  
         $output .=   
                &Apache::lonhtmlcommon::row_headline().                 &Apache::lonhtmlcommon::row_headline().
                '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Clone').'&nbsp;'.$clonetitle.'</h3>'.                  '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Clone').'&nbsp;'.$clonetitle.'</h3>'. 
                &Apache::lonhtmlcommon::row_closure(1).                 &Apache::lonhtmlcommon::row_closure(1).
                &clone_form($dom,$formname,$crstype);                 &clone_form($dom,$formname,$crstype).
     }                 &Apache::lonhtmlcommon::end_pick_box().'</div>'."\n";
     $output .= &Apache::lonhtmlcommon::end_pick_box().'</div>'."\n";  
     return $output;      return $output;
 }  }
   
 sub concepttest_form {  
      return &Apache::lonhtmlcommon::row_title(&mt('Questions included in Concept Test')).  
             '<input type="radio" name="concepttest" value="defchosen" /> '.  
             &mt('Automatically selected by WebCenter').  
             '</label><br /><label>'.  
             '<input type="radio" name="concepttest" value="editmyown" checked="checked" /> '.  
             &mt('Chosen by you from Concept Inventory').  
             '</label><br /><label>';  
 }  
   
 sub clone_form {  sub clone_form {
     my ($dom,$formname,$crstype) = @_;      my ($dom,$formname,$crstype) = @_;
     my $type = 'Course';      my $type = 'Course';
Line 2719  sub display_navbuttons { Line 2607  sub display_navbuttons {
 }  }
   
 sub print_request_outcome {  sub print_request_outcome {
     my ($r,$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 $sectotal = $env{'form.sectotal'};
Line 2895  sub print_request_outcome { Line 2783  sub print_request_outcome {
                     accessend      => $accessend,                      accessend      => $accessend,
                     personnel      => \%personnel,                      personnel      => \%personnel,
                   };                    };
     if ($dom eq 'gcitest') {  
         if ($env{'form.concepttest'} eq 'editmyown') {  
             $details->{'firstres'} = 'nav';   
         } else {  
             $details->{'firstres'} = 'blank';  
         }  
         $details->{'clonedom'} = 'gci';  
         $details->{'clonecrs'} = '8v226795a882b4bcagcil1';  
         $details->{'datemode'} = 'delete';  
     }  
     my (@inststatuses,$storeresult,$creationresult);      my (@inststatuses,$storeresult,$creationresult);
     my $val = &get_processtype($dom,$crstype,\@inststatuses,\%domconfig);      my $val = &get_processtype($dom,$crstype,\@inststatuses,\%domconfig);
     if ($val eq '') {      if ($val eq '') {
Line 2997  sub print_request_outcome { Line 2875  sub print_request_outcome {
                 } else {                  } else {
                     $output = '<p>'.&mt('Your course request has been processed and the course has been created.');                      $output = '<p>'.&mt('Your course request has been processed and the course has been created.');
                 }                  }
                 if ($dom eq 'gcitest') {                  $output .= '<br />'.$role_result.'</p>';
                     my $caller = 'requestcrs';  
                     &acquire_cc_role($dom,$cnum,'cc./'.$dom.'/'.$cnum);  
                     my %parmresult =  
                         &store_crsparms($dom,$cnum,$now,$accessstart,$accessend);  
                     &Apache::londocsgci::setdefaults();  
                     if ($env{'form.concepttest'} eq 'defchosen') {  
                         $output .= '<br />';  
                         my $error = &Apache::londocsgci::store($caller,$dom,$cnum);  
                         if ($error) {  
                             $output .= '<span class="LC_error">'.  
                                        &mt('An error occurred saving an auto-generated concept test: [_1].',$error).  
                                        '</span>';  
                         } else {  
                             &Apache::lonuserstate::readmap($dom.'/'.$cnum);  
                             $output .= &mt('A concept test has also been generated.');  
                         }  
                         $output .= '</p>'.  
     '<p>'.&mt('If you have a text file available containing student e-mail addresses and initial passwords, you may upload it now.').'<br />'.  
     &mt('You may also enroll students at a later date by visiting the [_1]"Menu"[_2] page and choosing: [_1]"Manage Enrollment"[_2].','<i>','</i>').'</p>'.  
     '</form><form name="studentform" method="post" enctype="multipart/form-data" '.  
     ' action="/adm/createuser">'."\n";  
                         $r->print($output);   
                         &Apache::lonuserutils::print_first_users_upload_form($r,'course');  
                         $r->print('</form>');  
                         $output = '';  
                     } else {  
                         $output .= '</form><br />'.&mt('The next step is to chose which questions are to be included in the Concept Test.').'</p>';  
                         $r->print($output);  
                         &Apache::londocsgci::editor($r,'requestcrs',$dom,$cnum);  
                         $output = '';  
                     }  
                 } else {  
                     $output .= '<br />'.$role_result.'</p>';  
                 }  
                 $creationresult = 'created';                  $creationresult = 'created';
             } else {              } else {
                 $output = '<span class="LC_error">';                  $output = '<span class="LC_error">';
Line 3264  sub update_requestors_roles { Line 3108  sub update_requestors_roles {
     return $output;      return $output;
 }  }
   
 sub acquire_cc_role {  
     my ($cdom,$cnum,$trolecode,$csec) = @_;  
     my %coursegroups = &Apache::lonnet::get_active_groups(  
                         $env{'user.domain'},$env{'user.name'},$cdom, $cnum);  
     my $cgrps = join(':',keys(%coursegroups));  
     if ($env{'environment.recentroles'}) {  
         my %frozen_roles =  
             &Apache::lonhtmlcommon::get_recent_frozen('roles',$env{'environment.recentrolesn'});  
         &Apache::lonhtmlcommon::store_recent('roles',$trolecode,' ',  
                                             $frozen_roles{$trolecode});  
     }  
   
     &Apache::lonnet::appenv({"request.course.id"   => '',  
                              "request.course.fn"   => '',  
                              "request.course.uri"  => '',  
                              "request.course.sec"  => '',  
                              "request.role"        => 'cm',  
                              "request.role.adv"    => $env{'user.adv'},  
                              "request.role.domain" => $env{'user.domain'}});  
   
     &Apache::lonnet::log($env{'user.domain'},  
                          $env{'user.name'},  
                          $env{'user.home'},  
                          "Role ".$trolecode);  
   
     &Apache::lonnet::appenv(  
                             {'request.role'        => $trolecode,  
                              'request.role.domain' => $cdom,  
                              'request.course.sec'  => $csec,  
                              'request.course.groups' => $cgrps});  
     my ($furl,$ferr) = &Apache::lonuserstate::readmap($cdom.'/'.$cnum);  
     my $tadv;  
     if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }  
     &Apache::lonnet::appenv({'request.role.adv'=>$tadv});  
     return;  
 }  
   
 sub store_crsparms {  
     my ($cdom,$cnum,$now,$accessstart,$accessend) = @_;  
     my $topsymb = '___0___uploaded/'.$cdom.'/'.$cnum.'/default.sequence';  
     my %crsparms = (  
                       buttonshide => {  
                                        value => 'yes',  
                                        type  => 'string_yesno',  
                                      },  
                       opendate    => {  
                                        value => $accessstart,  
                                        type  => 'date_start',  
                                      },  
                       duedate     => {  
                                        value => $accessend,  
                                        type  => 'date_end',  
                                      },  
                       problemstatus => {  
                                            value => 'no',  
                                            type  => 'string_problemstatus',  
                                        },  
                       maxtries      => {  
                                            value => '1',  
                                            type  => 'intpos',  
                                        },  
                       discussend    => {  
                                            value => $now,  
                                            type  => 'date_end',  
                                        },  
                       discusshide   => {   
                                            value => 'yes',  
                                            type  => 'string_yesno',  
                                        }  
     );  
     my %parmresult;  
     foreach my $item (keys(%crsparms)) {  
         $parmresult{$item} =  
             &Apache::lonparmset::storeparm_by_symb($topsymb,  
                                    '0_'.$item,14,$crsparms{$item}{'value'},  
                                    $crsparms{$item}{'type'},undef,$cdom);  
     }  
     return %parmresult;  
 }  
   
 sub notification_information {  sub notification_information {
     my ($disposition,$req_notifylist,$cnum,$now) = @_;      my ($disposition,$req_notifylist,$cnum,$now) = @_;
     my %emails = &Apache::loncommon::getemails();      my %emails = &Apache::loncommon::getemails();

Removed from v.1.41.2.4  
changed lines
  Added in v.1.42


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