--- loncom/auth/lonroles.pm 2004/11/12 23:29:55 1.109 +++ loncom/auth/lonroles.pm 2005/03/03 07:16:44 1.116 @@ -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.116 2005/03/03 07:16:44 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -100,21 +100,13 @@ sub handler { "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; } @@ -129,6 +121,13 @@ sub handler { if ($tstatus eq 'is') { $where=~s/^\///; my ($cdom,$cnum,$csec)=split(/\//,$where); +# store role if recent_role list being kept + if ($ENV{'environment.recentroles'}) { + &Apache::lonhtmlcommon::store_recent('roles', + $trolecode,' '); + } + + # check for keyed access if (($role eq 'st') && ($ENV{'course.'.$cdom.'_'.$cnum.'.keyaccess'} eq 'yes')) { @@ -263,16 +262,6 @@ ENDENTERKEY '.course.helper.not.run'}) { $furl = "/adm/helper/course.initialization.helper"; } - # Check to see if the user is a DC selecting a course - if (($numdc > 0) && ($role eq 'cc')) { - my $formaction = '/adm/roles/'; - my ($dcdom,$pickedcourse) = split/_/,$courseid; - if ($ENV{'user.role.dc./'.$dcdom.'/'}) { - &Apache::lonhtmlcommon::store_recent('recent_roles', - $courseid,$formaction); - } - } - # # Send the user to the course they selected &redirect_user($r,&mt('Entering Course'), $furl,$msg, @@ -350,7 +339,7 @@ ENDHEADER $r->print("

LON-CAPA Access Control

"); $r->print("
Access  : ".
                   Apache::lonnet::plaintext($priv)."\n");
-        $r->print("Resource: $fn\n");
+        $r->print("Resource: ".&Apache::lonenc::check_encrypt($fn)."\n");
         $r->print("Action  : $msg\n

"); } else { if ($ENV{'user.error.msg'}) { @@ -387,14 +376,14 @@ ENDHEADER $fn.='?'.$ENV{'REDIRECT_QUERY_STRING'}; } $r->print('
'); - $r->print(''); - $r->print(''); + $r->print(''); + $r->print(''); } if ($ENV{'user.adv'}) { $r->print( - '
'.&mt('Show all roles').': print(' checked'); } - $r->print('>'); + '
'); } my (%roletext,%sortrole,%roleclass); @@ -550,41 +539,7 @@ ENDHEADER $sortkey=$role.$twhere; } - $roletext.=''; - unless ($nochoose) { - if (!$button) { - if ($switchserver) { - $roletext.=''.&mt('Switch Server').''; - } else { - $roletext.=(' '); - } - } elsif ($tstatus eq 'is') { - $roletext.=(''); - } elsif ($tryagain) { - $roletext.= - ''; - } elsif ($advanced) { - $roletext.= - ''; - } else { - $roletext.=' '; - } - } - $tremark.=&Apache::lonannounce::showday(time,1, - &Apache::lonannounce::readcalendar($tdom.'_'.$trest)); - - $roletext.=''.$trole. - ''.$ttype. - ''.$twhere. - ''.$tpstart. - ''.$tpend. - ''.$tremark. - ' '."\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; @@ -631,8 +586,32 @@ ENDHEADER } if ($haverole) { $doheaders++; } } + + if ($ENV{'environment.recentroles'}) { + my %recent_roles = + &Apache::lonhtmlcommon::get_recent('roles',$ENV{'environment.recentrolesn'}); + my $output=''; + foreach (sort(keys(%recent_roles))) { + if (defined($roletext{'user.role.'.$_})) { + $output.=$roletext{'user.role.'.$_}; + } elsif ($numdc > 0) { + unless ($_ =~/^error\:/) { + $output.=&display_cc_role('user.role.'.$_); + } + } + } + if ($output) { + $r->print("". + &mt('Recent Roles').""); + $r->print($output); + $r->print(""); + $doheaders ++; + } + } + if ($numdc > 0) { - &select_recent_courses($r,\%roletext); + $r->print(&coursepick_jscript()); + $r->print(&Apache::loncommon::coursebrowser_javascript()); } foreach my $type ('Construction Space','Course','Domain','System') { my $output; @@ -649,7 +628,7 @@ ENDHEADER if ($output) { if ($doheaders > 0) { $r->print("". - "".&mt($type).""); + "".&mt($type).""); } $r->print($output); } @@ -768,6 +747,60 @@ sub role_status { } } +sub build_roletext { + my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$ttype,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver) = @_; + my $roletext=''; + unless ($nochoose) { + if (!$button) { + if ($switchserver) { + $roletext.=''.&mt('Switch Server').''; + } else { + $roletext.=(' '); + } + } elsif ($tstatus eq 'is') { + $roletext.=(''); + } elsif ($tryagain) { + $roletext.= + ''; + } elsif ($advanced) { + $roletext.= + ''; + } else { + $roletext.=' '; + } + } + $tremark.=&Apache::lonannounce::showday(time,1, + &Apache::lonannounce::readcalendar($tdom.'_'.$trest)); + + + $roletext.=''.$trole. + ''.$ttype. + ''.$twhere. + ''.$tpstart. + ''.$tpend. + ''.$tremark. + ' '."\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; @@ -791,26 +824,23 @@ sub check_fordc { sub courselink { my ($dcdom) = @_; - my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,$dcdom); - my $verify_script = &coursepick_jscript($dcdom); my $courseform=&Apache::loncommon::selectcourse_link - ('rolechoice','dccourse_'.$dcdom,'dcdomain_'.$dcdom,'coursedesc_'.$dcdom); + ('rolechoice','dccourse_'.$dcdom,'dcdomain_'.$dcdom,'coursedesc_'.$dcdom,$dcdom); my $hiddenitems = ''. ''. ''. ''; - return $cb_jscript.$verify_script.$courseform.$hiddenitems; + return $courseform.$hiddenitems; } sub coursepick_jscript { - my ($dcdom) = @_; my $verify_script = <<"END";