--- loncom/interface/lonmenu.pm 2003/04/02 22:02:19 1.48
+++ loncom/interface/lonmenu.pm 2003/04/03 20:25:08 1.53
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.48 2003/04/02 22:02:19 www Exp $
+# $Id: lonmenu.pm,v 1.53 2003/04/03 20:25:08 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -73,6 +73,7 @@ ENDMAINMENU
Main Menu
Launch Remote Control
+
@@ -98,6 +99,7 @@ sub registerurl {
"\n\n";
}
if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off') ||
((($ENV{'request.publicaccess'}) ||
(!&Apache::lonnet::is_on_map($ENV{'REQUEST_URI'}))) &&
(!$forcereg))) {
@@ -120,7 +122,11 @@ sub innerregister {
$Apache::lonxml::registered=1;
- my $textual=($ENV{'browser.interface'} eq 'textual');
+ my $textinter=($ENV{'browser.interface'} eq 'textual');
+ my $noremote=($ENV{'environment.remote'} eq 'off');
+
+ my $textual=($textinter || $noremote);
+
my $reopen=&Apache::lonmenu::reopenmenu();
my $newmail='';
@@ -352,10 +358,16 @@ sub unloadevents() {
sub startupremote {
my ($lowerurl)=@_;
- if ($ENV{'browser.interface'} eq 'textual') {
+ if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) {
return ('');
}
+#
+# The Remote actually gets launched!
+#
my $configmenu=&rawconfig();
+ my $esclowerurl=&Apache::lonnet::escape($lowerurl);
+
return(<
@@ -385,7 +397,7 @@ function wait() {
$configmenu
window.location='$lowerurl';
} else {
- alert("Remote Control timed out. It is possible that it was blocked by pop-up window filters.");
+ window.location='/adm/remote?action=collapse&url=$esclowerurl';
}
} else {
wheelswitch();
@@ -394,7 +406,7 @@ function wait() {
}
function main() {
- canceltim=setTimeout('tim=1;',60000);
+ canceltim=setTimeout('tim=1;',30000);
window.status='-';
wait();
}
@@ -413,7 +425,8 @@ ENDSETFLAGS
}
sub maincall() {
- if ($ENV{'browser.interface'} eq 'textual') { return ''; }
+ if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) { return ''; }
return(<
main();
@@ -423,7 +436,8 @@ ENDMAINCALL
# ================================================================= Reopen menu
sub reopenmenu {
- 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'};
my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
return('window.open('.$nothing.',"'.$menuname.'","",false);');
@@ -433,7 +447,8 @@ sub reopenmenu {
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
@@ -457,7 +472,8 @@ 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 ''; }
}
@@ -470,10 +486,21 @@ 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/\- //;
+ return "\n".($nobreak?' ':'
').
+ ''.$text.' '.
+ ($nobreak?'':$desc);
} else {
+# Inline Remote
if ($nobreak==2) { return ''; }
my $text=$top.' '.$bot;
$text=~s/\- //;
@@ -499,7 +526,8 @@ sub secondlevel {
sub openmenu {
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
- if ($ENV{'browser.interface'} eq 'textual') { return ''; }
+ if (($ENV{'browser.interface'} eq 'textual') ||
+ ($ENV{'environment.remote'} eq 'off')) { return ''; }
my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
return "window.open(".$nothing.",'".$menuname."');";
}
@@ -507,7 +535,8 @@ sub openmenu {
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 ';";
@@ -580,7 +609,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;
@@ -589,7 +619,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(<
@@ -613,7 +644,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 (<send_http_header;
return OK if $r->header_only;
- my $utility=&utilityfunctions();
my $form=&serverform();
my $bodytag=&Apache::loncommon::bodytag('Main Menu');
-# ------------------------------------------------------------ Print the screen
+# ---- Print the screen, pretent to be in text mode to generate text-based menu
+ unless ($ENV{'brower.interface'} eq 'textual') {
+ $ENV{'environment.remote'}='off';
+ }
+ my $utility=&utilityfunctions();
$r->print(<
LON-CAPA Main Menu