Diff for /loncom/interface/portfolio.pm between versions 1.244 and 1.254.2.1

version 1.244, 2013/04/30 14:27:51 version 1.254.2.1, 2016/08/07 23:14:30
Line 98  sub display_common { Line 98  sub display_common {
  my $help_fileupload = &Apache::loncommon::help_open_topic('Portfolio AddFiles');   my $help_fileupload = &Apache::loncommon::help_open_topic('Portfolio AddFiles');
  my $help_createdir = &Apache::loncommon::help_open_topic('Portfolio CreateDirectory');   my $help_createdir = &Apache::loncommon::help_open_topic('Portfolio CreateDirectory');
         my $help_portfolio = &Apache::loncommon::help_open_topic('Portfolio About', &mt('Help on the portfolio'));          my $help_portfolio = &Apache::loncommon::help_open_topic('Portfolio About', &mt('Help on the portfolio'));
         $r->print(&display_usage($group));          $r->print(&display_portfolio_usage($group,$help_portfolio));
         my $parse_check;          my $parse_check;
         if (!&suppress_embed_prompt()) {          if (!&suppress_embed_prompt()) {
             $parse_check = <<"END";              $parse_check = <<"END";
Line 112  sub display_common { Line 112  sub display_common {
 END  END
         }          }
   
         $r->print('<div>'.$help_portfolio);  
         # 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.'">'
Line 149  END Line 148  END
                  .'</form>'                   .'</form>'
                  .'</div>'                   .'</div>'
         );          );
         $r->print('</div>');  
     } # end "if can_upload"      } # end "if can_upload"
   
     my @tree = split (/\//,$current_path);      my @tree = split (/\//,$current_path);
Line 188  END Line 186  END
     $r->print("</form>");      $r->print("</form>");
 }  }
   
 sub display_usage {  sub display_portfolio_usage {
     my ($group) = @_;      my ($group,$helpitem) = @_;
     my $disk_quota = &get_quota($group);      my $disk_quota = &get_quota($group);
     my $getpropath = 1;      my $getpropath = 1;
     my $portfolio_root = &get_portfolio_root();      my $portfolio_root = &get_portfolio_root();
     my ($uname,$udom) = &get_name_dom($group);      my ($uname,$udom) = &get_name_dom($group);
     my $current_disk_usage =      my $current_disk_usage =
          &Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath);           &Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath);
     my $usage = $current_disk_usage/1000;      return &Apache::loncommon::head_subbox(
     my $quota = $disk_quota/1000;                       '<div style="float:right;padding-top:0;margin-top;0">'
     my $percent;                      .$helpitem
     if ($disk_quota == 0) {                      .'</div>'
         $percent = 100.0;                      .'<div>'
     } else {                      .&Apache::lonhtmlcommon::display_usage($current_disk_usage,
         $percent = 100*($current_disk_usage/$disk_quota);                                                             $disk_quota,'portfolio')
     }                      .'</div>');
     $usage = sprintf("%.2f",$usage);  
     $quota = sprintf("%.2f",$quota);  
     $percent = sprintf("%.0f",$percent);  
     my ($color,$cssclass);  
     if ($percent <= 60) {  
         $color = '#00A000';  
     } elsif ($percent > 60 && $percent < 90) {  
         $color = '#FFD300';  
         $cssclass = 'class="LC_warning"';  
     } elsif( $percent >= 90) {  
         $color = '#FF0000';  
         $cssclass = 'class="LC_error"';  
     }  
     my $prog_width = $percent;  
     if ($prog_width > 100) {  
         $prog_width = 100;  
     }  
     my $disk_meter = '  
   <div id="meter1" align="left" '.$cssclass.'>'.&mt('Currently using [_1] of the [_2] available.',$usage.' MB <span style="font-weight:bold;">('.$percent.'%)</span>',$quota.' MB')."\n".  
 '   <div id="meter2" style="display:block; margin-top:5px; margin-bottom:5px; margin-left:0px; margin-right:0px; width:400px; border:1px solid #000000; height:10px;">'."\n".  
 '    <div id="meter3" style="display:block; background-color:'.$color.'; width:'.$prog_width.'%; height:10px; color:#000000; margin:0px;"></div>'."\n".  
 '   </div>'."\n".  
 '  </div>';  
     return &Apache::loncommon::head_subbox($disk_meter);  
 }  }
   
 sub display_directory_line {  sub display_directory_line {
Line 563  sub display_directory { Line 537  sub display_directory {
             <input type="hidden" name="mode" value="selectfile" />              <input type="hidden" name="mode" value="selectfile" />
             <p>              <p>
             <input type="submit" name="submit" value="'.&mt('Select checked files, and continue selecting').'" /><br />              <input type="submit" name="submit" value="'.&mt('Select checked files, and continue selecting').'" /><br />
             <input type="button" name="doit" onClick="finishSelect();" value="'.&mt('Select checked files, and close window').'" />              <input type="button" name="doit" onclick="finishSelect();" value="'.&mt('Select checked files, and close window').'" />
             </p>              </p>
             <input type="hidden" name="currentpath" value="'.$current_path.'" />              <input type="hidden" name="currentpath" value="'.$current_path.'" />
         </form>');                  </form>');        
Line 939  sub display_access { Line 913  sub display_access {
         }          }
         $info .= "<br /><a href=\"/adm/$udom/$uname/aboutme\">".&Apache::lonnet::absolute_url($ENV{'SERVER_NAME'})."/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 privileges to edit course contents may add a course information page to a course using the 'Course Info' button in DOCS").'<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 />';
         }          }
     } else {      } else {
         $header = '<h3>'.&mt('Conditional access controls for file: [_1]',$port_path.$env{'form.currentpath'}.$env{'form.access'}).'</h3>'.          $header = '<h3>'.&mt('Conditional access controls for file: [_1]',$port_path.$env{'form.currentpath'}.$env{'form.access'}).'</h3>'.
Line 969  sub display_access { Line 943  sub display_access {
   
 sub explain_conditionals {  sub explain_conditionals {
     return      return
         &mt('Conditional files are accessible to logged-in users with accounts in the LON-CAPA network, who satisfy the conditions you set.').'<br />'."\n".          &mt('Conditional files are accessible to users who satisfy the conditions you set.').'<br /><ul>'.
         &mt('The conditions can include affiliation with a particular course or community, or a user account in a specific domain.').'<br />'."\n".          '<li>'.&mt('Conditions can be IP-based, in which case no log-in is required').'</li>'.
         &mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.');          '<li>'.&mt("Conditions can also be based on a user's status, in which case the user needs an account in the LON-CAPA network, and needs to be logged in.").'<br />'."\n".
           &mt('The status-based conditions can include affiliation with a particular course or community, or a user account in a specific domain.').'<br />'."\n".
           &mt('Alternatively access can be granted to people with specific LON-CAPA usernames and domains.').'</li></ul>';
 }  }
   
 sub view_access_settings {  sub view_access_settings {
Line 1012  sub build_access_summary { Line 988  sub build_access_summary {
                       domains => 'Conditional: domain-based',                        domains => 'Conditional: domain-based',
                       users => 'Conditional: user-based',                        users => 'Conditional: user-based',
                       course => 'Conditional: course/community-based',                        course => 'Conditional: course/community-based',
                         ip     => 'Conditional: IP-based',
                      );                       );
     my @allscopes = ('public','guest','domains','users','course');      my @allscopes = ('public','guest','domains','users','course','ip');
     foreach my $scope (@allscopes) {      foreach my $scope (@allscopes) {
         if ((!(exists($todisplay{$scope}))) || (ref($todisplay{$scope}) ne 'HASH')) {          if ((!(exists($todisplay{$scope}))) || (ref($todisplay{$scope}) ne 'HASH')) {
             next;              next;
Line 1090  sub build_access_summary { Line 1067  sub build_access_summary {
                 } elsif ($scope eq 'users') {                  } elsif ($scope eq 'users') {
                     my $curr_user_list = &sort_users($content->{'users'});                      my $curr_user_list = &sort_users($content->{'users'});
                     $r->print(&mt('Users: ').$curr_user_list);                      $r->print(&mt('Users: ').$curr_user_list);
                   } elsif ($scope eq 'ip') {
                       my $curr_ips_list = &sort_ips($content->{'ip'});
                       $r->print(&mt('IP(s): ').$curr_ips_list);
                 } else {                  } else {
                     $r->print('&nbsp;');                      $r->print('&nbsp;');
                 }                  }
Line 1198  sub update_access { Line 1178  sub update_access {
     my $totalnew = 0;      my $totalnew = 0;
     my $status = 'new';      my $status = 'new';
     my ($firstitem,$lastitem);      my ($firstitem,$lastitem);
     my @types = ('course','domains','users');      my @types = ('course','domains','users','ip');
     foreach my $newitem (@types) {      foreach my $newitem (@types) {
         $allnew += $env{'form.new'.$newitem};          $allnew += $env{'form.new'.$newitem};
     }      }
Line 1206  sub update_access { Line 1186  sub update_access {
         my $now = time;          my $now = time;
         my $then = $now + (60*60*24*180); # six months approx.          my $then = $now + (60*60*24*180); # six months approx.
         &open_form($r,$url);          &open_form($r,$url);
         my %showtypes = &Apache::lonlocal::texthash (          my %showtypes = (
            course  => 'course/community',             course  => 'course/community',
            domains => 'domain',             domains => 'domain',
            users   => 'user',             users   => 'user',
              ip      => 'IP',
         );          );
         foreach my $newitem (@types) {          foreach my $newitem (@types) {
             if ($env{'form.new'.$newitem} > 0) {              next if ($env{'form.new'.$newitem} <= 0);
                 $r->print('<br />'.&mt('Add new [_1]-based[_2] access control for portfolio file: [_3]','<b>'.$showtypes{$newitem},'</b>','<b>'.$env{'form.currentpath'}.$env{'form.selectfile'}.'</b>').'<br /><br />');              $r->print(
                 $firstitem = $totalnew;                  '<p>'
                 $lastitem = $totalnew + $env{'form.new'.$newitem};                 .&mt('Add new [_1]'.$showtypes{$newitem}.'-based[_2] access control for portfolio file: [_3]',
                 $totalnew = $lastitem;                      '<b>','</b>',
                 my @numbers;                         '<span class="LC_filename"><b>'
                 for (my $i=$firstitem; $i<$lastitem; $i++) {                     .$env{'form.currentpath'}.$env{'form.selectfile'}.'</b></span>')
                     push(@numbers,$i);                 .'</p>');
                 }              $firstitem = $totalnew;
                 &display_access_row($r,$status,$newitem,\@numbers,              $lastitem = $totalnew + $env{'form.new'.$newitem};
                                     $access_controls{$file_name},$now,$then);              $totalnew = $lastitem;
               my @numbers;   
               for (my $i=$firstitem; $i<$lastitem; $i++) {
                   push(@numbers,$i);
             }              }
               &display_access_row($r,$status,$newitem,\@numbers,
                                   $access_controls{$file_name},$now,$then);
         }          }
         &close_form($r,$url);          &close_form($r,$url);
     } else {      } else {
Line 1308  sub build_access_record { Line 1294  sub build_access_record {
  'udom'  => $udom   'udom'  => $udom
  });   });
  }   }
       } elsif ($scope eq 'ip') {
           my $ipslist = $env{'form.ips_'.$num};
           $ipslist =~ s/\s+//sg;
           my %ipshash = map { ($_,1) } (split(/,/,$ipslist));
           foreach my $ip (keys(%ipshash)) {
               push(@{$record->{'ip'}},$ip);
           }
     }      }
     return $record;      return $record;
 }  }
Line 1333  sub sort_users { Line 1326  sub sort_users {
     return $curr_user_list;      return $curr_user_list;
 }  }
   
   sub sort_ips {
       my ($ips) = @_;
       if (ref($ips) eq 'ARRAY') {
           return join(",\n",sort(@{$ips}));
       }
   }
   
 sub access_setting_table {  sub access_setting_table {
     my ($r,$url,$filename,$access_controls,$action) = @_;      my ($r,$url,$filename,$access_controls,$action) = @_;
     my ($public,$publictext);      my ($public,$publictext);
Line 1342  sub access_setting_table { Line 1342  sub access_setting_table {
     my @courses = ();      my @courses = ();
     my @domains = ();      my @domains = ();
     my @users = ();      my @users = ();
       my @ips = ();
     my $now = time;      my $now = time;
     my $then = $now + (60*60*24*180); # six months approx.      my $then = $now + (60*60*24*180); # six months approx.
     my ($num,$scope,$publicnum,$guestnum);      my ($num,$scope,$publicnum,$guestnum);
Line 1364  sub access_setting_table { Line 1365  sub access_setting_table {
                 push(@domains,$key);                  push(@domains,$key);
             } elsif ($scope eq 'users') {              } elsif ($scope eq 'users') {
                 push(@users,$key);                  push(@users,$key);
               } elsif ($scope eq 'ip') {
                   push(@ips,$key);
             }              }
         }          }
         $acl_count{$scope} ++;          $acl_count{$scope} ++;
Line 1375  sub access_setting_table { Line 1378  sub access_setting_table {
                            $guesttext,$access_controls,%conditionals);                             $guesttext,$access_controls,%conditionals);
     } else {      } else {
         &condition_setting($r,$access_controls,$now,$then,\%acl_count,          &condition_setting($r,$access_controls,$now,$then,\%acl_count,
                            \@domains,\@users,\@courses);                             \@domains,\@users,\@courses,\@ips);
     }      }
     $r->print('</td></tr></table>');      $r->print('</td></tr></table>');
 }  }
Line 1420  sub standard_settings { Line 1423  sub standard_settings {
     $r->print(&Apache::loncommon::end_data_table_row());      $r->print(&Apache::loncommon::end_data_table_row());
     $r->print(&Apache::loncommon::end_data_table());      $r->print(&Apache::loncommon::end_data_table());
     $r->print('</td></tr><tr><td colspan="3">&nbsp;</td></tr>'.      $r->print('</td></tr><tr><td colspan="3">&nbsp;</td></tr>'.
               '<tr><td colspan="3">');                '<tr><td colspan="3" valign="top">');
     my $numconditionals = 0;      my $numconditionals = 0;
     my $conditionstext;      my $conditionstext;
     my %cond_status;      my %cond_status;
     foreach my $scope ('domains','users','course') {      foreach my $scope ('domains','users','course','ip') {
         $numconditionals += $acl_count->{$scope};           $numconditionals += $acl_count->{$scope}; 
         if ($acl_count->{$scope} > 0) {          if ($acl_count->{$scope} > 0) {
             if ($conditionstext ne 'Active') {               if ($conditionstext ne 'Active') {
                 foreach my $key (keys(%{$conditionals{$scope}})) {                  foreach my $key (keys(%{$conditionals{$scope}})) {
                     $conditionstext = &acl_status($start->{$key},$end->{$key},$now);                      $conditionstext = &acl_status($start->{$key},$end->{$key},$now);
                     if ($conditionstext eq 'Active') {                      if ($conditionstext eq 'Active') {
Line 1458  sub standard_settings { Line 1461  sub standard_settings {
         &build_access_summary($r,$count,$chg,%conditionals);          &build_access_summary($r,$count,$chg,%conditionals);
         $r->print(&Apache::loncommon::end_data_table());          $r->print(&Apache::loncommon::end_data_table());
     } else {      } else {
         $r->print(&make_anchor($url,\%anchor_fields,&mt('Add conditional access')).' '.&mt('based on domain, username, or course/community affiliation.'));          $r->print(&make_anchor($url,\%anchor_fields,&mt('Add conditional access')).' '.&mt("based on domain, username, course/community affiliation or user's IP address."));
     }      }
 }  }
   
 sub condition_setting {  sub condition_setting {
     my ($r,$access_controls,$now,$then,$acl_count,$domains,$users,$courses) = @_;      my ($r,$access_controls,$now,$then,$acl_count,$domains,$users,$courses,$ips) = @_;
     $r->print('<tr><td valign="top">');      $r->print('<tr><td valign="top">');
     &access_element($r,'domains',$acl_count,$domains,$access_controls,$now,$then);      &access_element($r,'domains',$acl_count,$domains,$access_controls,$now,$then);
     $r->print('</td><td>&nbsp;</td><td valign="top">');      $r->print('</td><td>&nbsp;</td><td valign="top">');
     &access_element($r,'users',$acl_count,$users,$access_controls,$now,$then);      &access_element($r,'users',$acl_count,$users,$access_controls,$now,$then);
     $r->print('</td></tr><tr><td colspan="3"></td></tr><tr>');      $r->print('</td></tr><tr><td colspan="3"></td></tr><tr><td valign="top">');
     if ($acl_count->{course} > 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);      &access_element($r,'course',$acl_count,$courses,$access_controls,$now,$then);
     $r->print('</td>');      $r->print('</td><td>&nbsp;</td><td valign="top">');
       &access_element($r,'ip',$acl_count,$ips,$access_controls,$now,$then);
     $r->print('</td></tr></table>');      $r->print('</td></tr></table>');
 }  }
   
Line 1492  sub acl_status { Line 1491  sub acl_status {
   
 sub access_element {  sub access_element {
     my ($r,$type,$acl_count,$items,$access_controls,$now,$then) = @_;      my ($r,$type,$acl_count,$items,$access_controls,$now,$then) = @_;
     my %typetext = &Apache::lonlocal::texthash(      my %typetext = (
         domains => 'Domain',          domains => 'Domain',
         users   => 'User',          users   => 'User',
         course  => 'Course/Community'          course  => 'Course/Community',
           ip      => 'IP',
     );      );
     $r->print('<h3>'.&mt('[_1]-based conditional access: ',$typetext{$type}));      $r->print('<h3>'.&mt($typetext{$type}.'-based conditional access:').' ');
     if ($$acl_count{$type}) {      if ($$acl_count{$type}) {
         $r->print($$acl_count{$type}.' ');          $r->print(&mt('[quant,_1,condition]',$$acl_count{$type}));
         if ($$acl_count{$type} > 1) {  
             $r->print(&mt('conditions'));  
         } else {  
             $r->print(&mt('condition'));  
         }  
     } else {      } else {
         $r->print(&mt('Off'));          $r->print(&mt('Off'));
     }      }
Line 1515  sub access_element { Line 1510  sub access_element {
   
 sub display_access_row {  sub display_access_row {
     my ($r,$status,$type,$items,$access_controls,$now,$then) = @_;      my ($r,$status,$type,$items,$access_controls,$now,$then) = @_;
     my $showtype;      my ($showtype, $infotype);
     if ($type eq 'course') {      if ($type eq 'course') {
         $showtype = &mt('Courses/Communities');          $showtype = &mt('Courses/Communities');
           $infotype = 'Course/Community';
     } elsif ($type eq 'domains') {      } elsif ($type eq 'domains') {
         $showtype = &mt('Domains');          $showtype = &mt('Domains');
           $infotype = 'Domain';
     } elsif ($type eq 'users') {      } elsif ($type eq 'users') {
         $showtype = &mt('Users');          $showtype = &mt('Users');
           $infotype = 'User';
       } elsif ($type eq 'ip') {
           $showtype = &mt('IP-based');
           $infotype = 'IP';  
     }      }
     if (@{$items} > 0) {      if (@{$items} > 0) {
         my @all_doms;          my @all_doms;
Line 1531  sub display_access_row { Line 1532  sub display_access_row {
         $r->print('<th>'.&mt('Action?').'</th><th>'.$showtype.'</th><th>'.          $r->print('<th>'.&mt('Action?').'</th><th>'.$showtype.'</th><th>'.
               &mt('Dates available').'</th>');                &mt('Dates available').'</th>');
         if ($type eq 'course' && $status eq 'old') {          if ($type eq 'course' && $status eq 'old') {
               
             $r->print('<th>'.&mt('Allowed course/community affiliations').              $r->print('<th>'.&mt('Allowed course/community affiliations').
                       '</th>');                        '</th>');
             $colspan ++;              $colspan ++;
Line 1548  sub display_access_row { Line 1548  sub display_access_row {
                             $then);                              $then);
             } elsif ($type eq 'users') {              } elsif ($type eq 'users') {
                 &users_row($r,$status,$key,$access_controls,$now,$then);                  &users_row($r,$status,$key,$access_controls,$now,$then);
               } elsif ($type eq 'ip') {
                   &ips_row($r,$status,$key,$access_controls,$now,$then);
             }              }
     $r->print(&Apache::loncommon::end_data_table_row());      $r->print(&Apache::loncommon::end_data_table_row());
         }          }
Line 1559  sub display_access_row { Line 1561  sub display_access_row {
         }          }
         $r->print(&Apache::loncommon::end_data_table());          $r->print(&Apache::loncommon::end_data_table());
     } else {      } else {
         $r->print(&mt('No [_1]-based conditions defined.',$showtype).'<br />'.          $r->print(
                   &additional_item($type));              '<p class="LC_info">'
              .&mt('No '.$infotype.'-based conditions defined')
              .'</p>'
              .&additional_item($type)
           );
     }      }
     return;      return;
 }  }
Line 1568  sub display_access_row { Line 1574  sub display_access_row {
 sub course_js {  sub course_js {
     return qq|      return qq|
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 function setRoleOptions(num,roleid,cdom,cnum,type) {  function setRoleOptions(num,roleid,cdom,cnum,type) {
     updateIndexNum = getIndexByValue('update',num);      updateIndexNum = getIndexByValue('update',num);
     var addItem = 'add_role_'+num;      var addItem = 'add_role_'+num;
Line 1607  function getIndexByValue(name,value) { Line 1614  function getIndexByValue(name,value) {
     return -1;      return -1;
 }  }
   
   // ]]>
 </script>  </script>
 |;  |;
 }  }
Line 1659  sub course_row { Line 1667  sub course_row {
         }          }
         $r->print('<br />'.&mt('Add a roles-based condition').          $r->print('<br />'.&mt('Add a roles-based condition').
                   '&nbsp;<input type="checkbox" name="add_role_'.                    '&nbsp;<input type="checkbox" name="add_role_'.
                   $num.'" onClick="javascript:setRoleOptions('."'$num',                    $num.'" onclick="javascript:setRoleOptions('."'$num',
                   '$max_id','$content->{'domain'}','$content->{'number'}',                    '$max_id','$content->{'domain'}','$content->{'number'}',
                   '$showtype'".')" value="" />');                    '$showtype'".')" value="" />');
         $newrole_id = $max_id;          $newrole_id = $max_id;
Line 1720  sub users_row { Line 1728  sub users_row {
     $r->print('<td>'.&actionbox($status,$num,$scope).'</td><td>'.&mt("Format for users' username:domain information:").'<br /><tt>sparty:msu,illini:uiuc  ... etc.</tt><br /><textarea name="users_'.$num.'" cols="30"  rows="5">'.$curr_user_list.'</textarea></td><td>'.&dateboxes($num,$start,$end).'</td>');      $r->print('<td>'.&actionbox($status,$num,$scope).'</td><td>'.&mt("Format for users' username:domain information:").'<br /><tt>sparty:msu,illini:uiuc  ... etc.</tt><br /><textarea name="users_'.$num.'" cols="30"  rows="5">'.$curr_user_list.'</textarea></td><td>'.&dateboxes($num,$start,$end).'</td>');
 }  }
   
   sub ips_row {
       my ($r,$status,$item,$access_controls,$now,$then) = @_;
       my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then,
                                                       'ip');
       my $curr_ips_list;
       if ($status eq 'old') {
           my $content = $$access_controls{$item};
           $curr_ips_list = &sort_ips($content->{'ip'});
       }
       $r->print('<td>'.&actionbox($status,$num,$scope).'</td><td>'.&mt('Format for IP controls').'<br />'.
                 &mt('[_1] or [_2] or [_3] or [_4] or [_5]','<tt>35.8.*</tt>','<tt>35.8.3.[34-56]</tt>',
                     '<tt>*.msu.edu</tt>','<tt>35.8.3.34</tt>','<tt>somehostname.pa.msu.edu</tt>').'<br />'.
                 &mt('Use a comma to separate different ranges.').'</br/>'.
                 '<textarea name="ips_'.$num.'" cols="30"  rows="5">'.$curr_ips_list.'</textarea></td>'.
                 '<td>'.&dateboxes($num,$start,$end).'</td>');
   }
   
 sub additional_item {  sub additional_item {
     my ($type) = @_;      my ($type) = @_;
     my $showtype;      my $showtype;
     if ($type eq 'course') {      if ($type eq 'course') {
         $showtype = &mt('course/community');          $showtype = 'course/community';
     } elsif ($type eq 'domains') {      } elsif ($type eq 'domains') {
         $showtype = &mt('domains');          $showtype = 'domain';
     } elsif ($type eq 'users') {      } elsif ($type eq 'users') {
         $showtype = &mt('users');          $showtype = 'user';
       } elsif ($type eq 'ip') {
           $showtype = 'IP';
     }      }
     my $output = &mt('Add new [_1] condition(s)?',$showtype).'&nbsp;'.&mt('Number to add: ').'<input type="text" name="new'.$type.'" size="3" value="0" />';      return
     return $output;          &mt('Add new '.$showtype.'-based condition(s)?')
          .'&nbsp;'.&mt('Number to add: ')
          .'<input type="text" name="new'.$type.'" size="3" value="0" />';
 }  }
   
 sub actionbox {  sub actionbox {
Line 1739  sub actionbox { Line 1768  sub actionbox {
     my $output = '<span class="LC_nobreak"><label>';      my $output = '<span class="LC_nobreak"><label>';
     if ($status eq 'new') {      if ($status eq 'new') {
         my $checkstate;          my $checkstate;
         if ($scope eq 'domains' || $scope eq 'users' || $scope eq 'course') {          if ($scope eq 'domains' || $scope eq 'users' || $scope eq 'course' || $scope eq 'ip') {
             $checkstate = 'checked="checked"';              $checkstate = 'checked="checked"';
         }          }
         $output .= '<input type="checkbox" name="activate" value="'.$num.'" '.          $output .= '<input type="checkbox" name="activate" value="'.$num.'" '.
Line 1751  sub actionbox { Line 1780  sub actionbox {
                    '<label><input type="checkbox" name="update" value="'.                     '<label><input type="checkbox" name="update" value="'.
                    $num.'" />'.&mt('Update');                     $num.'" />'.&mt('Update');
     }      }
     $output .= '</label></span><input type="hidden" name="scope_'.$num.                '" value="'.$scope.'" />';      $output .= '</label></span><input type="hidden" name="scope_'.$num.'" value="'.$scope.'" />';
     return $output;      return $output;
 }  }
                                                                                                                                                                         
Line 2101  function confirmOverwrite() { Line 2130  function confirmOverwrite() {
 }  }
 // ]]>  // ]]>
 </script>  </script>
   <p>
 $msg  $msg
 <br /><div class="LC_warning"><form method="post" action="$url" name="existingfile" onsubmit="return confirmOverwrite();">  </p>
 <span class="LC_nobreak">$lt{'over'}  <form method="post" action="$url" name="existingfile" onsubmit="return confirmOverwrite();">
   <p class="LC_nobreak">$lt{'over'}
 <label><input type="radio" name="overwrite" value="1" />  <label><input type="radio" name="overwrite" value="1" />
 $lt{'yes'}</label>&nbsp;  $lt{'yes'}</label>&nbsp;
 <label><input type="radio" name="overwrite" value="0" checked="checked" />$lt{'no'}</label></span>  <label><input type="radio" name="overwrite" value="0" checked="checked" />$lt{'no'}</label></p>
   <p>
 <input type="hidden" name="action" value="cancel_overwrite" />  <input type="hidden" name="action" value="cancel_overwrite" />
 <input type="hidden" name="filename" value="$showfname" />  <input type="hidden" name="filename" value="$showfname" />
 <input type="hidden" name="timestamp" value="$timestamp" />  <input type="hidden" name="timestamp" value="$timestamp" />
 $hidden  $hidden
 $parserflag  $parserflag
 $group_elem  $group_elem
 <br /><br />  
 <input type="submit" name="process" value="$lt{'cont'}" />  <input type="submit" name="process" value="$lt{'cont'}" />
 </form></div>  </p>
   </form>
 END  END
         } else {          } else {
         $r->print(          $r->print(
Line 2213  sub overwrite { Line 2245  sub overwrite {
         }          }
     }      }
     if ($fname eq '') {      if ($fname eq '') {
         my $msg = &mt('Invalid filename: [_1]; the name of the uploaded file did not contain any letters, '.          $r->print(
               &Apache::loncommon::confirmwrapper(
                   &Apache::lonhtmlcommon::confirm_success(
                       &mt('Invalid filename: [_1]; the name of the uploaded file did not contain any letters, '.
                       'so after eliminating special characters there was nothing left.',                        'so after eliminating special characters there was nothing left.',
                       '<span class="LC_filename">'.$env{'form.filename'}.'</span>');                        '<span class="LC_filename">'.$env{'form.filename'}.'</span>'),1)));
         $r->print($msg.&done(undef,$url));          $r->print(&done(undef,$url));
         return;          return;
     }      }
     $env{'form.'.$formname.'.filename'} = $fname;      $env{'form.'.$formname.'.filename'} = $fname;
Line 2227  sub overwrite { Line 2262  sub overwrite {
                                         \%allfiles,\%codebase,undef,undef,undef,                                          \%allfiles,\%codebase,undef,undef,undef,
                                         undef,undef,undef,\$mimetype);                                          undef,undef,undef,\$mimetype);
     if ($result !~ m|^/uploaded/|) {      if ($result !~ m|^/uploaded/|) {
         $r->print('<p class="LC_error">'.&mt('An error occurred ([_1]) while trying to overwrite [_2].'          $r->print(
                   ,$result,&display_file(undef,$fname)).'</p>');              &Apache::loncommon::confirmwrapper(
         $r->print(&after_overwrite(&mt('Back'),$url));                  &Apache::lonhtmlcommon::confirm_success(
                       &mt('An error occurred ([_1]) while trying to overwrite [_2].'
                          ,$result,&display_file(undef,$fname)),1)));
     } else {      } else {
         if ($mode eq 'parse') {          if ($mode eq 'parse') {
             if ($mimetype eq 'text/html') {              if ($mimetype eq 'text/html') {
Line 2237  sub overwrite { Line 2274  sub overwrite {
                     &print_dependency_form($r,$url,\%allfiles,\%codebase,$result);                      &print_dependency_form($r,$url,\%allfiles,\%codebase,$result);
                     return;                      return;
                 } else {                  } else {
                     $r->print('<p>'.&mt('Overwriting completed.').'<br />'.                      $r->print(
                               &mt('No embedded items identified.').'</p>');                          &Apache::loncommon::confirmwrapper(
                               &Apache::lonhtmlcommon::confirm_success(
                                   &mt('Overwriting completed.'))
                              .'<br />'.&mt('No embedded items identified.')));
                 }                  }
             }              }
           } else {
               $r->print(
                   &Apache::loncommon::confirmwrapper(
                       &Apache::lonhtmlcommon::confirm_success(
                           &mt('Overwriting completed.'))));
         }          }
         $r->print(&after_overwrite(undef,$url));  
     }      }
     return;  
 }  
   
 sub after_overwrite {  
     my ($text,$url) = @_;  
     my $group_elem;      my $group_elem;
     if (defined($env{'form.group'})) {      if (defined($env{'form.group'})) {
         $group_elem = '<input type="hidden" name="group" value="'.$env{'form.group'}.'" />';          $group_elem = '<input type="hidden" name="group" value="'.$env{'form.group'}.'" />';
Line 2256  sub after_overwrite { Line 2296  sub after_overwrite {
             $group_elem .= '<input type="hidden" name="ref" value="'.$env{'form.ref'}.'" />'."\n";              $group_elem .= '<input type="hidden" name="ref" value="'.$env{'form.ref'}.'" />'."\n";
         }          }
     }      }
     if ($text eq '') {  
         $text = &mt('Done');  
     }  
     my $hidden = &hidden_elems();      my $hidden = &hidden_elems();
     return <<END;      $r->print(
           &Apache::lonhtmlcommon::actionbox(
 <h3><a href="javascript:document.overwritedone.submit();">$text</a></h3>              ['<a href="javascript:document.overwritedone.submit();">'
 <form name="overwritedone" method="post" action="$url" />              .&mt('Return to directory')
 $hidden              .'</a>'])
 $group_elem         .'<form name="overwritedone" method="post" action="'.$url.'">'
 </form>         .$hidden
 END         .$group_elem
          .'</form>'
       );
       return;
 }  }
   
 sub lock_info {  sub lock_info {
Line 2405  sub get_group_quota { Line 2445  sub get_group_quota {
     if (%curr_groups) {      if (%curr_groups) {
         my %group_info =  &Apache::longroup::get_group_settings(          my %group_info =  &Apache::longroup::get_group_settings(
                                                     $curr_groups{$group});                                                      $curr_groups{$group});
         $group_quota = $group_info{'quota'}; #expressed in Mb          $group_quota = $group_info{'quota'}; #expressed in MB
         if ($group_quota) {          if ($group_quota) {
             $group_quota = 1000 * $group_quota; #expressed in k              $group_quota = 1000 * $group_quota; #expressed in k
         }          }
Line 2527  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 = 1000 * $disk_quota; # convert from Mb to kb          $disk_quota = 1024 * $disk_quota; # convert from MB to kB
     }      }
     return $disk_quota;      return $disk_quota;
 }  }
Line 2631  sub handler { Line 2671  sub handler {
     } else {      } else {
         ($uname,$udom) = &get_name_dom();          ($uname,$udom) = &get_name_dom();
         $portfolio_root = &get_portfolio_root();          $portfolio_root = &get_portfolio_root();
         $title = &mt('My Space');          $title = 'My Space';
         $can_modify = 1;          $can_modify = 1;
         $can_delete = 1;          $can_delete = 1;
         $can_upload = 1;          $can_upload = 1;
Line 2716  sub handler { Line 2756  sub handler {
     }      }
     if ($env{'form.meta'}) {      if ($env{'form.meta'}) {
         &open_form($r,$url);          &open_form($r,$url);
         $r->print(&mt('Edit the meta data').'<br />');          $r->print(&mt('Edit Metadata').'<br />');
         &close_form($r,$url);          &close_form($r,$url);
     }      }
     if ($env{'form.uploaddoc.filename'}) {      if ($env{'form.uploaddoc.filename'}) {

Removed from v.1.244  
changed lines
  Added in v.1.254.2.1


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