--- loncom/interface/lonrequestcourse.pm 2009/12/15 13:36:16 1.41.2.1 +++ loncom/interface/lonrequestcourse.pm 2010/02/04 21:01:30 1.41.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.41.2.1 2009/12/15 13:36:16 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.41.2.4 2010/02/04 21:01:30 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -627,6 +627,9 @@ sub onload_action { } else { $loaditems{'onload'} = 'javascript:setFormElements(document.requestcrs)'; } + if (($state eq 'process') && ($env{'form.concepttest'} eq 'editmyown')) { + $loaditems{'onload'} = 'javascript:setInitialVisibility()'; + } } return \%loaditems; } @@ -893,6 +896,8 @@ END } } elsif ($state eq 'personnel') { $js .= "\n".§ion_check_javascript()."\n".&personnel_lcsec_js(); + } elsif (($state eq 'process') && ($env{'form.concepttest'} eq 'editmyown')) { + $js .= "\n".&Apache::londocsgci::builder_javascript()."\n"; } my $title; if ($env{'form.crstype'} eq 'community') { @@ -1437,7 +1442,9 @@ sub print_request_form { $r->print(''. &mt('Modify this request').''.(' 'x4)); } - $r->print(''.&mt('Make another request').'

'); + unless ($env{'form.concepttest'}) { + $r->print(''.&mt('Make another request').'

'); + } return; } } @@ -2888,6 +2895,16 @@ sub print_request_outcome { accessend => $accessend, 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 $val = &get_processtype($dom,$crstype,\@inststatuses,\%domconfig); if ($val eq '') { @@ -2973,18 +2990,6 @@ sub print_request_outcome { if ($result eq 'created') { $disposition = 'created'; $reqstatus = 'created'; - my $parmoutput; - if ($dom eq 'gcitest') { - my $caller = 'requestcrs'; - if ($env{'form.concepttest'} eq 'defchosen') { - &Apache::londocsgci::setdefaults(); - &Apache::londocsgci::evaluate($caller); - &Apache::londocsgci::store($r,$caller,$dom,$cnum); - } - my ($furl,$ferr)= &Apache::lonuserstate::readmap($dom.'/'.$cnum); - my %parmresult = - &store_crsparms($dom,$cnum,$now,$accessstart,$accessend); - } my $role_result = &update_requestors_roles($dom,$cnum,$crstype,$details, \%longroles); if ($crstype eq 'community') { @@ -2992,7 +2997,41 @@ sub print_request_outcome { } else { $output = '

'.&mt('Your course request has been processed and the course has been created.'); } - $output .= '
'.$role_result.'

'; + if ($dom eq 'gcitest') { + 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 .= '
'; + my $error = &Apache::londocsgci::store($caller,$dom,$cnum); + if ($error) { + $output .= ''. + &mt('An error occurred saving an auto-generated concept test: [_1].',$error). + ''; + } else { + &Apache::lonuserstate::readmap($dom.'/'.$cnum); + $output .= &mt('A concept test has also been generated.'); + } + $output .= '

'. + '

'.&mt('If you have a text file available containing student e-mail addresses and initial passwords, you may upload it now.').'
'. + &mt('You may also enroll students at a later date by visiting the [_1]"Menu"[_2] page and choosing: [_1]"Manage Enrollment"[_2].','','').'

'. + '
'."\n"; + $r->print($output); + &Apache::lonuserutils::print_first_users_upload_form($r,'course'); + $r->print('
'); + $output = ''; + } else { + $output .= '
'.&mt('The next step is to chose which questions are to be included in the Concept Test.').'

'; + $r->print($output); + &Apache::londocsgci::editor($r,'requestcrs',$dom,$cnum); + $output = ''; + } + } else { + $output .= '
'.$role_result.'

'; + } $creationresult = 'created'; } else { $output = ''; @@ -3117,7 +3156,14 @@ sub update_requestors_roles { @roles = ($ccrole); } foreach my $role (@roles) { - my $start = $now; + my $refresh=$env{'user.refresh.time'}; + if ($refresh eq '') { + $refresh = $env{'user.login.time'}; + } + if ($refresh eq '') { + $refresh = $now; + } + my $start = $refresh-1; my $end = '0'; if ($role eq 'st') { if ($details->{'accessstart'} ne '') { @@ -3218,6 +3264,43 @@ sub update_requestors_roles { 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'; @@ -3235,7 +3318,7 @@ sub store_crsparms { type => 'date_end', }, problemstatus => { - value => 'no_feedback_ever', + value => 'no', type => 'string_problemstatus', }, maxtries => {