[LON-CAPA-cvs] cvs: loncom /interface selfenroll.pm

raeburn raeburn at source.lon-capa.org
Sun Apr 6 10:11:01 EDT 2014


raeburn		Sun Apr  6 14:11:01 2014 EDT

  Modified files:              
    /loncom/interface	selfenroll.pm 
  Log:
  - Self-enroll requests queued pending validation ...
    - Generation of form (and button) used by enroller to go to validation
      step moved to separate routine: &pending_selfenrollment_form().
  
  
-------------- next part --------------
Index: loncom/interface/selfenroll.pm
diff -u loncom/interface/selfenroll.pm:1.30 loncom/interface/selfenroll.pm:1.31
--- loncom/interface/selfenroll.pm:1.30	Fri Apr  4 23:06:32 2014
+++ loncom/interface/selfenroll.pm	Sun Apr  6 14:11:01 2014
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Allow users to self-enroll in a course
 #
-# $Id: selfenroll.pm,v 1.30 2014/04/04 23:06:32 raeburn Exp $
+# $Id: selfenroll.pm,v 1.31 2014/04/06 14:11:01 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -541,9 +541,22 @@
     my %existing = 
         &Apache::lonnet::get($namespace,[$uname.':'.$udom],$cdom,$cnum);
     if ($existing{$uname.':'.$udom}) {
-        $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.').
-                  '<br /><br />'.&Apache::loncoursequeueadmin::queued_selfenrollment();
+        my $status;
+        $output = &mt('A self-enrollment request already exists for you for this course.').'<br />';
+        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($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 {
         my %selfenroll = (
                             $uname.':'.$udom => $now.':'.$usec,
@@ -574,51 +587,11 @@
             }
             $output = &mt('Your request for self-enrollment has been recorded.').'<br />';
             if ($status eq 'pending') {
-                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, at 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';
-                        } 
-                    }
+                my ($statusupdate,$pendingform) = &pending_selfenrollment_form($cdom,$cnum,$crstype,$token,$lonhost);
+                if ($statusupdate eq 'request') {
+                    $status = $statusupdate;
                 } else {
-                    $status = 'request';
+                    $output .= $pendingform;
                 }
             }
             if ($status eq 'request') {
@@ -654,6 +627,59 @@
     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, at 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="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 {
     my ($role) = @_;
     my $output = <<"END";


More information about the LON-CAPA-cvs mailing list