version 1.27, 2002/11/12 13:37:43
|
version 1.36, 2003/02/14 14:30:09
|
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> |
|
|
|
function wheelswitch() { |
|
if (window.status=='|') { |
|
window.status='/'; |
|
} else { |
|
if (window.status=='/') { |
|
window.status='-'; |
|
} else { |
|
if (window.status=='-') { |
|
window.status='\\\\'; |
|
} else { |
|
if (window.status=='\\\\') { window.status='|'; } |
|
} |
|
} |
|
} |
|
} |
|
|
|
// ---------------------------------------------------------- The wait function |
|
var canceltim; |
|
function wait() { |
|
if ((menuloaded==1) || (tim==1)) { |
|
window.status='Done.'; |
|
if (tim==0) { |
|
clearTimeout(canceltim); |
|
$configmenu |
|
window.location='$lowerurl'; |
|
} else { |
|
alert("Remote Control timed out. It is possible that it was blocked by pop-up window filters."); |
|
} |
|
} else { |
|
wheelswitch(); |
|
setTimeout('wait();',200); |
|
} |
|
} |
|
|
|
function main() { |
|
canceltim=setTimeout('tim=1;',60000); |
|
window.status='-'; |
|
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 |
|
|
|
sub reopenmenu { |
|
my $nothing=''; |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
|
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
|
if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; } |
|
return('window.open("'.$nothing.'","'.$menuname.'","",false);'); |
|
} |
|
|
# =============================================================== Open the menu |
# =============================================================== Open the menu |
|
|
sub open { |
sub open { |
my $returnval=''; |
my $returnval=''; |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
|
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 |
$returnval.=(<<ENDRESIZE); |
$returnval.=(<<ENDRESIZE); |
if (window.screen) { |
if (window.screen) { |
self.resizeTo(screen.availWidth-215,screen.availHeight-40); |
self.resizeTo(screen.availWidth-215,screen.availHeight-55); |
self.moveTo(190,15); |
self.moveTo(190,15); |
} |
} |
ENDRESIZE |
ENDRESIZE |
} |
} |
$returnval.=(<<ENDOPEN); |
$returnval.=(<<ENDOPEN); |
var menu=window.open("/res/adm/pages/menu.html","LONCAPAmenu", |
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"); |
"height=350,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5"); |
ENDOPEN |
ENDOPEN |
return '<script>'.$returnval.'</script>'; |
return '<script>'.$returnval.'</script>'; |
Line 63 ENDOPEN
|
Line 150 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 76 ENDSMENU
|
Line 164 ENDSMENU
|
|
|
sub clear { |
sub clear { |
my ($row,$col)=@_; |
my ($row,$col)=@_; |
return qq(swmenu.clearbut($row,$col);); |
unless ($ENV{'browser.interface'} eq 'textual') { |
|
return "\n".qq(window.status+='.';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 85 sub switch {
|
Line 175 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') { |
qq(swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); |
return "\n". |
|
qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); |
|
} else { |
|
my $text=$top.' '.$bot; |
|
$text=~s/\- //; |
|
return '<br /><a href="javascript:'.$act.';">'.$text.'</a> '.$desc; |
|
} |
} |
} |
|
|
sub secondlevel { |
sub secondlevel { |
Line 104 sub secondlevel {
|
Line 200 sub secondlevel {
|
} |
} |
|
|
sub openmenu { |
sub openmenu { |
|
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);','LONCAPAmenu');"; |
return "window.open('javascript:void(0);','".$menuname."');"; |
} else { |
} else { |
return "window.open('','LONCAPAmenu');"; |
return "window.open('','".$menuname."');"; |
} |
} |
} |
} |
|
|
sub rawconfig { |
sub rawconfig { |
my $r = shift; |
my $textualoverride=shift; |
my $output="var swmenu=".&openmenu(); |
my $output=''; |
|
unless ($ENV{'browser.interface'} eq 'textual') { |
|
$output.= |
|
"window.status='Opening Remote Control';var swmenu=".&openmenu(). |
|
"\nwindow.status='Configuring Remote Control ';"; |
|
} 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 161 sub rawconfig {
|
Line 266 sub rawconfig {
|
} |
} |
} elsif ($pro eq 'author') { |
} elsif ($pro eq 'author') { |
if ($author) { |
if ($author) { |
if (($prt eq 'rca') && ($ENV{'request.role'}=~/^ca/)) { |
if ((($prt eq 'rca') && ($ENV{'request.role'}=~/^ca/)) || |
|
(($prt eq 'rau') && ($ENV{'request.role'}=~/^au/))) { |
# Check that we are on the correct machine |
# Check that we are on the correct machine |
my ($cadom,$caname)= |
my $cadom=$requested_domain; |
|
my $caname=$ENV{'user.name'}; |
|
if ($prt eq 'rca') { |
|
($cadom,$caname)= |
($ENV{'request.role'}=~/(\w+)\/(\w+)$/); |
($ENV{'request.role'}=~/(\w+)\/(\w+)$/); |
|
} |
|
$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); |
} |
} |
} elsif ($prt eq 'any') { |
|
my $home = &Apache::lonnet::homeserver |
|
($ENV{'user.name'},$ENV{'user.domain'}); |
|
if ($home eq $r->dir_config('lonHostID')) { |
|
$output.=switch |
|
($ENV{'user.name'},$ENV{'user.domain'}, |
|
$row,$col,$img,$top,$bot,$act,$desc); |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
} |
$output.="swmenu.syncclock(1000*".time.");"; |
unless ($ENV{'browser.interface'} eq 'textual') { |
|
$output.="\nwindow.status='Synchronizing Time';swmenu.syncclock(1000*".time.");\nwindow.status='Remote Control Configured.';"; |
|
} |
return $output; |
return $output; |
} |
} |
|
|
# ======================================================================= Close |
# ======================================================================= Close |
|
|
sub close { |
sub close { |
|
if ($ENV{'browser.interface'} eq 'textual') { return ''; } |
|
my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; |
return(<<ENDCLOSE); |
return(<<ENDCLOSE); |
<script> |
<script> |
menu=window.open("/adm/rat/empty.html","LONCAPAmenu", |
window.status='Accessing Remote Control'; |
|
menu=window.open("/adm/rat/empty.html","$menuname", |
"height=350,width=150,scrollbars=no,menubar=no"); |
"height=350,width=150,scrollbars=no,menubar=no"); |
|
window.status='Disabling Remote Control'; |
|
menu.active=0; |
|
menu.autologout=0; |
|
window.status='Closing Remote Control'; |
menu.close(); |
menu.close(); |
|
window.status='Done.'; |
</script> |
</script> |
ENDCLOSE |
ENDCLOSE |
} |
} |
Line 204 sub footer {
|
Line 317 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(<<ENDHEADER); |
|
<html><head> |
|
<title>LON-CAPA Main Menu</title> |
|
<script> |
|
function go(url) { |
|
window.location=url; |
|
} |
|
function gopost(url) { |
|
window.location=url; |
|
} |
|
</script> |
|
</head> |
|
$bodytag |
|
ENDHEADER |
|
$r->print(&rawconfig(1)); |
|
$r->print('</body></html>'); |
|
return OK; |
|
} |
|
|
# ================================================================ Main Program |
# ================================================================ Main Program |
|
|
BEGIN { |
BEGIN { |
Line 223 BEGIN {
|
Line 366 BEGIN {
|
$readdesk='done'; |
$readdesk='done'; |
} |
} |
} |
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|