--- loncom/interface/portfolio.pm	2006/06/28 19:57:44	1.121.2.3
+++ loncom/interface/portfolio.pm	2006/06/28 23:38:09	1.126
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # portfolio browser
 #
-# $Id: portfolio.pm,v 1.121.2.3 2006/06/28 19:57:44 albertel Exp $
+# $Id: portfolio.pm,v 1.126 2006/06/28 23:38:09 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -535,20 +535,7 @@ sub display_access {
     my %access_controls = &Apache::lonnet::get_access_controls($current_permissions,$group,$file_name);
     my $aclcount = keys(%access_controls);
     my $header = '<h3>'.&mt('Allowing others to retrieve portfolio file: [_1]',$env{'form.currentpath'}.$env{'form.access'}).'</h3>';
-    my $info .= 
-	&mt('Access to this file by others can be set to be one or more of the following types: public, passphrase-protected or conditional.').
-	'<br /><ul><li>'.
-	&mt('Public files are available to anyone without the need for login.').
-	'</li><li>'.
-	&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.').
-	'</li>'.
-	#'<li>'.
-	#&mt('Conditional files are accessible to logged-in users with accounts in the LON-CAPA network, who satisfy the conditions you set.').
-	#'<br />'.
-	#&mt('The conditions can include affiliation with a particular course or group, or a user account in a specific domain.').
-	#'<br />'.
-	#&mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').
-	'</li></ul>';
+    my $info .= &mt('Access to this file by others can be set to be one or more of the following types: public, passphrase-protected or conditional.').'<br /><ul><li>'.&mt('Public files are available to anyone without the need for login.').'</li><li>'.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.').'</li><li>'.&mt('Conditional files are accessible to logged-in users with accounts in the LON-CAPA network, who satisfy the conditions you set.').'<br />'.&mt('The conditions can include affiliation with a particular course or group, or a user account in a specific domain.').'<br />'.&mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').'</li></ul>';
     if ($can_setacl) {
         &open_form($r,$url);
         $r->print($header.$info);
@@ -995,25 +982,24 @@ sub access_setting_table {
               $passwd.'" /></td>');
     $r->print(&Apache::loncommon::end_data_table_row());
     $r->print(&Apache::loncommon::end_data_table());
-
-    #$r->print('</td></tr><tr><td colspan="3">&nbsp;</td></tr><tr><td valign="top">');
-    #&access_element($r,'domains',\%acl_count,\@domains,$access_controls,$now,$then);
-    #$r->print('</td><td>&nbsp;</td><td valign="top">');
-    #&access_element($r,'users',\%acl_count,\@users,$access_controls,$now,$then);
-    #$r->print('</td></tr><tr><td colspan="3"></td></tr><tr>');
-    #if (@courses > 0 || @groups > 0) {
-    #    $r->print('<td colspan="3" valign="top">');
-    #} else {
-    #    $r->print('<td valign="top">');
-    #}
-    #&access_element($r,'course',\%acl_count,\@courses,$access_controls,$now,$then);
-    #$r->print('</td>');
-    #if (@courses > 0 || @groups > 0) {
-    #    $r->print('</tr><tr><td colspan="3">&nbsp;</td></tr><tr><td colspan="3" valign="top">');
-    #} else {
-    #    $r->print('<td>&nbsp;</td><td valign="top">');
-    #}
-    #&access_element($r,'group',\%acl_count,\@groups,$access_controls,$now,$then);
+    $r->print('</td></tr><tr><td colspan="3">&nbsp;</td></tr><tr><td valign="top">');
+    &access_element($r,'domains',\%acl_count,\@domains,$access_controls,$now,$then);
+    $r->print('</td><td>&nbsp;</td><td valign="top">');
+    &access_element($r,'users',\%acl_count,\@users,$access_controls,$now,$then);
+    $r->print('</td></tr><tr><td colspan="3"></td></tr><tr>');
+    if (@courses > 0 || @groups > 0) {
+        $r->print('<td colspan="3" valign="top">');
+    } else {
+        $r->print('<td valign="top">');
+    }
+    &access_element($r,'course',\%acl_count,\@courses,$access_controls,$now,$then);
+    $r->print('</td>');
+    if (@courses > 0 || @groups > 0) {
+        $r->print('</tr><tr><td colspan="3">&nbsp;</td></tr><tr><td colspan="3" valign="top">');
+    } else {
+        $r->print('<td>&nbsp;</td><td valign="top">');
+    }
+    &access_element($r,'group',\%acl_count,\@groups,$access_controls,$now,$then);
     $r->print('</td></tr></table>');
 }
 
@@ -1447,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);
@@ -1498,6 +1492,7 @@ sub upload {
         }
     }
 }
+
 sub lock_info {
     my ($r,$url,$group) = @_;
     my ($uname,$udom) = &get_name_dom($group);
@@ -1580,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);
@@ -1708,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();