Diff for /loncom/interface/loncoursegroups.pm between versions 1.36 and 1.37

version 1.36, 2006/07/02 17:08:42 version 1.37, 2006/07/04 20:50:52
Line 368  sub group_administration { Line 368  sub group_administration {
     my @member_changes = ('deletion','expire','activate','reenable',      my @member_changes = ('deletion','expire','activate','reenable',
                           'changefunc','changepriv');                            'changefunc','changepriv');
     my ($groupname,$description,$startdate,$enddate,$granularity,$specificity,      my ($groupname,$description,$startdate,$enddate,$granularity,$specificity,
         $quota);          $quota,$validate_script);
   
     if (defined($env{'form.groupname'})) {      if (defined($env{'form.groupname'})) {
         $groupname = $env{'form.groupname'};          $groupname = $env{'form.groupname'};
Line 727  sub group_administration { Line 727  sub group_administration {
             }              }
         }          }
     }      }
    
       if (($action eq 'create' && $state eq 'pick_name') || 
           ($action eq 'modify' && $state eq 'change_settings')) {
           my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,\%stored);
           my $space_trim = '/^\s*|\s*\$/g,""';
           my $float_check = '/^([0-9]*\.?[0-9]*)$/';
           $validate_script = '
       var newquota = document.'.$state.'.quota.value;
       newquota.replace('.$space_trim.');
       if (newquota == "" ) {
           document.'.$state.'.quota.value = 0;
           newquota = 0;       
       }
       var maxposs = '.$maxposs.';
       if (newquota > maxposs) {
           alert("The file repository quota you entered for this group ("+newquota+" Mb) exceeds the maximum possible ("+maxposs+" Mb). Please enter a smaller number.");
           return;
       }
       var re_quota = '.$float_check.';
       var check_quota = newquota.match(re_quota);
       if (check_quota == null) {
           alert("The quota you entered contains invalid characters, the quota should only include numbers, with or without a decimal point.");
           return;
       }
       if (newquota == 0) {
           var warn_zero = 0;
           for (var i=0; i<document.'.$state.'.tool.length; i++) {
               if (document.'.$state.'.tool[i].value == "files") {
                   if (document.'.$state.'.tool[i].checked) {
                       warn_zero = 1;
                   }
               }
           }
           if (warn_zero == 1) {
               alert("You have indicated that the file repository should be enabled, but you have set the respository quota to 0 Mb.\nThis will prevent any upload of files.\nPlease set a value or disable the repository feature.");
               return;
           }
       } 
   ';
       }
     my $jscript = &Apache::loncommon::check_uncheck_jscript();      my $jscript = &Apache::loncommon::check_uncheck_jscript();
     $jscript .= qq|      $jscript .= qq|
 function nextPage(formname,nextstate) {  function nextPage(formname,nextstate) {
     formname.state.value= nextstate;      formname.state.value= nextstate;
       $validate_script
     formname.submit();      formname.submit();
 }  }
 function backPage(formname,prevstate) {  function backPage(formname,prevstate) {
Line 1204  sub groupsettings_options { Line 1244  sub groupsettings_options {
         'doyo' => "Do you want to assign different functionality ".          'doyo' => "Do you want to assign different functionality ".
                   "to different $gpterm members?",                    "to different $gpterm members?",
     );      );
     my $crsquota = $env{'course.'.$env{'request.course.id'}.'.internal.coursequota'};      my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,$stored);
     if ($crsquota eq '') {  
         $crsquota = 20;  
     }  
     my $freespace = $crsquota - &Apache::longroup::sum_quotas();  
     my $maxposs = $$stored{'quota'} + $freespace;  
     &topic_bar($r,$tabcol,$image,$lt{'gnde'});      &topic_bar($r,$tabcol,$image,$lt{'gnde'});
     $r->print('      $r->print('
    <tr>     <tr>
Line 1310  END Line 1345  END
     return;      return;
 }  }
   
   sub get_quota_constraints {
       my ($action,$stored) = @_;
       my ($crsquota,$freespace,$maxposs); 
       $crsquota = $env{'course.'.$env{'request.course.id'}.'.internal.coursequota'};
       if ($crsquota eq '') {
           $crsquota = 20;
       }
       $freespace = $crsquota - &Apache::longroup::sum_quotas();
       if ($action eq 'create') {
           $maxposs = $freespace;
       } else {
           $maxposs = $$stored{'quota'} + $freespace;
       }
       return ($crsquota,$freespace,$maxposs);
   }
   
 sub membership_options {  sub membership_options {
     my ($r,$action,$state,$tabcol,$sectioncount,$image,$gpterm,$ucgpterm) = @_;      my ($r,$action,$state,$tabcol,$sectioncount,$image,$gpterm,$ucgpterm) = @_;
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
Line 2875  sub write_group_data { Line 2926  sub write_group_data {
                              'specificity','autoadd','autodrop','quota');                               'specificity','autoadd','autodrop','quota');
     my @mult_attributes = ('roles','types','sectionpick','defpriv');      my @mult_attributes = ('roles','types','sectionpick','defpriv');
   
       my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,
                                                                   $stored);
       my $quota = $env{'form.quota'};
       
       $quota =~ s/^\s*([^\s]*)\s*$/$1/;
       if ($quota eq '') {
           $quota = 0;
       }
       if ($quota !~ /^\d*\.?\d*$/) {
           $quota = 0;
           $r->print(&mt('The value you entered for the quota for the file repository in this [_1] contained invalid characters, so it has been set to 0 Mb. You can change this by modifying the [_1] settings.<br />',$gpterm));
       }
       if ($quota > $maxposs) {
           $quota = $maxposs;
           $r->print(&mt('The value you entered for the quota for the file repository in this [_1] exceeded the maximum possible value, so it has been set to [_2] Mb (the maximum possible value).<br />',$gpterm,$maxposs));
       }
     my %groupinfo = (      my %groupinfo = (
                      description => $esc_description,                       description => $esc_description,
                      startdate => $startdate,                       startdate => $startdate,
Line 2886  sub write_group_data { Line 2953  sub write_group_data {
                      specificity => $specificity,                       specificity => $specificity,
                      autoadd => $env{'form.autoadd'},                       autoadd => $env{'form.autoadd'},
                      autodrop => $env{'form.autodrop'},                       autodrop => $env{'form.autodrop'},
                      quota => $env{'form.quota'},                                       quota => $quota,
                    );                     );
   
     foreach my $func (keys(%{$functions})) {      foreach my $func (keys(%{$functions})) {
         my $status;          my $status;
         if (grep(/^$func$/,@{$tools})) {          if (grep(/^$func$/,@{$tools})) {
Line 2938  sub write_group_data { Line 3006  sub write_group_data {
                                            $description,$tools,\%groupinfo,                                             $description,$tools,\%groupinfo,
                                            $gpterm,$ucgpterm,$crstype);                                             $gpterm,$ucgpterm,$crstype);
             if ($result ne 'ok') {              if ($result ne 'ok') {
                 $r->print(&mt('A problem occurred when creating folders for the new [_1]. [_2].',$gpterm,$result));                      $r->print(&mt('A problem occurred when creating folders for the new [_1]. [_2].<br />',$gpterm,$result));
             }              }
             $r->print(&mt('[_1] [_2] was created.<br />',$ucgpterm,$groupname));              $r->print(&mt('[_1] [_2] was created.<br />',$ucgpterm,$groupname));
         } else {          } else {
Line 2952  sub write_group_data { Line 3020  sub write_group_data {
         &Apache::lonnet::logthis("Failed to store $gpterm $groupname ".          &Apache::lonnet::logthis("Failed to store $gpterm $groupname ".
                                  'in '.lc($crstype).': '.$cnum.                                   'in '.lc($crstype).': '.$cnum.
                                  ' in domain: '.$cdom);                                   ' in domain: '.$cdom);
         $r->print(&mt('An error occurred when [_1] the new [_2]. '.          $r->print(&mt('An error occurred when [_1] the [_2]. '.
                       'Please try again.',$actiontype{$action},$gpterm));                        'Please try again.',$actiontype{$action},$gpterm));
     }      }
     return $result;      return $result;
Line 3555  sub map_updater { Line 3623  sub map_updater {
     my $newmapurl=&Apache::lonnet::finishuserfileupload($cnum,$cdom,$itemname,      my $newmapurl=&Apache::lonnet::finishuserfileupload($cnum,$cdom,$itemname,
                                                         $newfile);                                                          $newfile);
     if ($newmapurl !~ m|^/uploaded|) {      if ($newmapurl !~ m|^/uploaded|) {
         $outcome = "Error uploading new folder ($newfile): $newmapurl";          $outcome = &mt('Error uploading new folder.')." ($newfile): $newmapurl".'<br />';
         return $outcome;          return $outcome;
     }       } 
     my ($errtext,$fatal)=&Apache::lonratedt::mapread($parentmap);      my ($errtext,$fatal)=&Apache::lonratedt::mapread($parentmap);
     if ($fatal) {      if ($fatal) {
         $outcome = "Error reading contents of parent folder ($parentmap): $errtext\n";          $outcome = &mt('Error reading contents of parent folder')." ($parentmap): $errtext".'<br />';
         return $outcome;          return $outcome;
     } else {      } else {
         my $newidx=&Apache::lonratedt::getresidx($newmapurl);          my $newidx=&Apache::lonratedt::getresidx($newmapurl);
Line 3569  sub map_updater { Line 3637  sub map_updater {
         $Apache::lonratedt::order[1+$#Apache::lonratedt::order]=$newidx;          $Apache::lonratedt::order[1+$#Apache::lonratedt::order]=$newidx;
         my ($outtext,$errtext) = &Apache::lonratedt::storemap($parentmap,1);          my ($outtext,$errtext) = &Apache::lonratedt::storemap($parentmap,1);
         if ($errtext) {          if ($errtext) {
            $outcome = "Error storing updated parent folder ($parentmap):  $errtext\n";              $outcome = &mt('Error storing updated parent folder')." ($parentmap):  $errtext".'<br />';
             return $outcome;              return $outcome;
         }          }
     }      }
Line 3590  sub new_map { Line 3658  sub new_map {
   
 sub parm_setter {  sub parm_setter {
     my ($navmap,$cdom,$url,$groupname) = @_;      my ($navmap,$cdom,$url,$groupname) = @_;
     my %parmresult;      my $allresults;
     my %hide_settings = (      my %hide_settings = (
                            'course' =>  {                             'course' =>  {
                                           'num' => 13,                                            'num' => 13,
Line 3605  sub parm_setter { Line 3673  sub parm_setter {
     my $res = $navmap->getResourceByUrl($url);      my $res = $navmap->getResourceByUrl($url);
     my $symb = $res->symb();      my $symb = $res->symb();
     foreach my $level (keys(%hide_settings)) {      foreach my $level (keys(%hide_settings)) {
         $parmresult{$level} =  &Apache::lonparmset::storeparm_by_symb($symb,          my $parmresult =  &Apache::lonparmset::storeparm_by_symb($symb,
                                                  '0_hiddenresource',                                                   '0_hiddenresource',
                                                  $hide_settings{$level}{'num'},                                                   $hide_settings{$level}{'num'},
                                                  $hide_settings{$level}{'set'},                                                   $hide_settings{$level}{'set'},
                                                  'string_yesno',undef,$cdom,                                                   'string_yesno',undef,$cdom,
                                                  undef,undef,                                                   undef,undef,
                                                  $hide_settings{$level}{'extra'});                                                   $hide_settings{$level}{'extra'});
           if ($parmresult) {
               $allresults .= $level.': '.$parmresult;
           }
     }      }
     return %parmresult;      return $allresults;
 }  }
   
 sub create_homepage {  sub create_homepage {

Removed from v.1.36  
changed lines
  Added in v.1.37


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