--- loncom/interface/lonmenu.pm 2003/02/14 19:35:54 1.38 +++ loncom/interface/lonmenu.pm 2003/02/20 18:00:31 1.43 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.38 2003/02/14 19:35:54 www Exp $ +# $Id: lonmenu.pm,v 1.43 2003/02/20 18:00:31 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -41,17 +41,20 @@ use Apache::loncommon; use Apache::File; use vars qw(@desklines $readdesk); -# ======================================================= Make the menu buttons +# ============================= This gets called at the top of the body section sub menubuttons { my $forcereg=shift; my $target =shift; + my $registration=shift; unless ($ENV{'browser.interface'} eq 'textual') { return ''; } - return "Menu here
"; +# Textual display only + my $output='Main Menu
'; + if ($registration) { $output.=&innerregister($forcereg,$target); } + return $output."
"; } -# ============================================== Register a URL with the remote - +# ====================================== This gets called in the header section sub registerurl { my $forcereg=shift; @@ -71,36 +74,56 @@ sub registerurl { return $result. ''; } +# Graphical display after login only if ($Apache::lonxml::registered && !$forcereg) { return ''; } + $result.=&innerregister($forcereg,$target); + return $result; +} + +# =========== This gets called in order to register a URL, both with the Remote +# =========== and in the body of the document + +sub innerregister { + my $forcereg=shift; + my $target = shift; + my $result = ''; + $Apache::lonxml::registered=1; + + my $textual=($ENV{'browser.interface'} eq 'textual'); my $reopen=&Apache::lonmenu::reopenmenu(); + my $newmail=''; if (&Apache::lonmsg::newmail()) { - $newmail='swmenu.setstatus("you have","messages");'; - } - my $timesync='swmenu.syncclock(1000*'.time.');'; + $newmail=($textual? + 'You have new messages
': + 'swmenu.setstatus("you have","messages");'); + } + my $timesync=($textual?'':'swmenu.syncclock(1000*'.time.');'); +# ============================================================================= +# ============================ This is for URLs that actually can be registered if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) { +# -- This applies to homework problems for users with grading privileges my $hwkadd=''; - if ($ENV{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { + if + ($ENV{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { if (&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) { - $hwkadd.=(< +// BEGIN LON-CAPA Internal +$utility + +$timesync +$newmail +$buttons +$hwkadd +$editbutton +$form + + +ENDREGTEXT +# Registered, graphical output + } else { + $result = (< // BEGIN LON-CAPA Internal +var swmenu=null; function LONCAPAreg() { swmenu=$reopen; swmenu.clearTimeout(swmenu.menucltim); $timesync $newmail + $buttons swmenu.currentURL=window.location.pathname; swmenu.reloadURL=window.location.pathname; swmenu.currentSymb="$ENV{'request.symb'}"; swmenu.reloadSymb="$ENV{'request.symb'}"; swmenu.currentStale=0; - swmenu.clearbut(3,1); - swmenu.switchbutton - (6,3,'catalog.gif','catalog','info','catalog_info()','Show catalog information'); - swmenu.switchbutton - (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)','Provide my evaluation of this resource'); - swmenu.switchbutton - (8,2,'fdbk.gif','feedback','discuss','gopost("/adm/feedback",currentURL)','Provide feedback messages or contribute to the course discussion about this resource'); - swmenu.switchbutton - (8,3,'prt.gif','prepare','printout','gopost("/adm/printout",currentURL)','Prepare a printable document'); - swmenu.switchbutton - (2,1,'back.gif','backward','','gopost("/adm/flip","back:"+currentURL)','Go to the previous resource in the course sequence'); - swmenu.switchbutton - (2,3,'forw.gif','forward','','gopost("/adm/flip","forward:"+currentURL)','Go to the next resource in the course sequence'); - swmenu.switchbutton - (9,1,'sbkm.gif','set','bookmark','set_bookmark()','Set a bookmark for this resource'); - swmenu.switchbutton - (9,2,'vbkm.gif','view','bookmark','edit_bookmarks()','Use or edit my bookmark collection'); - swmenu.switchbutton - (9,3,'anot.gif','anno-','tations','annotate()','Make notes and annotations about this resource'); $hwkadd $editbutton } @@ -215,12 +265,21 @@ ENDPARM // END LON-CAPA Internal ENDREGTHIS - + } +# ============================================================================= } else { - $result = (< // BEGIN LON-CAPA Internal +var swmenu=null; function LONCAPAreg() { swmenu=$reopen @@ -245,6 +304,8 @@ ENDREGTHIS // END LON-CAPA Internal ENDDONOTREGTHIS + } +# ============================================================================= } return $result; } @@ -372,19 +433,24 @@ sub clear { } else { return ''; } } +# ============================================ Switch a button or create a link # Switch acts on the javascript that is executed when a button is clicked. # The javascript is usually similar to "go('/adm/roles')" or "cstrgo(..)". + sub switch { - my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc)=@_; + 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') { return "\n". qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); } else { + if ($nobreak==2) { return ''; } my $text=$top.' '.$bot; $text=~s/\- //; - return '
'.$text.' '.$desc; + return "\n".($nobreak?' ':'
'). + ''.$text.' '. + ($nobreak?'':$desc); } } @@ -520,6 +586,59 @@ sub footer { } +sub utilityfunctions { + unless ($ENV{'browser.interface'} eq 'textual') { return ''; } + my $currenturl=$ENV{'REQUEST_URI'}; + my $currentsymb=$ENV{'request.symb'}; +return (< + + + + + +ENDSERVERFORM +} # ================================================ Handler when called directly @@ -529,23 +648,20 @@ sub handler { $r->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 $r->print(< LON-CAPA Main Menu $bodytag ENDHEADER - $r->print(&rawconfig(1)); + $r->print(&rawconfig(1).$form); $r->print(''); return OK; }