Diff for /loncom/interface/portfolio.pm between versions 1.254.2.6.2.1 and 1.255

version 1.254.2.6.2.1, 2023/01/23 18:09:36 version 1.255, 2014/12/07 19:45:19
Line 112  sub display_common { Line 112  sub display_common {
 END  END
         }          }
   
         # Find space available before uploading  
         my $free_space = &free_space($group);  
   
         # Upload File          # Upload File
         $r->print('<div class="LC_left_float">'          $r->print('<div class="LC_left_float">'
                  .'<form method="post" enctype="multipart/form-data" action="'.$escuri.'">'                   .'<form method="post" enctype="multipart/form-data" action="'.$escuri.'">'
                  .'<fieldset>'                   .'<fieldset>'
                  .'<legend>'.$lt{'upload_label'}.'</legend>'                   .'<legend>'.$lt{'upload_label'}.'</legend>'
                  .$groupitem                    .$groupitem 
                  .'<input name="uploaddoc" type="file" class="LC_flUpload" />'                   .'<input name="uploaddoc" type="file" />'
                  .'<input type="hidden" id="LC_free_space" value="'.$free_space.'" />'  
                  .'<input type="hidden" name="currentpath" value="'.$current_path.'" />'                   .'<input type="hidden" name="currentpath" value="'.$current_path.'" />'
                  .'<input type="hidden" name="action" value="'.$env{"form.action"}.'" />'                   .'<input type="hidden" name="action" value="'.$env{"form.action"}.'" />'
                  .'<input type="hidden" name="symb" value="'.$env{"form.symb"}.'" />'                   .'<input type="hidden" name="symb" value="'.$env{"form.symb"}.'" />'
Line 203  sub display_portfolio_usage { Line 199  sub display_portfolio_usage {
                     .$helpitem                      .$helpitem
                     .'</div>'                      .'</div>'
                     .'<div>'                      .'<div>'
                     .&Apache::lonhtmlcommon::display_usage($current_disk_usage,                      .&Apache::lonhtmlcommon::display_usage($current_disk_usage,$disk_quota)
                                                            $disk_quota,'portfolio')  
                     .'</div>');                      .'</div>');
 }  }
   
Line 237  sub display_directory_line { Line 232  sub display_directory_line {
  if ($lock_info) {   if ($lock_info) {
     my %anchor_fields = ('lockinfo' => $fullpath);      my %anchor_fields = ('lockinfo' => $fullpath);
     if ($versions) { # hold the folder open      if ($versions) { # hold the folder open
         my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($fullpath);          my ($fname,$version,$extension) = &Apache::lonnet::file_name_version_ext($fullpath);
         $fname =~ s|^/||;          $fname =~ s|^/||;
         $anchor_fields{'showversions'} = $fname.'.'.$extension;          $anchor_fields{'showversions'} = $fname.'.'.$extension;
     }      }
Line 370  sub display_directory { Line 365  sub display_directory {
           } (@{$dir_list})) {            } (@{$dir_list})) {
        my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16);          my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); 
        $filename =~ s/\s+$//;         $filename =~ s/\s+$//;
        my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);         my ($fname,$version,$extension) = &Apache::lonnet::file_name_version_ext($filename);
        if ($version) {         if ($version) {
         my $fullpath = &prepend_group($current_path.$fname.'.'.$extension);          my $fullpath = &prepend_group($current_path.$fname.'.'.$extension);
            push(@{ $versioned{$fullpath} },             push(@{ $versioned{$fullpath} },
Line 383  sub display_directory { Line 378  sub display_directory {
     my $zerobyte;      my $zerobyte;
     foreach my $dir_line (@dir_lines) {      foreach my $dir_line (@dir_lines) {
         my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$dir_line;          my ($filename,$dom,$testdir,$size,$mtime,$obs) = @$dir_line;
         my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);          my ($fname,$version,$extension) = &Apache::lonnet::file_name_version_ext($filename);
     if (($filename ne '.') && ($filename ne '..') && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/)) {      if (($filename ne '.') && ($filename ne '..') && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/)) {
        my $version_flag;         my $version_flag;
        my $show_versions;         my $show_versions;
Line 897  sub display_access { Line 892  sub display_access {
     my $aclcount = keys(%access_controls);      my $aclcount = keys(%access_controls);
     my ($header,$info);      my ($header,$info);
     if ($action eq 'chgaccess') {      if ($action eq 'chgaccess') {
         my $uhome = &Apache::lonnet::homeserver($uname,$udom);  
         my $prefix = &Apache::lonnet::url_prefix($r,$udom,$uhome,'web');  
         $header =          $header =
             '<h2>'              '<h2>'
             .&mt('Allowing others to retrieve file: [_1]'              .&mt('Allowing others to retrieve file: [_1]'
Line 911  sub display_access { Line 904  sub display_access {
         $info .= '</li><li>'.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.');          $info .= '</li><li>'.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.');
         $info .= '</li><li>'.&explain_conditionals();          $info .= '</li><li>'.&explain_conditionals();
         $info .= '</li></ul>'.          $info .= '</li></ul>'.
                   &mt('A listing of files viewable without log-in is available at: ')."<a href=\"$prefix/adm/$udom/$uname/aboutme/portfolio\">$prefix/adm/$udom/$uname/aboutme/portfolio</a>.<br />";                    &mt('A listing of files viewable without log-in is available at: ')."<a href=\"/adm/$udom/$uname/aboutme/portfolio\">".&Apache::lonnet::absolute_url($ENV{'SERVER_NAME'})."/adm/$udom/$uname/aboutme/portfolio</a>.<br />";
         if ($group eq '') {          if ($group eq '') {
             $info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on your personal information page:");              $info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on your personal information page:");
         } else {          } else {
             $info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on the course information page:");              $info .= &mt("For logged in users a 'Display file listing' link will also appear (when there are viewable files) on the course information page:");
         }          }
         $info .= "<br /><a href=\"$prefix/adm/$udom/$uname/aboutme\">$prefix/adm/$udom/$uname/aboutme</a><br />";          $info .= "<br /><a href=\"/adm/$udom/$uname/aboutme\">".&Apache::lonnet::absolute_url($ENV{'SERVER_NAME'})."/adm/$udom/$uname/aboutme</a><br />";
         if ($group ne '') {          if ($group ne '') {
             $info .= &mt("Users with course editing rights may add a 'Group Portfolio' item using the Course Editor (Collaboration tab), to provide access to viewable group portfolio files.").'<br />';              $info .= &mt("Users with course editing rights may add a 'Group Portfolio' item using the Course Editor (Collaboration tab), to provide access to viewable group portfolio files.").'<br />';
         }          }
Line 1075  sub build_access_summary { Line 1068  sub build_access_summary {
                     $r->print(&mt('Users: ').$curr_user_list);                      $r->print(&mt('Users: ').$curr_user_list);
                 } elsif ($scope eq 'ip') {                  } elsif ($scope eq 'ip') {
                     my $curr_ips_list = &sort_ips($content->{'ip'});                      my $curr_ips_list = &sort_ips($content->{'ip'});
                     $r->print(&mt('IP(s):').' '.$curr_ips_list);                      $r->print(&mt('IP(s): ').$curr_ips_list);
                 } else {                  } else {
                     $r->print('&nbsp;');                      $r->print('&nbsp;');
                 }                  }
Line 2551  sub coursegrp_portfolio_header { Line 2544  sub coursegrp_portfolio_header {
     }      }
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"/adm/$cdom/$cnum/$env{'form.group'}/smppg?ref=$env{'form.ref'}",          ({href=>"/adm/$cdom/$cnum/$env{'form.group'}/smppg?ref=$env{'form.ref'}",
           text=>&mt('Group').": $grp_desc",            text=>"$ucgpterm: $grp_desc",
           title=>&mt("Go to group's home page"),            title=>"Go to group's home page"},
           no_mt=>1},  
          {href=>"/adm/coursegrp_portfolio?".&group_args(),           {href=>"/adm/coursegrp_portfolio?".&group_args(),
           text=>"Group Portfolio",            text=>"Group Portfolio",
           title=>"Display group portfolio"});            title=>"Display group portfolio"});
     my $output = &Apache::lonhtmlcommon::breadcrumbs(      my $output = &Apache::lonhtmlcommon::breadcrumbs(
                          &mt('Group portfolio files - [_1]',$grp_desc),                           &mt('[_1] portfolio files - [_2]',$gpterm,$grp_desc));
                                                      undef,undef,undef,undef,1);  
     return $output;      return $output;
 }  }
   
Line 2576  sub get_quota { Line 2567  sub get_quota {
     } else {      } else {
         $disk_quota = &Apache::loncommon::get_user_quota($env{'user.name'},          $disk_quota = &Apache::loncommon::get_user_quota($env{'user.name'},
                                     $env{'user.domain'}); #expressed in MB                                      $env{'user.domain'}); #expressed in MB
         $disk_quota = 1024 * $disk_quota; # convert from MB to kB          $disk_quota = 1000 * $disk_quota; # convert from MB to kB
     }      }
     return $disk_quota;      return $disk_quota;
 }  }
Line 2606  STATE Line 2597  STATE
     return $state;      return $state;
 }  }
   
 # Find space available in a user's portfolio (convert to bytes)  
 sub free_space {  
     my ($group) = @_;  
     my $disk_quota = &get_quota($group); # Expressed in kB  
     my ($uname,$udom) = &get_name_dom($group);  
     my $portfolio_root = &get_portfolio_root();  
     my $getpropath = 1;  
     my $current_disk_usage = &Apache::lonnet::diskusage($udom, $uname,  
                              $portfolio_root, $getpropath); # Expressed in kB  
     my $free_space = 1024 * ($disk_quota - $current_disk_usage);  
     return $free_space;  
 }  
   
 sub valid_container {  
     my ($uname,$udom,$group) = @_;  
     my $container_prefix;  
     if ($group ne '') {  
         $container_prefix = "/uploaded/$udom/$uname/groups/$group/portfolio";  
     } else {  
         $container_prefix = "/uploaded/$udom/$uname/portfolio";  
     }  
     if ($env{'form.currentpath'}) {  
         $container_prefix .= $env{'form.currentpath'};  
     } else {  
         $container_prefix .= '/';  
     }  
     if ($env{'form.container'} =~ m{^\Q$container_prefix\E(.+)$}) {  
         my $filename = $1;  
         if ($filename eq &Apache::lonnet::clean_filename($filename)) {  
             return 1;  
         }  
     }  
     return;  
 }  
   
 sub invalid_parms {  
     my ($r,$url,$currentpath) = @_;  
     my $escpath = &HTML::Entities::encode($currentpath,'&<>"');  
     my $rtnlink = '<a href="'.$url;  
     if ($url =~ /\?/) {  
         $rtnlink .= '&';  
     } else {  
         $rtnlink .= '?';  
     }  
     $rtnlink .= 'currentpath='.$escpath;  
     $rtnlink .= '">'.&mt('Return to directory').'</a>';  
     $r->print('<h3>'.&mt('Action disallowed').'</h3>');  
     $r->print(&mt('Some of the data included with this request were invalid'));  
     $r->print('<br />'.$rtnlink);  
     return;  
 }  
   
 sub handler {  sub handler {
     # this handles file management      # this handles file management
     my $r = shift;      my $r = shift;
Line 2745  sub handler { Line 2684  sub handler {
     # Give the LON-CAPA page header      # Give the LON-CAPA page header
     my $brcrum = [{href=>"/adm/portfolio",text=>"Portfolio Manager"}];      my $brcrum = [{href=>"/adm/portfolio",text=>"Portfolio Manager"}];
   
     my $js = '<script type="text/javascript"  
                 src="/res/adm/includes/file_upload.js"></script>';  
   
     if ($env{"form.mode"} eq 'selectfile'){      if ($env{"form.mode"} eq 'selectfile'){
         $r->print(&Apache::loncommon::start_page($title, $js,          $r->print(&Apache::loncommon::start_page($title,undef,
  {'only_body' => 1}));   {'only_body' => 1}));
     } elsif ($env{'form.action'} eq 'rolepicker') {      } elsif ($env{'form.action'} eq 'rolepicker') {
         $r->print(&Apache::loncommon::start_page('New role-based condition', $js,          $r->print(&Apache::loncommon::start_page('New role-based condition',undef,
                                                  {'no_nav_bar'  => 1, }));                                                   {'no_nav_bar'  => 1, }));
     } elsif ($caller eq 'coursegrp_portfolio') {      } elsif ($caller eq 'coursegrp_portfolio') {
         $r->print(&Apache::loncommon::start_page($title, $js));          $r->print(&Apache::loncommon::start_page($title));
     } else {      } else {
         $r->print(&Apache::loncommon::start_page($title, $js,          $r->print(&Apache::loncommon::start_page($title,undef,
                                                  {'bread_crumbs' => $brcrum}));                                                   {'bread_crumbs' => $brcrum}));
         if (!&Apache::lonnet::usertools_access($uname,$udom,'portfolio')) {          if (!&Apache::lonnet::usertools_access($uname,$udom,'portfolio')) {
             $r->print('<h2>'.&mt('No user portfolio available') .'</h2>'.              $r->print('<h2>'.&mt('No user portfolio available') .'</h2>'.
Line 2771  sub handler { Line 2707  sub handler {
     }      }
     $r->rflush();      $r->rflush();
     # Check if access to portfolio is blocked by one or more blocking events in courses.      # Check if access to portfolio is blocked by one or more blocking events in courses.
     my $clientip = &Apache::lonnet::get_requestor_ip($r);  
     my ($blocked,$blocktext) =       my ($blocked,$blocktext) = 
         &Apache::loncommon::blocking_status('port',$clientip,$uname,$udom);          &Apache::loncommon::blocking_status('port',$uname,$udom);
     if ($blocked) {      if ($blocked) {
         my $evade_block;          my $evade_block;
         # If portfolio display is in a window popped up from a "Select Portfolio Files"          # If portfolio display is in a window popped up from a "Select Portfolio Files"
Line 2807  sub handler { Line 2742  sub handler {
             $r->print(&Apache::loncommon::end_page());              $r->print(&Apache::loncommon::end_page());
             return OK;              return OK;
         }          }
     }  
     if (($env{'form.currentpath'}) && ($env{'form.currentpath'} ne '/')) {  
         my $clean_currentpath = '/'.&Apache::loncommon::clean_path($env{'form.currentpath'}).'/';  
         unless ($env{'form.currentpath'} eq $clean_currentpath) {  
             &invalid_parms($r,$url);  
             $r->print(&Apache::loncommon::end_page());  
             return OK;  
         }  
     }  
     if ($env{'form.container'}) {  
         unless (&valid_container($uname,$udom,$group)) {  
             &invalid_parms($r,$url,$env{'form.currentpath'});  
             $r->print(&Apache::loncommon::end_page());  
             return OK;  
         }  
     }      }
     if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){      if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){
     $r->print(      $r->print(

Removed from v.1.254.2.6.2.1  
changed lines
  Added in v.1.255


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