[LON-CAPA-cvs] cvs: loncom /auth lonroles.pm

raeburn raeburn@source.lon-capa.org
Mon, 09 Feb 2009 04:14:03 -0000


raeburn		Mon Feb  9 04:14:03 2009 EDT

  Modified files:              
    /loncom/auth	lonroles.pm 
  Log:
  - &queued_selfenrollment() generates a table of a user's self-enrollment requests currently pending approval by Course Coordinators in the respective courses.
  
  
Index: loncom/auth/lonroles.pm
diff -u loncom/auth/lonroles.pm:1.215 loncom/auth/lonroles.pm:1.216
--- loncom/auth/lonroles.pm:1.215	Sat Jan  3 00:16:10 2009
+++ loncom/auth/lonroles.pm	Mon Feb  9 04:14:03 2009
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # User Roles Screen
 #
-# $Id: lonroles.pm,v 1.215 2009/01/03 00:16:10 raeburn Exp $
+# $Id: lonroles.pm,v 1.216 2009/02/09 04:14:03 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -808,6 +808,7 @@
         $r->print(' /></label><input type="submit" value="'.&mt('Display').'" /></p>');
     } else {
         if ($countactive > 0) {
+            &queued_selfenrollment($r);
             my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
             my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); 
             $r->print('<p>'.&mt('[_1]Visit the [_2]Course Catalog[_3] to view all [_4] LON-CAPA courses.','<b>','<a href="/adm/coursecatalog?showdom='.$esc_dom.'">','</a></b>',$domdesc).'<br />'.&mt('If a course is [_1]not[_2] in your list of current courses below, you may be able to enroll if self-enrollment is permitted.','<b>','</b>').'</p>');
@@ -1078,6 +1079,50 @@
     }
     $r->print('<p>'.&mt('The [_1]Course Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created.','<a href="/adm/coursecatalog?showdom='.$esc_dom.'">','</a>',$domdesc).'<br />');
     $r->print(&mt('You can search the course catalog for courses which permit self-enrollment, if you would like to enroll in a course.').'</p>');
+    &queued_selfenrollment($r);
+    return;
+}
+
+sub queued_selfenrollment {
+    my ($r) = @_;
+    my %selfenrollrequests = &Apache::lonnet::dump('selfenrollrequests');
+    my %reqs_by_date;
+    foreach my $item (keys(%selfenrollrequests)) {
+        if (ref($selfenrollrequests{$item}) eq 'HASH') {
+            if ($selfenrollrequests{$item}{'status'} eq 'request') {
+                if ($selfenrollrequests{$item}{'timestamp'}) {
+                    push(@{$reqs_by_date{$selfenrollrequests{$item}{'timestamp'}}},$item);
+                }
+            } 
+        }
+    }
+    if (keys(%reqs_by_date)) {
+        my $rolename = &Apache::lonnet::plaintext('st');
+        $r->print('<b>'.&mt('Enrollment requests pending Course Coordinator approval').'</b><br />'.
+                  &Apache::loncommon::start_data_table().
+                  &Apache::loncommon::start_data_table_header_row().
+                  '<th>'.&mt('Date requested').'</th><th>'.&mt('Course title').'</th>'.
+                  '<th>'.&mt('User role').'</th><th>'.&mt('Section').'</th>'.
+                 &Apache::loncommon::end_data_table_header_row());
+        my @sorted = sort { $a <=> $b } (keys(%reqs_by_date));
+        foreach my $item (@sorted) {
+            if (ref($reqs_by_date{$item}) eq 'ARRAY') {
+                foreach my $crs (@{$reqs_by_date{$item}}) {
+                    my %courseinfo = &Apache::lonnet::coursedescription($crs);
+                    my $usec = $selfenrollrequests{$crs}{'section'};
+                    if ($usec eq '') {
+                        $usec = &mt('No section'); 
+                    }
+                    $r->print(&Apache::loncommon::start_data_table_row().
+                             '<td>'.&Apache::lonlocal::locallocaltime($item).'</td>'.
+                             '<td>'.$courseinfo{'description'}.'</td>'.
+                             '<td>'.$rolename.'</td><td>'.$usec.'</td>'.
+                             &Apache::loncommon::end_data_table_row());
+                }
+            }
+        }
+        $r->print(&Apache::loncommon::end_data_table());
+    }
     return;
 }