--- loncom/interface/lonmenu.pm 2005/09/20 07:52:03 1.161 +++ loncom/interface/lonmenu.pm 2006/03/29 20:07:00 1.169 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.161 2005/09/20 07:52:03 albertel Exp $ +# $Id: lonmenu.pm,v 1.169 2006/03/29 20:07:00 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -64,7 +64,8 @@ sub initlittle { 'Roles':'Courses'), 'docs' => 'Course Documents', 'exit' => 'Exit', - 'launch' => 'Launch Remote Control'); + 'launch' => 'Launch Remote Control', + 'groups' => 'Groups'); } # ============================= This gets called at the top of the body section @@ -78,10 +79,12 @@ sub menubuttons { ['inhibitmenu']); if (($env{'form.inhibitmenu'} eq 'yes') || ($ENV{'REQUEST_URI'} eq '/adm/logout')) { return ''; } - + my %lt=&initlittle(); my $navmaps=''; my $reloadlink=''; my $docs=''; + my $groups=''; + my $showgroups=0; my $escurl=&Apache::lonnet::escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'})); my $escsymb=&Apache::lonnet::escape(&Apache::lonenc::check_encrypt($env{'request.symb'})); my $face= 'face="Arial,Helvetica,sans-serif"'; @@ -92,9 +95,20 @@ sub menubuttons { $escurl = &Apache::lonnet::escape($returnurl); } } + if ($env{'request.course.id'}) { + my %coursegroups; + my $viewgrps_permission = + &Apache::lonnet::allowed('vcg',$env{'request.course.id'}); + if (!$viewgrps_permission) { + %coursegroups = &Apache::lonnet::get_active_groups($env{'user.domain'},$env{'user.name'},$env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); + } + if ((keys(%coursegroups) > 0) || ($viewgrps_permission)) { + $showgroups = 1; + } + } + if ($env{'browser.interface'} eq 'textual') { # Textual display only - my %lt=&initlittle(); $pgbg='#FFFFFF'; $tabbg='#FFFFFF'; $font='#000000'; @@ -115,6 +129,12 @@ ENDRELOAD <a href="/adm/coursedocs" target="_top"><font $face color="$font">$lt{'docs'}</font></a> ENDDOCS } + if ($showgroups) { + $groups =(<<ENDGROUPS); +<td bgcolor="$tabbg"> +<a href="/adm/coursegroups" target="_top"><font $face color="$font">$lt{'groups'}</font></a></td> +ENDGROUPS + } } my $form=&serverform(); my $utility=&utilityfunctions(); @@ -124,7 +144,7 @@ ENDDOCS $utility </script> <a href="/adm/menu" target="_top">$lt{'main'}</a> -$reloadlink $navmaps $docs +$reloadlink $navmaps $docs $groups <a href="/adm/roles" target="_top"><font $face color="$font">$lt{'roles'}</font></a> <a href="/adm/logout" target="_top"><font $face color="$font">$lt{'exit'}</font></a> <br /> @@ -193,6 +213,12 @@ ENDNAV <a href="/adm/coursedocs" target="_top"><font $face color="$font">$lt{'docs'}</font></a></td> ENDDOCS } + if ($showgroups) { + $groups =(<<ENDGROUPS); +<td bgcolor="$tabbg"> +<a href="/adm/coursegroups" target="_top"><font $face color="$font">$lt{'groups'}</font></a></td> +ENDGROUPS + } if ( ($env{'request.noversionuri'}=~m[^/(res|public)/] && $env{'request.symb'} eq '') @@ -210,6 +236,13 @@ ENDDOCS ENDRELOAD } } + if (($env{'request.state'} eq 'construct') && ($env{'request.course.id'})) { + my $escreload=&Apache::lonnet::escape('return:'); + $reloadlink=(<<ENDCRELOAD); +<td bgcolor="$tabbg"> +<a href="/adm/flip?postdata=$escreload" target="_top"><font $face color="$font">$lt{'ret'}</font></a></td> +ENDCRELOAD + } my $reg=''; if ($registration) { $reg=&innerregister($forcereg,$target,$titletable); @@ -233,6 +266,7 @@ $utility $reloadlink $navmaps $docs +$groups <td bgcolor="$tabbg"> <a href="/adm/remote?action=launch&url=$escurl" target="_top"> <font $face color="$font">$lt{'launch'}</font></a></td> @@ -245,9 +279,9 @@ $docs <td bgcolor="$tabbg"> <img align="right" src="$logo" alt="Logo" /> <b>LON-CAPA</b></td> -$form </tr> </table> +$form <script type="text/javascript"> // END LON-CAPA Internal </script> @@ -1102,15 +1136,20 @@ function gocstr(url,filename) { this.document.cstrprint.curseed.value = this.document.lonhomework.rndseed.value } if (this.document.lonhomework.problemtype) { - for (var i=0; i<this.document.lonhomework.problemtype.options.length; i++) { - if (this.document.lonhomework.problemtype.options[i].selected) { - if (this.document.lonhomework.problemtype.options[i].value != null && this.document.lonhomework.problemtype.options[i].value != '') { - this.document.cstrprint.problemtype.value = this.document.lonhomework.problemtype.options[i].value - } - } - } - } - } + if (this.document.lonhomework.problemtype.value) { + this.document.cstrprint.problemtype.value = + this.document.lonhomework.problemtype.value; + } else if (this.document.lonhomework.problemtype.options) { + for (var i=0; i<this.document.lonhomework.problemtype.options.length; i++) { + if (this.document.lonhomework.problemtype.options[i].selected) { + if (this.document.lonhomework.problemtype.options[i].value != null && this.document.lonhomework.problemtype.options[i].value != '') { + this.document.cstrprint.problemtype.value = this.document.lonhomework.problemtype.options[i].value + } + } + } + } + } + } this.document.cstrprint.submit(); return; } @@ -1138,6 +1177,12 @@ function catalog_info() { function chat_win() { lonchat=window.open('/res/adm/pages/chatroom.html',"LONchat",'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no'); } + +function group_chat(group) { + var url = '/adm/groupchat?group='+group; + var winName = 'LONchat_'+group; + grpchat=window.open(url,winName,'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no'); +} ENDUTILITY } @@ -1186,6 +1231,7 @@ sub get_nav_status { sub handler { my $r = shift; + &Apache::loncommon::no_cache($r); &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; @@ -1195,7 +1241,6 @@ sub handler { $env{'browser.interface'} ne 'textual') { $form=&serverform(); } - my $bodytag=&Apache::loncommon::bodytag('Main Menu'); my $function='student'; if ($env{'request.role'}=~/^(cc|in|ta|ep)/) { $function='coordinator'; @@ -1225,40 +1270,32 @@ ENDSCRIPT $env{'browser.interface'}='faketextual'; $env{'environment.remote'}='off'; } - my $html=&Apache::lonxml::xmlbegin(); - $r->print(<<ENDHEADER); -$html -<head> -<title>LON-CAPA Main Menu</title> -$script_tag -</head> -$bodytag -ENDHEADER + $r->print(&Apache::loncommon::start_page('Main Menu',$script_tag)); $r->print('<table>'.&inlinemenu().'</table>'.$form); - $r->print('</body></html>'); + $r->print(&Apache::loncommon::end_page()); return OK; } # ================================================================ Main Program BEGIN { - if (! defined($readdesk)) { - { - my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab'; - if ( CORE::open( my $config,"<$tabfile") ) { - while (my $configline=<$config>) { - $configline=(split(/\#/,$configline))[0]; - $configline=~s/^\s+//; - chomp($configline); - if ($configline) { - $desklines[$#desklines+1]=$configline; - } - } - CORE::close($config); + if (! defined($readdesk)) { + { + my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab'; + if ( CORE::open( my $config,"<$tabfile") ) { + while (my $configline=<$config>) { + $configline=(split(/\#/,$configline))[0]; + $configline=~s/^\s+//; + chomp($configline); + if ($configline) { + push(@desklines,$configline); + } + } + CORE::close($config); + } + } + $readdesk='done'; } - } - $readdesk='done'; - } } 1;