--- loncom/interface/selfenroll.pm 2021/12/14 12:53:12 1.27.2.8 +++ loncom/interface/selfenroll.pm 2014/03/31 02:31:05 1.28 @@ -1,7 +1,7 @@ # The LearningOnline Network # Allow users to self-enroll in a course # -# $Id: selfenroll.pm,v 1.27.2.8 2021/12/14 12:53:12 raeburn Exp $ +# $Id: selfenroll.pm,v 1.28 2014/03/31 02:31:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -221,8 +221,7 @@ sub handler { if ($sso_url eq '') { $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.'); - &js_escape(\$missing_formitem); + $missing_formitem = &mt('The link to the requested page could not be followed.')."\\n".&mt('The placeholder for the courseID is absent.'); if ($knownuser) { if (keys(%curr_role)) { $r->print('

'.&mt('Self-enrollment unavailable').'

'. @@ -233,7 +232,7 @@ sub handler { &process_self_enroll($r,$cdom,$cnum,$selfenroll_types,$selfenroll_registered, $selfenroll_access_start,$selfenroll_access_end, $selfenroll_section,$now,$selfenroll_approval, - $selfenroll_notifylist,$owner,$crstype,$lonhost,$handle); + $selfenroll_notifylist,$owner,$crstype,$lonhost); } elsif ($env{'form.phase'} eq 'login') { my $submit_text = &mt('Log in'); $r->print('

'.&mt('Log-in to LON-CAPA').'

'); @@ -350,8 +349,7 @@ sub enrollment_limit_check { sub page_header { my ($r,$courseid,$js,$desc) = @_; my $start_page = - &Apache::loncommon::start_page('Self-enroll in a LON-CAPA course',$js, - {'no_inline_link' => 1,}); + &Apache::loncommon::start_page('Self-enroll in a LON-CAPA course',$js); $r->print($start_page); &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::createaccount::selfenroll_crumbs($r,$courseid,$desc); @@ -412,7 +410,7 @@ sub has_role { sub process_self_enroll { my ($r,$cdom,$cnum,$selfenroll_types,$selfenroll_registered, $selfenroll_access_start,$selfenroll_access_end,$selfenroll_section, - $now,$selfenroll_approval,$selfenroll_notifylist,$owner,$crstype,$lonhost,$handle) = @_; + $now,$selfenroll_approval,$selfenroll_notifylist,$owner,$crstype,$lonhost) = @_; my $udom = $env{'user.domain'}; my $uname = $env{'user.name'}; my $selfenroll = 0; @@ -439,9 +437,8 @@ sub process_self_enroll { if ($selfenroll_section eq 'none') { $usec = ''; } - my $instcid; if ($selfenroll_registered) { - my ($registered,$instsec,$instcid,$message) = &check_registered($cdom,$cnum); + my ($registered,$instsec,$message) = &check_registered($cdom,$cnum); $usec = $instsec; if (!$registered) { $r->print('

'.&mt('Self-enrollment unavailable').'

'. @@ -456,15 +453,15 @@ sub process_self_enroll { } if ($selfenroll_approval) { my $outcome = - &store_selfenroll_request($r,$udom,$uname,$usec,$cdom,$cnum, + &store_selfenroll_request($udom,$uname,$usec,$cdom,$cnum, $selfenroll_notifylist,$owner, - $selfenroll_approval,$crstype,$lonhost,$handle); + $selfenroll_approval,$crstype,$lonhost); $r->print($outcome); } else { my $enrollresult = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef, 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') { my (%userroles,%newrole,%newgroups); my $role = 'st'; @@ -536,30 +533,17 @@ sub user_can_selfenroll { } sub store_selfenroll_request { - my ($r,$udom,$uname,$usec,$cdom,$cnum,$selfenroll_notifylist,$owner, - $selfenroll_approval,$crstype,$lonhost,$handle) = @_; + my ($udom,$uname,$usec,$cdom,$cnum,$selfenroll_notifylist,$owner, + $selfenroll_approval,$crstype,$lonhost) = @_; my $namespace = 'selfenrollrequests'; my $output; my $now = time; my %existing = &Apache::lonnet::get($namespace,[$uname.':'.$udom],$cdom,$cnum); if ($existing{$uname.':'.$udom}) { - my $status; - $output = &mt('A self-enrollment request already exists for you for this course.').'
'; - my %info = &Apache::lonnet::get($namespace,[$cdom.'_'.$cnum],$udom,$uname); - 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($r,$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.'). - '

'.&Apache::loncoursequeueadmin::queued_selfenrollment(); - } + $output = &mt('A self-enrollment request already exists for you for this course.').'
'. + &mt('Your earlier request is in a queue awaiting action by a Course Coordinator.'). + '

'.&Apache::loncoursequeueadmin::queued_selfenrollment(); } else { my %selfenroll = ( $uname.':'.$udom => $now.':'.$usec, @@ -578,10 +562,8 @@ sub store_selfenroll_request { }); my $token; if ($status eq 'pending') { - $token = &Apache::lonnet::tmpput(\%selfenroll,$lonhost); + $token = &Apache::lonnet::tmpput(\%selfenroll,$lonhost);; $userenroll{$cdom.'_'.$cnum}{'token'} = $token; - $userenroll{$cdom.'_'.$cnum}{'lonhost'} = $lonhost; - $userenroll{$cdom.'_'.$cnum}{'handle'} = $handle; } my $warning; my $userresult = &Apache::lonnet::put($namespace,\%userenroll,$udom,$uname); @@ -590,11 +572,43 @@ sub store_selfenroll_request { } $output = &mt('Your request for self-enrollment has been recorded.').'
'; if ($status eq 'pending') { - my ($statusupdate,$pendingform) = &pending_selfenrollment_form($r,$cdom,$cnum,$crstype,$token,$lonhost); - if ($statusupdate eq 'request') { - $status = $statusupdate; + 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, + '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'}; + $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 .= '
'."\n"; + foreach my $field (@fields) { + if ($postvalues{$field}) { + $output .= ''."\n"; + } + } + } + if ($buttontext eq '') { + $buttontext = &mt('Complete my enrollment'); + } + $output .= ''."\n". + '
'."\n"; + } } else { - $output .= $pendingform; + $status eq 'request'; } } if ($status eq 'request') { @@ -630,62 +644,6 @@ sub store_selfenroll_request { return $output; } -sub pending_selfenrollment_form { - my ($r,$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 .= '
'."\n"; - foreach my $field (@fields) { - if ($postvalues{$field}) { - $output .= ''."\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 $alias = &Apache::lonnet::use_proxy_alias($r,$lonhost); - $hostname = $alias if ($alias ne ''); - my $enroller = $protocol.'://'.$hostname.'/cgi-bin/enrollqueued.pl'; - $output .= ''."\n". - ''."\n". - ''."\n". - '
'."\n"; - $status = 'pending'; - } else { - $status = 'request'; - } - } - } else { - $status = 'request'; - } - return ($status,$output); -} - sub jump_to_role { my ($role) = @_; my $output = <<"END"; @@ -790,12 +748,12 @@ sub print_selfenroll_types { sub check_registered { my ($cdom,$cnum) = @_; - my ($registered,$instsec,$instcid,$message); + my ($registered,$instsec,$message); my %settings = &Apache::lonnet::get('environment',['internal.coursecode', 'internal.sectionnums', 'internal.crosslistings'],$cdom,$cnum); 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) { @{$affiliates{$cnum}} = @allcourses; my $outcome = &Apache::lonnet::fetch_enrollment_query('updatenow',\%affiliates,\%reply,$cdom,$cnum); @@ -810,7 +768,6 @@ sub check_registered { if (defined($enrolled{$env{'user.name'}})) { $registered = 1; $instsec = $LC_code{$class}; - $instcid = $class; last; } } @@ -823,7 +780,7 @@ sub check_registered { } else { $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;