[LON-CAPA-cvs] cvs: loncom(GCI_1) /auth lonroles.pm
raeburn
raeburn@source.lon-capa.org
Wed, 23 Sep 2009 19:42:20 -0000
This is a MIME encoded message
--raeburn1253734940
Content-Type: text/plain
raeburn Wed Sep 23 19:42:20 2009 EDT
Modified files: (Branch: GCI_1)
/loncom/auth lonroles.pm
Log:
- Customization for GCI.
- Automatically select role if user only has one active role.
- Backport 1.216 and part of 1.224
--raeburn1253734940
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20090923194220.txt"
Index: loncom/auth/lonroles.pm
diff -u loncom/auth/lonroles.pm:1.209.4.1 loncom/auth/lonroles.pm:1.209.4.2
--- loncom/auth/lonroles.pm:1.209.4.1 Wed Sep 23 16:55:53 2009
+++ loncom/auth/lonroles.pm Wed Sep 23 19:42:20 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.209.4.1 2009/09/23 16:55:53 raeburn Exp $
+# $Id: lonroles.pm,v 1.209.4.2 2009/09/23 19:42:20 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -549,6 +549,11 @@
my %futureroles;
my %roles_nextlogin;
my %timezones;
+ my $numcourses;
+ if ($env{'user.adv'}) {
+ my %courses = &Apache::lonnet::courseiddump($env{'user.domain'},'.','.','.','.','.',undef,undef,'Course');
+ $numcourses = keys(%courses);
+ }
foreach $envkey (sort keys %env) {
my $button = 1;
my $switchserver='';
@@ -714,9 +719,12 @@
$r->print(' /></label><input type="submit" value="'.&mt('Display').'" /></span>');
} else {
if ($countactive > 0) {
- 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>');
+ my $queuetotal = &queued_selfenrollment($r);
+ if (($numcourses-$queuetotal) > 1) {
+ 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] GCI WebCenter 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>');
+ }
}
}
@@ -727,7 +735,7 @@
} else {
$r->print('<h2>'.&mt('Currently no active roles or courses').'</h2>');
}
- &findcourse_advice($r);
+ &findcourse_advice($r,$numcourses);
$r->print('</form>');
if ($countfuture) {
$r->print(&mt('The following [quant,_1,role,roles] will become active in the future:',$countfuture));
@@ -752,6 +760,27 @@
}
$r->print(&Apache::loncommon::end_page());
return OK;
+ } elsif ($countactive==1) { # Is there only one choice?
+ my $needs_switchserver;
+ if ($env{'user.author'}) {
+ $needs_switchserver = &check_needs_switchserver($possiblerole);
+ }
+ if ((!$needs_switchserver) && ($env{'request.role'} eq 'cm')) {
+ $r->print('<h3>'.&mt('Please stand by.').'</h3>'.
+ '<input type="hidden" name="'.$possiblerole.'" value="1" />'.
+ '<noscript><br /><input type="submit" name="submit" value="'.&mt('Continue').'" /></noscript>');
+ $r->print("</form>\n");
+ $r->rflush();
+ $r->print('<script type="text/javascript">document.forms.rolechoice.submit();</script>');
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
+ }
+ if ($needs_switchserver) {
+ $r->print("<h2>".&mt('Server Switch Required')."</h2>\n".
+ &mt('Construction Space access is only available from '.
+ 'the home server of the corresponding Author.').'<br />'.
+ &mt("Click the 'Switch Server' link to go there.").'<br />');
+ }
}
# ----------------------------------------------------------------------- Table
unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) {
@@ -826,10 +855,14 @@
$r->print('<p><small><i>'
.&mt('This is LON-CAPA [_1]',$r->dir_config('lonVersion'))
.'</i><br />'
- .'<a href="/adm/logout">'.&mt('Logout').'</a> '
- .'<a href="/adm/coursecatalog?showdom='.$esc_dom.'">'
- .&mt('Course Catalog')
- .'</small></p>');
+ .'<a href="/adm/logout">'.&mt('Logout').'</a>');
+ if ($numcourses>1) {
+ $r->print(' '.
+ '<a href="/adm/coursecatalog?showdom='.$esc_dom.'">'.
+ &mt('Course Catalog').
+ '</small>');
+ }
+ $r->print('</p>');
}
$r->print(&Apache::loncommon::end_page());
return OK;
@@ -947,7 +980,7 @@
}
sub findcourse_advice {
- my ($r) = @_;
+ my ($r,$numcourses) = @_;
my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&');
if (&Apache::lonnet::auto_run(undef,$env{'user.domain'})) {
@@ -962,11 +995,59 @@
} else {
$r->print(&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'<br />');
}
- $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>');
+ my $queuetotal = &queued_selfenrollment($r);
+ if (($numcourses - $queuetotal) > 0) {
+ $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>');
+ }
return;
}
+sub queued_selfenrollment {
+ my ($r) = @_;
+ my %selfenrollrequests = &Apache::lonnet::dump('selfenrollrequests');
+ my %reqs_by_date;
+ my $queuetotal = 0;
+ 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());
+ $queuetotal ++;
+ }
+ }
+ }
+ $r->print(&Apache::loncommon::end_data_table());
+ }
+ return $queuetotal;
+}
+
sub privileges_info {
my ($which) = @_;
my $output;
@@ -1076,7 +1157,7 @@
} elsif ($advanced) {
$roletext.=
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'.
- &mt('Re-Initialize').'" onClick="javascript:enterrole(this.form,\''.
+ &mt('Re-Select').'" onClick="javascript:enterrole(this.form,\''.
$trolecode."','".$buttonname.'\');" /></td>';
} elsif ($reinit) {
$roletext.=
@@ -1086,7 +1167,7 @@
} else {
$roletext.=
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'.
- &mt('Re-Initialize').'" onClick="javascript:enterrole(this.form,\''.
+ &mt('Re-Select').'" onClick="javascript:enterrole(this.form,\''.
$trolecode."','".$buttonname.'\');" /></td>';
}
}
--raeburn1253734940--