--- loncom/auth/lonroles.pm 2011/10/25 15:15:02 1.263 +++ loncom/auth/lonroles.pm 2012/08/03 17:35:39 1.269.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.263 2011/10/25 15:15:02 www Exp $ +# $Id: lonroles.pm,v 1.269.2.1 2012/08/03 17:35:39 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -149,6 +149,7 @@ sub redirect_user { &Apache::loncommon::content_type($r,'text/html'); &Apache::loncommon::no_cache($r); $r->send_http_header; + my $swinfo=&Apache::lonmenu::rawconfig(); # Breadcrumbs my $brcrum = [{'href' => $url, @@ -163,6 +164,11 @@ sub redirect_user { $url=~s/ /\%20/g; $r->print(< +// +

$msg

$end_page ENDREDIR @@ -221,7 +227,7 @@ sub handler { } else { $checkingtxt = &mt('Checking for new roles ...'); } - $updateresult = '
'.$checkingtxt.'
'; + $updateresult = ''.$checkingtxt.''; $updateresult .= &update_session_roles(); &Apache::lonnet::appenv({'user.update.time' => $now}); $update = $now; @@ -266,6 +272,7 @@ sub handler { "request.course.fn" => '', "request.course.uri" => '', "request.course.sec" => '', + "request.course.tied" => '', "request.role" => 'cm', "request.role.adv" => $env{'user.adv'}, "request.role.domain" => $env{'user.domain'}}); @@ -519,7 +526,8 @@ ENDENTERKEY if ($dest =~ m{^/adm/coursedocs\?folderpath}) { if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { my $chome = &Apache::lonnet::homeserver($cnum,$cdom); - &update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum); + &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome, + $cdom.'_'.$cnum); } } $r->internal_redirect($dest); @@ -781,7 +789,7 @@ ENDHEADER if ($env{'form.showall'}) { $showall .= ' checked="checked" '; } - $showall .= ' />'.&mt('Show all roles').''. + $showall .= ' />'.&mt('Show all roles').' '. ''; if ($do_update) { $r->print('
'. @@ -954,7 +962,12 @@ ENDHEADER $r->print('

'.&mt('Current Privileges').'

'); $r->print(&privileges_info()); } - $r->print(&Apache::lonnet::getannounce()); + my $announcements = &Apache::lonnet::getannounce(); + $r->print( + '
'. + '

'.&mt('Announcements').'

'. + $announcements + ) unless (!$announcements); if ($advanced) { my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); $r->print('

' @@ -1613,19 +1626,17 @@ sub check_forcc { } else { $ccrole = 'cc'; } - if ($cdom ne '' && $cnum ne '') { - if (&Apache::lonnet::is_course($cdom,$cnum)) { - my $envkey = 'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum; - if (defined($env{$envkey})) { - $is_cc = 1; - my ($tstart,$tend)=split(/\./,$env{$envkey}); - my $limit = $update; - if ($env{'request.role'} eq $ccrole.'./'.$cdom.'/'.$cnum) { - $limit = $then; - } - if ($tstart && $tstart>$refresh) { $is_cc = 0; } - if ($tend && $tend <$limit) { $is_cc = 0; } + if (&Apache::lonnet::is_course($cdom,$cnum)) { + my $envkey = 'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum; + if (defined($env{$envkey})) { + $is_cc = 1; + my ($tstart,$tend)=split(/\./,$env{$envkey}); + my $limit = $update; + if ($env{'request.role'} eq $ccrole.'./'.$cdom.'/'.$cnum) { + $limit = $then; } + if ($tstart && $tstart>$refresh) { $is_cc = 0; } + if ($tend && $tend <$limit) { $is_cc = 0; } } } return $is_cc; @@ -1683,43 +1694,6 @@ sub check_release_required { return ($switchserver,$warning); } -sub update_content_constraints { - my ($cdom,$cnum,$chome,$cid) = @_; - my %curr_reqd_hash = &Apache::lonnet::userenvironment($cdom,$cnum,'internal.releaserequired'); - my ($reqdmajor,$reqdminor) = split(/\./,$curr_reqd_hash{'internal.releaserequired'}); - my %checkresponsetypes; - foreach my $key (keys(%Apache::lonnet::needsrelease)) { - my ($item,$name,$value) = split(/:/,$key); - if ($item eq 'resourcetag') { - if ($name eq 'responsetype') { - $checkresponsetypes{$value} = $Apache::lonnet::needsrelease{$key} - } - } - } - my $navmap = Apache::lonnavmaps::navmap->new(); - if (defined($navmap)) { - my %allresponses; - foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() },1,0)) { - my %responses = $res->responseTypes(); - foreach my $key (keys(%responses)) { - next unless(exists($checkresponsetypes{$key})); - $allresponses{$key} += $responses{$key}; - } - } - foreach my $key (keys(%allresponses)) { - my ($major,$minor) = split(/\./,$checkresponsetypes{$key}); - if (($major > $reqdmajor) || ($major == $reqdmajor && $minor > $reqdminor)) { - ($reqdmajor,$reqdminor) = ($major,$minor); - } - } - undef($navmap); - } - unless (($reqdmajor eq '') && ($reqdminor eq '')) { - &Apache::lonnet::update_released_required($reqdmajor.'.'.$reqdminor,$cdom,$cnum,$chome,$cid); - } - return; -} - sub courselink { my ($dcdom,$rowtype) = @_; my $courseform=&Apache::loncommon::selectcourse_link @@ -1871,7 +1845,7 @@ sub update_session_roles { ['active','future','previous'], undef,undef,1); my ($msg,@newsec,$oldsec,$currrole_expired,@changed_roles, - %changed_groups,%dbroles, %deletedroles,%allroles,%allgroups, + %changed_groups,%dbroles,%deletedroles,%allroles,%allgroups, %userroles,%checkedgroup,%crprivs,$hasgroups,%rolechange, %groupchange,%newrole,%newgroup,%customprivchg,%groups_roles, @rolecodes); @@ -2108,7 +2082,9 @@ sub update_session_roles { foreach my $priv (@privs) { my ($blank,@prv) = split(/:/,$priv); @prv = map { $_ .= (/\&\w+$/ ? '':'&F') } @prv; - $priv = ':'.join(':',sort(@prv)); + if (@prv) { + $priv = ':'.join(':',sort(@prv)); + } $crprivs{$rest}{$scopes[$i]} = $priv; $i++; } @@ -2212,21 +2188,30 @@ sub update_session_roles { $msg .= '
'.&mt('However you can continue to use this role until you logout, click the "Re-Select" button, or your session has been idle for more than 24 hours.').'

'; } if (!@changed_roles || !(keys(%changed_groups))) { - $msg .= '
    '; + my ($rolesmsg,$groupsmsg); if (!@changed_roles) { - $msg .= '
  • '; if (&Apache::loncommon::show_course()) { - $msg .= &mt('No new courses or communities'); + $rolesmsg = &mt('No new courses or communities'); } else { - $msg .= &mt('No role changes'); + $rolesmsg = &mt('No role changes'); } - $msg .= '
  • '; } if ($hasgroups && !(keys(%changed_groups)) && !(grep(/gr/,@changed_roles))) { - $msg .= '
  • '.&mt('No changes in course/community groups').'
  • '; + $groupsmsg = &mt('No changes in course/community groups'); } - $msg .= '
'; if (!@changed_roles && !(keys(%changed_groups))) { + if (($msg ne '') || ($groupsmsg ne '')) { + $msg .= '
    '; + if ($rolesmsg) { + $msg .= '
  • '.$rolesmsg.'
  • '; + } + if ($groupsmsg) { + $msg .= '
  • '.$groupsmsg.'
  • '; + } + $msg .= '
'; + } else { + $msg = ' '.$rolesmsg.'

'; + } return $msg; } } @@ -2279,7 +2264,7 @@ sub update_session_roles { } if (keys(%deletedroles) > 0) { $changemsg .= '
  • '. - &mt('Existing roles deleted').'
  • '. + &mt('Existing roles now expired').''. '
      '; foreach my $item (sort(keys(%deletedroles))) { $changemsg .= '
    • '.$item.'
    • ';