Diff for /loncom/interface/selfenroll.pm between versions 1.27.2.7 and 1.30

version 1.27.2.7, 2021/06/20 16:23:21 version 1.30, 2014/04/04 23:06:32
Line 221  sub handler { Line 221  sub handler {
     if ($sso_url eq '') {      if ($sso_url eq '') {
         $sso_url = $login_path;          $sso_url = $login_path;
     }      }
     $missing_formitem = &mt('The link to the requested page could not be followed.')."\n".&mt('The placeholder for the courseID is absent.');      $missing_formitem = &mt('The link to the requested page could not be followed.')."\\n".&mt('The placeholder for the courseID is absent.');
     &js_escape(\$missing_formitem);  
     if ($knownuser) {      if ($knownuser) {
         if (keys(%curr_role)) {          if (keys(%curr_role)) {
             $r->print('<h3>'.&mt('Self-enrollment unavailable').'</h3>'.              $r->print('<h3>'.&mt('Self-enrollment unavailable').'</h3>'.
Line 350  sub enrollment_limit_check { Line 349  sub enrollment_limit_check {
 sub page_header {  sub page_header {
     my ($r,$courseid,$js,$desc) = @_;      my ($r,$courseid,$js,$desc) = @_;
     my $start_page =      my $start_page =
         &Apache::loncommon::start_page('Self-enroll in a LON-CAPA course',$js,          &Apache::loncommon::start_page('Self-enroll in a LON-CAPA course',$js);
                                        {'no_inline_link'   => 1,});  
     $r->print($start_page);      $r->print($start_page);
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
     &Apache::createaccount::selfenroll_crumbs($r,$courseid,$desc);      &Apache::createaccount::selfenroll_crumbs($r,$courseid,$desc);
Line 439  sub process_self_enroll { Line 437  sub process_self_enroll {
         if ($selfenroll_section eq 'none') {          if ($selfenroll_section eq 'none') {
             $usec = '';              $usec = '';
         }          }
         my $instcid;  
         if ($selfenroll_registered) {          if ($selfenroll_registered) {
             my ($registered,$instsec,$instcid,$message) = &check_registered($cdom,$cnum);              my ($registered,$instsec,$message) = &check_registered($cdom,$cnum);
             $usec = $instsec;              $usec = $instsec;
             if (!$registered) {              if (!$registered) {
                 $r->print('<h3>'.&mt('Self-enrollment unavailable').'</h3>'.                  $r->print('<h3>'.&mt('Self-enrollment unavailable').'</h3>'.
Line 464  sub process_self_enroll { Line 461  sub process_self_enroll {
             my $enrollresult =               my $enrollresult = 
                 &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,                  &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,
                         undef,undef,$usec,$selfenroll_access_end,$selfenroll_access_start,                          undef,undef,$usec,$selfenroll_access_end,$selfenroll_access_start,
                        'selfenroll',undef,$cdom.'_'.$cnum,$selfenroll,'selfenroll','',$instcid);                         'selfenroll',undef,$cdom.'_'.$cnum,$selfenroll);
             if ($enrollresult eq 'ok') {              if ($enrollresult eq 'ok') {
                 my (%userroles,%newrole,%newgroups);                  my (%userroles,%newrole,%newgroups);
                 my $role = 'st';                  my $role = 'st';
Line 544  sub store_selfenroll_request { Line 541  sub store_selfenroll_request {
     my %existing =       my %existing = 
         &Apache::lonnet::get($namespace,[$uname.':'.$udom],$cdom,$cnum);          &Apache::lonnet::get($namespace,[$uname.':'.$udom],$cdom,$cnum);
     if ($existing{$uname.':'.$udom}) {      if ($existing{$uname.':'.$udom}) {
         my $status;          $output = &mt('A self-enrollment request already exists for you for this course.').'<br />'.
         $output = &mt('A self-enrollment request already exists for you for this course.').'<br />';                    &mt('Your earlier request is in a queue awaiting action by a Course Coordinator.').
         my %info = &Apache::lonnet::get($namespace,[$cdom.'_'.$cnum],$udom,$uname);                    '<br /><br />'.&Apache::loncoursequeueadmin::queued_selfenrollment();
         if (ref($info{$cdom.'_'.$cnum}) eq 'HASH') {  
             $status = $info{$cdom.'_'.$cnum}{'status'};  
         }  
         if ($status eq 'pending') {  
             my $token = $info{$cdom.'_'.$cnum}{'token'};  
             my ($statusupdate,$pendingform) = &pending_selfenrollment_form($cdom,$cnum,$crstype,$token,$lonhost);  
             if ($statusupdate eq 'pending') {  
                 $output .= $pendingform;  
             }  
         } else {  
             $output .= &mt('Your earlier request is in a queue awaiting action by a Course Coordinator.').  
                        '<br /><br />'.&Apache::loncoursequeueadmin::queued_selfenrollment();  
         }  
     } else {      } else {
         my %selfenroll = (          my %selfenroll = (
                             $uname.':'.$udom => $now.':'.$usec,                              $uname.':'.$udom => $now.':'.$usec,
Line 590  sub store_selfenroll_request { Line 574  sub store_selfenroll_request {
             }              }
             $output = &mt('Your request for self-enrollment has been recorded.').'<br />';              $output = &mt('Your request for self-enrollment has been recorded.').'<br />';
             if ($status eq 'pending') {              if ($status eq 'pending') {
                 my ($statusupdate,$pendingform) = &pending_selfenrollment_form($cdom,$cnum,$crstype,$token,$lonhost);                  my $coursetype = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$crstype); 
                 if ($statusupdate eq 'request') {                  my %postvalues = (
                     $status = $statusupdate;                                     'username'   => $env{'user.name'},
                                      'domain'     => $env{'user.domain'},
                                      'course'     => $cdom.'_'.$cnum,
                                      'coursetype' => $coursetype,
                                      'token'      => $token,
                                    );
                   my %domconfig = &Apache::lonnet::get_dom('configuration',['selfenrollment'],$cdom);
   
                   if (ref($domconfig{'selfenrollment'}) eq 'HASH') {
                       my ($url,$buttontext,$code,@fields);
                       if (ref($domconfig{'selfenrollment'}{'validation'}) eq 'HASH') {
                           my %courseinfo = &Apache::lonnet::coursedescription($cdom.'_'.$cnum,{ 'one_time' => 1});
                           $postvalues{'uniquecode'} = $courseinfo{'internal.uniquecode'};
                           $postvalues{'description'} = $courseinfo{'description'};
                           $url = $domconfig{'selfenrollment'}{'validation'}{'url'};
                           if (ref($domconfig{'selfenrollment'}{'validation'}{'fields'}) eq 'ARRAY') {
                               @fields = @{$domconfig{'selfenrollment'}{'validation'}{'fields'}};
                           }
                           $buttontext = $domconfig{'selfenrollment'}{'validation'}{'button'};
   
                           $output .= $domconfig{'selfenrollment'}{'validation'}{'markup'};
                           if (($url =~ m{^(https?\://|/)}) && (@fields > 0)) {
                               $output .= '<form name="selfenrollvalidation" action="'.$url.'" method="post">'."\n";
                               foreach my $field (@fields) {
                                   if ($postvalues{$field}) {
                                       $output .= '<input type="hidden" name="'.$field.'" value="'.$postvalues{$field}.'" />'."\n";
                                   }
                               }
                               if ($buttontext eq '') {
                                   $buttontext = &mt('Complete my enrollment');
                               }
                               my $protocol = $Apache::lonnet::protocol{$lonhost};
                               $protocol = 'http' if ($protocol ne 'https');
                               my $enroller = $protocol.'://'.&Apache::lonnet::hostname($lonhost).'/cgi-bin/enrollqueued.pl';
                               $output .= '<input type="hidden" name="enroller" value="'.$enroller.'" />'."\n".
                                          '<input type="submit" name="validate" value="'.$buttontext.'" />'."\n".
                                          '</form>'."\n";
                           } else {
                               $status = 'request';
                           } 
                       }
                 } else {                  } else {
                     $output .= $pendingform;                      $status = 'request';
                 }                  }
             }              }
             if ($status eq 'request') {              if ($status eq 'request') {
Line 630  sub store_selfenroll_request { Line 654  sub store_selfenroll_request {
     return $output;      return $output;
 }  }
   
 sub pending_selfenrollment_form {  
     my ($cdom,$cnum,$crstype,$token,$lonhost) = @_;  
     my ($status,$output);  
     my $coursetype = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$crstype);  
     my %postvalues = (  
                       'username'   => $env{'user.name'},  
                       'domain'     => $env{'user.domain'},  
                       'course'     => $cdom.'_'.$cnum,  
                       'coursetype' => $coursetype,  
                                  );  
     my %domconfig = &Apache::lonnet::get_dom('configuration',['selfenrollment'],$cdom);  
   
     if (ref($domconfig{'selfenrollment'}) eq 'HASH') {  
         my ($url,$buttontext,$code,@fields);  
         if (ref($domconfig{'selfenrollment'}{'validation'}) eq 'HASH') {  
             my %courseinfo = &Apache::lonnet::coursedescription($cdom.'_'.$cnum,{ 'one_time' => 1});  
             $postvalues{'uniquecode'} = $courseinfo{'internal.uniquecode'};  
             $postvalues{'description'} = $courseinfo{'description'};  
             $url = $domconfig{'selfenrollment'}{'validation'}{'url'};  
             if (ref($domconfig{'selfenrollment'}{'validation'}{'fields'}) eq 'ARRAY') {  
                 @fields = @{$domconfig{'selfenrollment'}{'validation'}{'fields'}};  
             }  
             $buttontext = $domconfig{'selfenrollment'}{'validation'}{'button'};  
   
             $output .= $domconfig{'selfenrollment'}{'validation'}{'markup'};  
             if (($url =~ m{^(https?\://|/)}) && (@fields > 0)) {  
                 $output .= '<form name="selfenrollvalidation" action="'.$url.'" method="post">'."\n";  
                 foreach my $field (@fields) {  
                     if ($postvalues{$field}) {  
                         $output .= '<input type="hidden" name="'.$field.'" value="'.$postvalues{$field}.'" />'."\n";  
                     }  
                 }  
                 if ($buttontext eq '') {  
                     $buttontext = &mt('Complete my enrollment');  
                 }  
                 my $hostname = &Apache::lonnet::hostname($lonhost);  
                 my $protocol = $Apache::lonnet::protocol{$lonhost};  
                 $protocol = 'http' if ($protocol ne 'https');  
                 my $enroller = $protocol.'://'.$hostname.'/cgi-bin/enrollqueued.pl';  
                 $output .= '<input type="hidden" name="enroller" value="'.$enroller.'" />'."\n".  
                            '<input type="hidden" name="token" value="'.$token.'" />'."\n".  
                            '<input type="submit" name="validate" value="'.$buttontext.'" />'."\n".  
                            '</form>'."\n";  
                 $status = 'pending';  
             } else {  
                 $status = 'request';  
             }  
         }  
     } else {  
         $status = 'request';  
     }  
     return ($status,$output);  
 }  
   
 sub jump_to_role {  sub jump_to_role {
     my ($role) = @_;      my ($role) = @_;
     my $output = <<"END";      my $output = <<"END";
Line 788  sub print_selfenroll_types { Line 758  sub print_selfenroll_types {
   
 sub check_registered {  sub check_registered {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
     my ($registered,$instsec,$instcid,$message);      my ($registered,$instsec,$message);
     my %settings = &Apache::lonnet::get('environment',['internal.coursecode',      my %settings = &Apache::lonnet::get('environment',['internal.coursecode',
                                         'internal.sectionnums',                                          'internal.sectionnums',
                                         'internal.crosslistings'],$cdom,$cnum);                                          'internal.crosslistings'],$cdom,$cnum);
     my (@allcourses,%LC_code,%affiliates,%reply);      my (@allcourses,%LC_code,%affiliates,%reply);
     &Apache::loncommon::get_institutional_codes($cdom,$cnum,\%settings,\@allcourses,\%LC_code);      &Apache::loncommon::get_institutional_codes(\%settings,\@allcourses,\%LC_code);
     if (@allcourses > 0) {      if (@allcourses > 0) {
         @{$affiliates{$cnum}} = @allcourses;          @{$affiliates{$cnum}} = @allcourses;
         my $outcome = &Apache::lonnet::fetch_enrollment_query('updatenow',\%affiliates,\%reply,$cdom,$cnum);          my $outcome = &Apache::lonnet::fetch_enrollment_query('updatenow',\%affiliates,\%reply,$cdom,$cnum);
Line 808  sub check_registered { Line 778  sub check_registered {
                     if (defined($enrolled{$env{'user.name'}})) {                      if (defined($enrolled{$env{'user.name'}})) {
                         $registered = 1;                          $registered = 1;
                         $instsec = $LC_code{$class};                          $instsec = $LC_code{$class};
                         $instcid = $class;  
                         last;                          last;
                     }                      }
                 }                  }
Line 821  sub check_registered { Line 790  sub check_registered {
     } else {      } else {
         $message = &mt('As no institutional course sections are currently associated with this course, your registration status is undetermined.');           $message = &mt('As no institutional course sections are currently associated with this course, your registration status is undetermined.'); 
     }      }
     return ($registered,$instsec,$instcid,$message);      return ($registered,$instsec,$message);
 }  }
   
 1;  1;

Removed from v.1.27.2.7  
changed lines
  Added in v.1.30


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