--- loncom/interface/lonmenu.pm 2004/12/03 22:10:39 1.135 +++ loncom/interface/lonmenu.pm 2005/02/21 00:32:04 1.149 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.135 2004/12/03 22:10:39 albertel Exp $ +# $Id: lonmenu.pm,v 1.149 2005/02/21 00:32:04 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,6 +60,9 @@ sub initlittle { return &Apache::lonlocal::texthash('ret' => 'Return to Last Location', 'nav' => 'Navigate Contents', 'main' => 'Main Menu', + 'roles' => ($ENV{'user.adv'}? + 'Roles':'Courses'), + 'exit' => 'Exit', 'launch' => 'Launch Remote Control'); } @@ -72,7 +75,8 @@ sub menubuttons { my $titletable=shift; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); - if ($ENV{'form.inhibitmenu'} eq 'yes') { return ''; } + if (($ENV{'form.inhibitmenu'} eq 'yes') || + ($ENV{'REQUEST_URI'} eq '/adm/logout')) { return ''; } my $navmaps=''; my $reloadlink=''; @@ -103,16 +107,20 @@ ENDNAV <a href="/adm/flip?postdata=$escreload" target="_top"><font color="$font">$lt{'ret'}</font></a> ENDRELOAD } - } + } my $form=&serverform(); my $utility=&utilityfunctions(); my $output=(<<ENDMAINMENU); <script type="text/javascript"> -// BEGIN LON-CAPA Internal +<!-- // BEGIN LON-CAPA Internal $utility +--> </script> <a href="/adm/menu" target="_top">$lt{'main'}</a> -$reloadlink $navmaps<br /> +$reloadlink $navmaps +<a href="/adm/roles" target="_top"><font color="$font">$lt{'roles'}</font></a> +<a href="/adm/logout" target="_top"><font color="$font">$lt{'exit'}</font></a> +<br /> <script type="text/javascript"> // END LON-CAPA Internal </script> @@ -145,13 +153,25 @@ ENDMAINMENU my $sidebg=&Apache::loncommon::designparm($function.'.sidebg',$domain); # Do we have a NAV link? if ($ENV{'request.course.id'}) { - $navmaps=(<<ENDNAV); + my $link='/adm/navmaps?postdata='.$escurl.'&postsymb='. + $escsymb; + if ($ENV{'environment.remotenavmap'} eq 'on') { + $link="javascript:gonav('".$link."')"; + } + $navmaps=(<<ENDNAV); <td bgcolor="$tabbg"> -<a href="javascript:gonav('/adm/navmaps?postdata=$escurl&postsymb=$escsymb')"><font color="$font">$lt{'nav'}</font></a></td> +<a href="$link"><font color="$font">$lt{'nav'}</font></a></td> ENDNAV - if (($ENV{'request.noversionuri'}=~/^\/adm\//) && - ($ENV{'request.noversionuri'}!~/^\/adm\/wrapper\//) && - ($ENV{'request.noversionuri'}!~/^\/adm\/.*\/(smppg|bulletinboard|aboutme)(\?|$)/)) { + if ( + ($ENV{'request.noversionuri'}=~m[^/(res|public)/] && + $ENV{'request.symb'} eq '') + || + (($ENV{'request.noversionuri'}=~/^\/adm\//) && + ($ENV{'request.noversionuri'}!~/^\/adm\/wrapper\//) && + ($ENV{'request.noversionuri'}!~ + m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)]) + ) + ) { my $escreload=&Apache::lonnet::escape('return:'); $reloadlink=(<<ENDRELOAD); <td bgcolor="$tabbg"> @@ -165,10 +185,12 @@ ENDRELOAD } my $form=&serverform(); my $utility=&utilityfunctions(); + my $logo=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/minilogo.gif"); return (<<ENDINLINEMENU); <script type="text/javascript"> -// BEGIN LON-CAPA Internal +<!-- // BEGIN LON-CAPA Internal $utility +--> </script> <font face="Arial,Helvetica,sans-serif"><table bgcolor="$pgbg" width="100%" border="0" cellpadding="1" cellspacing="1"> <tr> @@ -181,7 +203,13 @@ $navmaps <a href="/adm/remote?action=launch&url=$escurl" target="_top"> <font color="$font">$lt{'launch'}</font></a></td> <td bgcolor="$tabbg"> -<img align="right" src="/adm/lonIcons/minilogo.gif" /> +<a href="/adm/roles" target="_top"><font color="$font">$lt{'roles'}</font></a> +</td> +<td bgcolor="$tabbg"> +<a href="/adm/logout" target="_top"><font color="$font">$lt{'exit'}</font></a> +</td> +<td bgcolor="$tabbg"> +<img align="right" src="$logo" /> <b>LON-CAPA</b></td> $form </tr> @@ -290,7 +318,7 @@ sub innerregister { my $tableend=($noremote?'</table></font>':'').($textinter?'<a name="content" />':''); # ============================================================================= # ============================ This is for URLs that actually can be registered - if (($ENV{'request.noversionuri'}!~/^\/(res\/)*adm\//) || ($forcereg)) { + if (($ENV{'request.noversionuri'}!~m|^/(res/)*adm/|) || ($forcereg)) { # -- This applies to homework problems for users with grading privileges my $crs='/'.$ENV{'request.course.id'}; if ($ENV{'request.course.sec'}) { @@ -299,7 +327,8 @@ sub innerregister { $crs=~s/\_/\//g; my $hwkadd=''; - if ($ENV{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { + if ($ENV{'request.symb'} ne '' && + $ENV{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { if (&Apache::lonnet::allowed('vgr',$crs)) { $hwkadd.=&switch('','',7,1,'subm.gif','view sub-[_1]','missions[_1]', "gocmd('/adm/grades','submission')", @@ -311,7 +340,8 @@ sub innerregister { 'Modify user grades for this assessment resource'); } } - if (&Apache::lonnet::allowed('opa',$crs)) { + if ($ENV{'request.symb'} ne '' && + &Apache::lonnet::allowed('opa',$crs)) { $hwkadd.=&switch('','',7,3,'pparm.gif','problem[_2]','parms[_2]', "gocmd('/adm/parmset','set')", 'Modify deadlines, etc, for this resource'); @@ -393,10 +423,11 @@ s&6&1&list.gif&list[_1]&dir[_1]&golist(' s&6&2&rtrv.gif&retrieve[_1]&version[_1]&gocstr('/adm/retrieve','/~$uname/$thisdisfn')&Retrieve old version s&6&3&pub.gif&publish[_1]&resource[_1]&gocstr('/adm/publish','/~$uname/$thisdisfn')&Publish this resource s&7&1&del.gif&delete[_1]&resource[_2]&gocstr('/adm/cfile?action=delete','/~$uname/$thisdisfn')&Delete this resource -s&7&2&prt.gif&prepare[_1]&printout[_1]&gopost('/adm/printout','/~$uname/$thisdisfn')&Prepare a printable document +s&7&2&prt.gif&prepare[_1]&printout[_1]&gocstr('/adm/printout','/~$uname/$thisdisfn')&Prepare a printable document ENDMENUITEMS } - } else { + } elsif (defined($ENV{'request.course.id'}) && + $ENV{'request.symb'} ne '') { $menuitems=(<<ENDMENUITEMS); c&3&1 s&2&1&back.gif&backward[_1]&&gopost('/adm/flip','back:'+currentURL)&Go to the previous resource in the course sequence&1 @@ -425,25 +456,27 @@ ENDREALRES $buttons.=&clear(@rest); } } + if ($textual) { -# Registered, textual output + my $addremote=0; + foreach (@inlineremote) { if ($_ ne '') { $addremote=1; } } my $inlinebuttons=''; + if ($addremote) { +# Registered, textual output - if ($ENV{'browser.interface'} eq 'textual') { - $inlinebuttons= + if ($ENV{'browser.interface'} eq 'textual') { + $inlinebuttons= join('',map { (defined($_)?$_:'') } @inlineremote); - } else { - $inlinebuttons=(<<ENDINLINE); + } else { + $inlinebuttons=(<<ENDINLINE); <tr><td>$inlineremote[21]</td><td> </td><td>$inlineremote[23]</td></tr> <tr><td>$inlineremote[61]</td><td>$inlineremote[62]</td><td>$inlineremote[63]</td></tr> <tr><td>$inlineremote[71]</td><td>$inlineremote[72]</td><td>$inlineremote[73]</td></tr> <tr><td>$inlineremote[81]</td><td>$inlineremote[82]</td><td>$inlineremote[83]</td></tr> <tr><td>$inlineremote[91]</td><td>$inlineremote[92]</td><td>$inlineremote[93]</td></tr> ENDINLINE + } } - if ($const_space && $is_const_dir) { - $inlinebuttons = ''; - } $result =(<<ENDREGTEXT); <script type="text/javascript"> // BEGIN LON-CAPA Internal @@ -460,14 +493,17 @@ $tableend ENDREGTEXT # Registered, graphical output } else { - my $requri=(split(/\?/,$ENV{'request.noversionuri'}))[0]; + my $requri=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$ENV{'request.noversionuri'}))[0])); $requri=&Apache::lonenc::check_encrypt(&Apache::lonnet::unescape($requri)); my $cursymb=&Apache::lonenc::check_encrypt($ENV{'request.symb'}); my $navstatus=&get_nav_status(); + my $clearcstr; + + if ($ENV{'user.adv'}) { $clearcstr='clearbut(6,1)'; } $result = (<<ENDREGTHIS); <script type="text/javascript"> -// BEGIN LON-CAPA Internal +// <!-- BEGIN LON-CAPA Internal var swmenu=null; function LONCAPAreg() { @@ -498,11 +534,11 @@ var swmenu=null; swmenu.clearbut(7,3); swmenu.menucltim=swmenu.setTimeout( 'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+ - 'clearbut(9,1);clearbut(9,3);clearbut(6,3);clearbut(6,1)', + 'clearbut(9,1);clearbut(9,3);clearbut(6,3);$clearcstr', 2000); } -// END LON-CAPA Internal +// END LON-CAPA Internal --> </script> ENDREGTHIS } @@ -972,7 +1008,8 @@ sub utilityfunctions { my $caller = shift; unless (($ENV{'browser.interface'} eq 'textual') || ($ENV{'environment.remote'} eq 'off') || ($caller eq '/adm/menu')) { return ''; } - my $currenturl=&Apache::lonenc::check_encrypt($ENV{'request.noversionuri'}); + my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$ENV{'request.noversionuri'}))[0])); + $currenturl=&Apache::lonenc::check_encrypt(&Apache::lonnet::unescape($currenturl)); my $currentsymb=&Apache::lonenc::check_encrypt($ENV{'request.symb'}); my $nav_control=&nav_control_js(); @@ -1020,6 +1057,27 @@ function gocstr(url,filename) { this.document.cstrdelete.submit(); return; } + if (url == '/adm/printout') { + this.document.cstrprint.postdata.value = filename + this.document.cstrprint.curseed.value = 0; + this.document.cstrprint.problemtype.value = 0; + if (this.document.lonhomework) { + if ((this.document.lonhomework.rndseed) && (this.document.lonhomework.rndseed.value != null) && (this.document.lonhomework.rndseed.value != '')) { + 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 + } + } + } + } + } + this.document.cstrprint.submit(); + return; + } if (url !='') { this.document.constspace.filename.value = filename; this.document.constspace.action = url; @@ -1068,6 +1126,12 @@ sub constspaceform { <input type="hidden" name="action" value="delete" /> <input type="hidden" name="filename" value="" /> </form> +<form name="cstrprint" action="/adm/printout" target="_parent" method="post"> +<input type="hidden" name="postdata" value="" /> +<input type="hidden" name="curseed" value="" /> +<input type="hidden" name="problemtype" value="" /> +</form> + ENDCONSTSPACEFORM } @@ -1113,7 +1177,7 @@ sub handler { $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); $font=&Apache::loncommon::designparm($function.'.font',$domain); my $script_tag; - if ($ENV{'environment.remote'} eq 'on') { + if ($ENV{'environment.remote'} ne 'off') { my $utility=&utilityfunctions('/adm/menu'); $script_tag=(<<ENDSCRIPT); <script type="text/javascript"> @@ -1126,8 +1190,10 @@ ENDSCRIPT $ENV{'browser.interface'}='faketextual'; $ENV{'environment.remote'}='off'; } + my $html=&Apache::lonxml::xmlbegin(); $r->print(<<ENDHEADER); -<html><head> +$html +<head> <title>LON-CAPA Main Menu</title> $script_tag </head>