--- loncom/interface/portfolio.pm 2006/06/23 20:15:24 1.120 +++ loncom/interface/portfolio.pm 2006/07/02 23:15:47 1.127 @@ -1,3 +1,8 @@ +# The LearningOnline Network +# portfolio browser +# +# $Id: portfolio.pm,v 1.127 2006/07/02 23:15:47 albertel Exp $ +# # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). @@ -219,7 +224,7 @@ sub display_directory { } my $fullpath = $current_path.$filename; $fullpath = &prepend_group($fullpath,$group); - if ($select_mode eq 'true'){ + if ($select_mode eq 'true') { $line='print(''); - $r->print($line); - } - my $curr_access; - my $pub_access = 0; - my $guest_access = 0; - my $cond_access = 0; - foreach my $key (sort(keys(%{$access_controls{$fullpath}}))) { - my ($num,$scope,$end,$start) = &unpack_acc_key($key); - if (($now > $start) && (!$end || $end > $now)) { - if ($scope eq 'public') { - $pub_access = 1; - } elsif ($scope eq 'guest') { - $guest_access = 1; - } else { - $cond_access = 1; - } - } - } - if (!$pub_access && !$guest_access && !$cond_access) { - $curr_access = &mt('Private'); - } else { - my @allaccesses; - if ($pub_access) { - push(@allaccesses,&mt('Public')); - } - if ($guest_access) { - push(@allaccesses,&mt('Passphrase-protected')); - } - if ($cond_access) { - push(@allaccesses,&mt('Conditional')); - } - $curr_access = join('+ ',@allaccesses); } - $r->print(''); - $r->print(''. - $filename.''); - $r->print(''.$size.''); - $r->print(''.&Apache::lonlocal::locallocaltime($mtime).''); - $r->print(''. - &mt($curr_access).'   '); - $r->print(''.$access_admin_text.''); - $r->print(''); + $r->print(''); + $r->print($line); + my $curr_access; + if ($select_mode ne 'true') { + my $pub_access = 0; + my $guest_access = 0; + my $cond_access = 0; + foreach my $key (sort(keys(%{$access_controls{$fullpath}}))) { + my ($num,$scope,$end,$start) = &unpack_acc_key($key); + if (($now > $start) && (!$end || $end > $now)) { + if ($scope eq 'public') { + $pub_access = 1; + } elsif ($scope eq 'guest') { + $guest_access = 1; + } else { + $cond_access = 1; + } + } + } + if (!$pub_access && !$guest_access && !$cond_access) { + $curr_access = &mt('Private'); + } else { + my @allaccesses; + if ($pub_access) { + push(@allaccesses,&mt('Public')); + } + if ($guest_access) { + push(@allaccesses,&mt('Passphrase-protected')); + } + if ($cond_access) { + push(@allaccesses,&mt('Conditional')); + } + $curr_access = join('+ ',@allaccesses); + } + } + $r->print(''); + $r->print(''. + $filename.''); + $r->print(''.$size.''); + $r->print(''.&Apache::lonlocal::locallocaltime($mtime).''); + if ($select_mode ne 'true') { + $r->print(''. + &mt($curr_access).'   '); + $r->print(''.$access_admin_text.''); + } + $r->print(''.$/); } } } if ($select_mode eq 'true') { $r->print(' - - - + + +
@@ -656,11 +665,11 @@ sub build_access_summary { } else { $r->print(join(',',@{$content->{'roles'}{$id}{$item}})); } - $r->print(''); + $r->print(''); } + $r->print(""); } - $r->print(&Apache::loncommon::end_data_table_row()); - $r->print(&Apache::loncommon::end_data_table()); + $r->print(""); } elsif ($scope eq 'domains') { $r->print(&mt('Domains: ').join(',',@{$content->{'dom'}})); } elsif ($scope eq 'users') { @@ -1424,6 +1433,14 @@ sub upload { my $fname=$env{'form.uploaddoc.filename'}; my $filesize = (length($env{'form.uploaddoc'})) / 1000; #express in k (1024?) my $disk_quota = 20000; # expressed in k + if (defined($group)) { + my $grp_quota = &get_group_quota($group); # quota expressed in k + if ($grp_quota ne '') { + $disk_quota = $grp_quota; + } else { + $disk_quota = 0; + } + } $fname=&Apache::lonnet::clean_filename($fname); my $portfolio_root=&get_portfolio_root($group); @@ -1475,6 +1492,7 @@ sub upload { } } } + sub lock_info { my ($r,$url,$group) = @_; my ($uname,$udom) = &get_name_dom($group); @@ -1557,6 +1575,23 @@ sub get_portfolio_root { return (&Apache::loncommon::propath($udom,$uname).$path); } +sub get_group_quota { + my ($group) = @_; + my $group_quota; + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group); + if (%curr_groups) { + my %group_info = &Apache::longroup::get_group_settings( + $curr_groups{$group}); + $group_quota = $group_info{'quota'}; #expressed in Mb + if ($group_quota) { + $group_quota = 1000 * $group_quota; #expressed in k + } + } + return $group_quota; +} + sub get_dir_list { my ($portfolio_root,$group) = @_; my ($uname,$udom) = &get_name_dom($group); @@ -1685,17 +1720,24 @@ sub handler { $earlyout = 1; } if ($earlyout) { return OK; } - if (&Apache::lonnet::allowed('agf',$env{'request.course.id'}.'/'.$group)) { - $can_setacl = 1; - } - if (&Apache::lonnet::allowed('ugf',$env{'request.course.id'}.'/'.$group)) { - $can_upload = 1; - } - if (&Apache::lonnet::allowed('mgf',$env{'request.course.id'}.'/'.$group)) { + if (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) { $can_modify = 1; - } - if (&Apache::lonnet::allowed('dgf',$env{'request.course.id'}.'/'.$group)) { $can_delete = 1; + $can_upload = 1; + $can_setacl = 1; + } else { + if (&Apache::lonnet::allowed('agf',$env{'request.course.id'}.'/'.$group)) { + $can_setacl = 1; + } + if (&Apache::lonnet::allowed('ugf',$env{'request.course.id'}.'/'.$group)) { + $can_upload = 1; + } + if (&Apache::lonnet::allowed('mgf',$env{'request.course.id'}.'/'.$group)) { + $can_modify = 1; + } + if (&Apache::lonnet::allowed('dgf',$env{'request.course.id'}.'/'.$group)) { + $can_delete = 1; + } } } else { ($uname,$udom) = &get_name_dom();