Diff for /loncom/interface/lonmenu.pm between versions 1.169 and 1.197

version 1.169, 2006/03/29 20:07:00 version 1.197, 2006/07/18 19:45:15
Line 40  package Apache::lonmenu; Line 40  package Apache::lonmenu;
   
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::Constants qw(:common);  
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonenc();  use Apache::lonenc();
 use Apache::lonlocal;  use Apache::lonlocal;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
   
 use vars qw(@desklines $readdesk);  use vars qw(@desklines $readdesk);
   
   
 my @inlineremote;  my @inlineremote;
 my $font;  
 my $tabbg;  
 my $pgbg;  
   
 # ================================================================ Little texts  # ================================================================ Little texts
   
Line 65  sub initlittle { Line 63  sub initlittle {
                                        'docs' => 'Course Documents',                                         'docs' => 'Course Documents',
                                        'exit' => 'Exit',                                         'exit' => 'Exit',
        'launch' => 'Launch Remote Control',         'launch' => 'Launch Remote Control',
                                        'groups' => 'Groups');                                         'groups' => 'Groups',
                                          'gdoc' => 'Group Documents',
                                          );
 }  }
   
 # ============================= This gets called at the top of the body section  # ============================= This gets called at the top of the body section
   
 sub menubuttons {  sub menubuttons {
     my $forcereg=shift;      my $forcereg=shift;
     my $target  =shift;  
     my $registration=shift;      my $registration=shift;
     my $titletable=shift;      my $titletable=shift;
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
     ['inhibitmenu']);      ['inhibitmenu']);
     if (($env{'form.inhibitmenu'} eq 'yes') ||      if (($env{'form.inhibitmenu'} eq 'yes') ||
         ($ENV{'REQUEST_URI'} eq '/adm/logout')) { return ''; }          ($ENV{'REQUEST_URI'} eq '/adm/logout')) { return ''; }
   
       if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
   
     my %lt=&initlittle();      my %lt=&initlittle();
     my $navmaps='';      my $navmaps='';
     my $reloadlink='';      my $reloadlink='';
     my $docs='';      my $docs='';
     my $groups='';      my $groups='';
     my $showgroups=0;      my $showgroups=0;
     my $escurl=&Apache::lonnet::escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'}));      my $escurl=&escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'}));
     my $escsymb=&Apache::lonnet::escape(&Apache::lonenc::check_encrypt($env{'request.symb'}));      my $escsymb=&escape(&Apache::lonenc::check_encrypt($env{'request.symb'}));
     my $face= 'face="Arial,Helvetica,sans-serif"';  
     if ($env{'request.state'} eq 'construct') {      if ($env{'request.state'} eq 'construct') {
         if (($env{'request.noversionuri'} eq '') || (!defined($env{'request.noversionuri'}))) {          if (($env{'request.noversionuri'} eq '') || (!defined($env{'request.noversionuri'}))) {
             my $returnurl = $env{'request.filename'};              my $returnurl = $env{'request.filename'};
             $returnurl =~ s:^/home/([^/]+)/public_html/(.*)$:/priv/$1/$2:;              $returnurl =~ s:^/home/([^/]+)/public_html/(.*)$:/priv/$1/$2:;
             $escurl = &Apache::lonnet::escape($returnurl);              $escurl = &escape($returnurl);
         }          }
     }      }
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
         my %coursegroups;          my %coursegroups;
         my $viewgrps_permission =                                                          my $viewgrps_permission =
                      &Apache::lonnet::allowed('vcg',$env{'request.course.id'});      &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
         if (!$viewgrps_permission) {          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'});              %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)) {          if ((keys(%coursegroups) > 0) || ($viewgrps_permission)) {
             $showgroups = 1;              $showgroups = 1;
         }          }
Line 109  sub menubuttons { Line 111  sub menubuttons {
   
     if ($env{'browser.interface'} eq 'textual') {      if ($env{'browser.interface'} eq 'textual') {
 # Textual display only  # Textual display only
         $pgbg='#FFFFFF';  
         $tabbg='#FFFFFF';  
  $font='#000000';  
         if ($env{'request.course.id'}) {          if ($env{'request.course.id'}) {
     $navmaps=(<<ENDNAV);      $navmaps=(<<ENDNAV);
 <a href="/adm/navmaps?postdata=$escurl&postsymb=$escsymb" target="_top">$lt{'nav'}</a>  <a href="/adm/navmaps?postdata=$escurl&amp;postsymb=$escsymb" target="_top">$lt{'nav'}</a>
 ENDNAV  ENDNAV
             if (($env{'request.noversionuri'}=~/^\/adm\//) &&              if (($env{'request.noversionuri'}=~/^\/adm\//) &&
          ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&           ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&
          ($env{'request.noversionuri'}!~/^\/adm\/.*\/(smppg|bulletinboard|aboutme)(\?|$)/)) {           ($env{'request.noversionuri'}!~/^\/adm\/.*\/(smppg|bulletinboard|aboutme)(\?|$)/)) {
                 my $escreload=&Apache::lonnet::escape('return:');                  my $escreload=&escape('return:');
                 $reloadlink=(<<ENDRELOAD);                  $reloadlink=(<<ENDRELOAD);
 <a href="/adm/flip?postdata=$escreload" target="_top"><font $face color="$font">$lt{'ret'}</font></a>  <a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a>
 ENDRELOAD  ENDRELOAD
             }              }
     if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {      if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
                $docs=(<<ENDDOCS);                 $docs=(<<ENDDOCS);
 <a href="/adm/coursedocs" target="_top"><font $face color="$font">$lt{'docs'}</font></a>  <a href="/adm/coursedocs" target="_top">$lt{'docs'}</a>
 ENDDOCS  ENDDOCS
             }              }
             if ($showgroups) {              if ($showgroups) {
                 $groups =(<<ENDGROUPS);                  $groups =(<<ENDGROUPS);
 <td bgcolor="$tabbg">  <a href="/adm/coursegroups" target="_top">$lt{'groups'}</a>
 <a href="/adm/coursegroups" target="_top"><font $face color="$font">$lt{'groups'}</font></a></td>  
 ENDGROUPS  ENDGROUPS
             }              }
  }   }
Line 143  ENDGROUPS Line 141  ENDGROUPS
 // BEGIN LON-CAPA Internal  // BEGIN LON-CAPA Internal
 $utility  $utility
 </script>  </script>
   <div id="LC_top_nav">
 <a href="/adm/menu" target="_top">$lt{'main'}</a>  <a href="/adm/menu" target="_top">$lt{'main'}</a>
 $reloadlink $navmaps $docs $groups  $reloadlink $navmaps $docs $groups
 <a href="/adm/roles" target="_top"><font $face color="$font">$lt{'roles'}</font></a>  <a href="/adm/roles" target="_top">$lt{'roles'}</a>
 <a href="/adm/logout" target="_top"><font $face color="$font">$lt{'exit'}</font></a>  <a href="/adm/logout" target="_top">$lt{'exit'}</a>
   </div>
 <br />  <br />
 <script type="text/javascript">  <script type="text/javascript">
 // END LON-CAPA Internal  // END LON-CAPA Internal
 </script>  </script>
 $form  $form
 ENDMAINMENU  ENDMAINMENU
         if ($registration) { $output.=&innerregister($forcereg,$target); }          if ($registration) { $output.=&innerregister($forcereg); }
  return $output."<hr />";   return $output."<hr />";
     } elsif ($env{'environment.remote'} eq 'off') {      } elsif ($env{'environment.remote'} eq 'off') {
 # Remote Control is switched off  # Remote Control is switched off
 # figure out colors  # figure out colors
  my %lt=&initlittle();   my %lt=&initlittle();
  my $function='student';  
         if ($env{'request.role'}=~/^(cc|in|ta|ep)/) {  
     $function='coordinator';  
         }  
  if ($env{'request.role'}=~/^(su|dc|ad|li)/) {  
             $function='admin';  
         }  
         if (($env{'request.role'}=~/^(au|ca)/) ||  
             ($env{'request.noversionuri'}=~/^(\/priv|\~)/)) {  
             $function='author';  
         }  
         my $domain=&Apache::loncommon::determinedomain();          my $domain=&Apache::loncommon::determinedomain();
         $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain);   my $function =&Apache::loncommon::get_users_function();
         $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain);  
         $font=&Apache::loncommon::designparm($function.'.font',$domain);  
         my $link=&Apache::loncommon::designparm($function.'.link',$domain);          my $link=&Apache::loncommon::designparm($function.'.link',$domain);
         my $alink=&Apache::loncommon::designparm($function.'.alink',$domain);          my $alink=&Apache::loncommon::designparm($function.'.alink',$domain);
         my $vlink=&Apache::loncommon::designparm($function.'.vlink',$domain);          my $vlink=&Apache::loncommon::designparm($function.'.vlink',$domain);
Line 181  ENDMAINMENU Line 169  ENDMAINMENU
  if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') {   if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') {
     my $logo=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/minilogo.gif");      my $logo=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/minilogo.gif");
     return (<<ENDINLINEMENU);      return (<<ENDINLINEMENU);
 <font face="Arial,Helvetica,sans-serif">     <table id="LC_top_nav">
    <table bgcolor="$pgbg" width="100%" border="0" cellpadding="1" cellspacing="1">  
     <tr>      <tr>
       <td bgcolor="$tabbg">        <td>
         <a href="/adm/logout" target="_top"><font color="$font">$lt{'exit'}</font></a>          <a href="/adm/logout" target="_top">$lt{'exit'}</a>
      </td>  
      <td align="right" bgcolor="$tabbg">  
        <img align="right" src="$logo" alt="Logo" />  
        <b>LON-CAPA</b>&nbsp;  
      </td>       </td>
    </tr>       <td class="LC_top_nav_logo">LON-CAPA<img src="$logo" alt="Logo" /></td>
       </tr>
   </table>    </table>
 </font>  </font>
 ENDINLINEMENU  ENDINLINEMENU
Line 204  ENDINLINEMENU Line 188  ENDINLINEMENU
  $link="javascript:gonav('".$link."')";   $link="javascript:gonav('".$link."')";
     }      }
     $navmaps=(<<ENDNAV);      $navmaps=(<<ENDNAV);
 <td bgcolor="$tabbg">  <td><a href="$link" target="_top">$lt{'nav'}</a></td>
 <a href="$link" target="_top"><font $face color="$font">$lt{'nav'}</font></a></td>  
 ENDNAV  ENDNAV
   my $is_group = (&Apache::loncommon::course_type() eq 'Group');
     if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {      if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
                   my $text = ($is_group) ? $lt{'gdoc'} : $lt{'docs'};
  $docs=(<<ENDDOCS);   $docs=(<<ENDDOCS);
 <td bgcolor="$tabbg">  <td><a href="/adm/coursedocs" target="_top">$text</a></td>
 <a href="/adm/coursedocs" target="_top"><font $face color="$font">$lt{'docs'}</font></a></td>  
 ENDDOCS  ENDDOCS
             }              }
             if ($showgroups) {              if ($showgroups) {
                 $groups =(<<ENDGROUPS);                  $groups =(<<ENDGROUPS);
 <td bgcolor="$tabbg">  <td><a href="/adm/coursegroups" target="_top">$lt{'groups'}</a></td>
 <a href="/adm/coursegroups" target="_top"><font $face color="$font">$lt{'groups'}</font></a></td>  
 ENDGROUPS  ENDGROUPS
             }              }
     if (      if (
Line 229  ENDGROUPS Line 212  ENDGROUPS
         m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)])          m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)])
   )    )
  ) {   ) {
                 my $escreload=&Apache::lonnet::escape('return:');                  my $escreload=&escape('return:');
                 $reloadlink=(<<ENDRELOAD);                  $reloadlink=(<<ENDRELOAD);
 <td bgcolor="$tabbg">  <td><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></td>
 <a href="/adm/flip?postdata=$escreload" target="_top"><font $face color="$font">$lt{'ret'}</font></a></td>  
 ENDRELOAD  ENDRELOAD
             }              }
         }          }
  if (($env{'request.state'} eq 'construct') && ($env{'request.course.id'})) {   if (($env{'request.state'} eq 'construct') && ($env{'request.course.id'})) {
     my $escreload=&Apache::lonnet::escape('return:');      my $escreload=&escape('return:');
     $reloadlink=(<<ENDCRELOAD);      $reloadlink=(<<ENDCRELOAD);
 <td bgcolor="$tabbg">  <td><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></td>
 <a href="/adm/flip?postdata=$escreload" target="_top"><font $face color="$font">$lt{'ret'}</font></a></td>  
 ENDCRELOAD  ENDCRELOAD
         }          }
         my $reg='';          my $reg='';
         if ($registration) {          if ($registration) {
            $reg=&innerregister($forcereg,$target,$titletable);             $reg=&innerregister($forcereg,$titletable);
         }          }
         my $form=&serverform();          my $form=&serverform();
  my $utility=&utilityfunctions();   my $utility=&utilityfunctions();
  my $logo=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/minilogo.gif");   my $logo=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/minilogo.gif");
    my $remote;
    if ($env{'user.adv'}) {
       $remote = '<td><a href="/adm/remote?action=launch&amp;url='.$escurl.'" target="_top">'.$lt{'launch'}.'</a></td>'
    }
           my $helptopic='Student_Intro';
           if ($env{'request.role'}=~/^(ca|au)/) {
       $helptopic='Authoring_Intro';
    } elsif ($env{'request.role'}=~/^cc/) {
       $helptopic='Course_Coordination_Intro';
    }
           my $helplink=&Apache::loncommon::help_open_topic($helptopic,'Help');
  return (<<ENDINLINEMENU);   return (<<ENDINLINEMENU);
 <script type="text/javascript">  <script type="text/javascript">
 // BEGIN LON-CAPA Internal  // BEGIN LON-CAPA Internal
Line 258  ENDCRELOAD Line 249  ENDCRELOAD
 $utility  $utility
 // ]]>  // ]]>
 </script>  </script>
 <table bgcolor="$pgbg" width="100%" border="0" cellpadding="1" cellspacing="1">  <table id="LC_top_nav">
 <tr>  <tr>
 <td bgcolor="$tabbg">  <td class="LC_top_nav_logo">
 <a href="/adm/menu" target="_top"><font $face color="$font">$lt{'main'}</font></a>  <a href="/adm/about.html"><img src="$logo" alt="LON-CAPA Logo" align="left" border="0" /></a></td>
 </td>  <td><a href="/adm/menu" target="_top">$lt{'main'}</a></td>
 $reloadlink  $reloadlink
 $navmaps  $navmaps
 $docs  $docs
 $groups  $groups
 <td bgcolor="$tabbg">  $remote
 <a href="/adm/remote?action=launch&amp;url=$escurl" target="_top">  <td><a href="/adm/roles" target="_top">$lt{'roles'}</a></td>
 <font $face color="$font">$lt{'launch'}</font></a></td>  <td>$helplink</td>
 <td bgcolor="$tabbg">  <td class="LC_top_logout"><a href="/adm/logout" target="_top">$lt{'exit'}</a></td>
 <a href="/adm/roles" target="_top"><font $face color="$font">$lt{'roles'}</font></a>  
 </td>  
 <td bgcolor="$tabbg">  
 <a href="/adm/logout" target="_top"><font $face color="$font">$lt{'exit'}</font></a>  
 </td>  
 <td bgcolor="$tabbg">  
 <img align="right" src="$logo" alt="Logo" />  
 <b>LON-CAPA</b></td>  
 </tr>  </tr>
 </table>  </table>
 $form  $form
Line 295  ENDINLINEMENU Line 278  ENDINLINEMENU
 # ====================================== This gets called in the header section  # ====================================== This gets called in the header section
   
 sub registerurl {  sub registerurl {
     my $forcereg=shift;      my ($forcereg) = @_;
     my $target = shift;  
     my $result = '';      my $result = '';
     if ($env{'request.noversionuri'} eq '/res/adm/pages/menu.html') { return ''; }      if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
     my $force_title='';      my $force_title='';
     if ($env{'request.state'} eq 'construct') {      if ($env{'request.state'} eq 'construct') {
  $force_title=&Apache::lonxml::display_title();   $force_title=&Apache::lonxml::display_title();
     }      }
     if ($target eq 'edit') {  
         $result .="<script type=\"text/javascript\">\n".  
             "if (typeof swmenu != 'undefined') {swmenu.currentURL=null;}\n".  
             &Apache::loncommon::browser_and_searcher_javascript().  
                 "\n</script>\n";  
     }  
     if (($env{'browser.interface'} eq 'textual') ||      if (($env{'browser.interface'} eq 'textual') ||
         ($env{'environment.remote'} eq 'off') ||          ($env{'environment.remote'} eq 'off') ||
         ((($env{'request.publicaccess'}) ||           ((($env{'request.publicaccess'}) || 
          (!&Apache::lonnet::is_on_map(           (!&Apache::lonnet::is_on_map(
    &Apache::lonnet::unescape($env{'request.noversionuri'})))) &&     &unescape($env{'request.noversionuri'})))) &&
         (!$forcereg))) {          (!$forcereg))) {
   return $result.    return $result.
           '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>'.$force_title;            '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>'.$force_title;
     }      }
 # Graphical display after login only  # Graphical display after login only
     if ($Apache::lonxml::registered && !$forcereg) { return ''; }      if ($env{'request.registered'} && !$forcereg) { return ''; }
     if ($target ne 'edit') {      $result.=&innerregister($forcereg);
  $result.=&innerregister($forcereg,$target);  
     }  
     return $result.$force_title;      return $result.$force_title;
 }  }
   
Line 330  sub registerurl { Line 304  sub registerurl {
 # =========== and in the body of the document  # =========== and in the body of the document
   
 sub innerregister {  sub innerregister {
     my $forcereg=shift;      my ($forcereg, $titletable) = @_;
     my $target = shift;  
     my $titletable = shift;  
     my $result = '';      my $result = '';
     my ($uname,$thisdisfn);      my ($uname,$thisdisfn);
     my $const_space = ($env{'request.state'} eq 'construct');      my $const_space = ($env{'request.state'} eq 'construct');
     my $is_const_dir = 0;      my $is_const_dir = 0;
   
     if ($env{'request.noversionuri'} eq '/res/adm/pages/menu.html') { return ''; }      if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
   
     $Apache::lonxml::registered=1;      $env{'request.registered'} = 1;
   
     my $textinter=($env{'browser.interface'} eq 'textual');      my $textinter=($env{'browser.interface'} eq 'textual');
     my $noremote=($env{'environment.remote'} eq 'off');      my $noremote=($env{'environment.remote'} eq 'off');
           
     my $textual=($textinter || $noremote);      my $textual=($textinter || $noremote);
   
     @inlineremote=();      undef(@inlineremote);
     undef @inlineremote;  
   
     my $reopen=&Apache::lonmenu::reopenmenu();      my $reopen=&Apache::lonmenu::reopenmenu();
   
     my $newmail='';      my $newmail='';
     if ($noremote) {      if ($noremote) {
  $newmail='<table bgcolor="'.$pgbg.'" border="0" cellspacing="1" cellpadding="1" width="100%"><tr><td bgcolor="'.$tabbg.'"><font face="Arial,Helvetica,sans-serif">';   $newmail='<table id="LC_nav_location"><tr>';
     }      }
     if (($textual) && ($env{'request.symb'}) && ($env{'request.course.id'})) {      if (&Apache::lonmsg::newmail()) { 
    if ($textual) {
       $newmail.= '<td class="LC_new_mail">
                      <a href="/adm/communicate" target="_top">'.
      &mt('You have new messages').'</a></td>';
    } else {
       $newmail= 'swmenu.setstatus("you have","messages");';
    }
       } elsif (($textual) 
        && ($env{'request.symb'}) 
        && ($env{'request.course.id'})) {
    $newmail.= '<td class="LC_current_location">';
  my ($mapurl,$rid,$resurl)=   my ($mapurl,$rid,$resurl)=
     &Apache::lonnet::decode_symb(&Apache::lonnet::symbread());      &Apache::lonnet::decode_symb(&Apache::lonnet::symbread());
         $newmail.=$env{'course.'.$env{'request.course.id'}.'.description'};          $newmail.=$env{'course.'.$env{'request.course.id'}.'.description'};
Line 368  sub innerregister { Line 350  sub innerregister {
         if ($restitle) {          if ($restitle) {
     $newmail.=': '.$restitle;      $newmail.=': '.$restitle;
         }          }
         $newmail.='&nbsp;&nbsp;&nbsp;';          $newmail.='&nbsp;&nbsp;&nbsp;</td>';
     }  
     if (&Apache::lonmsg::newmail()) {   
        $newmail=($textual?  
  '<b><a href="/adm/communicate" target="_top">You have new messages</a></b><br />':  
                           'swmenu.setstatus("you have","messages");');  
     }      }
     if ($env{'request.state'} eq 'construct') {      if ($env{'request.state'} eq 'construct') {
         $newmail = $titletable;          $newmail = $titletable;
     } else {      } else {
  if ($noremote) {   if ($noremote) {
     $newmail.='</font></td></tr></table>';      $newmail.='</tr></table>';
  }   }
     }      }
     my $timesync=($textual?'':'swmenu.syncclock(1000*'.time.');');      my $timesync=($textual?'':'swmenu.syncclock(1000*'.time.');');
     my $tablestart=($noremote?'<font face="Arial,Helvetica,sans-serif"><table bgcolor="'.$pgbg.'" border="0" cellspacing="1" cellpadding="1" width="100%">':'').($textinter?'<br /><a href="#content">'.&mt('Skip to Content').'</a><br />':'');      my $tablestart=($noremote?'<table id="LC_menubuttons">':'').
     my $tableend=($noremote?'</table></font>':'').($textinter?'<a name="content" />':'');   ($textinter?'<br /><a href="#content">'.&mt('Skip to Content').'</a><br />':'');
       my $tableend=($noremote?'</table>':'').($textinter?'<a name="content" />':'');
 # =============================================================================  # =============================================================================
 # ============================ This is for URLs that actually can be registered  # ============================ This is for URLs that actually can be registered
     if (($env{'request.noversionuri'}!~m|^/(res/)*adm/|) || ($forcereg)) {      if (($env{'request.noversionuri'}!~m|^/(res/)*adm/|) || ($forcereg)) {
Line 412  sub innerregister { Line 390  sub innerregister {
     &Apache::lonnet::allowed('opa',$crs)) {      &Apache::lonnet::allowed('opa',$crs)) {
     $hwkadd.=&switch('','',7,3,'pparm.gif','problem[_2]','parms[_2]',      $hwkadd.=&switch('','',7,3,'pparm.gif','problem[_2]','parms[_2]',
      "gocmd('/adm/parmset','set')",       "gocmd('/adm/parmset','set')",
      'Modify deadlines, etc, for this resource');       'Modify parameter settings for this resource');
  }   }
 # -- End Homework  # -- End Homework
         ###          ###
Line 471  sub innerregister { Line 449  sub innerregister {
                     ('','',6,1,'cstr.gif','edit[_1]','resource[_2]',                      ('','',6,1,'cstr.gif','edit[_1]','resource[_2]',
                      "go('".$cfile."');","Edit this resource");                       "go('".$cfile."');","Edit this resource");
             } elsif ($editbutton eq '') {              } elsif ($editbutton eq '') {
                 $editbutton=&switch('','',6,1,'port.gif',                  $editbutton=&clear(6,1);
     'port-[_1]','folio[_1]',  
     "go('/adm/portfolio');",  
     "Enter my portfolio space");  
             }              }
         }          }
         ###          ###
Line 507  c&6&3 Line 482  c&6&3
 c&8&1  c&8&1
 c&8&2  c&8&2
 s&8&3&prt.gif&prepare[_1]&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document  s&8&3&prt.gif&prepare[_1]&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
 s&9&1&sbkm.gif&set[_1]&bookmark[_2]&set_bookmark()&Set a bookmark for this resource&2  s&9&1&sbkm.gif&set[_1]&bookmark[_2]&set_bookmark()&Set a bookmark for this resource&1
 s&9&3&anot.gif&anno-[_1]&tations[_1]&annotate()&Make notes and annotations about this resource&2  s&9&3&anot.gif&anno-[_1]&tations[_1]&annotate()&Make notes and annotations about this resource&1
 ENDMENUITEMS  ENDMENUITEMS
             unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {              unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
         $menuitems.=(<<ENDREALRES);          $menuitems.=(<<ENDREALRES);
Line 565  ENDREGTEXT Line 540  ENDREGTEXT
 # Registered, graphical output  # Registered, graphical output
         } else {          } else {
     my $requri=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((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));      $requri=&Apache::lonenc::check_encrypt(&unescape($requri));
     my $cursymb=&Apache::lonenc::check_encrypt($env{'request.symb'});      my $cursymb=&Apache::lonenc::check_encrypt($env{'request.symb'});
     my $navstatus=&get_nav_status();      my $navstatus=&get_nav_status();
     my $clearcstr;      my $clearcstr;
Line 658  ENDDONOTREGTHIS Line 633  ENDDONOTREGTHIS
   
 sub loadevents() {  sub loadevents() {
     if ($env{'request.state'} eq 'construct' ||      if ($env{'request.state'} eq 'construct' ||
  $env{'request.noversionuri'} eq '/res/adm/pages/menu.html') { return ''; }   $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
     return 'LONCAPAreg();';      return 'LONCAPAreg();';
 }  }
   
 sub unloadevents() {  sub unloadevents() {
     if ($env{'request.state'} eq 'construct' ||      if ($env{'request.state'} eq 'construct' ||
  $env{'request.noversionuri'} eq '/res/adm/pages/menu.html') { return ''; }   $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
     return 'LONCAPAstale();';      return 'LONCAPAstale();';
 }  }
   
Line 680  sub startupremote { Line 655  sub startupremote {
 # The Remote actually gets launched!  # The Remote actually gets launched!
 #  #
     my $configmenu=&rawconfig();      my $configmenu=&rawconfig();
     my $esclowerurl=&Apache::lonnet::escape($lowerurl);      my $esclowerurl=&escape($lowerurl);
     my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited');      my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited');
     return(<<ENDREMOTESTARTUP);      return(<<ENDREMOTESTARTUP);
 <script type="text/javascript">  <script type="text/javascript">
Line 763  sub load_remote_msg { Line 738  sub load_remote_msg {
     if (($env{'browser.interface'} eq 'textual') ||      if (($env{'browser.interface'} eq 'textual') ||
         ($env{'environment.remote'} eq 'off')) { return ''; }          ($env{'environment.remote'} eq 'off')) { return ''; }
   
     my $esclowerurl=&Apache::lonnet::escape($lowerurl);      my $esclowerurl=&escape($lowerurl);
     my $link=&mt('<a href="[_1]">Continue</a> on in Inline Menu mode',      my $link=&mt('<a href="[_1]">Continue</a> on in Inline Menu mode',
     "/adm/remote?action=collapse?url=$esclowerurl");   "/adm/remote?action=collapse&amp;url=$esclowerurl");
     return(<<ENDREMOTEFORM);      return(<<ENDREMOTEFORM);
 <p>  <p>
 <form name="wheel">  <form name="wheel">
Line 806  ENDRESIZE Line 781  ENDRESIZE
     $returnval.=(<<ENDOPEN);      $returnval.=(<<ENDOPEN);
 window.status='Opening LON-CAPA Remote Control';  window.status='Opening LON-CAPA Remote Control';
 var menu=window.open("/res/adm/pages/menu.html","$menuname",  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=375,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5");
 self.name='loncapaclient';  self.name='loncapaclient';
 ENDOPEN  ENDOPEN
     return '<script type="text/javascript">'.$returnval.'</script>';      return '<script type="text/javascript">'.$returnval.'</script>';
Line 838  sub switch { Line 813  sub switch {
     $bot=&mt($bot);      $bot=&mt($bot);
     $desc=&mt($desc);      $desc=&mt($desc);
     $img=&mt($img);      $img=&mt($img);
   
     unless (($env{'browser.interface'} eq 'textual')  ||      unless (($env{'browser.interface'} eq 'textual')  ||
             ($env{'environment.remote'} eq 'off')) {              ($env{'environment.remote'} eq 'off')) {
 # Remote  # Remote
Line 864  sub switch { Line 840  sub switch {
        my $lonhttpdPort=$Apache::lonnet::perlvar{'lonhttpdPort'};         my $lonhttpdPort=$Apache::lonnet::perlvar{'lonhttpdPort'};
        if (!defined($lonhttpdPort)) { $lonhttpdPort='8080'; }         if (!defined($lonhttpdPort)) { $lonhttpdPort='8080'; }
        my $pic=         my $pic=
    '<img border="0" alt="'.$text.'" src="http://'.$ENV{'HTTP_HOST'}.     '<img alt="'.$text.'" src="http://'.$ENV{'HTTP_HOST'}.
    ':'.$lonhttpdPort.'/res/adm/pages/'.$img.'" align="'.     ':'.$lonhttpdPort.'/res/adm/pages/'.$img.'" align="'.
    ($nobreak==3?'right':'left').'" />';     ($nobreak==3?'right':'left').'" />';
        if (($env{'browser.interface'} eq 'textual') || ($env{'browser.interface'} eq 'faketextual')) {         if ($env{'browser.interface'} eq 'faketextual') {
 # Accessibility  # Accessibility
    if ($nobreak==3) {     if ($nobreak==3) {
        $inlineremote[10*$row+$col]="\n".         $inlineremote[10*$row+$col]="\n".
    '<td width="40%" align="right"><font color="'.$font.'" size="+1">'.$text.     '<td class="LC_menubuttons_text" align="right">'.$text.
    '</font></td><td width="10%" align="right" bgcolor="'.$tabbg.'">'.     '</td><td class="LC_menubuttons_img" align="left">'.
    '<a href="javascript:'.$act.';">'.$pic.'</a></td></tr>';     '<a href="javascript:'.$act.';">'.$pic.'</a></td></tr>';
    } elsif ($nobreak) {     } elsif ($nobreak) {
        $inlineremote[10*$row+$col]="\n<tr>".         $inlineremote[10*$row+$col]="\n<tr>".
    '<td width="10%" align="left" bgcolor="'.$tabbg.'">'.     '<td class="LC_menubuttons_img" align="left">'.
    '<a href="javascript:'.$act.';">'.$pic.     '<a href="javascript:'.$act.';">'.$pic.'</a></td>
    '</a></td><td width="40%" align="left"><font color="'.$font.'" size="+1">'.$text.'</font></td>';                      <td class="LC_menubuttons_text" align="left">'.$text.'</td>';
    } else {     } else {
        $inlineremote[10*$row+$col]="\n<tr>".         $inlineremote[10*$row+$col]="\n<tr>".
    '<td width="10%" align="left" bgcolor="'.$tabbg.'">'.     '<td class="LC_menubuttons_img" align="left">'.
    '<a href="javascript:'.$act.';">'.$pic.     '<a href="javascript:'.$act.';">'.$pic.
    '</a></td><td colspan="3"><font color="'.$font.'">'.$desc.     '</a></td><td class="LC_menubuttons_text" colspan="3">'.
    '</font></td></tr>';            $desc.'</td></tr>';
    }     }
        } else {         } else {
 # Inline Menu  # Inline Menu
    $inlineremote[10*$row+$col]=     $inlineremote[10*$row+$col]=
    '<a href="javascript:'.$act.';">'.$pic.     '<a href="javascript:'.$act.';">'.$pic.
    '</a><font color="'.$font.'" size="2">'.$desc.     '</a><span class="LC_menubuttons_inline_text">'.$desc.'</span>';
    '</font>';  
        }         }
    }     }
     return '';      return '';
Line 953  sub rawconfig { Line 928  sub rawconfig {
     my $con=($env{'request.state'} eq 'construct');      my $con=($env{'request.state'} eq 'construct');
     my $rol=$env{'request.role'};      my $rol=$env{'request.role'};
     my $requested_domain = $env{'request.role.domain'};      my $requested_domain = $env{'request.role.domain'};
     foreach (@desklines) {      foreach my $line (@desklines) {
         my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc)=split(/\:/,$_);          my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc)=split(/\:/,$line);
         $prt=~s/\$uname/$uname/g;          $prt=~s/\$uname/$uname/g;
         $prt=~s/\$udom/$udom/g;          $prt=~s/\$udom/$udom/g;
         $prt=~s/\$crs/$crs/g;           $prt=~s/\$crs/$crs/g; 
         $prt=~s/\$requested_domain/$requested_domain/g;          $prt=~s/\$requested_domain/$requested_domain/g;
           my $type = &Apache::loncommon::course_type();
           if ($type eq 'Group') {
               $desc = &convert_menu_function($desc,$type);
           }
         if ($pro eq 'clear') {          if ($pro eq 'clear') {
     $output.=&clear($row,$col);      $output.=&clear($row,$col);
         } elsif ($pro eq 'any') {          } elsif ($pro eq 'any') {
Line 1079  sub utilityfunctions { Line 1058  sub utilityfunctions {
     unless (($env{'browser.interface'} eq 'textual')  ||      unless (($env{'browser.interface'} eq 'textual')  ||
         ($env{'environment.remote'} eq 'off') || ($caller eq '/adm/menu')) { return ''; }          ($env{'environment.remote'} eq 'off') || ($caller eq '/adm/menu')) { return ''; }
     my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));      my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));
     $currenturl=&Apache::lonenc::check_encrypt(&Apache::lonnet::unescape($currenturl));      $currenturl=&Apache::lonenc::check_encrypt(&unescape($currenturl));
           
     my $currentsymb=&Apache::lonenc::check_encrypt($env{'request.symb'});      my $currentsymb=&Apache::lonenc::check_encrypt($env{'request.symb'});
     my $nav_control=&nav_control_js();      my $nav_control=&nav_control_js();
   
       my $start_page_annotate = 
           &Apache::loncommon::start_page('Annotator',undef,
          {'only_body' => 1,
    'js_ready'  => 1,
    'bgcolor'   => '#BBBBBB',
    'add_entries' => {
       'onload' => 'javascript:document.goannotate.submit();'}});
   
       my $start_page_bookmark = 
           &Apache::loncommon::start_page('Bookmarks',undef,
          {'only_body' => 1,
    'js_ready'  => 1,
    'bgcolor'   => '#BBBBBB',});
   
       my $end_page = 
           &Apache::loncommon::end_page({'js_ready' => 1});
   
 return (<<ENDUTILITY)  return (<<ENDUTILITY)
   
     var currentURL="$currenturl";      var currentURL="$currenturl";
Line 1183  function group_chat(group) { Line 1180  function group_chat(group) {
    var winName = 'LONchat_'+group;     var winName = 'LONchat_'+group;
    grpchat=window.open(url,winName,'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no');     grpchat=window.open(url,winName,'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no');
 }  }
   
   function edit_bookmarks() {
      go('');
      w_BookmarkPal_flag=1;
      bookmarkpal=window.open("/adm/bookmarks",
                  "BookmarkPal", "width=400,height=505,scrollbars=0");
   }
   
   function annotate() {
      w_Annotator_flag=1;
      annotator=window.open('','Annotator','width=365,height=265,scrollbars=0');
      annotator.document.write(
      '$start_page_annotate'
     +"<form name='goannotate' target='Annotator' method='post' "
     +"action='/adm/annotations'>"
     +"<input type='hidden' name='urlnew' value='"+currentURL+"' />"
     +"<\\/form>"
     +'$end_page');
      annotator.document.close();
   }
   
   function set_bookmark() {
      go('');
      clienttitle=document.title;
      clienthref=location.pathname;
      w_bmquery_flag=1;
      bmquery=window.open('','bmquery','width=365,height=165,scrollbars=0');
      bmquery.document.write(
      '$start_page_bookmark'
      +"<center><form method='post'"
      +" name='newlink' action='/adm/bookmarks' target='bmquery' "
      +">\\n <table width=340 height=150 "
      +"bgcolor='ffffff' align=center><tr><td>Link Name:<br /><input "
      +"type='text' name='title' size=45 value='"+clienttitle+"' />"
      +"<br />Address:<br /><input type='text' name='address' size='45' "
      +"value='"+clienthref+"' /><br /><center><input type='submit' "
      +"value='Save' /> <input type='button' value='Close (no save)' "
      +"onclick='javascript:window.close();' /><\\/center><\\/td>"
      +"<\\/tr><\\/table><\\/form><\\/center>"
      +'$end_page' );
      bmquery.document.close();
   }
   
 ENDUTILITY  ENDUTILITY
 }  }
   
Line 1226  sub get_nav_status { Line 1266  sub get_nav_status {
     return $navstatus;      return $navstatus;
 }  }
   
 # ================================================ Handler when called directly  #FIXME this needs to move into mydesktab and the other locations 
   # the text is generated
   sub convert_menu_function {
 sub handler {      my ($rolename,$type) = @_;
     my $r = shift;      if ($type eq 'Group') {
     &Apache::loncommon::no_cache($r);          $rolename =~ s/student/member/g;
     &Apache::loncommon::content_type($r,'text/html');          $rolename =~ s/group/team/g;
     $r->send_http_header;          $rolename =~ s/course/group/g;
     return OK if $r->header_only;          $rolename =~ s/Course/Group/g;
   
     my $form;  
     if ($env{'environment.remote'} ne 'off' &&  
  $env{'browser.interface'} ne 'textual') {  
  $form=&serverform();  
     }  
     my $function='student';  
     if ($env{'request.role'}=~/^(cc|in|ta|ep)/) {  
  $function='coordinator';  
     }  
     if ($env{'request.role'}=~/^(su|dc|ad|li)/) {  
  $function='admin';  
     }  
     if (($env{'request.role'}=~/^(au|ca)/) ||  
  ($env{'request.noversionuri'}=~/^(\/priv|\~)/)) {  
  $function='author';  
     }  
     my $domain=&Apache::loncommon::determinedomain();  
     $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain);  
     $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain);  
     $font=&Apache::loncommon::designparm($function.'.font',$domain);  
     my $script_tag;  
     if ($env{'environment.remote'} ne 'off') {  
         my $utility=&utilityfunctions('/adm/menu');  
         $script_tag=(<<ENDSCRIPT);  
 <script type="text/javascript">  
 $utility  
 </script>  
 ENDSCRIPT  
     }      }
 # ---- Print the screen, pretend to be in text mode to generate text-based menu      return $rolename;
     unless ($env{'browser.interface'} eq 'textual') {  
  $env{'browser.interface'}='faketextual';  
  $env{'environment.remote'}='off';  
     }  
     $r->print(&Apache::loncommon::start_page('Main Menu',$script_tag));  
     $r->print('<table>'.&inlinemenu().'</table>'.$form);  
     $r->print(&Apache::loncommon::end_page());  
     return OK;  
 }  }
   
   
 # ================================================================ Main Program  # ================================================================ Main Program
   
 BEGIN {  BEGIN {

Removed from v.1.169  
changed lines
  Added in v.1.197


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>