main();
@@ -393,18 +554,19 @@ ENDMAINCALL
# ================================================================= Reopen menu
sub reopenmenu {
- my $nothing='';
- if ($ENV{'browser.interface'} eq 'textual') { return ''; }
+ if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) { return ''; }
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
- if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; }
- return('window.open("'.$nothing.'","'.$menuname.'","",false);');
+ my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
+ return('window.open('.$nothing.',"'.$menuname.'","",false);');
}
# =============================================================== Open the menu
sub open {
my $returnval='';
- if ($ENV{'browser.interface'} eq 'textual') { return ''; }
+ if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) { return ''; }
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
unless (shift eq 'unix') {
# resizing does not work on linux because of virtual desktop sizes
@@ -419,6 +581,7 @@ ENDRESIZE
window.status='Opening LON-CAPA Remote Control';
var menu=window.open("/res/adm/pages/menu.html","$menuname",
"height=350,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5");
+self.name='loncapaclient';
ENDOPEN
return '';
}
@@ -428,9 +591,13 @@ ENDOPEN
sub clear {
my ($row,$col)=@_;
- unless ($ENV{'browser.interface'} eq 'textual') {
+ unless (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) {
return "\n".qq(window.status+='.';swmenu.clearbut($row,$col););
- } else { return ''; }
+ } else {
+ $inlineremote[10*$row+$col]='';
+ return '';
+ }
}
# ============================================ Switch a button or create a link
@@ -441,16 +608,33 @@ sub switch {
my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$nobreak)=@_;
$act=~s/\$uname/$uname/g;
$act=~s/\$udom/$udom/g;
- unless ($ENV{'browser.interface'} eq 'textual') {
+ unless (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) {
+# Remote
return "\n".
qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc"););
+ } elsif ($ENV{'browser.interface'} eq 'textual') {
+# Accessibility
+ if ($nobreak==2) { return ''; }
+ my $text=$top.' '.$bot;
+ $text=~s/\s*\-\s*//gs;
+ $inlineremote[10*$row+$col]="\n".($nobreak?' ':'
').
+ ''.$text.' '.
+ ($nobreak?'':$desc);
} else {
+# Inline Remote
if ($nobreak==2) { return ''; }
my $text=$top.' '.$bot;
- $text=~s/\- //;
- return "\n".($nobreak?' ':'
').
- ''.$text.' '.($nobreak?'':$desc);
+ $text=~s/\s*\-\s*//gs;
+ $inlineremote[10*$row+$col]="\n".
+ ($nobreak==3?' | '.$text.' | '.
+ ($nobreak?'':''.$desc.'').($nobreak!=1?'':'');
}
+ return '';
}
sub secondlevel {
@@ -469,18 +653,24 @@ sub secondlevel {
sub openmenu {
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
- if ($ENV{'browser.interface'} eq 'textual') { return ''; }
- if ($ENV{'browser.type'} eq 'explorer') {
- return "window.open('javascript:void(0);','".$menuname."');";
- } else {
- return "window.open('','".$menuname."');";
- }
+ if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) { return ''; }
+ my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
+ return "window.open(".$nothing.",'".$menuname."');";
+}
+
+sub inlinemenu {
+ @inlineremote=();
+ undef @inlineremote;
+ &rawconfig(1);
+ return join('',map { (defined($_)?$_:'') } @inlineremote);
}
sub rawconfig {
my $textualoverride=shift;
my $output='';
- unless ($ENV{'browser.interface'} eq 'textual') {
+ unless (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) {
$output.=
"window.status='Opening Remote Control';var swmenu=".&openmenu().
"\nwindow.status='Configuring Remote Control ';";
@@ -524,7 +714,7 @@ sub rawconfig {
$output.=&secondlevel(
$uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
}
- } elsif (($pro=~/p(\w+)/) && ($prt)) {
+ } elsif (($pro=~/^p(\w+)/) && ($prt)) {
if (&Apache::lonnet::allowed($1,$prt)) {
$output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
}
@@ -532,6 +722,14 @@ sub rawconfig {
if ($ENV{'request.course.fn'}) {
$output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
}
+ } elsif ($pro =~ /^course_(.*)$/) {
+ # Check for permissions inside of a course
+ if (($ENV{'request.course.id'}) &&
+ (&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);
+ }
} elsif ($pro eq 'author') {
if ($author) {
if ((($prt eq 'rca') && ($ENV{'request.role'}=~/^ca/)) ||
@@ -553,7 +751,8 @@ sub rawconfig {
}
}
}
- unless ($ENV{'browser.interface'} eq 'textual') {
+ unless (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) {
$output.="\nwindow.status='Synchronizing Time';swmenu.syncclock(1000*".time.");\nwindow.status='Remote Control Configured.';";
}
return $output;
@@ -562,7 +761,8 @@ sub rawconfig {
# ======================================================================= Close
sub close {
- if ($ENV{'browser.interface'} eq 'textual') { return ''; }
+ if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) { return ''; }
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
return(<
@@ -586,7 +786,8 @@ sub footer {
}
sub utilityfunctions {
- unless ($ENV{'browser.interface'} eq 'textual') { return ''; }
+ unless (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) { return ''; }
my $currenturl=$ENV{'REQUEST_URI'};
my $currentsymb=$ENV{'request.symb'};
return (<
+ |