version 1.31, 2003/01/29 15:22:06
|
version 1.34, 2003/02/13 18:11:26
|
Line 36 package Apache::lonmenu;
|
Line 36 package Apache::lonmenu;
|
|
|
use strict; |
use strict; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::Constants qw(:common); |
|
use Apache::loncommon; |
use Apache::File; |
use Apache::File; |
use vars qw(@desklines $readdesk); |
use vars qw(@desklines $readdesk); |
|
|
|
# ============================================================= Start up remote |
|
|
|
sub startupremote { |
|
my ($lowerurl)=@_; |
|
if ($ENV{'browser.interface'} eq 'textual') { |
|
return ('<meta HTTP-EQUIV="Refresh" CONTENT="0.5; url='.$lowerurl.'" />'); |
|
} |
|
my $configmenu=&rawconfig(); |
|
return(<<ENDREMOTESTARTUP); |
|
<script> |
|
|
|
// ---------------------------------------------------------- The wait function |
|
var canceltim; |
|
function wait() { |
|
if ((menuloaded==1) || (tim==1)) { |
|
if (tim==0) { |
|
clearTimeout(canceltim); |
|
$configmenu |
|
window.location='$lowerurl'; |
|
} else { |
|
alert("Remote Control Timed Out."); |
|
} |
|
} else { |
|
setTimeout('wait();',100); |
|
} |
|
} |
|
|
|
function main() { |
|
canceltim=setTimeout('tim=1;',80000); |
|
wait(); |
|
} |
|
|
|
</script> |
|
ENDREMOTESTARTUP |
|
} |
|
|
|
sub setflags() { |
|
return(<<ENDSETFLAGS); |
|
<script> |
|
menuloaded=0; |
|
tim=0; |
|
</script> |
|
ENDSETFLAGS |
|
} |
|
|
|
sub maincall() { |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
|
return(<<ENDMAINCALL); |
|
<script> |
|
main(); |
|
</script> |
|
ENDMAINCALL |
|
} |
# ================================================================= Reopen menu |
# ================================================================= Reopen menu |
|
|
sub reopenmenu { |
sub reopenmenu { |
my $nothing=''; |
my $nothing=''; |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; } |
if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; } |
return('window.open("'.$nothing.'","'.$menuname.'","",false);'); |
return('window.open("'.$nothing.'","'.$menuname.'","",false);'); |
Line 52 sub reopenmenu {
|
Line 108 sub reopenmenu {
|
|
|
sub open { |
sub open { |
my $returnval=''; |
my $returnval=''; |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
unless (shift eq 'unix') { |
unless (shift eq 'unix') { |
# resizing does not work on linux because of virtual desktop sizes |
# resizing does not work on linux because of virtual desktop sizes |
Line 73 ENDOPEN
|
Line 130 ENDOPEN
|
|
|
sub switchmenu { |
sub switchmenu { |
my ($row,$col,$imgsrc,$texttop,$textbot,$action,$description)=@_; |
my ($row,$col,$imgsrc,$texttop,$textbot,$action,$description)=@_; |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
my $openwin=&openmenu(); |
my $openwin=&openmenu(); |
return(<<ENDSMENU); |
return(<<ENDSMENU); |
<script> |
<script> |
Line 86 ENDSMENU
|
Line 144 ENDSMENU
|
|
|
sub clear { |
sub clear { |
my ($row,$col)=@_; |
my ($row,$col)=@_; |
return qq(swmenu.clearbut($row,$col);); |
unless ($ENV{'browser.interface'} eq 'textual') { |
|
return qq(swmenu.clearbut($row,$col);); |
|
} else { return ''; } |
} |
} |
|
|
# Switch acts on the javascript that is executed when a button is clicked. |
# Switch acts on the javascript that is executed when a button is clicked. |
Line 95 sub switch {
|
Line 155 sub switch {
|
my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc)=@_; |
my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc)=@_; |
$act=~s/\$uname/$uname/g; |
$act=~s/\$uname/$uname/g; |
$act=~s/\$udom/$udom/g; |
$act=~s/\$udom/$udom/g; |
return "\n". |
unless ($ENV{'browser.interface'} eq 'textual') { |
|
return "\n". |
qq(swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); |
qq(swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); |
|
} else { |
|
my $text=$top.' '.$bot; |
|
$text=~s/\- //; |
|
return '<br /><a href="'.$act.'">'.$text.'</a> '.$desc; |
|
} |
} |
} |
|
|
sub secondlevel { |
sub secondlevel { |
Line 115 sub secondlevel {
|
Line 181 sub secondlevel {
|
|
|
sub openmenu { |
sub openmenu { |
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
if ($ENV{'browser.type'} eq 'explorer') { |
if ($ENV{'browser.type'} eq 'explorer') { |
return "window.open('javascript:void(0);','".$menuname."');"; |
return "window.open('javascript:void(0);','".$menuname."');"; |
} else { |
} else { |
Line 123 sub openmenu {
|
Line 190 sub openmenu {
|
} |
} |
|
|
sub rawconfig { |
sub rawconfig { |
my $r = shift; |
my $textualoverride=shift; |
my $output="var swmenu=".&openmenu(); |
my $output=''; |
|
unless ($ENV{'browser.interface'} eq 'textual') { |
|
$output.="var swmenu=".&openmenu(); |
|
} else { |
|
unless ($textualoverride) { return ''; } |
|
} |
my $uname=$ENV{'user.name'}; |
my $uname=$ENV{'user.name'}; |
my $udom=$ENV{'user.domain'}; |
my $udom=$ENV{'user.domain'}; |
my $adv=$ENV{'user.adv'}; |
my $adv=$ENV{'user.adv'}; |
Line 183 sub rawconfig {
|
Line 255 sub rawconfig {
|
} |
} |
$act =~ s/\$caname/$caname/g; |
$act =~ s/\$caname/$caname/g; |
my $home = &Apache::lonnet::homeserver($caname,$cadom); |
my $home = &Apache::lonnet::homeserver($caname,$cadom); |
if ($home eq $r->dir_config('lonHostID')) { |
if ($home eq $Apache::lonnet::perlvar{'lonHostID'}) { |
$output.=switch($caname,$cadom, |
$output.=switch($caname,$cadom, |
$row,$col,$img,$top,$bot,$act,$desc); |
$row,$col,$img,$top,$bot,$act,$desc); |
} |
} |
Line 191 sub rawconfig {
|
Line 263 sub rawconfig {
|
} |
} |
} |
} |
} |
} |
$output.="swmenu.syncclock(1000*".time.");"; |
unless ($ENV{'browser.interface'} eq 'textual') { |
|
$output.="swmenu.syncclock(1000*".time.");"; |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 215 sub footer {
|
Line 289 sub footer {
|
|
|
} |
} |
|
|
|
# ================================================ Handler when called directly |
|
|
|
|
|
sub handler { |
|
my $r = shift; |
|
$r->content_type('text/html'); |
|
$r->send_http_header; |
|
return OK if $r->header_only; |
|
|
|
my $bodytag=&Apache::loncommon::bodytag('Main Menu'); |
|
# ------------------------------------------------------------ Print the screen |
|
$r->print('<html><head><title>LON-CAPA Main Menu</title></head>'.$bodytag); |
|
$r->print(&rawconfig(1)); |
|
$r->print('</body></html>'); |
|
return OK; |
|
} |
|
|
# ================================================================ Main Program |
# ================================================================ Main Program |
|
|
BEGIN { |
BEGIN { |