+$inlineremote[21] $inlineremote[23]
+ENDARROWSINLINE
+ if (&hidden_button_check() ne 'yes') {
+ $inlinebuttons .= (<
+ENDINLINEICONS
+ }
+ } else {
+ $inlinebuttons=(<$inlineremote[21] $inlineremote[23]
+ENDFIRSTLINE
+ if (&hidden_button_check() ne 'yes') {
+ $inlinebuttons .= (<$inlineremote[61] $inlineremote[62] $inlineremote[63]
$inlineremote[71] $inlineremote[72] $inlineremote[73]
$inlineremote[81] $inlineremote[82] $inlineremote[83]
$inlineremote[91] $inlineremote[92] $inlineremote[93]
ENDINLINE
+ }
+ }
}
}
$result =(<'.$returnval.'';
@@ -802,7 +844,7 @@ sub clear {
# The javascript is usually similar to "go('/adm/roles')" or "cstrgo(..)".
sub switch {
- my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$nobreak)=@_;
+ my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat,$nobreak)=@_;
$act=~s/\$uname/$uname/g;
$act=~s/\$udom/$udom/g;
$top=&mt($top);
@@ -810,6 +852,9 @@ sub switch {
$desc=&mt($desc);
$img=&mt($img);
+ my $idx=10*$row+$col;
+ $category_members{$cat}.=':'.$idx;
+
unless (($env{'browser.interface'} eq 'textual') ||
($env{'environment.remote'} eq 'off')) {
# Remote
@@ -821,14 +866,17 @@ sub switch {
my $text=$top.' '.$bot;
$text=~s/\s*\-\s*//gs;
if ($nobreak) {
- $inlineremote[10*$row+$col]=
+ $inlineremote[$idx]=
''.$text.' ';
} else {
- $inlineremote[10*$row+$col]="\n ".
+ $inlineremote[$idx]="\n ".
$desc.' '.$text.' ';
}
} else {
# Inline Remote
+ if ($env{'environment.icons'} ne 'classic') {
+ $img=~s/\.gif$/\.png/;
+ }
if ($nobreak==2) { return ''; }
my $text=$top.' '.$bot;
$text=~s/\s*\-\s*//gs;
@@ -842,27 +890,31 @@ sub switch {
if ($env{'browser.interface'} eq 'faketextual') {
# Accessibility
if ($nobreak==3) {
- $inlineremote[10*$row+$col]="\n".
+ $inlineremote[$idx]="\n".
'';
} elsif ($nobreak) {
- $inlineremote[10*$row+$col]="\n".
+ $inlineremote[$idx]="\n ".
'
- ';
+ ';
} else {
- $inlineremote[10*$row+$col]="\n ".
+ $inlineremote[$idx]="\n ".
' ';
+ ' ';
}
} else {
# Inline Menu
- $inlineremote[10*$row+$col]=
- ''.$pic.
- ' ';
+ if ($env{'environment.icons'} eq 'iconsonly') {
+ $inlineremote[$idx]=''.$pic.' ';
+ } else {
+ $inlineremote[$idx]=
+ '';
+ }
}
}
return '';
@@ -871,12 +923,12 @@ sub switch {
sub secondlevel {
my $output='';
my
- ($uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc)=@_;
+ ($uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat)=@_;
if ($prt eq 'any') {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
} elsif ($prt=~/^r(\w+)/) {
if ($rol eq $1) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
}
return $output;
@@ -891,10 +943,32 @@ sub openmenu {
}
sub inlinemenu {
- @inlineremote=();
- undef @inlineremote;
+ undef(@inlineremote);
+ undef(%category_members);
&rawconfig(1);
- return join('',map { (defined($_)?$_:'') } @inlineremote);
+ my $output='';
+ for (my $col=1; $col<=2; $col++) {
+ $output.='';
+ for (my $row=1; $row<=8; $row++) {
+ foreach my $cat (keys(%category_members)) {
+ if ($category_positions{$cat} ne "$col,$row") { next; }
+ $output.=' ';
+ my %active=();
+ foreach my $menu_item (split(/\:/,$category_members{$cat})) {
+ if ($inlineremote[$menu_item]) {
+ $active{$menu_item}=1;
+ }
+ }
+ foreach my $item (sort(keys(%active))) {
+ $output.=$inlineremote[$item];
+ }
+ $output.='
';
+ }
+ }
+ $output.=" ";
+ }
+ $output.="
";
+ return $output;
}
sub rawconfig {
@@ -925,11 +999,12 @@ sub rawconfig {
my $rol=$env{'request.role'};
my $requested_domain = $env{'request.role.domain'};
foreach my $line (@desklines) {
- my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc)=split(/\:/,$line);
+ my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc,$cat)=split(/\:/,$line);
$prt=~s/\$uname/$uname/g;
$prt=~s/\$udom/$udom/g;
$prt=~s/\$crs/$crs/g;
$prt=~s/\$requested_domain/$requested_domain/g;
+ if ($category_names{$cat}!~/\w/) { $cat='oth'; }
my $type = &Apache::loncommon::course_type();
if ($type eq 'Group') {
$desc = &convert_menu_function($desc,$type);
@@ -938,29 +1013,29 @@ sub rawconfig {
$output.=&clear($row,$col);
} elsif ($pro eq 'any') {
$output.=&secondlevel(
- $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
+ $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
} elsif ($pro eq 'smp') {
unless ($adv) {
$output.=&secondlevel(
- $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
+ $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro eq 'adv') {
if ($adv) {
$output.=&secondlevel(
- $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
+ $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
}
} elsif (($pro=~/^p(\w+)/) && ($prt)) {
if (&Apache::lonnet::allowed($1,$prt)) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro eq 'course') {
if ($env{'request.course.fn'}) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro =~ /^courseenv_(.*)$/) {
my $key = $1;
if ($env{'course.'.$env{'request.course.id'}.'.'.$key}) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro =~ /^course_(.*)$/) {
# Check for permissions inside of a course
@@ -968,7 +1043,7 @@ sub rawconfig {
(&Apache::lonnet::allowed($1,$env{'request.course.id'}.
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))
)) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro eq 'author') {
if ($author) {
@@ -979,7 +1054,7 @@ sub rawconfig {
my $caname=$env{'user.name'};
if ($prt eq 'rca') {
($cadom,$caname)=
- ($env{'request.role'}=~/(\w+)\/(\w+)$/);
+ ($env{'request.role'}=~/($match_domain)\/($match_username)$/);
}
$act =~ s/\$caname/$caname/g;
my $home = &Apache::lonnet::homeserver($caname,$cadom);
@@ -987,8 +1062,8 @@ sub rawconfig {
my @ids=&Apache::lonnet::current_machine_ids();
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
if ($allowed) {
- $output.=switch($caname,$cadom,
- $row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($caname,$cadom,
+ $row,$col,$img,$top,$bot,$act,$desc,$cat);
}
}
}
@@ -1067,13 +1142,16 @@ sub utilityfunctions {
'add_entries' => {
'onload' => 'javascript:document.goannotate.submit();'}});
+ my $end_page_annotate =
+ &Apache::loncommon::end_page({'js_ready' => 1});
+
my $start_page_bookmark =
&Apache::loncommon::start_page('Bookmarks',undef,
{'only_body' => 1,
'js_ready' => 1,
'bgcolor' => '#BBBBBB',});
- my $end_page =
+ my $end_page_bookmark =
&Apache::loncommon::end_page({'js_ready' => 1});
return (<"
- +" "
+ +" "
+"<\\/form>"
- +'$end_page');
+ +'$end_page_annotate');
annotator.document.close();
}
@@ -1215,7 +1293,7 @@ function set_bookmark() {
+"value='Save' /> <\\/center><\\/td>"
+"<\\/tr><\\/table><\\/form><\\/center>"
- +'$end_page' );
+ +'$end_page_bookmark' );
bmquery.document.close();
}
@@ -1275,6 +1353,16 @@ sub convert_menu_function {
return $rolename;
}
+sub hidden_button_check {
+ my $hidden;
+ if ($env{'request.course.id'} eq '') {
+ return;
+ }
+ if ($env{'request.role.adv'}) {
+ return;
+ }
+ return &Apache::lonnet::EXT('resource.0.buttonshide');
+}
# ================================================================ Main Program
@@ -1287,7 +1375,11 @@ BEGIN {
$configline=(split(/\#/,$configline))[0];
$configline=~s/^\s+//;
chomp($configline);
- if ($configline) {
+ if ($configline=~/^cat\:/) {
+ my @entries=split(/\:/,$configline);
+ $category_positions{$entries[2]}=$entries[1];
+ $category_names{$entries[2]}=$entries[3];
+ } elsif ($configline) {
push(@desklines,$configline);
}
}