--- loncom/interface/lonmenu.pm 2008/02/03 05:07:58 1.234
+++ loncom/interface/lonmenu.pm 2008/06/13 01:07:50 1.238
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.234 2008/02/03 05:07:58 raeburn Exp $
+# $Id: lonmenu.pm,v 1.238 2008/06/13 01:07:50 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -74,6 +74,7 @@ sub initlittle {
'main' => 'Main Menu',
'roles' => (&show_course()?
'Courses':'Roles'),
+ 'other' => 'Other Roles',
'docs' => 'Edit Course',
'exit' => 'Exit',
'login' => 'Log In',
@@ -101,7 +102,10 @@ sub menubuttons {
my $reloadlink='';
my $docs='';
my $groups='';
+ my $roles=''.$lt{'roles'}.'';
+ my $role_selector;
my $showgroups=0;
+ my ($cnum,$cdom);
my $escurl=&escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'}));
my $escsymb=&escape(&Apache::lonenc::check_encrypt($env{'request.symb'}));
@@ -117,15 +121,21 @@ sub menubuttons {
}
}
if ($env{'request.course.id'}) {
+ $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my %coursegroups;
my $viewgrps_permission =
&Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
if (!$viewgrps_permission) {
- %coursegroups = &Apache::lonnet::get_active_groups($env{'user.domain'},$env{'user.name'},$env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'});
+ %coursegroups = &Apache::lonnet::get_active_groups($env{'user.domain'},$env{'user.name'},$cdom,$cnum);
}
if ((keys(%coursegroups) > 0) || ($viewgrps_permission)) {
$showgroups = 1;
}
+ $role_selector = &roles_selector($cdom,$cnum);
+ if ($role_selector) {
+ $roles = ''.$role_selector.' '.$lt{'other'}.'';
+ }
}
if ($env{'browser.interface'} eq 'textual') {
@@ -160,8 +170,7 @@ $utility
@@ -197,6 +206,7 @@ ENDMAINMENU
ENDINLINEMENU
}
+ $roles = ''.$lt{'roles'}.' | ';
# Do we have a NAV link?
if ($env{'request.course.id'}) {
my $link='/adm/navmaps?postdata='.$escurl.'&postsymb='.
@@ -225,6 +235,9 @@ ENDGROUPS
$lt{'ret'} |
ENDRELOAD
}
+ if ($role_selector) {
+ $roles = ''.$role_selector.' | '.$lt{'other'}.' | ';
+ }
}
if (($env{'request.state'} eq 'construct') && ($env{'request.course.id'})) {
my $escreload=&escape('return:');
@@ -260,7 +273,7 @@ $navmaps
$docs
$groups
$remote
-$lt{'roles'} |
+$roles
$helplink |
$lt{'exit'} |
@@ -421,7 +434,7 @@ sub innerregister {
my $action = "go('/priv/".$env{'user.name'}."');";
my $cadom = $env{'request.role.domain'};
my $caname = $env{'user.name'};
- my $desc = "Enter my resource construction space";
+ my $desc = "Enter my construction space";
# Set defaults for co-authors
if ($env{'request.role'} =~ /^ca/) {
($cadom,$caname)=($env{'request.role'}=~/($match_domain)\/($match_username)$/);
@@ -885,8 +898,9 @@ sub switch {
$top=&mt($top);
$bot=&mt($bot);
$desc=&mt($desc);
- $img=&mt($img);
-
+ if (($env{'environment.remote'} ne 'off') || ($env{'environment.icons'} eq 'classic')) {
+ $img=&mt($img);
+ }
my $idx=10*$row+$col;
$category_members{$cat}.=':'.$idx;
@@ -1410,6 +1424,117 @@ sub hidden_button_check {
return $buttonshide;
}
+sub roles_selector {
+ my ($cdom,$cnum) = @_;
+ my $now = time;
+ my %courseroles;
+ my $is_cc;
+ my $role_selector;
+ if ($env{'user.role.cc./'.$cdom.'/'.$cnum}) {
+ my ($start,$end) = split(/\./,$env{'user.role.cc./'.$cdom.'/'.$cnum});
+
+ if ((($start) && ($start<0)) ||
+ (($end) && ($end<$now)) ||
+ (($start) && ($now<$start))) {
+ $is_cc = 0;
+ } else {
+ $is_cc = 1;
+ }
+ }
+ if ($is_cc) {
+ my %adv_roles =
+ &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);
+ foreach my $role (keys(%adv_roles),'st') {
+ my ($urole,$usec) = split(/:/,$role);
+ @{$courseroles{$urole}} = 'none';
+ }
+ } else {
+ foreach my $item (keys(%env)) {
+ if ($item =~ m-^user\.role\.([^.]+)\./\Q$cdom\E/\Q$cnum\E(/?\w*)$-) {
+ my $role = $1;
+ my $sec = $2;
+ next if ($role eq 'gr');
+ my ($start,$end) = split(/\./,$env{$item});
+ next if (($start && $start > $now) || ($end && $end < $now));
+ if ($sec eq '') {
+ $sec = 'none';
+ }
+ if (ref($courseroles{$role}) eq 'ARRAY') {
+ if (!grep(/^Q$sec\E$/,@{$courseroles{$role}})) {
+ push(@{$courseroles{$role}},$sec);
+ }
+ } else {
+ @{$courseroles{$role}} = ($sec);
+ }
+ }
+ }
+ }
+ my @roles_order = ('cc','in','ta','ep','ad','st');
+ if (keys(%courseroles) > 1) {
+ $role_selector = &jump_to_role($cdom,$cnum);
+ $role_selector .= '';
+ }
+ return $role_selector;
+}
+
+sub jump_to_role {
+ my ($cdom,$cnum) = @_;
+ my $output = <<"END";
+
+END
+ return $output;
+}
+
+
# ================================================================ Main Program
BEGIN {