[LON-CAPA-cvs] cvs: loncom /auth lonroles.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Sun, 14 Nov 2004 18:27:08 -0000
This is a MIME encoded message
--raeburn1100456828
Content-Type: text/plain
raeburn Sun Nov 14 13:27:08 2004 EDT
Modified files:
/loncom/auth lonroles.pm
Log:
Recent roles display for DC now gathers info for CC roles not viewed this session, but in recently viewed list. Change in db name for recent roles. Keys n db now: user.role.cc.\$dom\$course etc. Ready for generalization to display of recent roles for all users.
--raeburn1100456828
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20041114132708.txt"
Index: loncom/auth/lonroles.pm
diff -u loncom/auth/lonroles.pm:1.109 loncom/auth/lonroles.pm:1.110
--- loncom/auth/lonroles.pm:1.109 Fri Nov 12 18:29:55 2004
+++ loncom/auth/lonroles.pm Sun Nov 14 13:27:08 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.109 2004/11/12 23:29:55 raeburn Exp $
+# $Id: lonroles.pm,v 1.110 2004/11/14 18:27:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -84,6 +84,10 @@
my $envkey;
my %dcroles = ();
my $numdc = &check_fordc(\%dcroles,$then);
+ my %recentroles;
+ if ($numdc > 0) {
+ %recentroles = &Apache::lonnet::dump(&recent_filename('roles'));
+ }
# ================================================================== Roles Init
if ($ENV{'form.selectrole'}) {
@@ -100,27 +104,29 @@
"request.role.adv" => $ENV{'user.adv'},
"request.role.domain" => $ENV{'user.domain'});
-# Check to see if the user is a DC trying to enter a course and needs privs to be created
+# Check if user is a DC trying to enter a course and needs privs to be created
if ($numdc > 0) {
foreach my $envkey (keys %ENV) {
if ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-) {
if ($dcroles{$1}) {
my $cckey = 'user.role.cc./'.$1.'/'.$2;
- if ($ENV{$cckey}) {
- my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont);
- &role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);
- unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) {
- &set_privileges($1,$2);
- }
- } else {
- &set_privileges($1,$2);
- }
+ &check_privs($cckey,$then,$now);
}
last;
}
}
}
+# Check if user is a DC with courses in the recent list which need privs.
+# if ($numdc > 0) {
+# %recentroles = &Apache::lonnet::dump(&recent_filename('recent_roles'));
+# foreach my $rolekey (keys %recentroles) {
+# if ($rolekey =~ m-^user\.role.cc\./\w+/\w+$-) {
+# &check_privs($rolekey,$then,$now);
+# }
+# }
+# }
+
foreach $envkey (keys %ENV) {
next if ($envkey!~/^user\.role\./);
my ($where,$trolecode,$role,$tstatus,$tend,$tstart);
@@ -268,8 +274,8 @@
my $formaction = '/adm/roles/';
my ($dcdom,$pickedcourse) = split/_/,$courseid;
if ($ENV{'user.role.dc./'.$dcdom.'/'}) {
- &Apache::lonhtmlcommon::store_recent('recent_roles',
- $courseid,$formaction);
+ &Apache::lonhtmlcommon::store_recent('roles',
+ $envkey,$formaction);
}
}
#
@@ -551,40 +557,7 @@
}
$roletext.='<tr bgcolor='.$tbg.'>';
- unless ($nochoose) {
- if (!$button) {
- if ($switchserver) {
- $roletext.='<td><a href="/adm/logout?handover='.
- $switchserver.'">'.&mt('Switch Server').'</a></td>';
- } else {
- $roletext.=('<td> </td>');
- }
- } elsif ($tstatus eq 'is') {
- $roletext.=('<td><input type=submit value="'.
- &mt('Select').'" name="'.
- $trolecode.'"></td>');
- } elsif ($tryagain) {
- $roletext.=
- '<td><input type=submit value="'.
- &mt('Try Selecting Again').'" name="'.$trolecode.'"></td>';
- } elsif ($advanced) {
- $roletext.=
- '<td><input type=submit value="'.
- &mt('Re-Initialize').'" name="'.$trolecode.'"></td>';
- } else {
- $roletext.='<td> </td>';
- }
- }
- $tremark.=&Apache::lonannounce::showday(time,1,
- &Apache::lonannounce::readcalendar($tdom.'_'.$trest));
-
- $roletext.='<td><font color="'.$tfont.'">'.$trole.
- '</font></td><td><font color="'.$tfont.'">'.$ttype.
- '</font></td><td><font color="'.$tfont.'">'.$twhere.
- '</font></td><td><font color="'.$tfont.'">'.$tpstart.
- '</font></td><td><font color="'.$tfont.'">'.$tpend.
- '</font></td><td><font color="'.$tfont.'">'.$tremark.
- ' </font></td></tr>'."\n";
+ $roletext.=&build_roletext($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$ttype,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver);
$roletext{$envkey}=$roletext;
if (!$sortkey) {$sortkey=$twhere."\0".$envkey;}
$sortrole{$sortkey}=$envkey;
@@ -632,7 +605,7 @@
if ($haverole) { $doheaders++; }
}
if ($numdc > 0) {
- &select_recent_courses($r,\%roletext);
+ &display_recent_roles($r,\%roletext,\%recentroles);
}
foreach my $type ('Construction Space','Course','Domain','System') {
my $output;
@@ -768,6 +741,60 @@
}
}
+sub build_roletext {
+ my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$ttype,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver) = @_;
+ my $roletext='<tr bgcolor='.$tbg.'>';
+ unless ($nochoose) {
+ if (!$button) {
+ if ($switchserver) {
+ $roletext.='<td><a href="/adm/logout?handover='.
+ $switchserver.'">'.&mt('Switch Server').'</a></td>';
+ } else {
+ $roletext.=('<td> </td>');
+ }
+ } elsif ($tstatus eq 'is') {
+ $roletext.=('<td><input type=submit value="'.
+ &mt('Select').'" name="'.
+ $trolecode.'"></td>');
+ } elsif ($tryagain) {
+ $roletext.=
+ '<td><input type=submit value="'.
+ &mt('Try Selecting Again').'" name="'.$trolecode.'"></td>';
+ } elsif ($advanced) {
+ $roletext.=
+ '<td><input type=submit value="'.
+ &mt('Re-Initialize').'" name="'.$trolecode.'"></td>';
+ } else {
+ $roletext.='<td> </td>';
+ }
+ }
+ $tremark.=&Apache::lonannounce::showday(time,1,
+ &Apache::lonannounce::readcalendar($tdom.'_'.$trest));
+
+
+ $roletext.='<td><font color="'.$tfont.'">'.$trole.
+ '</font></td><td><font color="'.$tfont.'">'.$ttype.
+ '</font></td><td><font color="'.$tfont.'">'.$twhere.
+ '</font></td><td><font color="'.$tfont.'">'.$tpstart.
+ '</font></td><td><font color="'.$tfont.'">'.$tpend.
+ '</font></td><td><font color="'.$tfont.'">'.$tremark.
+ ' </font></td></tr>'."\n";
+ return $roletext;
+}
+
+sub check_privs {
+ my ($cckey,$then,$now) = @_;
+ if ($ENV{$cckey}) {
+ my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont);
+ &role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);
+ unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) {
+ &set_privileges($1,$2);
+ }
+ } else {
+ &set_privileges($1,$2);
+ }
+}
+
sub check_fordc {
my ($dcroles,$then) = @_;
my $numdc = 0;
@@ -873,23 +900,41 @@
return $process_pick;
}
-sub select_recent_courses {
- my ($r,$roletext)=@_;
+sub display_recent_roles {
+ my ($r,$roletext,$recentroles)=@_;
my $advanced = $ENV{'user.adv'};
my $tryagain = $ENV{'form.tryagain'};
- my %recent=&Apache::lonnet::dump(&recent_filename('recent_roles'));
my $numrecent = 0;
my $roledisplay = '<tr bgcolor="#BBffBB">'.
'<td align="center" colspan="7">'.
&mt('Recent courses accessed by DC').
'</td></tr>'."\n";
- foreach my $courseid (sort keys %recent) {
- unless ($courseid =~/^error\:/) {
- print STDERR "$courseid\n";
- my ($dom,$crs) = split/_/,$courseid;
+ foreach my $rolekey (sort keys %{$recentroles}) {
+ unless ($rolekey =~/^error\:/) {
+ unless ($$roletext{$rolekey}) {
+ if ($rolekey =~ m-^user\.role.cc\./(\w+)/(\w+)$-) {
+ my $tcourseid = $1.'_'.$2;
+ my $trolecode = 'cc./'.$1.'/'.$2;
+ my $trole = Apache::lonnet::plaintext('cc');
+ my $twhere;
+ my $tbg='#77FF77';
+ my $tfont='#003300';
+ my %newhash=&Apache::lonnet::coursedescription($tcourseid);
+ if (%newhash) {
+ $twhere=$newhash{'description'}.
+ ' <font size="-2">'.
+ &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$2,$1,$tfont).
+ '</font>';
+ } else {
+ $twhere=&mt('Currently not available');
+ $ENV{'course.'.$tcourseid.'.description'}=$twhere;
+ }
+ $twhere.="<br />".&mt('Domain').":".$1;
+ $$roletext{$rolekey} = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$tfont,$trole,&mt('Course'),$twhere,'','','',1,'');
+ }
+ }
+ $roledisplay.=$$roletext{$rolekey};
$numrecent ++;
- my $crskey = 'user.role.cc./'.$dom.'/'.$crs;
- $roledisplay.=$$roletext{$crskey};
}
}
if ($numrecent > 0) {
--raeburn1100456828--