Diff for /loncom/interface/lonmenu.pm between versions 1.20 and 1.47

version 1.20, 2002/05/06 21:57:11 version 1.47, 2003/03/10 20:21:45
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::lonhtmlcommon();
   use Apache::loncommon;
 use Apache::File;  use Apache::File;
 use vars qw(@desklines $readdesk);  use vars qw(@desklines $readdesk);
    
 # =============================================================== Open the menu  
   
 sub open {  # ============================= This gets called at the top of the body section
 #    return(<<ENDOPEN);  
 #if (window.screen) {  sub menubuttons {
 #    self.resizeTo(screen.availWidth-215,screen.availHeight-30);      my $forcereg=shift;
 #    self.moveTo(190,15);      my $target  =shift;
 #}      my $registration=shift;
     return(<<ENDOPEN);      unless ($ENV{'browser.interface'} eq 'textual') { return ''; }
   # Textual display only
       my $output=(<<ENDMAINMENU);
 <script>  <script>
 var menu=window.open("/res/adm/pages/menu.html","LONCAPAmenu",  // BEGIN LON-CAPA Internal
 "height=350,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5");  
 </script>  </script>
 ENDOPEN  <a href="/adm/menu" target="_top">Main Menu</a><br />
   <script>
   // END LON-CAPA Internal
   </script>
   ENDMAINMENU
       if ($registration) { $output.=&innerregister($forcereg,$target); }
       return $output."<hr />";
   }
   
   # ====================================== This gets called in the header section
   
   sub registerurl {
       my $forcereg=shift;
       my $target = shift;
       my $result = '';
       
       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') ||
           ((($ENV{'request.publicaccess'}) || 
            (!&Apache::lonnet::is_on_map($ENV{'REQUEST_URI'}))) &&
           (!$forcereg))) {
    return $result.
            '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>';
       }
   # 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=($textual?
    '<b><a href="/adm/communicate">You have new messages</a></b><br />':
                             '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 (&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) {
    $hwkadd.=&switch('','',7,1,'subm.gif','view sub','missions',
                          "gocmd('/adm/grades','submission')",
          'View user submissions for this assessment resource');
               }
       if (&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'})) {
    $hwkadd.=&switch('','',7,2,'pgrd.gif','problem','grades',
                          "gocmd('/adm/grades','gradingmenu')",
                          'Modify user grades for this assessment resource');
               }
       if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) {
    $hwkadd.=&switch('','',7,3,'pparm.gif','problem','parms',
                          "gocmd('/adm/parmset','set')",
                          'Modify deadlines, etc, for this assessment resource');
               }
    }
   # -- End Homework
           ###
           ### Determine whether or not to display the 'cstr' button for this
           ### resource
           ###
           my $editbutton = '';
           if ($ENV{'user.author'}) {
               if ($ENV{'request.role'}=~/^(ca|au)/) {
                   # Set defaults for authors
                   my ($top,$bottom) = ('con-','struct');
                   my $action = "go('/priv/".$ENV{'user.name'}."');";
                   my $cadom  = $ENV{'request.role.domain'};
                   my $caname = $ENV{'user.name'};
                   my $desc = "Enter my resource construction space";
                   # Set defaults for co-authors
                   if ($ENV{'request.role'} =~ /^ca/) { 
                       ($cadom,$caname)=($ENV{'request.role'}=~/(\w+)\/(\w+)$/);
                       ($top,$bottom) = ('co con-','struct');
                       $action = "go('/priv/".$caname."');";
                       $desc = "Enter construction space as co-author";
                   }
                   # Check that we are on the correct machine
                   my $home = &Apache::lonnet::homeserver($caname,$cadom);
                   if ($home eq $Apache::lonnet::perlvar{'lonHostID'}) {
                       $editbutton=&switch
                           ('','',6,1,$top,,$bottom,$action,$desc);
                   }
               }
               ##
               ## Determine if user can edit url.
               ##
               my $cfile='';
               my $cfuname='';
               my $cfudom='';
               if ($ENV{'request.filename'}) {
                   my $file=&Apache::lonnet::declutter($ENV{'request.filename'});
                   $file=~s/^(\w+)\/(\w+)/\/priv\/$2/;
                   # Chech that the user has permission to edit this resource
                   ($cfuname,$cfudom)=&Apache::loncacc::constructaccess($file,$1);
                   if (defined($cfudom)) {
                       if (&Apache::lonnet::homeserver($cfuname,$cfudom) 
                           eq $Apache::lonnet::perlvar{'lonHostID'}) {
                           $cfile=$file;
                       }
                   }
               }        
               # Finally, turn the button on or off
               if ($cfile) {
                   $editbutton=&switch
                       ('','',6,1,'cstr.gif','edit','resource',
                        "go('".$cfile."');","Edit this resource");
               } elsif ($editbutton eq '') {
                   $editbutton=&clear(6,1);
               }
           }
           ###
           ###
   # Prepare the rest of the buttons
    my $menuitems=(<<ENDMENUITEMS);
   c&3&1
   s&2&1&back.gif&backward&&gopost('/adm/flip','back:'+currentURL)&Go to the previous resource in the course sequence&1
   s&2&3&forw.gif&forward&&gopost('/adm/flip','forward:'+currentURL)&Go to the next resource in the course sequence&1
   s&6&3&catalog.gif&catalog&info&catalog_info()&Show catalog information
   s&8&1&eval.gif&evaluate&this&gopost('/adm/evaluate',currentURL)&Provide my evaluation of this resource
   s&8&2&fdbk.gif&feedback&discuss&gopost('/adm/feedback',currentURL)&Provide feedback messages or contribute to the course discussion about this resource
   s&8&3&prt.gif&prepare&printout&gopost('/adm/printout',currentURL)&Prepare a printable document
   s&9&1&sbkm.gif&set&bookmark&set_bookmark()&Set a bookmark for this resource&2
   s&9&2&vbkm.gif&view&bookmark&edit_bookmarks()&Use or edit my bookmark collection&2
   s&9&3&anot.gif&anno-&tations&annotate()&Make notes and annotations about this resource&2
   ENDMENUITEMS
           my $buttons='';
           foreach (split(/\n/,$menuitems)) {
       my ($command,@rest)=split(/\&/,$_);
               if ($command eq 's') {
    $buttons.=&switch('','',@rest);
               } else {
                   $buttons.=&clear(@rest);
               }
           }
           if ($textual) {
   # Registered, textual output
               my $utility=&utilityfunctions();
               my $form=&serverform();
       $result =(<<ENDREGTEXT);
   <script>
   // BEGIN LON-CAPA Internal
   $utility
   </script>
   $timesync
   $newmail
   $buttons
   $hwkadd
   $editbutton
   $form
   <script>
   //END LON-CAPA Internal
   </script>
   
   ENDREGTEXT
   # Registered, graphical output
           } else {
       $result = (<<ENDREGTHIS);
        
   <script language="JavaScript">
   // 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+window.location.search;
             swmenu.currentSymb="$ENV{'request.symb'}";
             swmenu.reloadSymb="$ENV{'request.symb'}";
             swmenu.currentStale=0;
             $hwkadd
             $editbutton
       }
   
       function LONCAPAstale() {
     swmenu=$reopen
             swmenu.currentStale=1;
             if (swmenu.reloadURL!='' && swmenu.reloadURL!= null) { 
                swmenu.switchbutton
                (3,1,'reload.gif','return','location','go(reloadURL)','Return to the last known location in the course sequence');
     }
             swmenu.clearbut(7,1);
             swmenu.clearbut(7,2);
             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,2);clearbut(9,3);clearbut(6,3);clearbut(6,1)',
     2000);
   
         }
   
   // END LON-CAPA Internal
   </script>
   ENDREGTHIS
           }
   # =============================================================================
       } else {
   # ========================================== This can or will not be registered
           if ($textual) {
   # Not registered, textual
       $result= (<<ENDDONOTREGTEXT);
   ENDDONOTREGTEXT
           } else {
   # Not registered, graphical
              $result = (<<ENDDONOTREGTHIS);
   
   <script language="JavaScript">
   // BEGIN LON-CAPA Internal
   var swmenu=null;
   
       function LONCAPAreg() {
     swmenu=$reopen
             $timesync
             swmenu.currentStale=1;
             swmenu.clearbut(2,1);
             swmenu.clearbut(2,3);
             swmenu.clearbut(8,1);
             swmenu.clearbut(8,2);
             swmenu.clearbut(8,3);
             if (swmenu.currentURL) {
                swmenu.switchbutton
                 (3,1,'reload.gif','return','location','go(currentURL)');
      } else {
         swmenu.clearbut(3,1);
             }
       }
   
       function LONCAPAstale() {
       }
   
   // END LON-CAPA Internal
   </script>
   ENDDONOTREGTHIS
          }
   # =============================================================================
       }
       return $result;
   }
   
   sub loadevents() {
       return 'LONCAPAreg();';
   }
   
   sub unloadevents() {
       return 'LONCAPAstale();';
   }
   
   # ============================================================= 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
 }  }
   
 # ============================================================ Switch Menu Item  sub setflags() {
       return(<<ENDSETFLAGS);
   <script>
       menuloaded=0;
       tim=0;
   </script>
   ENDSETFLAGS
   }
   
 sub switchmenu {  sub maincall() {
     my ($row,$col,$imgsrc,$texttop,$textbot,$action)=@_;      if ($ENV{'browser.interface'} eq 'textual') { return ''; }
     my $openwin=&openmenu();      return(<<ENDMAINCALL);
     return(<<ENDSMENU);  
 <script>  <script>
    var swmenu=$openwin      main();
    swmenu.switchbutton($row,$col,"$imgsrc","$texttop","$textbot","$action");  
 </script>  </script>
 ENDSMENU  ENDMAINCALL
 }  }
   # ================================================================= Reopen menu
   
   sub reopenmenu {
      if ($ENV{'browser.interface'} eq 'textual') { return ''; }
      my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
      my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
      return('window.open('.$nothing.',"'.$menuname.'","",false);');
   } 
   
   # =============================================================== Open the menu
   
   sub open {
       my $returnval='';
       if ($ENV{'browser.interface'} eq 'textual') { return ''; }
       my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
       unless (shift eq 'unix') {
   # resizing does not work on linux because of virtual desktop sizes
          $returnval.=(<<ENDRESIZE);
   if (window.screen) {
       self.resizeTo(screen.availWidth-215,screen.availHeight-55);
       self.moveTo(190,15);
   }
   ENDRESIZE
       }
       $returnval.=(<<ENDOPEN);
   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");
   ENDOPEN
       return '<script>'.$returnval.'</script>';
   }
   
   
 # ================================================================== Raw Config  # ================================================================== Raw Config
   
 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 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 {  sub switch {
     my ($uname,$udom,$row,$col,$img,$top,$bot,$act)=@_;      my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$nobreak)=@_;
     $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"););         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 "\n".($nobreak?' ':'<br />').
           '<a href="javascript:'.$act.';" target="_top">'.$text.'</a> '.
           ($nobreak?'':$desc);
      }
 }  }
   
 sub secondlevel {  sub secondlevel {
     my $output='';      my $output='';
     my       my 
     ($uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act)=@_;      ($uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc)=@_;
     if ($prt eq 'any') {      if ($prt eq 'any') {
    $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act);     $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
     } elsif ($prt=~/^r(\w+)/) {      } elsif ($prt=~/^r(\w+)/) {
         if ($rol eq $1) {          if ($rol eq $1) {
            $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act);             $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
         }          }
     }      }
     return $output;      return $output;
 }  }
   
 sub openmenu {  sub openmenu {
     if ($ENV{'browser.type'} eq 'explorer') {      my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
        return "window.open('javascript:void(0);','LONCAPAmenu');";      if ($ENV{'browser.interface'} eq 'textual') { return ''; }
    } else {      my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
        return "window.open('','LONCAPAmenu');";      return "window.open(".$nothing.",'".$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 123  sub rawconfig { Line 508  sub rawconfig {
     my $pub=($ENV{'request.state'} eq 'published');      my $pub=($ENV{'request.state'} eq 'published');
     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'};
     foreach (@desklines) {      foreach (@desklines) {
         my ($row,$col,$pro,$prt,$img,$top,$bot,$act)=split(/\:/,$_);          my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc)=split(/\:/,$_);
         $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;
         if ($pro eq 'clear') {          if ($pro eq 'clear') {
     $output.=&clear($row,$col);      $output.=&clear($row,$col);
         } elsif ($pro eq 'any') {          } elsif ($pro eq 'any') {
                $output.=&secondlevel(                 $output.=&secondlevel(
   $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act);    $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
  } elsif ($pro eq 'smp') {   } elsif ($pro eq 'smp') {
             unless ($adv) {              unless ($adv) {
                $output.=&secondlevel(                 $output.=&secondlevel(
           $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act);            $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
             }              }
         } elsif ($pro eq 'adv') {          } elsif ($pro eq 'adv') {
             if ($adv) {              if ($adv) {
                $output.=&secondlevel(                 $output.=&secondlevel(
   $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act);    $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
             }              }
         } elsif (($pro=~/p(\w+)/) && ($prt)) {          } elsif (($pro=~/p(\w+)/) && ($prt)) {
     if (&Apache::lonnet::allowed($1,$prt)) {      if (&Apache::lonnet::allowed($1,$prt)) {
                $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act);                 $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
             }              }
           } elsif ($pro eq 'course') {
               if ($ENV{'request.course.fn'}) {
                  $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
       }
         } 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);                                          $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);  
                     }                      }
                 }                  }
             }              }
         }          }
     }      }
       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 191  sub footer { Line 591  sub footer {
   
 }  }
   
   sub utilityfunctions {
       unless ($ENV{'browser.interface'} eq 'textual') { return ''; }
       my $currenturl=$ENV{'REQUEST_URI'};
       my $currentsymb=$ENV{'request.symb'};
   return (<<ENDUTILITY)
   
       var currentURL="$currenturl";
       var reloadURL="$currenturl";
       var currentSymb="$currentsymb";
   
   function go(url) {
      if (url!='' && url!= null) {
          currentURL = null;
          currentSymb= null;
          window.location.href=url;
      }
   }
   
   function gopost(url,postdata) {
      if (url!='') {
         this.document.server.action=url;
         this.document.server.postdata.value=postdata;
         this.document.server.command.value='';
         this.document.server.url.value='';
         this.document.server.symb.value='';
         this.document.server.submit();
      }
   }
   
   function gocmd(url,cmd) {
      if (url!='') {
         this.document.server.action=url;
         this.document.server.postdata.value='';
         this.document.server.command.value=cmd;
         this.document.server.url.value=currentURL;
         this.document.server.symb.value=currentSymb;
         this.document.server.submit();
      }
   }
   ENDUTILITY
   }
   
   sub serverform {
       return(<<ENDSERVERFORM);
   
   <form name="server" action="/adm/logout" method="post">
   <input type="hidden" name="postdata" value="none" />
   <input type="hidden" name="command" value="none" />
   <input type="hidden" name="url" value="none" />
   <input type="hidden" name="symb" value="none" />
   </form>
   ENDSERVERFORM
   }
   # ================================================ 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 $utility=&utilityfunctions();
       my $form=&serverform();
       my $bodytag=&Apache::loncommon::bodytag('Main Menu');
   # ------------------------------------------------------------ Print the screen
       $r->print(<<ENDHEADER);
   <html><head>
   <title>LON-CAPA Main Menu</title>
   <script>
   $utility
   </script>
   </head>
   $bodytag
   ENDHEADER
       $r->print(&rawconfig(1).$form);
       $r->print('</body></html>');
       return OK;
   }
   
 # ================================================================ Main Program  # ================================================================ Main Program
   
 BEGIN {  BEGIN {
Line 210  BEGIN { Line 690  BEGIN {
    $readdesk='done';     $readdesk='done';
   }    }
 }  }
   
 1;  1;
 __END__  __END__
   

Removed from v.1.20  
changed lines
  Added in v.1.47


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.