Diff for /loncom/interface/lonaboutme.pm between versions 1.117 and 1.154

version 1.117, 2009/03/27 04:59:30 version 1.154, 2013/05/03 16:26:43
Line 50  described at http://www.lon-capa.org. Line 50  described at http://www.lon-capa.org.
   
 =item handler()  =item handler()
   
 =item in_course()  
   
 =item aboutme_info()  =item aboutme_info()
   
 =item print_portfiles_link()  =item print_portfiles_link()
Line 96  sub handler { Line 94  sub handler {
     my $target=$env{'form.grade_target'};      my $target=$env{'form.grade_target'};
 # ------------------------------------------------------------ Print the screen  # ------------------------------------------------------------ Print the screen
     if ($target eq 'tex') {      if ($target eq 'tex') {
  $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));          $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
     }      }
     my (undef,undef,$cdom,$cnum,undef,$action)=split(/\//,$r->uri);      my (undef,undef,$cdom,$cnum,undef,$action)=split(/\//,$r->uri);
     my $is_course;      my $is_course;
 # Is this even a user?  # Is this even a user?
     if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') {      if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') {
  &Apache::loncommon::simple_error_page($r,'No info',          &Apache::loncommon::simple_error_page($r,'No info',
       'No user information available');              'No user information available');
         return OK;          return OK;
     } else {      } else {
         $is_course = &Apache::lonnet::is_course($cdom,$cnum);          $is_course = &Apache::lonnet::is_course($cdom,$cnum);
Line 121  sub handler { Line 119  sub handler {
                     $r->print('\noindent{\large\textbf{'.&mt('No user personal information page available').'}}\\\\\\\\');                      $r->print('\noindent{\large\textbf{'.&mt('No user personal information page available').'}}\\\\\\\\');
                 } else {                  } else {
                     $r->print(&Apache::loncommon::start_page("Personal Information Page"));                      $r->print(&Apache::loncommon::start_page("Personal Information Page"));
                     $r->print('<h2>'.&mt('No user personal information page available') .'</h2>'.                      $r->print('<p class="_LC_info">'.&mt('No user personal information page available') .'</p>'.
                               &mt('This is a result of one of the following:').'<ul>'.                          &mt('This is a result of one of the following:').'<ul>'.
                               '<li>'.&mt('The administrator of this domain has disabled personal information page functionality for this specific user.').'</li>'.                          '<li>'.&mt('The administrator of this domain has disabled personal information page functionality for this specific user.').'</li>'.
                               '<li>'.&mt('The domain has been configured to disable, by default, personal information page functionality for all users in the domain.').'</li>'.                          '<li>'.&mt('The domain has been configured to disable, by default, personal information page functionality for all users in the domain.').'</li>'.
                               '</ul>');                          '</ul>');
                     $r->print(&Apache::loncommon::end_page());                      $r->print(&Apache::loncommon::end_page());
                 }                  }
                 return OK;                  return OK;
Line 141  sub handler { Line 139  sub handler {
   
 # ------------------------------------------------------------ Get Query String  # ------------------------------------------------------------ Get Query String
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
     ['forceedit','forcestudent',                          ['forceedit','forcestudent','todocs',
      'register','popup']);                           'register','popup','folderpath','title']);
   # ----------------------------------------------- Available Portfolio file display
 # ----------------------------------------------- Available Portfolio file display   
     if (($target ne 'tex') && ($action eq 'portfolio')) {      if (($target ne 'tex') && ($action eq 'portfolio')) {
         &display_portfolio_header($r,$is_course);          &display_portfolio_header($r,$is_course);
         if ((!$is_course) && (!&Apache::lonnet::usertools_access($cnum,$cdom,'portfolio'))) {          if ((!$is_course) && (!&Apache::lonnet::usertools_access($cnum,$cdom,'portfolio'))) {
             $r->print('<h2>'.&mt('No user portfolio available') .'</h2>'.              $r->print('<h2>'.&mt('No user portfolio available') .'</h2>'.
                       &mt('This is a result of one of the following:').'<ul>'.                  &mt('This is a result of one of the following:').'<ul>'.
                       '<li>'.&mt('The administrator of this domain has disabled portfolio functionality for this specific user.').'</li>'.                  '<li>'.&mt('The administrator of this domain has disabled portfolio functionality for this specific user.').'</li>'.
                       '<li>'.&mt('The domain has been configured to disable, by default, portfolio functionality for all users in the domain.').'</li>'.                  '<li>'.&mt('The domain has been configured to disable, by default, portfolio functionality for all users in the domain.').'</li>'.
                       '</ul>');                  '</ul>');
         } else {          } else {
             my ($blocked,$blocktext) =               my ($blocked,$blocktext) =
                 &Apache::loncommon::blocking_status('port',$cnum,$cdom);                  &Apache::loncommon::blocking_status('port',$cnum,$cdom);
             if (!$blocked) {              if (!$blocked) {
                 &display_portfolio_files($r,$is_course);                  &display_portfolio_files($r,$is_course);
Line 168  sub handler { Line 165  sub handler {
   
     if ($is_course) {      if ($is_course) {
         if ($target ne 'tex') {          if ($target ne 'tex') {
     my $brcrum = [{href=>"/adm/navmaps",text=>"Navigate Course Contents"},              my $args = {'function'       => undef,
   {href=>"/adm/aboutme",text=>"Course Information"}];                          'domain'         => $cdom};
             my $start_page =              if ($env{'form.register'}) {
                 &Apache::loncommon::start_page(                  $args->{'force_register'} = $env{'form.register'};
                     "Course Information",              } else {
                      undef,                  my %coursedescription = 
                      {'function' => $env{'forcestudent'},                      &Apache::lonnet::coursedescription($cdom.'_'.$cnum);
                       'domain'   => $cdom,                  my $cdescr = $coursedescription{'description'};
                       'force_register' => $env{'forceregister'},                  my $brcrum = [{href=>"/adm/$cdom/$cnum/aboutme",
                       'bread_crumbs' => $brcrum});                                 text=>&mt('Course Information - [_1]',$cdescr),
                                  no_mt=>1}
                                ];
                   $args->{'bread_crumbs'} = $brcrum;
               }
               my $start_page = &Apache::loncommon::start_page(
                                    "Course Information",undef,$args);
             $r->print($start_page);              $r->print($start_page);
             $r->print('<h2>'.&mt('Group Portfolio').'</h2>');              $r->print('<h2>'.&mt('Group Portfolio').'</h2>');
             &print_portfiles_link($r,$is_course);              &print_portfiles_link($r,$is_course);
Line 186  sub handler { Line 189  sub handler {
         return OK;          return OK;
     }      }
   
 # --------------------------------------------------------------- Force Student  #------------Get rights
     my $forcestudent='';      my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);
     if ($env{'form.forcestudent'}) { $forcestudent='student'; };      my %syllabus=&Apache::lonnet::dump('aboutme',$cdom,$cnum);
       my ($allowed,$coursedomain,$coursenum);
     my $forceregister = '';      if ($env{'request.course.id'}) {
     if ($forcestudent eq '') {          $coursedomain = $env{'course.'.$env{'request.course.id'}.'.domain'};
         $forceregister = $env{'form.register'};          $coursenum = $env{'course.'.$env{'request.course.id'}.'.num'};
       }
       my ($cfile) = 
           &Apache::lonnet::can_edit_resource($env{'request.noversionuri'},
                                              $coursenum,$coursedomain,
                                              $env{'request.noversionuri'},
                                              $env{'request.symb'});
       if ($cfile ne '') {
           $allowed = 1;
     }      }
   
 #------------Get rights      if (!$env{'form.forceedit'} or $target eq 'tex') { $allowed=0; }
  my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);  
  my %syllabus=&Apache::lonnet::dump('aboutme',$cdom,$cnum);  
     my $allowed=0;  
   my $privleged=$allowed=(($env{'user.name'} eq $cnum) &&   
        ($env{'user.domain'} eq $cdom));  
        if ($forcestudent or $target eq 'tex') { $allowed=0; }   
    
   
 # --------------------------------------- There is such a user, get environment  # --------------------------------------- There is such a user, get environment
     
     if ($target ne 'tex') {      if ($target ne 'tex') {
  my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);          my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);
         my $args = {'function' => $forcestudent,          my $args = {'function' => undef,
                     'domain'   => $cdom,                      'domain'   => $cdom,
                     'force_register' => $forceregister};                      'force_register' => $env{'form.register'},
         if ($env{'form.popup'}) {                     };
           if ($env{'form.popup'}) { # Don't show breadcrumbs in popup window 
             $args->{'no_nav_bar'} = 1;              $args->{'no_nav_bar'} = 1;
           } elsif (!$env{'form.register'}) { #Don't show breadcrumbs twice, when this page is part of course content and you call it
               if (($env{'request.course.id'}) &&
                    ($env{'form.folderpath'} =~ /^supplemental/)) {
                   my $crstype = &Apache::loncommon::course_type();
                   my $title = $env{'form.title'};
                   if ($title eq '') {
                       $title = &mt('Personal Information Page');
                   }
                   my $brcrum =
                       &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);
                   if (ref($brcrum) eq 'ARRAY') {
                       $args->{'bread_crumbs'} = $brcrum;
                   }
               } else {
                   $args->{'bread_crumbs'} = [{href=>"/adm/$cdom/$cnum/aboutme",
                                               text=>"Personal Information Page"}];
               }
         }          }
  $args->{'bread_crumbs'} = [{href=>"/adm/fhwfdev/$cnum/aboutme",text=>"Personal Information Page"}];          my $start_page = &Apache::loncommon::start_page('Personal Information Page',$rss_link,$args);
  my $start_page =           $r->print($start_page);
     &Apache::loncommon::start_page("Personal Data",$rss_link,$args);     }
  $r->print($start_page);  
           #----------------Print Privacy note (edit mode) or last modified date. 
     }     
       if ($target ne 'tex') {
 #Print Privacy Note          #Print Privacy Note
        if ($allowed) {                    if ($allowed) {
            $r->print('<p class="LC_info">'              $r->print('<div class="LC_info">'
                     .'<b>'.&mt('Privacy Note:').'</b> '                  .'<b>'.&mt('Privacy Note:').'</b> '
                     .&mt('The information you submit can be viewed by anybody who is logged into LON-CAPA. Do not provide information that you are not ready to share publicly.')                  .&mt('The information you submit can be viewed by anybody who is logged into LON-CAPA. Do not provide information that you are not ready to share publicly.')
                     .'</p>'                  .'</div>'
            );              );
  }           } elsif ($syllabus{'uploaded.lastmodified'}) {
           #Print last modified
 #Print Help Text              my $lastmod=$syllabus{'uploaded.lastmodified'};
 if  ($target ne 'tex') {              $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));
  if($allowed){              $r->print('<div class="LC_info">');
  $r->print(&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')));              $r->print(&mt('Last updated').': '.$lastmod . '');
  }              $r->print('</div>');
 }          }
       }
   
 #----------------Print Functions  
  if( $target ne 'tex'){  
  &Apache::lontemplate::print_start_page_functions($r);  
       if($allowed){  
  my $query_string = &build_query_string({'forcestudent' => '1','popup' => $env{'form.popup'}});  
  &Apache::lontemplate::print_functions_content($r,'<a href="'.$r->uri.$query_string.'">'.&mt('Show Public View').'</a>'.&Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView'));  
     }elsif($privleged){  
  my $query_string = &build_query_string({'forceedit' => '1','popup' => $env{'form.popup'}});  
  &Apache::lontemplate::print_functions_content($r,'<a href="'.$r->uri.$query_string.'">'. &mt('Edit').'</a>');  
  }  
  &Apache::lontemplate::print_functions_content($r,&Apache::lontemplate::send_message($r,$cnum,$cdom));  
   
  if ($env{'request.course.id'} && &Apache::lonnet::allowed('srm',$env{'request.course.id'}) && &in_course($cdom,$cnum)) {  
  if (&Apache::lonnet::allowed('vsa', $env{'request.course.id'}) || &Apache::lonnet::allowed('vsa', $env{'request.course.id'}.'/'.  
  $env{'request.course.sec'})) {  
  &Apache::lontemplate::print_functions_content($r,&Apache::loncommon::track_student_link('View recent activity by this student',  
    $cnum,$cdom).('&nbsp;'x2));  
      }  
                         if (&Apache::lonnet::allowed('vgr', $env{'request.course.id'}) ||   
                             &Apache::lonnet::allowed('vgr', $env{'request.course.id'}.'/'.  
                                                      $env{'request.course.sec'})) {  
                             &Apache::lontemplate::print_functions_content($r,&Apache::loncommon::slot_reservations_link('Slot reservation history',  
                                         $cnum,$cdom).('&nbsp;'x2));  
                         }  
      &Apache::lontemplate::print_functions_content($r,&Apache::loncommon::noteswrapper(&mt('Add Records'),$cnum,$cdom));  
  }  
  &Apache::lontemplate::print_end_page_functions($r);  
  }    
 #------Print Headtitle  #------Print Headtitle
  if ($target ne 'tex') {       if ($target ne 'tex') {
  $r->print('<div class="LC_ContentBoxSpecial">');           $r->print('<div class="LC_Box">'.
  $r->print('<h2 class="LC_hcell">'.&Apache::loncommon::plainname($cnum,$cdom).'</h2>');                     '<h2 class="LC_hcell">'.&Apache::loncommon::plainname($cnum,$cdom).'</h2>');
  $r->print('<blockquote>');           if ($allowed) {
  if ($courseenv{'nickname'}) {               $r->print('<div style="margin: 0; float:left;">');
       $r->print('<h2>&quot;'.$courseenv{'nickname'}.'&quot;</h2>');               if ($courseenv{'nickname'}) {
     }                   $r->print('<h2>&quot;'.$courseenv{'nickname'}.'&quot;</h2>');
  $r->print('<h3>'.&Apache::lonnet::domain($cdom,'description').'</h3>');               }
  }               $r->print('<h3>'.&Apache::lonnet::domain($cdom,'description').'</h3></div>');
 else{               #Print Help Text
  $r->print('\noindent{\large\textbf{'.&Apache::loncommon::plainname($cnum,$cdom).'}}\\\\\\\\');               $r->print('<div style="margin: 0; float:right;">'.
  $r->print('\textbf{'.&Apache::lonnet::domain($cdom,'description').'}\\\\');                         &Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')).
 }                         '</div><br clear="all" />');
            } else {
                if ($courseenv{'nickname'}) {
                    $r->print('<h2>&quot;'.$courseenv{'nickname'}.'&quot;</h2>');
                }
                $r->print('<h3>'.&Apache::lonnet::domain($cdom,'description').'</h3>');
            }
        } else {
           $r->print('\noindent{\large\textbf{'.&Apache::loncommon::plainname($cnum,$cdom).'}}\\\\\\\\');
           $r->print('\textbf{'.&Apache::lonnet::domain($cdom,'description').'}\\\\');
       }
 # does this user have privileges to post, etc?  # does this user have privileges to post, etc?
   
        
  my $query_string;       my $query_string;
   
       if (($env{'form.uploaddoc.filename'}) &&      if (($env{'form.uploaddoc.filename'}) &&
           ($env{'form.storeupl'}) && ($allowed)) {            ($env{'form.storeupl'}) && ($allowed)) {
    if ($env{'form.uploaddoc.filename'}=~/\.(gif|jpg|png|jpeg)$/i) {          if ($env{'form.uploaddoc.filename'}=~/\.(gif|jpg|png|jpeg)$/i) {
       if ($syllabus{'uploaded.photourl'}) {              if ($syllabus{'uploaded.photourl'}) {
   &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});                  &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
       }              }
       $syllabus{'uploaded.photourl'}=              $syllabus{'uploaded.photourl'}=
                  &Apache::lonnet::userphotoupload('uploaddoc','aboutme');                  &Apache::lonnet::userfileupload('uploaddoc',undef,'aboutme',
    }                      undef,undef,undef,undef,undef,undef,undef,'400','500');
           $syllabus{'uploaded.lastmodified'}=time;           }
           &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum);          $syllabus{'uploaded.lastmodified'}=time;
        }          &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum);
       }
     if ($allowed && $env{'form.delupl'}) {      if ($allowed && $env{'form.delupl'}) {
  if ($syllabus{'uploaded.photourl'}) {          if ($syllabus{'uploaded.photourl'}) {
     &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});              &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
     delete($syllabus{'uploaded.photourl'});              delete($syllabus{'uploaded.photourl'});
     &Apache::lonnet::del('aboutme',['uploaded.photourl'],$cdom,$cnum);              &Apache::lonnet::del('aboutme',['uploaded.photourl'],$cdom,$cnum);
  }          }
     }      }
        if (($allowed) && ($env{'form.storesyl'})) {      if (($allowed) && ($env{'form.storesyl'})) {
    foreach my $syl_field (keys(%syllabusfields)) {          foreach my $syl_field (keys(%syllabusfields)) {
                my $field=$env{'form.'.$syl_field};              my $field=$env{'form.'.$syl_field};
                $field=~s/\s+$//s;              $field=~s/\s+$//s;
                $field=&Apache::lonfeedback::clear_out_html($field,              $field=&Apache::lonfeedback::clear_out_html($field,$env{'user.adv'});
                                                            $env{'user.adv'});              $syllabus{$syl_field}=$field;
        $syllabus{$syl_field}=$field;          }
            }          $syllabus{'uploaded.lastmodified'}=time;
            $syllabus{'uploaded.lastmodified'}=time;          &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum);
            &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum);      }
        }  
   
 my $lastmod;      my $image;
 my $image;   
 # ---------------------------------------------------------------- Get syllabus  # ---------------------------------------------------------------- Get syllabus
     if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {      if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
        $lastmod=$syllabus{'uploaded.lastmodified'};          if ($syllabus{'uploaded.photourl'}) {
        $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));              &Apache::lonnet::allowuploaded('/adm/aboutme',$syllabus{'uploaded.photourl'});
   $r->print('<br />'.&mt('Last updated').': '.$lastmod);  
               $image=qq|<img name="userPhoto" src="$syllabus{'uploaded.photourl'} " class="LC_AboutMe_Image" alt="Photo of the user" />|;
   
        if ($syllabus{'uploaded.photourl'}) {              if ($target eq 'tex') {
    &Apache::lonnet::allowuploaded('/adm/aboutme',                  $image=&Apache::lonxml::xmlparse($r,'tex',$image);
   $syllabus{'uploaded.photourl'});              }
           }
            #This call is to resize all "Personal Information" images in the LonCapa System. When its done, you can remove this line.  
    &Apache::lonnet::resizeImage(&Apache::lonnet::filelocation('',$syllabus{'uploaded.photourl'}));          if ($allowed) {
    #---End Resize---              $r->print(
                   '<form name="UploadPhoto" method="post" enctype="multipart/form-data" action="">'.
    $image=qq{<img name="userPhoto" src="$syllabus{'uploaded.photourl'} " class="LC_AboutMe_Image" />};                  '<h3>'.&mt('Upload a Photo').'</h3>'.
                      '<p class="LC_info">'.
    if ($target eq 'tex') {                  &mt('LON-CAPA will automatically scale your uploaded file so the image will not exceed a width of 400px and a height of 500px.').'</p>'.
        $image=&Apache::lonxml::xmlparse($r,'tex',$image);                  '<input type="file" name="uploaddoc" size="50" />'.
    }                  '<input type="submit" name="storeupl" value="'.&mt('Upload').'" />'.
                   '<input type="hidden" name="popup" value="'.$env{'form.popup'}.'" />'.
        }                  '</form>');
               if ($syllabus{'uploaded.photourl'}) {
        if ($allowed) {                  $r->print('<form name="delPhoto" method="post" action="" ><input type="submit" name="delupl" value="'.&mt('Delete Photo').'" /> </form>')
            $r->print(              }
  '<form method="post" enctype="multipart/form-data">'.              $r->print('<p></p>');
          '<h3>'.&mt('Upload a Photo').'</h3>'.          }
          '<input type="file" name="uploaddoc" size="50" />'.  
          '<input type="submit" name="storeupl" value="'.&mt('Upload').'" />'.          if($allowed) {
          '<input type="hidden" name="popup" value="'.$env{'form.popup'}.'" />'.              $r->print('<form name="lonaboutmeFields" method="post" action="" >');
  '</form><form method="post"><input type="submit" name="delupl" value="'.&mt('Delete Photo').'" /> </form><p>          }
 ');  
           if ($target ne 'tex') { #print Image
        }              $r->print($image.'<div class="LC_clear_float_footer"></div>');
   
  if($allowed) {          } #End Print Image
  $r->print('<form method="post">');  
  }         #Print Content eg. Contactinfo aboutme,...
           &Apache::lontemplate::print_aboutme_content_template($r,$allowed,$target,\%syllabusfields,\%syllabus);
  if($target ne 'tex') #print Image         #End Print Content
       {  
  &Apache::lontemplate::start_ContentBox($r);          if ($target ne 'tex') { #Begin Print RSS and portfiles
  &Apache::lontemplate::end_ContentBox($r);              &print_portfiles_link($r,$is_course);
  $r->print($image);              if (&Apache::lonrss::advertisefeeds($cnum,$cdom) ne '') {
                   &Apache::lontemplate::print_start_template($r,'RSS Feeds and Blogs','LC_Box');
  }#End Print Image                  $r->print(&Apache::lonrss::advertisefeeds($cnum,$cdom));
                   &Apache::lontemplate::print_end_template($r);
  #Print Content eg. Contactinfo aboutme,...              }
  &Apache::lontemplate::print_aboutme_content_template($r,$allowed,$target,\%syllabusfields,\%syllabus);  
         #End Print Content          } #End  Print RSS and portfiles
   
        if($target ne 'tex')#Begin Print RSS and portfiles  
        {          if ($allowed) {
  &print_portfiles_link($r,$is_course);              if ($env{'form.popup'}) {
  if(&Apache::lonrss::advertisefeeds($cnum,$cdom) ne ''){                  $r->print('<input type="hidden" name="popup" value="'.
  &Apache::lontemplate::print_start_template($r,'RSS Feeds and Blogs','LC_ContentBoxSpecial');                      $env{'form.popup'}.'" />');
  $r->print(&Apache::lonrss::advertisefeeds($cnum,$cdom));              }
  &Apache::lontemplate::print_end_template($r);              $r->print('</form>');
  }          }
           if ($target ne 'tex') {$r->print('<br />');} else {$r->print('\\\\');}
        } #End  Print RSS and portfiles  
   
          
        if ($allowed) {  
            if ($env{'form.popup'}) {  
                $r->print('<input type="hidden" name="popup" value="'.  
                          $env{'form.popup'}.'" />');  
            }  
    $r->print('</form>');  
        }  
        if ($target ne 'tex') {$r->print('<br />');} else {$r->print('\\\\');}  
     } else {      } else {
  # &Apache::lontemplate::send_message($r,$cnum,$cdom);          $r->print('<p class="LC_info">'.&mt('No personal information provided').'.</p>');
        $r->print('<p>'.&mt('No personal information provided').'.</p>');  
     }      }
     if($target ne 'tex'){  
  #$r->print('</blockquote>');  
     #$r->print('</div>');  
  }  
   
     if ($env{'request.course.id'}      if ($env{'request.course.id'}
  && &Apache::lonnet::allowed('srm',$env{'request.course.id'})          && &Apache::lonnet::allowed('srm',$env{'request.course.id'})
  && &in_course($cdom,$cnum)) {          && &Apache::lonnet::in_course($cdom,$cnum,$coursedomain,$coursenum,undef,1)) {
  if ($target ne 'tex') {             if ($target ne 'tex') {
    &Apache::lontemplate::print_start_template($r,&mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course'),'LC_ContentBoxSpecial');              $r->print('<a name="coursecomment" />');
    $r->print('<span class="LC_info">');              &Apache::lontemplate::print_start_template($r,&mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course'),'LC_Box');
    $r->print(&mt('Shared by course faculty and staff').&Apache::loncommon::help_open_topic("Course_Face_To_Face_Records,Course_Critical_Message"));              $r->print('<span class="LC_info">');
  $r->print('</span> <p>');                 $r->print(&mt('Shared by course faculty and staff').&Apache::loncommon::help_open_topic("Course_Face_To_Face_Records,Course_Critical_Message"));
 &Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom);              $r->print('</span>');
    $r->print('</p>');              &Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom);
    &Apache::lontemplate::print_end_template($r);              &Apache::lontemplate::print_end_template($r);
       
  } else {          } else {
     $r->print('\\\\\textbf{'.&mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course').'}\\\\'.&mt('Shared by course faculty and staff').'\\\\\\\\');              $r->print('\\\\\textbf{'.&mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course').'}\\\\'.&mt('Shared by course faculty and staff').'\\\\\\\\');
     &Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom);              &Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom, 'tex');
  }          }
     }      }
     $r->print('</blockquote>');  
     $r->print('</div>');  
     if ($target ne 'tex') {      if ($target ne 'tex') {
           $r->print('</div>');
         if ($env{'form.popup'}) {          if ($env{'form.popup'}) {
             $r->print('<p><a href="javascript:window.close()">'.&mt('Close window').'</a>');              $r->print('<p><a href="javascript:window.close()">'.&mt('Close window').'</a></p>');
         }          }
  $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
     } else {      } else {
  $r->print('\end{document}');          $r->print('\end{document}');
     }      }
   
     
   
     return OK;  
 }  
   
 sub in_course {  
     my ($udom,$uname,$cdom,$cnum,$type) = @_;      return OK;
     $type ||= 'any';  
     if (!defined($cdom) || !defined($cnum)) {  
  my $cid  = $env{'request.course.id'};  
  $cdom = $env{'course.'.$cid.'.domain'};  
  $cnum = $env{'course.'.$cid.'.num'};  
     }  
     my %roles = &Apache::lonnet::dump('roles',$udom,$uname);  
     my @course_roles = grep(m{^/\Q$cdom\E/\Q$cnum\E[/_]}, keys(%roles));  
     return 0 if (!@course_roles);  
     return 1 if ($type eq 'any');  
     my $now = time();  
     foreach my $role (@course_roles) {  
  my (undef,$role_end,$role_start)=split(/\_/,$roles{$role});  
  my $status = 'active';  
  if ($role_start > 0 && $now < $role_start) {  
     $status = 'future';  
  }  
  if ($role_end > 0 && $now > $role_end) {  
     $status = 'previous';  
  }  
  return 1 if ($status eq $type);  
     }  
     return 0;  
 }  }
   
 sub aboutme_info {  sub aboutme_info {
Line 478  sub print_portfiles_link { Line 438  sub print_portfiles_link {
         'vpfi' => 'Viewable portfolio files',          'vpfi' => 'Viewable portfolio files',
         'vgpf' => 'Viewable group portfolio files',          'vgpf' => 'Viewable group portfolio files',
         'difl' => 'Display file listing',          'difl' => 'Display file listing',
     );                           );
     if ($filecounts->{'both'} > 0) {      if ($filecounts->{'both'} > 0) {
  $output = '<div class="LC_ContentBoxSpecial"><h4 class="LC_hcell">';          $output = '<div class="LC_Box"><h4 class="LC_hcell">';
  $output .= ($is_course?$lt{'vgpf'}:$lt{'vpfi'}).'</h4>';          $output .= ($is_course?$lt{'vgpf'}:$lt{'vpfi'}).'</h4>';
           
  #$output = '<h4>'.($is_course?$lt{'vgpf'}:$lt{'vpfi'}).'</h4>';         #$output = '<h4>'.($is_course?$lt{'vgpf'}:$lt{'vpfi'}).'</h4>';
         $output .= '<a href="/adm/'.$cdom.'/'.$cnum.'/aboutme/portfolio'.          $output .= '<a href="/adm/'.$cdom.'/'.$cnum.'/aboutme/portfolio'.
                    $query_string.'">'.$lt{'difl'}.              $query_string.'">'.$lt{'difl'}.
                    '</a><br /><br />';              '</a><br /><br />';
         if ($filecounts->{'both'} == 1) {          if ($filecounts->{'both'} == 1) {
             if ($is_course) {              if ($is_course) {
                 $output .= &mt('One group portfolio file is available.').'<ul>';                  $output .= &mt('One group portfolio file is available.').'<ul>';
Line 501  sub print_portfiles_link { Line 461  sub print_portfiles_link {
             }              }
         }          }
         if ($filecounts->{'withoutpass'}) {          if ($filecounts->{'withoutpass'}) {
     $output .= '<li>'.&mt('[quant,_1,file is,files are] publicly accessible.',$filecounts->{'withoutpass'}).'</li>';              $output .= '<li>'.&mt('[quant,_1,file is,files are] publicly accessible.',$filecounts->{'withoutpass'}).'</li>';
         }          }
         if ($filecounts->{'withpass'}) {          if ($filecounts->{'withpass'}) {
     $output .= '<li>'.&mt('[quant,_1,file requires,files require] a passphrase for access.',$filecounts->{'withpass'}).'</li>';              $output .= '<li>'.&mt('[quant,_1,file requires,files require] a passphrase for access.',$filecounts->{'withpass'}).'</li>';
         }          }
         $output .= '</ul>';          $output .= '</ul>';
  $output .='</p>';          $output .= '</div>';
  $output .='</div>';      } elsif ($is_course) {
           $output .= '<div class="LC_info">'.&mt('There are currently no publicly accessible or password protected group portfolio files.').'</div>'; 
     }      }
     $r->print($output);      $r->print($output);
     return;      return;
Line 517  sub print_portfiles_link { Line 478  sub print_portfiles_link {
 sub build_query_string {  sub build_query_string {
     my ($new_items) = @_;      my ($new_items) = @_;
     my $query_string;      my $query_string;
     my @formelements = ('register');       my @formelements = ('register');
     my $new = 0;      my $new = 0;
     if (ref($new_items) eq 'HASH') {      if (ref($new_items) eq 'HASH') {
         $new = 1;          $new = 1;
         if (!defined($new_items->{'forceedit'}) &&           if (!defined($new_items->{'forceedit'}) &&
             !defined($new_items->{'forcestudent'})) {              !defined($new_items->{'forcestudent'})) {
             push(@formelements,('forceedit','forcestudent'));              push(@formelements,('forceedit','forcestudent'));
         }          }
Line 548  sub display_portfolio_header { Line 509  sub display_portfolio_header {
     my ($r,$is_course) = @_;      my ($r,$is_course) = @_;
     my ($cdom,$cnum,$name) = &aboutme_info($r,$is_course);      my ($cdom,$cnum,$name) = &aboutme_info($r,$is_course);
     my $query_string = &build_query_string();      my $query_string = &build_query_string();
     &Apache::lonhtmlcommon::clear_breadcrumbs();      my $args = {'domain' => $cdom};
     my $forcestudent='';      if ($env{'form.forcestudent'}) {
     if ($env{'form.forcestudent'}) { $forcestudent='student'; };          $args->{'function'} = 'student';
       }
     my $output;      my $output;
     if ($is_course) {      if ($is_course) {
         $output =           if (($env{'request.course.id'} eq $cdom.'_'.$cnum) && 
             &Apache::loncommon::start_page('Viewable group portfolio files',undef,              ($env{'form.register'})) {
                                             {'function' => $forcestudent,              $args->{force_register} = $env{'form.register'};
                                              'domain'   => $cdom,});          } else {
         $output .= '<h3>'.&mt('Group Portfolio files').'</h3>';              my %coursedescription = &Apache::lonnet::coursedescription($cdom.'_'.$cnum);
     } else {              my $cdescr = $coursedescription{'description'}; 
         $output  =              my $brcrum = [{href=>"/adm/$cdom/$cnum/aboutme".$query_string,
             &Apache::loncommon::start_page('Viewable portfolio files',undef,                             text=>&mt('Course Information - [_1]',$cdescr),
                                             {'function' => $forcestudent,                             no_mt=>1},
                                              'domain'   => $cdom,});                            {href=>"/adm/$cdom/$cnum/aboutme/portfolio".$query_string,
         if (!($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public')) {                             text=>'Viewable group portfolio files'}
             &Apache::lonhtmlcommon::add_breadcrumb                           ];
                 ({href=>"/adm/$cdom/$cnum/aboutme".$query_string,              $args->{bread_crumbs} = $brcrum;
                   text=>&mt('Personal Information Page - [_1]',$name),  
                   title=>&mt('Go to personal information page for [_1]', $name)},  
  {href=>"/adm/$cdom/$cnum/aboutme/portfolio",  
                   text=>&mt('Viewable files - [_1]', $name),  
                   title=>&mt('Viewable portfolio files for [_1]', $name)}  
             );  
             $output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Viewable portfolio files.'));  
         }          }
         $output .= '<h3>'.&mt('Portfolio files for [_1]',$name).'</h3>';          $output = &Apache::loncommon::start_page('Viewable group portfolio files',undef,$args).
                     '<h3>'.&mt('Group Portfolio files').'</h3>';
       } else {
           if ($env{'request.course.id'} && $env{'form.register'}) {
               $args->{force_register} = $env{'form.register'};
           } else {
               my $brcrum = [{href  => "/adm/$cdom/$cnum/aboutme".$query_string,
                             text  => &mt('Personal Information Page - [_1]',$name),
                             title => &mt('Go to personal information page for [_1]',$name),
                             no_mt => 1},
                            {href  => "/adm/$cdom/$cnum/aboutme/portfolio".$query_string,
                             text  => 'Viewable files',
                             title => &mt('Viewable portfolio files for [_1]',$name),
                             no_mt => 1}
                            ];
               $args->{bread_crumbs} = $brcrum;
           } 
           $output  = 
               &Apache::loncommon::start_page('Viewable portfolio files',
                                              undef,$args).
               '<h3>'.&mt('Portfolio files for [_1]',$name).'</h3>';
     }      }
     $r->print($output);      $r->print($output);
     return;      return;
Line 596  sub display_portfolio_files { Line 570  sub display_portfolio_files {
     }      }
   
     my $output = '<form action="'.&HTML::Entities::encode($r->uri,'<>&"')      my $output = '<form action="'.&HTML::Entities::encode($r->uri,'<>&"')
  .'" name="displaystatus" method="post">'.          .'" name="displaystatus" method="post">'.
  &mt('File access type: ').'<select name="portaccess">';          &mt('File access type: ').'<select name="portaccess">';
     foreach my $type ('withoutpass','withpass','both') {      foreach my $type ('withoutpass','withpass','both') {
         $output .= '<option value="'.$type.'" ';          $output .= '<option value="'.$type.'" ';
         if ($portaccess eq $type) {          if ($portaccess eq $type) {
Line 605  sub display_portfolio_files { Line 579  sub display_portfolio_files {
         }          }
         $output .= '>'.$lt{$type}.'</option>';          $output .= '>'.$lt{$type}.'</option>';
     }      }
     $output .= '</select>'."\n".      $output .= '</select>'."\n";
                '<input type="submit" name="portaccessbutton" value="'.      if ($env{'form.register'}) {
                &mt('Update display').'" />';          $output .= '<input type="hidden" name="register" value="'.$env{'form.register'}.'" />'."\n";
     $output .= '</form><br /><br />';      }
       $output .= '<input type="submit" name="portaccessbutton" value="'.
                  &mt('Update display').'" />'.
                  '</form><br /><br />';
     $r->print($output);      $r->print($output);
     my $filecounts = &portfolio_files($r,'listfiles',\%lt,$is_course,      my $filecounts = &portfolio_files($r,'listfiles',\%lt,$is_course,
                                       $cdom,$cnum,$name);                                        $cdom,$cnum,$name);
     if (!($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public')) {      if (!($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public')) {
         my $query_string = &build_query_string();          if ($env{'request.course.id'} && $env{'form.register'}) {
         $r->print('<br /><br /><a href="/adm/'.$cdom.'/'.$cnum.              my $query_string = &build_query_string();
                   '/aboutme'.$query_string.'">');              $r->print('<br /><a href="/adm/'.$cdom.'/'.$cnum.
         if ($is_course) {                        '/aboutme'.$query_string.'">');
             $r->print(&mt('Course Information page'));              if ($is_course) {
         } else {                  $r->print(&mt('Course Information page'));
             $r->print(&mt('Information about [_1]',$name));              } else {
                   $r->print(&mt('Information about [_1]',$name));
               }
               $r->print('</a>');
         }          }
         $r->print('</a>');  
     }      }
     return;      return;
 }  }
Line 634  sub portfolio_files { Line 613  sub portfolio_files {
                        both        => 0,                         both        => 0,
                      };                       };
     my $current_permissions =      my $current_permissions =
  &Apache::lonnet::get_portfile_permissions($cdom,$cnum);      &Apache::lonnet::get_portfile_permissions($cdom,$cnum);
     my %access_controls =       my %access_controls =
  &Apache::lonnet::get_access_controls($current_permissions);      &Apache::lonnet::get_access_controls($current_permissions);
     my $portaccess;      my $portaccess;
     if ($mode eq 'showlink') {      if ($mode eq 'showlink') {
         $portaccess = 'both';          $portaccess = 'both';
Line 652  sub portfolio_files { Line 631  sub portfolio_files {
         my %files_by_group;          my %files_by_group;
         foreach my $filename (sort(keys(%access_controls))) {          foreach my $filename (sort(keys(%access_controls))) {
             my ($group,$path) = split('/',$filename,2);              my ($group,$path) = split('/',$filename,2);
             $files_by_group{$group}{$path} = $access_controls{$filename};               $files_by_group{$group}{$path} = $access_controls{$filename};
         }          }
         foreach my $group (sort(keys(%files_by_group))) {          foreach my $group (sort(keys(%files_by_group))) {
             my %fileshash;              my %fileshash;
Line 676  sub portfolio_files { Line 655  sub portfolio_files {
         } else {          } else {
             my $access_text;              my $access_text;
             if (ref($lt) eq 'HASH') {              if (ref($lt) eq 'HASH') {
                 $access_text = $lt->{$portaccess};                     $access_text = $lt->{$portaccess};
             }              }
             $r->print(&mt('There are no available files of the specified access type: [_1]',$access_text));              $r->print(&mt('There are no available files of the specified access type: [_1]',$access_text));
         }          }
Line 684  sub portfolio_files { Line 663  sub portfolio_files {
     return $filecounts;      return $filecounts;
 }  }
   
 {   
     my $count=0;  
     sub portfolio_table_start {  
  $count=0;  
  return '<table class="LC_aboutme_port">';  
     }  
     sub portfolio_row_start {  
  $count++;  
  my $class = ($count%2)?'LC_odd_row'  
                       :'LC_even_row';  
  return '<tr class="'.$class.'">';  
     }  
 }  
   
 sub build_hierarchy {  sub build_hierarchy {
     my ($r,$cdom,$cnum,$portaccess,$is_course,$filecounts,$mode,$access_info,      my ($r,$cdom,$cnum,$portaccess,$is_course,$filecounts,$mode,$access_info,
         $allfileshash,$group) = @_;          $allfileshash,$group) = @_;
     foreach my $filename (sort(keys(%{$access_info}))) {      foreach my $filename (sort(keys(%{$access_info}))) {
         my $access_status =          my $access_status =
            &Apache::lonnet::get_portfolio_access($cdom,$cnum,$filename,$group,                                                 $$access_info{$filename});             &Apache::lonnet::get_portfolio_access($cdom,$cnum,$filename,$group,$$access_info{$filename});
         if ($portaccess eq 'both') {          if ($portaccess eq 'both') {
             if (($access_status ne 'ok') &&              if (($access_status ne 'ok') &&
                 ($access_status !~  /^[^:]+:guest_/)) {                  ($access_status !~  /^[^:]+:guest_/)) {
Line 742  sub build_hierarchy { Line 707  sub build_hierarchy {
     my $output;      my $output;
     if ($mode eq 'listfiles') {      if ($mode eq 'listfiles') {
         if ($filecounts->{'both'} > 0) {          if ($filecounts->{'both'} > 0) {
             $output = &portfolio_table_start();              $output = &Apache::loncommon::start_data_table();
             $output .= &parse_directory($r,0,$allfileshash,'',$is_course,              $output .= &parse_directory($r,0,$allfileshash,'',$is_course,
                                         $group);                                          $group);
             $output .= '</table>';              $output .= &Apache::loncommon::end_data_table();
         }          }
     }      }
     return $output;      return $output;
Line 760  sub parse_directory { Line 725  sub parse_directory {
     my $portfolio_root = &Apache::portfolio::get_portfolio_root($cdom,$cnum,      my $portfolio_root = &Apache::portfolio::get_portfolio_root($cdom,$cnum,
                                                                 $group);                                                                  $group);
     my $getpropath = 1;      my $getpropath = 1;
     my %dirlist = map {      my ($listref,$listerror) =
     ((split('&',$_,2))[0],1)          &Apache::lonnet::dirlist($portfolio_root.$path,$cdom,$cnum,$getpropath);
  } &Apache::lonnet::dirlist($portfolio_root.$path,$cdom,$cnum,$getpropath);      my %dirlist;
       if (ref($listref) eq 'ARRAY') {
           %dirlist = map { ((split('&',$_,2))[0],1) } @{$listref};
       }
     foreach my $item (sort(keys(%{$currhash}))) {      foreach my $item (sort(keys(%{$currhash}))) {
         $output .= &portfolio_row_start();          $output .= &Apache::loncommon::start_data_table_row();
         $output .= '<td style="padding-left: '.($depth*25).'px">';          $output .= '<td style="padding-left: '.($depth*25).'px">';
         if (ref($currhash->{$item}) eq 'HASH') {          if (ref($currhash->{$item}) eq 'HASH') {
             my $title=&HTML::Entities::encode($item,'<>&"');              my $title=&HTML::Entities::encode($item,'<>&"');
             $output .= '<img src="'.&Apache::loncommon::lonhttpdurl("/adm/lonIcons/navmap.folder.open.gif").'" alt="'.&mt('Folder').' '.$title.'" class="LC_icon" />&nbsp;'.$title;              $output .= '<img src="'.&Apache::loncommon::lonhttpdurl("/adm/lonIcons/navmap.folder.open.gif").'" alt="'.&mt('Folder').' '.$title.'" class="LC_icon" />&nbsp;'.$title;
     $output .= '</td><td></td></tr>';              $output .= '</td><td>&nbsp;</td>'
                         .&Apache::loncommon::end_data_table_row();
             $output .= &parse_directory($r,$depth,$currhash->{$item},              $output .= &parse_directory($r,$depth,$currhash->{$item},
  $path.'/'.$item,$is_course,$group);                      $path.'/'.$item,$is_course,$group);
         } else {          } else {
     my $file_name;               my $file_name;
     if ($currhash->{$item} =~ m|/([^/]+)$|) {              if ($currhash->{$item} =~ m|/([^/]+)$|) {
  $file_name = $1;                  $file_name = $1;
     } else {              } else {
  $file_name = $currhash->{$item};                  $file_name = $currhash->{$item};
     }              }
     my $have_meta = exists($dirlist{$file_name.'.meta'});              my $have_meta = exists($dirlist{$file_name.'.meta'});
             my $url;              my $url;
             if ($is_course) {              if ($is_course) {
                 $url = '/uploaded/'.$cdom.'/'.$cnum.'/groups/'.$group.                  $url = '/uploaded/'.$cdom.'/'.$cnum.'/groups/'.$group.
                        '/portfolio/'.$currhash->{$item};                      '/portfolio/'.$currhash->{$item};
             } else {               } else {
         $url = '/uploaded/'.$cdom.'/'.$cnum.'/portfolio/'.                  $url = '/uploaded/'.$cdom.'/'.$cnum.'/portfolio/'.$currhash->{$item};
        $currhash->{$item};  
             }              }
             my $showname;              my $showname;
     if ($have_meta) {              if ($have_meta) {
  $showname = &Apache::lonnet::metadata($url,'title');                  $showname = &Apache::lonnet::metadata($url,'title');
     }              }
     if ($showname eq '') {              if ($showname eq '') {
  $showname = $file_name;                  $showname = $file_name;
     } else {              } else {
  $showname = $file_name.' ('.$showname.')';                  $showname = $file_name.' ('.$showname.')';
     }              }
   
             $showname=&HTML::Entities::encode($showname,'<>&"');              $showname=&HTML::Entities::encode($showname,'<>&"');
             $output .= '<a href="'.$url.'">'.              $output .= '<a href="'.$url.'">'.
  '<img alt="" src="'.&Apache::loncommon::icon($currhash->{$item}).'" class="LC_icon" />'.                  '<img alt="" src="'.&Apache::loncommon::icon($currhash->{$item}).'" class="LC_icon" />'.
  '&nbsp;'.$showname.'</a>';                  '&nbsp;'.$showname.'</a>';
     $output.='</td><td>';              $output.='</td><td>';
     if ($have_meta) {              if ($have_meta) {
  $output.= '<a href="'.$url.'.meta"><img alt="'.&mt('Metadata').'" src="'.                  $output.= '<a href="'.$url.'.meta"><img alt="'.&mt('Metadata').'" src="'.
  &Apache::loncommon::lonhttpdurl('/res/adm/pages/catalog.gif').                      &Apache::loncommon::lonhttpdurl('/res/adm/pages/catalog.png').
  '" class="LC_icon" /></a>';                      '" class="LC_icon" /></a>';
     }              }
     $output .= '</td></tr>';              $output .= '</td>'
                   .&Apache::loncommon::end_data_table_row();
         }          }
     }      } 
     return $output;      return $output;
 }  }
   
Line 825  sub aboutme_access { Line 794  sub aboutme_access {
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     if (($cdom eq '') || ($cnum eq '')) {      if (($cdom eq '') || ($cnum eq '')) {
         my %coursehash = &coursedescription($env{'request.course.id'});          my %coursehash = &Apache::lonnet::coursedescription($env{'request.course.id'});
         $cdom = $coursehash{'domain'};          $cdom = $coursehash{'domain'};
         $cnum = $coursehash{'cnum'};          $cnum = $coursehash{'cnum'};
     }      }
     if ((&Apache::lonnet::allowed('srm',$privcheck)) ||       if ((&Apache::lonnet::allowed('srm',$privcheck)) ||
         (&Apache::lonnet::allowed('dff',$privcheck))) {          (&Apache::lonnet::allowed('dff',$privcheck))) {
         if (&in_course($uname,$udom,$cnum,$cdom)) {          if (&Apache::lonnet::in_course($uname,$udom,$cnum,$cdom,undef,1)) {
             return 1;              return 1;
         }          }
     }      }

Removed from v.1.117  
changed lines
  Added in v.1.154


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.