Diff for /loncom/interface/lonaboutme.pm between versions 1.143 and 1.165

version 1.143, 2010/02/21 06:21:50 version 1.165, 2023/05/13 20:36:27
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 80  use Apache::Constants qw(:common); Line 78  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::lonhtmlgateway;
 use Apache::lonrss();  use Apache::lonrss();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonmsgdisplay();  use Apache::lonmsgdisplay();
 use Apache::lontemplate;  use Apache::lontemplate;
   use Apache::longroup;
   use Apache::lonhtmlcommon();
 use HTML::Entities();  use HTML::Entities();
 use Image::Magick;  use Image::Magick;
   
Line 109  sub handler { Line 109  sub handler {
         $is_course = &Apache::lonnet::is_course($cdom,$cnum);          $is_course = &Apache::lonnet::is_course($cdom,$cnum);
     }      }
   
       my $clientip = &Apache::lonnet::get_requestor_ip($r);
     my $candisplay = 1;      my $candisplay = 1;
     if (!$is_course) {      if (!$is_course) {
         if ($action ne 'portfolio') {          if ($action ne 'portfolio') {
             $candisplay = &Apache::lonnet::usertools_access($cnum,$cdom,'aboutme');              if (($env{'user.name'} eq $cnum) && ($env{'user.domain'} eq $cdom)) {
                   $candisplay = &Apache::lonnet::usertools_access($cnum,$cdom,'aboutme');
               } else {
                   $candisplay = &Apache::loncommon::aboutme_on($cnum,$cdom);
               }
             if ((!$candisplay) && ($env{'request.course.id'})) {              if ((!$candisplay) && ($env{'request.course.id'})) {
                 $candisplay = &aboutme_access($cnum,$cdom);                  $candisplay = &aboutme_access($cnum,$cdom);
             }              }
Line 121  sub handler { Line 126  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>'.
Line 141  sub handler { Line 146  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);
Line 155  sub handler { Line 159  sub handler {
                 '</ul>');                  '</ul>');
         } else {          } else {
             my ($blocked,$blocktext) =              my ($blocked,$blocktext) =
                 &Apache::loncommon::blocking_status('port',$cnum,$cdom);                  &Apache::loncommon::blocking_status('port',$clientip,$cnum,$cdom);
             if (!$blocked) {              if (!$blocked) {
                 &display_portfolio_files($r,$is_course);                  &display_portfolio_files($r,$is_course);
             } else {              } else {
Line 168  sub handler { Line 172  sub handler {
   
     if ($is_course) {      if ($is_course) {
         if ($target ne 'tex') {          if ($target ne 'tex') {
             my $brcrum = [{href=>"/adm/navmaps",text=>"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 196  sub handler {
         return OK;          return OK;
     }      }
   
 # --------------------------------------------------------------- Force Student  
     my $forcestudent='';  
     if ($env{'form.forcestudent'}) { $forcestudent='student'; };  
   
     my $forceregister = '';  
     if ($forcestudent eq '') {  
         $forceregister = $env{'form.register'};  
     }  
   
 #------------Get rights  #------------Get rights
     my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);      my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);
      my %syllabus=&Apache::lonnet::dump('aboutme',$cdom,$cnum);      my %syllabus=&Apache::lonnet::dump('aboutme',$cdom,$cnum);
     my $allowed=0;      my ($allowed,$coursedomain,$coursenum);
       my $privleged=$allowed=(($env{'user.name'} eq $cnum) &&      if ($env{'request.course.id'}) {
                    ($env{'user.domain'} eq $cdom));          $coursedomain = $env{'course.'.$env{'request.course.id'}.'.domain'};
     if ($forcestudent or $target eq 'tex') { $allowed=0; }          $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;
       }
   
       if (!$env{'form.forceedit'} or $target eq 'tex') { $allowed=0; }
   
 # --------------------------------------- There is such a user, get environment  # --------------------------------------- There is such a user, get environment
   
Line 209  sub handler { Line 221  sub handler {
         my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);          my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);
         my $args = {'function' => undef,          my $args = {'function' => undef,
                     'domain'   => $cdom,                      'domain'   => $cdom,
 # if this page is part of course content it looses the menu line when switching from Edit Mode to Public Mode. To avoid                      'force_register' => $env{'form.register'},
 #this, I take take the value of the environment Variable $env{form.register}                     };
 #                    'force_register' => $forceregister};          if ($env{'form.popup'}) { # Don't show breadcrumbs in popup window 
                     'force_register' => $env{'form.register'}};  
   
         if ($env{'form.popup'}) {  
             $args->{'no_nav_bar'} = 1;              $args->{'no_nav_bar'} = 1;
  #Don't show breadcrumbs twice, when this page is part of course content and you call it            } elsif (!$env{'form.register'}) { #Don't show breadcrumbs twice, when this page is part of course content and you call it
  } elsif ($env{'form.register'}) {              if (($env{'request.course.id'}) &&
  #do nothing                  ($env{'form.folderpath'} =~ /^supplemental/)) {
         } else { # Don't show breadcrumbs in popup window                  &Apache::loncommon::validate_folderpath(1,'',$coursenum,$coursedomain);
             $args->{'bread_crumbs'} = [{href=>"/adm/$cdom/$cnum/aboutme",text=>"Personal Information Page"}];                  my $crstype = &Apache::loncommon::course_type();
                   my $title = $env{'form.title'};
                   if ($title eq '') {
                       $title = &mt('Personal Information Page');
                   }
                   $title = &HTML::Entities::encode($title,'\'"<>&');
                   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"}];
               }
         }          }
         my $start_page = &Apache::loncommon::start_page('Personal Information Page',$rss_link,$args);          my $start_page = &Apache::loncommon::start_page('Personal Information Page',$rss_link,$args);
         $r->print($start_page);          $r->print($start_page);
    }     }
      my ($blocked,$blocktext) =
          &Apache::loncommon::blocking_status('about',$clientip,$cnum,$cdom);
      if ($blocked) {
          if ($target eq 'tex') {
              $r->print('\noindent{\large\textbf{'.&mt('No user personal information page available').'}}\\\\\\\\');
          } else {
              $r->print($blocktext);
          }
          $r->print(&Apache::loncommon::end_page());
          return OK;
      }
   
 #----------------Print Functions  #----------------Print Privacy note (edit mode) or last modified date. 
     if ($target ne 'tex') {  
         my $functions=&Apache::lonhtmlcommon::start_funclist();  
         if ($allowed) {  
             my $query_string = &build_query_string(  
                                    {'forcestudent' => '1',  
                                     'popup' => $env{'form.popup'}});  
             $functions.=&Apache::lonhtmlcommon::add_item_funclist(  
                             '<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'}});  
             $functions.=&Apache::lonhtmlcommon::add_item_funclist(  
                             '<a href="'.$r->uri.$query_string.'">'  
                             .&mt('Edit').'</a>');  
         }  
         $functions.=&Apache::lonhtmlcommon::add_item_funclist(  
                         &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'})) {  
                 $functions.=&Apache::lonhtmlcommon::add_item_funclist(  
                      &Apache::loncommon::track_student_link(  
                          'View recent activity by this student',$cnum,$cdom));  
             }  
             if (&Apache::lonnet::allowed('vgr', $env{'request.course.id'}) ||  
                 &Apache::lonnet::allowed('vgr', $env{'request.course.id'}.'/'.$env{'request.course.sec'})) {  
                 $functions.=&Apache::lonhtmlcommon::add_item_funclist(  
                     &Apache::loncommon::slot_reservations_link(  
                         'Slot reservation history',$cnum,$cdom));  
             }  
             $functions.=&Apache::lonhtmlcommon::add_item_funclist(  
                            &Apache::loncommon::noteswrapper(  
                                &mt('Add Records'),$cnum,$cdom));  
         }  
         $functions.=&Apache::lonhtmlcommon::end_funclist();  
         $r->print(&Apache::loncommon::head_subbox($functions));  
     }  
   
 # Print Privacy Note  
     if ($target ne 'tex') {      if ($target ne 'tex') {
         #Print Privacy Note          #Print Privacy Note
         if ($allowed) {          if ($allowed) {
Line 281  sub handler { Line 270  sub handler {
                 .&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.')
                 .'</div>'                  .'</div>'
             );              );
         }          } elsif ($syllabus{'uploaded.lastmodified'}) {
     }          #Print last modified
               my $lastmod=$syllabus{'uploaded.lastmodified'};
 #Print last modified  
   
     if ($target ne 'tex') {  
         my $lastmod;  
         if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {  
             $lastmod=$syllabus{'uploaded.lastmodified'};  
             $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));              $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));
             $r->print('<div class="LC_info">');              $r->print('<div class="LC_info">');
              $r->print(&mt('Last updated').': '.$lastmod . '');              $r->print(&mt('Last updated').': '.$lastmod . '');
             $r->print('</div>');              $r->print('</div>');
         }          }
     }      }
 #Print Help Text  
     if ($target ne 'tex') {  
         if($allowed){  
             $r->print(&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')));  
         }  
     }  
   
 #------Print Headtitle  #------Print Headtitle
      if ($target ne 'tex') {       if ($target ne 'tex') {
         $r->print('<div class="LC_Box">');           $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>');
          if ($courseenv{'nickname'}) {           if ($allowed) {
                $r->print('<h2>&quot;'.$courseenv{'nickname'}.'&quot;</h2>');               $r->print('<div style="margin: 0; float:left;">');
         }               if ($courseenv{'nickname'}) {
         $r->print('<h3>'.&Apache::lonnet::domain($cdom,'description').'</h3>');                   $r->print('<h2>&quot;'.$courseenv{'nickname'}.'&quot;</h2>');
                }
                $r->print('<h3>'.&Apache::lonnet::domain($cdom,'description').'</h3></div>');
                #Print Help Text
                $r->print('<div style="margin: 0; float:right;">'.
                          &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 {       } else {
         $r->print('\noindent{\large\textbf{'.&Apache::loncommon::plainname($cnum,$cdom).'}}\\\\\\\\');          $r->print('\noindent{\large\textbf{'.&Apache::loncommon::plainname($cnum,$cdom).'}}\\\\\\\\');
         $r->print('\textbf{'.&Apache::lonnet::domain($cdom,'description').'}\\\\');          $r->print('\textbf{'.&Apache::lonnet::domain($cdom,'description').'}\\\\');
Line 343  sub handler { Line 332  sub handler {
     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;              chomp($field);
             $field=&Apache::lonfeedback::clear_out_html($field,$env{'user.adv'});              my $gateway = Apache::lonhtmlgateway->new();
               $field = $gateway->process_incoming_html($field,1);
             $syllabus{$syl_field}=$field;              $syllabus{$syl_field}=$field;
         }          }
         $syllabus{'uploaded.lastmodified'}=time;          $syllabus{'uploaded.lastmodified'}=time;
Line 385  sub handler { Line 375  sub handler {
         }          }
   
         if ($target ne 'tex') { #print Image          if ($target ne 'tex') { #print Image
             $r->print($image);              $r->print($image.'<div class="LC_clear_float_footer"></div>');
   
         } #End Print Image          } #End Print Image
   
Line 413  sub handler { Line 403  sub handler {
         }          }
         if ($target ne 'tex') {$r->print('<br />');} else {$r->print('\\\\');}          if ($target ne 'tex') {$r->print('<br />');} else {$r->print('\\\\');}
     } else {      } else {
         $r->print('<p>'.&mt('No personal information provided').'.</p>');          $r->print('<p class="LC_info">'.&mt('No personal information provided').'.</p>');
     }      }
   
     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') {
             $r->print('<a name="coursecomment" />');              $r->print('<a name="coursecomment" />');
             &Apache::lontemplate::print_start_template($r,&mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course'),'LC_Box');              &Apache::lontemplate::print_start_template($r,&mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course'),'LC_Box');
Line 430  sub handler { Line 420  sub handler {
   
         } 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, 'tex');              &Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom,$target);
         }          }
     }      }
     if ($target ne 'tex') {      if ($target ne 'tex') {
         $r->print('</div>');          $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 {
Line 448  sub handler { Line 438  sub handler {
     return OK;      return OK;
 }  }
   
 sub in_course {  
     my ($udom,$uname,$cdom,$cnum,$type) = @_;  
     $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 {
     my ($r,$is_course) = @_;      my ($r,$is_course) = @_;
     my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);      my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);
Line 526  sub print_portfiles_link { Line 489  sub print_portfiles_link {
         }          }
         $output .= '</ul>';          $output .= '</ul>';
         $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 565  sub display_portfolio_header { Line 530  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  => &mt('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 622  sub display_portfolio_files { Line 600  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 667  sub portfolio_files { Line 650  sub portfolio_files {
     my $diroutput;      my $diroutput;
     if ($is_course) {      if ($is_course) {
         my %files_by_group;          my %files_by_group;
           my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
         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};              if (exists($curr_groups{$group})) {
                   $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 704  sub portfolio_files { Line 690  sub portfolio_files {
 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) = @_;
       my $clientip = &Apache::lonnet::get_requestor_ip($r);
     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,$clientip,
                                                    $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 763  sub parse_directory { Line 751  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 .= &Apache::loncommon::start_data_table_row();          $output .= &Apache::loncommon::start_data_table_row();
         $output .= '<td style="padding-left: '.($depth*25).'px">';          $output .= '<td style="padding-left: '.($depth*25).'px">';
Line 808  sub parse_directory { Line 799  sub parse_directory {
             $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>'              $output .= '</td>'
Line 821  sub parse_directory { Line 812  sub parse_directory {
 sub aboutme_access {  sub aboutme_access {
     my ($uname,$udom) = @_;      my ($uname,$udom) = @_;
     my $privcheck = $env{'request.course.id'};      my $privcheck = $env{'request.course.id'};
     my $sec;  
     if ($env{'request.course.sec'} ne '') {      if ($env{'request.course.sec'} ne '') {
         $sec = $env{'request.course.sec'};          $privcheck .= '/'.$env{'request.course.sec'};
         $privcheck .= '/'.$sec;  
     }      }
     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'};
Line 835  sub aboutme_access { Line 824  sub aboutme_access {
     }      }
     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.143  
changed lines
  Added in v.1.165


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.