Diff for /loncom/interface/lonsyllabus.pm between versions 1.12 and 1.96

version 1.12, 2003/02/10 20:03:13 version 1.96, 2009/09/07 18:31:50
Line 29 Line 29
 package Apache::lonsyllabus;  package Apache::lonsyllabus;
   
 use strict;  use strict;
   use Apache::lontemplate;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lontexconvert;  use Apache::lontexconvert;
 use Apache::lonfeedback;  use Apache::lonfeedback;
   use Apache::lonannounce;
   use Apache::lonlocal;
   use Apache::lonhtmlcommon;
   use Apache::lonspeller();
   use HTML::Entities();
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     $r->content_type('text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
 # ------------------------------------------------------------ Print the screen      my $target=$env{'form.grade_target'};
     $r->print(<<ENDDOCUMENT);  # --------------------------------------------------- Get course info from URL
 <html>  
 <head>  
 <title>The LearningOnline Network with CAPA</title>  
 </head>  
 ENDDOCUMENT  
     my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);      my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);
 # Is this even a course?  # ------------------------------------------------------------ Get query string
     my $homeserver=&Apache::lonnet::homeserver($cnum,$cdom);       &Apache::loncommon::get_unprocessed_cgi
                           ($ENV{'QUERY_STRING'},['forcestudent','register','forceedit','wrapperdisplay']);
   # ----------------------------------------------------- Is this even a course?
       my $homeserver=&Apache::lonnet::homeserver($cnum,$cdom);
     if ($homeserver eq 'no_host') {      if ($homeserver eq 'no_host') {
  $r->print('<body>No syllabus available</body>');          &Apache::loncommon::content_type($r,'text/html');
           $r->send_http_header;
             &Apache::loncommon::simple_error_page($r,'No syllabus available',
                             'No syllabus available');
         return OK;          return OK;
     }      }
   # ------------------------------------- There is such a course, get environment
       my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);
   
   # ------------------------------------------------------------ Print the screen
   
       if ($target eq 'tex') {
           $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
       }
   # -------------------------------------------------- Let's see who handles this
       my $externalsyllabus=$courseenv{'externalsyllabus'};
   
       if ($externalsyllabus=~/\w/) {
   
          if ($env{'form.wrapperdisplay'} eq 'menu') {
              $r->print(&Apache::lonwrapper::simple_menu());
          } else {
              $r->print(&Apache::lonwrapper::wrapper("/public/$cdom/$cnum/syllabus?wrapperdisplay=menu",
                              $externalsyllabus));
          }
          return OK;
       }
   
   # ------------------------------ The buck stops here: internal syllabus display
 # --------------------------------------------------------- The syllabus fields  # --------------------------------------------------------- The syllabus fields
     my %syllabusfields=(      my %syllabusfields=&Apache::lonlocal::texthash(
        'aaa_instructorinfo' => 'Instructor Information',         'aaa_instructorinfo' => 'Instructor Information',
        'bbb_description'    => 'Course Description',         'bbb_description'    => 'Course Description',
        'ccc_prereq'         => 'Prerequisites',         'ccc_prereq'         => 'Prerequisites',
Line 72  ENDDOCUMENT Line 102  ENDDOCUMENT
        'jjj_weblinks'       => 'Web Links',         'jjj_weblinks'       => 'Web Links',
        'kkk_textbook'       => 'Textbook',         'kkk_textbook'       => 'Textbook',
        'lll_includeurl'     => 'URLs To Include in Syllabus');         'lll_includeurl'     => 'URLs To Include in Syllabus');
   
 # --------------------------------------------------------------- Force Student  # --------------------------------------------------------------- Force Student
     &Apache::loncommon::get_unprocessed_cgi  
                                        ($ENV{'QUERY_STRING'},['forcestudent']);  
     my $forcestudent='';      my $forcestudent='';
     if ($ENV{'form.forcestudent'}) { $forcestudent='student'; };      if ($env{'form.forcestudent'}) { $forcestudent='student'; };
              my $forceedit='';
 # ------------------------------------- There is such a course, get environment      if ($env{'form.forceedit'}) { $forceedit='edit'; }
     my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);  
     $r->print(&Apache::loncommon::bodytag  # ----------------------------------------------------------------- Make header
                                        ("Syllabus",$forcestudent,'','',$cdom));      if ($target ne 'tex') {
     $r->print('<h1>'.$courseenv{'description'}.'</h1><h3>'.          my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);
               $Apache::lonnet::domaindescription{$cdom}.'</h3>');          my $js;
           if ($env{'form.backto'} eq 'coursecatalog') {
               $js .= <<"ENDSCRIPT";
   
   <script type="text/javascript">
   function ToCatalog(caller) {
       numidx = getIndexByName('coursenum');
           if (numidx > -1) {
               if (caller != 'details') {
                   document.backtocat.elements[numidx].value = '';
               }
           }
       document.backtocat.submit();
   }
   
   function getIndexByName(item) {
       for (var i=0;i<document.backtocat.elements.length;i++) {
           if (document.backtocat.elements[i].name == item) {
               return i;
           }
       }
       return -1;
   }
   
   </script>
   
   ENDSCRIPT
           }
           my $start_page =
            &Apache::loncommon::start_page("Syllabus", $rss_link.$js,
                          {'function'       => $forcestudent,
                           'domain'         => $cdom,
                           'force_register' =>
                           $env{'form.register'},});
   
           $r->print($start_page);
           if ($env{'form.backto'} eq 'coursecatalog') {
               &Apache::lonhtmlcommon::clear_breadcrumbs();
               &Apache::lonhtmlcommon::add_breadcrumb
                   ({href=>"javascript:ToCatalog()",
                   text=>"Course Catalog"});
               if ($env{'form.coursenum'} ne '') {
                   &Apache::lonhtmlcommon::add_breadcrumb
                       ({href=>"javascript:ToCatalog('details')",
                       text=>"Course details"});
               }
               &Apache::lonhtmlcommon::add_breadcrumb
                   ({href=>$r->uri,
                   text=>"Course syllabus"});
               $r->print(&Apache::lonhtmlcommon::breadcrumbs());
           }
       }
   # ---------------------------------------------------------- Load syllabus info
     my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);      my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);
     my $allowed=0;      my $allowed=0;
       my $privileged=0;
   
 # This handler might be called anonymously ...  # This handler might be called anonymously ...
 # ----------------------------------------------------- Only if not public call  # ----------------------------------------------------- Only if not public call
     if ($ENV{'user.environment'}) {      if ($env{'user.environment'}) {
 # does this user have privileges to post, etc?  # does this user have privileges to post, etc?
        if ($ENV{'request.course.id'}) {          if ($env{'request.course.id'}
           $allowed=&Apache::lonnet::allowed('srm',$ENV{'request.course.id'});          && $cdom eq $env{'course.'.$env{'request.course.id'}.'.domain'}
           if ($forcestudent) { $allowed=0; }          && $cnum eq $env{'course.'.$env{'request.course.id'}.'.num'}) {
        }              $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
        if ($allowed) {              $privileged=$allowed;
           $r->print('<p>'.              if (($syllabus{'uploaded.lastmodified'}) && (!$forceedit)) {
 &Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes','Help with filling in text boxes').'</p><p>This syllabus can be publically viewed at <tt>http://'.                  $forcestudent='student';
     $Apache::lonnet::hostname{$homeserver}.$r->uri.'</tt>'.              }
                &Apache::loncommon::help_open_topic('Syllabus_ExtLink').'</p>'.              if ($forcestudent or $target eq 'tex') { $allowed=0; }
   '<p><a href="'.$r->uri.'?forcestudent=1">Show Student View</a>'.          }
           &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').          if (($allowed) && ($env{'form.storesyl'})) {
           '</p>');              foreach my $syl_field (keys(%syllabusfields)) {
       }                  my $field=$env{'form.'.$syl_field};
        if (($allowed) && ($ENV{'form.storesyl'})) {                  chomp($field);
    foreach (keys %syllabusfields) {                  $field=~s/\s+$//s;
                my $field=$ENV{'form.'.$_};                  $field=~s/^\s+//s;
                $field=~s/\s+$//s;                  $field=~s/\<br\s*\/*\>$//s;
                $field=&Apache::lonfeedback::clear_out_html($field,1);                  $field=&Apache::lonfeedback::clear_out_html($field,1);
        $syllabus{$_}=$field;                  $syllabus{$syl_field}=$field;
                if ($_ eq 'lll_includeurl') { # clean up included URLs                  if ($syl_field eq 'lll_includeurl') { # clean up included URLs
                   my $field='';                      my $field='';
           foreach (split(/\n/,$syllabus{$_})) {                      foreach my $value (split(/\n/,$syllabus{$syl_field})) {
       my $url=$_;                          my $url=$value;
 # get rid of leading and trailing spaces  # get rid of leading and trailing spaces
                       $url=~s/^\s+//;                          $url=~s/^\s+//;
                       $url=~s/\s+$//;                          $url=~s/\s+$//;
                       if ($url=~/^http\:\/\/([^\/]+)\/(.+)$/) {                          if ($url=~m|^https?\://([^/]+)/(.+)$|) {
                           my $remainder=$2;                              my $host = $1;
                               my $remainder=$2;
 # remove the hostname from internal URLs  # remove the hostname from internal URLs
           foreach (keys %Apache::lonnet::hostname) {                              my $hostname = &Apache::lonnet::hostname($host);
                               if ($1=~/$Apache::lonnet::hostname{$_}/i) {                              my %all_hostnames = &Apache::lonnet::all_hostnames();
          $url=$remainder;                              foreach my $possible_host (keys(%all_hostnames)) {
       }                                  if ($possible_host =~ /\Q$hostname\E/i) {
           }                                      $url=$remainder;
       }                                  }
                               }
                           }
 # norm internal URLs  # norm internal URLs
                       unless ($url=~/^http\:/) {                          unless ($url=~/^https?\:/) {
           $url=&Apache::lonnet::clutter($url);                              $url=&Apache::lonnet::clutter($url);
                       }                          }
 # re-assemble field  # re-assemble field
                       if ($url) {                          if ($url) {
           $field.=$url."\n";                              $field.=$url."\n";
                       }                          }
   }                      }
                   $syllabus{$_}=$field;                      $syllabus{$syl_field}=$field;
       }                  }
            }              }
            $syllabus{'uploaded.domain'}=$ENV{'user.domain'};              $syllabus{'uploaded.domain'}=$env{'user.domain'};
            $syllabus{'uploaded.name'}=$ENV{'user.name'};              $syllabus{'uploaded.name'}=$env{'user.name'};
            $syllabus{'uploaded.lastmodified'}=time;              $syllabus{'uploaded.lastmodified'}=time;
            &Apache::lonnet::put('syllabus',\%syllabus,$cdom,$cnum);              &Apache::lonnet::put('syllabus',\%syllabus,$cdom,$cnum);
        }          }
       }
   
   #--------Functions
       if( ($allowed || $privileged) && $target ne 'tex') {
           my $functions=&Apache::lonhtmlcommon::start_funclist();
   
           if ($allowed) {
               $functions.=&Apache::lonhtmlcommon::add_item_funclist(
                             '<a href="'.$r->uri.'?forcestudent=1">'
                              .&mt('Show Public View').'</a>'
                              .&Apache::loncommon::help_open_topic(
                                   'Uploaded_Templates_PublicView'));
           } elsif ($privileged) {
               $functions.=&Apache::lonhtmlcommon::add_item_funclist(
                              '<a href="'.$r->uri.'?forceedit=1">'
                               .&mt('Edit').'</a>');
           }
   
           $functions.=&Apache::lonhtmlcommon::end_funclist();
           $r->print(&Apache::loncommon::head_subbox($functions));
       }
   
   #---------------------Print External URL Syllabus Info and Help Text
       if( ($allowed) && ($target ne 'tex') ) {
           my $protocol = $Apache::lonnet::protocol{$homeserver};
             $protocol = 'http' if ($protocol ne 'https');
           $r->print('<p class="LC_info">'
                    .&mt('This syllabus can be publicly viewed at [_1]'
                        ,'<tt>'.$protocol.'://'.&Apache::lonnet::hostname($homeserver).$r->uri.'</tt>')
                    .'&nbsp;'.&Apache::loncommon::help_open_topic('Syllabus_ExtLink')
                    .'</p>'
                    .'<p class="LC_info">'
                    .&mt('Instead of using this template you can specify an external URL as Syllabus in the [_1]Course Configuration[_2].'
                        ,'<a href="/adm/courseprefs?actions=courseinfo&phase=display">','</a>')
                    .'</p>'
           );
           #-Print Help Text
           $r->print(&Apache::loncommon::help_open_topic( 
                           'Uploaded_Templates_TextBoxes',
                           &mt('Help with filling in text boxes')));
       }
   
   #----------Print last update
       my $lastmod=$syllabus{'uploaded.lastmodified'};
       $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));
       my $who = &Apache::loncommon::aboutmewrapper(
           &Apache::loncommon::plainname($syllabus{'uploaded.name'},
           $syllabus{'uploaded.domain'}),$syllabus{'uploaded.name'},
           $syllabus{'uploaded.domain'});
       if ($target ne 'tex') {
           $r->print('<div class="LC_info">'.&mt('Last updated').': '.
               $lastmod . ' '.
               ($who ? &mt('by').' '.$who
                              : '' ) .
                '</div>' );
   
       } else {
           $r->print('\\\\ '.&mt('Last updated').': '.$lastmod.' '.
               ($who? &mt('by').'\\\\ '.
                       &Apache::loncommon::plainname($syllabus{'uploaded.name'},$syllabus{'uploaded.domain'})
                     :'')
                .'\\\\');
       }
   #----------------------------Print Headtitle
       if ($target ne 'tex') {
           $r->print('<h1>'.$courseenv{'description'}.'</h1>');
           $r->print('<h3>'.  &Apache::lonnet::domain($cdom,'description').'</h3>');
       } else {
           $r->print('\noindent{\large\textbf{'.$courseenv{'description'}.'}}\\\\\\\\\textbf{'.
           &Apache::lonnet::domain($cdom,'description').'}\\\\');
       }
   # -------------------------------------------------------- Get course personnel
       my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
       if ($target ne 'tex') {
           $r->print(&Apache::lonhtmlcommon::start_pick_box());
       } else {
           $r->print('\begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}\hline');
       }
       my @personnel=sort(keys(%coursepersonnel));
       my $lastpers=$personnel[$#personnel];
       foreach my $element (@personnel) {
           if ($target ne 'tex') {
               $r->print(&Apache::lonhtmlcommon::row_title($element));
           } else {
               $r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$element).' & ');
           }
           foreach (split(/\,/,$coursepersonnel{$element})) {
               my ($puname,$pudom)=split(/\:/,$_);
               if ($target ne 'tex') {
                   my $courseperson = &Apache::loncommon::plainname($puname,$pudom);
                   if (($env{'user.name'} eq '') || ($env{'user.name'} eq 'public') ||
                       ($env{'user.domain'} eq '') || ($env{'user.domain'} eq 'public')) {
                       $r->print(' '.$courseperson);
                   } else {
                       $r->print(' '.&Apache::loncommon::aboutmewrapper($courseperson,
                                 $puname,$pudom));
                   }
               } else {
                   $r->print(' '.&Apache::loncommon::plainname($puname,
                                 $pudom).' ');
               }
           }
           if ($target ne 'tex') {
               my $lastclose=$element eq $lastpers?1:0;
               $r->print(&Apache::lonhtmlcommon::row_closure($lastclose));
           } else {
               $r->print('\\\\ \hline');
           }
       }
       if ($target ne 'tex') {
           $r->print(&Apache::lonhtmlcommon::end_pick_box());
       } else {
           $r->print('\end{tabular}\\\\');
       }
   # -------------------------------------------------------------- Announcements?
       my $day = &Apache::lonannounce::showday(time,2,
                &Apache::lonannounce::readcalendar($cdom.'_'.$cnum));
       if ($target ne 'tex') {
           if ($allowed) {
               &Apache::lontemplate::print_start_template($r,'RSS Feeds and Blogs','LC_Box');
               $r->print(&Apache::lonrss::advertisefeeds($cnum,$cdom,$forceedit));
               my $editurl= &Apache::lonnet::absolute_url().'/adm/'.$cdom.'/'.$cnum.'/_rss.html';
               $r->print( '<a href="'.$editurl.'">'.&mt('New RSS Feed or Blog').'</a>');
               &Apache::lontemplate::print_end_template($r);
           } elsif (&Apache::lonrss::advertisefeeds($cnum,$cdom) ne '') {
               &Apache::lontemplate::print_start_template($r,'RSS Feeds and Blogs','LC_Box');
               $r->print(&Apache::lonrss::advertisefeeds($cnum,$cdom,$forceedit));
               &Apache::lontemplate::print_end_template($r);
           }
   
       } else {
           $r->print(&Apache::lonxml::xmlparse($r,'tex',$day));
     }      }
 # ---------------------------------------------------------------- Get syllabus  # ---------------------------------------------------------------- Get syllabus
     if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {      if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
        my $lastmod=$syllabus{'uploaded.lastmodified'};          if ($allowed) {
        $lastmod=($lastmod?localtime($lastmod):'never');              $r->print('<form method="post" action="">'.
               '<input type="hidden" name="forceedit" value="edit" />');
           }
           my @htmlids=();
   
        $r->print('<table><tr><td>Uploaded:</td><td>'.          foreach my $field (sort(keys(%syllabusfields))) {
  &Apache::loncommon::aboutmewrapper(              if (($syllabus{$field}=~/\w/) || ($allowed)) {
  &Apache::loncommon::plainname($syllabus{'uploaded.name'},                  my $message=$syllabus{$field};
                      $syllabus{'uploaded.domain'}),$syllabus{'uploaded.name'},                  if ($field eq 'lll_includeurl') { # this is the "included" field
                      $syllabus{'uploaded.domain'}).                      my $urls=$message;
  '</td></tr><tr><td>Last updated:</td><td>'.                      $message='';
                      $lastmod.                      foreach my $filelink (split(/\n/,$urls)) {
                      '</td></tr></table><p>');                          my $output='';
        if ($allowed) {                         # embed style?
    $r->print('<form method="post">');                          my ($curfext)=($filelink=~/\.([^\.]+)$/);
        }                          my $embstyle=&Apache::loncommon::fileembstyle($curfext);
        foreach (sort keys %syllabusfields) {                          if (($embstyle eq 'ssi') || ($curfext=~/\/$/)) {# make ssi call and remove everything but the body contents
           if (($syllabus{$_}) || ($allowed)) {                              $output=&Apache::lonnet::ssi_body($filelink);
               my $message=$syllabus{$_};                          } elsif ($embstyle eq 'img') {# embed as an image
               if ($_ eq 'lll_includeurl') { # this is the "included" field                              $output='<img src="'.$filelink.'" />';
   my $urls=$message;                          }
                   $message='';                          if ($output ne '') {
                   foreach my $filelink (split(/\n/,$urls)) {                                 if ($target ne 'tex') {
       my $output='';                                     $message.='<p>'.$output.'</p>';
 # embed style?                                 } else {
       my ($curfext)=($filelink=~/\.([^\.]+)$/);                                     $message.=' '.&Apache::lonxml::xmlparse($r,'tex','<p>'.$output.'</p>').' ';
                       my $embstyle=&Apache::loncommon::fileembstyle($curfext);                                 }
               if (($embstyle eq 'ssi') || ($curfext=~/\/$/)) {                          }
 # make ssi call and remove everything but the body contents                      }
                  $output=                      if ($allowed) {
                  ($filelink=~/^http\:/?&Apache::lonnet::externalssi($filelink):                          $r->print('<h3>'.$syllabusfields{$field}.
                                        &Apache::lonnet::ssi($filelink));                          &Apache::loncommon::help_open_topic('Syllabus_URLs').'</h3>');
                          $output=~s/^.*\<body[^\>]*\>//si;                      } else {
                          $output=~s/\<\/body\s*\>.*$//si;                          $r->print($message);
               } elsif ($embstyle eq 'img') {                      }
 # embed as an image                  } else {
                          $output='<img src="'.$filelink.'" />';                      &Apache::lonfeedback::newline_to_br(\$message);
       }                      $message =~s|(https?\://[^\s]+)|<a href="$1"><tt>$1</tt></a>|g;
                       $message.='<p>'.$output.'</p>';                      if ($allowed) {
                   }                          $message=&Apache::lonspeller::markeduptext($message);
                   if ($allowed) {                      }
                      $r->print('<h3>'.$syllabusfields{$_}.                      $message=&Apache::lontexconvert::msgtexconverted($message);
           &Apache::loncommon::help_open_topic('Syllabus_URLs').'</h3>'.                      if ($target ne 'tex') {
   '<p><a href="'.$r->uri.'?forcestudent=1">Show Student View</a>'.                          &Apache::lontemplate::print_template($r, $syllabusfields{$field}, $message,$allowed,'LC_Box');
  &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'</p>');                      } else {
  } else {                          $r->print('\\\\\textbf{'.$syllabusfields{$field}.'}\\\\'.
                   $r->print($message);                          &Apache::lonxml::xmlparse($r,'tex',$message).'\\\\');
                  }                       }
               } else {                      push(@htmlids,$field);
                  $message=~s/\n/\<br \/\>/g;                  }
                  $message                  if ($allowed) {
              =~s/(http\:\/\/[^\s]+)/\<a href=\"$1\"\>\<tt\>$1\<\/tt\>\<\/a\>/g;                      if ($target ne 'tex') {
          $message=&Apache::lontexconvert::msgtexconverted($message);                          &Apache::lontemplate::print_editbox_template($r, $syllabus{$field}, $field);
                  $r->print('<h3>'.$syllabusfields{$_}.'</h3><blockquote>'.                      }
                         $message.'</blockquote>');                  }
      }              }
               if ($allowed) {          }
                  $r->print('<br /><textarea cols="80" rows="6" name="'.$_.'">'.          if ($allowed) {
    $syllabus{$_}.              $r->print('</form>'.
            '</textarea><input type="submit" name="storesyl" value="Store" />');              &Apache::lonhtmlcommon::htmlareaselectactive(@htmlids));
       }          }
   }        # if ($target ne 'tex') {$r->print('</p>');} else {$r->print('\\\\');}
        }      } else {
        if ($allowed) {          if ($target ne 'tex') {$r->print('<p>');} else {$r->print('\par ');}
    $r->print('</form>');          $r->print(&mt('No syllabus information provided.'));
        }          if ($target ne 'tex') {$r->print('</p>');}
        $r->print('</p>');      }
       if ($target ne 'tex') {
           if ($env{'form.backto'} eq 'coursecatalog') {
               $r->print('<form name="backtocat" method="post" action="/adm/coursecatalog">'.
                         &Apache::lonhtmlcommon::echo_form_input(['backto','courseid']).
                         '</form>');
           }
           $r->print(&Apache::loncommon::end_page());
     } else {      } else {
        $r->print('<p>No syllabus information provided.</p>');          $r->print('\end{document}');
     }      }
     $r->print('</body></html>');  
     return OK;      return OK;
 }   }
   
 1;  1;
 __END__  __END__

Removed from v.1.12  
changed lines
  Added in v.1.96


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.