Diff for /loncom/interface/loncoursegroups.pm between versions 1.79 and 1.86

version 1.79, 2008/10/21 14:29:39 version 1.86, 2008/12/16 23:45:29
Line 76  sub handler { Line 76  sub handler {
   
     my %functions = (      my %functions = (
                       email => 'E-mail',                        email => 'E-mail',
                       discussion => 'Discussion boards',                        discussion => 'Discussion Boards',
                       chat => 'Chat',                        chat => 'Chat',
                       files => 'File repository',                        files => 'File Repository',
                       roster => 'Membership roster',                        roster => 'Membership Roster',
                       homepage => $ucgpterm.' home page',                        homepage => $ucgpterm.' home page',
                     );                      );
   
Line 1259  sub reenable_folder { Line 1259  sub reenable_folder {
   
 sub modify_folders {  sub modify_folders {
     my ($cdom,$cnum,$groupname) = @_;      my ($cdom,$cnum,$groupname) = @_;
     my $outcome;      my ($outcome,$groupmap,$groupmapres,$map,$id,$src);
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     my $groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'.      if (!defined($navmap)) {
           $outcome = '<div class="LC_error">'.
                      &mt('Error reading course contents.').' '.
                      &mt('You need to re-initialize the course.').
                      '</div>';
           return $outcome;
       }
       $groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'.
                    $groupname.'.sequence';                     $groupname.'.sequence';
     my $groupmapres = $navmap->getResourceByUrl($groupmap);      $groupmapres = $navmap->getResourceByUrl($groupmap);
     my ($map,$id,$src);  
     if ($groupmapres) {      if ($groupmapres) {
         ($map,$id,$src)=&Apache::lonnet::decode_symb($groupmapres->symb());          ($map,$id,$src)=&Apache::lonnet::decode_symb($groupmapres->symb());
     }      }
Line 1553  sub open_list_window { Line 1559  sub open_list_window {
     my ($group,$status,$count,$text) = @_;      my ($group,$status,$count,$text) = @_;
     my $entry;      my $entry;
     if ($count > 0) {      if ($count > 0) {
         $entry = '<nobr><a href="javascript:openGroupRoster('.          $entry = '<span class="LC_nobreak"><a href="javascript:openGroupRoster('.
                  "'$group','$status'".')">'.$text.'</a>&nbsp;-&nbsp;'.$count.                   "'$group','$status'".')">'.$text.'</a>&nbsp;-&nbsp;'.$count.
                  '</nobr><br />';                   '</span><br />';
     } else {      } else {
         $entry = '<nobr>'.$text.'&nbsp;-&nbsp;'.$count.'</nobr><br />';          $entry = '<span class="LC_nobreak">'.$text.'&nbsp;-&nbsp;'.$count.'</span><br />';
     }      }
     return $entry;      return $entry;
 }  }
Line 1646  END Line 1652  END
                    $$functions{$allfunctions[$i]}.'</label></td>                     $$functions{$allfunctions[$i]}.'</label></td>
                    <td>&nbsp;</td><td>&nbsp;</td>');                     <td>&nbsp;</td><td>&nbsp;</td>');
     }      }
     $r->print('<td><input type="button" value="check all" '.      $r->print('<td><input type="button" value="'.&mt('check all').'" '.
               'onclick="javascript:checkAll(document.'.$formname.'.tool)" />'.                'onclick="javascript:checkAll(document.'.$formname.'.tool)" />'.
               '</td></tr><tr><td>&nbsp;</td>');                '</td></tr><tr><td>&nbsp;</td>');
     for (my $j=$halfnum; $j<@allfunctions; $j++) {      for (my $j=$halfnum; $j<@allfunctions; $j++) {
Line 1660  END Line 1666  END
     }      }
     $r->print('      $r->print('
        <td>         <td>
         <input type="button" value="uncheck all"          <input type="button" value="'.&mt('uncheck all').'"
           onclick="javascript:uncheckAll(document.'.$formname.'.tool)" />            onclick="javascript:uncheckAll(document.'.$formname.'.tool)" />
        </td>         </td>
       </tr>        </tr>
Line 1668  END Line 1674  END
        <td class="LC_description">'.&mt('Granularity:').'</td>         <td class="LC_description">'.&mt('Granularity:').'</td>
        <td colspan="10">'.$lt{'doyo'}.'&nbsp;<label><input type="radio" name="granularity" value="Yes" />'.&mt('Yes').'</label>&nbsp;<label><input type="radio" name="granularity" value="No" checked="checked" />'.&mt('No').'</label>');         <td colspan="10">'.$lt{'doyo'}.'&nbsp;<label><input type="radio" name="granularity" value="Yes" />'.&mt('Yes').'</label>&nbsp;<label><input type="radio" name="granularity" value="No" checked="checked" />'.&mt('No').'</label>');
     if ($action eq 'modify') {      if ($action eq 'modify') {
         $r->print('&nbsp;&nbsp;('.&mt('Currently set to "[_1]"',          $r->print('&nbsp;&nbsp;('.&mt('Currently set to [_1].'
                                       $$stored{'granularity'}).')');                                        ,'"'.&mt($$stored{'granularity'}).'"').')');
     }      }
     $r->print('      $r->print('
        </td>         </td>
Line 1806  sub sections_selection { Line 1812  sub sections_selection {
   
 sub access_date_settings {  sub access_date_settings {
     my ($r,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_;      my ($r,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_;
     my %lt = &Apache::lonlocal::texthash(      my $sten = &mt("Default start and end dates for $gpterm access");
                 'sten' => "Default start and end dates for $gpterm access",  
              );  
     my $starttime = time;      my $starttime = time;
     my $endtime = time+(6*30*24*60*60); # 6 months from now, approx      my $endtime = time+(6*30*24*60*60); # 6 months from now, approx
     if ($action eq 'modify') {      if ($action eq 'modify') {
Line 1818  sub access_date_settings { Line 1822  sub access_date_settings {
         }          }
     }      }
     my ($table) = &date_setting_table($starttime,$endtime,$formname);      my ($table) = &date_setting_table($starttime,$endtime,$formname);
     $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'sten'}).'      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$sten).'
     '.$table.'      '.$table.'
     ');      ');
     return;      return;
Line 1935  sub print_current_settings { Line 1939  sub print_current_settings {
         ygrs => "Your group selections - ",          ygrs => "Your group selections - ",
         tfwa => "The following settings will apply to the group:",          tfwa => "The following settings will apply to the group:",
         difn => 'Different collaborative tools<br />for different members:',          difn => 'Different collaborative tools<br />for different members:',
         stda => 'Start date',          stda => 'Start date:',
         enda => 'End date:',          enda => 'End date:',
     );      );
     my $showstart = &Apache::lonlocal::locallocaltime($startdate);      my $showstart = &Apache::lonlocal::locallocaltime($startdate);
Line 1987  sub print_current_settings { Line 1991  sub print_current_settings {
         $r->print('</tr></table><br />');          $r->print('</tr></table><br />');
     }      }
     if (@{$unavailable} > 0) {      if (@{$unavailable} > 0) {
         $r->print('<b>'.&mt('<b>Unavailable for assignment:').'</b>'.          $r->print('<b>'.&mt('Unavailable for assignment:').'</b>'.
                     '<table class="LC_group_priv"><tr>');                      '<table class="LC_group_priv"><tr>');
         my $rowcell = int(@{$unavailable}/2) + @{$unavailable}%2;          my $rowcell = int(@{$unavailable}/2) + @{$unavailable}%2;
         for (my $j=0; $j<@{$unavailable}; $j++) {          for (my $j=0; $j<@{$unavailable}; $j++) {
Line 2005  sub print_current_settings { Line 2009  sub print_current_settings {
         $r->print('</tr></table>');          $r->print('</tr></table>');
     }      }
     my $quota_text=&mt('[_1] Mb',$quota);      my $quota_text=&mt('[_1] Mb',$quota);
       my $granu_text=&mt($granularity);
     $r->print(<<"END");      $r->print(<<"END");
   </td>    </td>
   <td valign="top"><b>$lt{'difn'}</b> $granularity</td>    <td valign="top"><b>$lt{'difn'}</b> $granu_text</td>
   <td valign="top">$quota_text</td>     <td valign="top">$quota_text</td> 
   <td valign="top"><b>$lt{'stda'}</b> $showstart<br />    <td valign="top"><b>$lt{'stda'}</b> $showstart<br />
       <b>$lt{'enda'}</b> $showend        <b>$lt{'enda'}</b> $showend
Line 2066  sub pick_new_members { Line 2071  sub pick_new_members {
         if (@{$available} > 0 && $granularity eq 'Yes') {          if (@{$available} > 0 && $granularity eq 'Yes') {
             $r->print('<td>              $r->print('<td>
      <fieldset><legend><b>'.$lt{'setf'}.'</b></legend>       <fieldset><legend><b>'.$lt{'setf'}.'</b></legend>
       <nobr>        <span class="LC_nobreak">
       <input type="button" value="check all"        <input type="button" value="'.&mt('check all').'"
         onclick="javascript:checkAllTools(document.'.$formname.')" />          onclick="javascript:checkAllTools(document.'.$formname.')" />
         &nbsp;&nbsp;          &nbsp;&nbsp;
       <input type="button" value="uncheck all"        <input type="button" value="'.&mt('uncheck all').'"
         onclick="javascript:uncheckAllTools(document.'.$formname.')" />          onclick="javascript:uncheckAllTools(document.'.$formname.')" />
       </nobr>        </span>
      </fieldset></td>');       </fieldset></td>');
         }          }
         $r->print('</tr></table>          $r->print('</tr></table>
Line 2095  sub pick_new_members { Line 2100  sub pick_new_members {
             if ($granularity eq 'Yes') {              if ($granularity eq 'Yes') {
                 $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').'                  $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').'
  <td colspan="6">&nbsp;</td>   <td colspan="6">&nbsp;</td>
  <td align="center"><nobr><b>'.&mt('All:').'</b>&nbsp;');   <td align="center"><span class="LC_nobreak"><b>'.&mt('All:').'</b>&nbsp;');
                 foreach my $tool (@{$available}) {                  foreach my $tool (@{$available}) {
                     $r->print('<label><input type="checkbox" name="togglefunc" '.                      $r->print('<label><input type="checkbox" name="togglefunc" '.
    'onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);"'.     'onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);"'.
    ' value="'.$tool.'">'.'<b>'.$tool.'</b></label>&nbsp;&nbsp;&nbsp;');     ' value="'.$tool.'">'.'<b>'.$tool.'</b></label>&nbsp;&nbsp;&nbsp;');
                 }                  }
                 $r->print('</nobr></td></tr>');                  $r->print('</span></td></tr>');
             }              }
         }          }
         my %Sortby = ();          my %Sortby = ();
Line 2135  sub pick_new_members { Line 2140  sub pick_new_members {
   '<td>'.$id.'</td>'.    '<td>'.$id.'</td>'.
   '<td>'.$section.'</td>');    '<td>'.$section.'</td>');
                 if (@{$available} > 0) {                  if (@{$available} > 0) {
                     $r->print('<td align="center"><nobr>'.                      $r->print('<td align="center"><span class="LC_nobreak">'.
                               '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');                                '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
                     foreach my $tool (@{$available}) {                      foreach my $tool (@{$available}) {
                         if ($granularity eq 'Yes') {                          if ($granularity eq 'Yes') {
Line 2146  sub pick_new_members { Line 2151  sub pick_new_members {
                           $tool.'" value="'.$user.'" />'.$tool.'&nbsp;&nbsp;&nbsp;');                            $tool.'" value="'.$user.'" />'.$tool.'&nbsp;&nbsp;&nbsp;');
                         }                          }
                     }                      }
                     $r->print('</nobr></td>');                      $r->print('</span></td>');
                 }                  }
                 $r->print(&Apache::loncommon::end_data_table_row()."\n");                  $r->print(&Apache::loncommon::end_data_table_row()."\n");
             }              }
Line 2233  sub privilege_specificity { Line 2238  sub privilege_specificity {
         if ($totaloptionalprivs) {          if ($totaloptionalprivs) {
             $r->print('              $r->print('
 <br />  <br />
 <label><nobr><input type="radio" name="specificity" value="No" '.$specific{'No'}.' />&nbsp;'.$lt{'algm'}.'</nobr></label><br />  <label><span class="LC_nobreak"><input type="radio" name="specificity" value="No" '.$specific{'No'}.' />&nbsp;'.$lt{'algm'}.'</span></label><br />
 <label><nobr><input type="radio" name="specificity" value="Yes" '.$specific{'Yes'}.' />&nbsp;'.$lt{'smgp'}.'</nobr></label><br /><br />');  <label><span class="LC_nobreak"><input type="radio" name="specificity" value="Yes" '.$specific{'Yes'}.' />&nbsp;'.$lt{'smgp'}.'</span></label><br /><br />');
         } else {          } else {
             $r->print('<input type="hidden" name="specificity" value="No" />');              $r->print('<input type="hidden" name="specificity" value="No" />');
         }          }
Line 2510  sub current_membership { Line 2515  sub current_membership {
                 $r->print(&check_uncheck_tools($r,$available));                  $r->print(&check_uncheck_tools($r,$available));
                 $r->print('                  $r->print('
      <td>       <td>
       <nobr>        <span class="LC_nobreak">
        <fieldset><legend><b>'.$lt{'curf'}.'</b></legend>         <fieldset><legend><b>'.$lt{'curf'}.'</b></legend>
        <input type="button" value="check all"         <input type="button" value="'.&mt('check all').'"
        onclick="javascript:checkAllTools(document.'.$formname.')" />         onclick="javascript:checkAllTools(document.'.$formname.')" />
        &nbsp;&nbsp;         &nbsp;&nbsp;
        <input type="button" value="uncheck all"         <input type="button" value="'.&mt('uncheck all').'"
         onclick="javascript:uncheckAllTools(document.'.$formname.')" />          onclick="javascript:uncheckAllTools(document.'.$formname.')" />
       </fieldset>        </fieldset>
      </nobr>       </span>
     </td>      </td>
 ');  ');
             }              }
Line 2553  END Line 2558  END
             if ($granularity eq 'Yes') {              if ($granularity eq 'Yes') {
                 $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').'                  $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').'
  <td colspan="7">&nbsp;</td>   <td colspan="7">&nbsp;</td>
  <td colspan="'.$colspan.'" align="center"><nobr><b>'.&mt('All:').   <td colspan="'.$colspan.'" align="center"><span class="LC_nobreak"><b>'.&mt('All:').
   '</b>&nbsp;');    '</b>&nbsp;');
                 foreach my $tool (@{$available}) {                  foreach my $tool (@{$available}) {
                     $r->print('<label><input type="checkbox" name="togglefunc"'.                      $r->print('<label><input type="checkbox" name="togglefunc"'.
    ' onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);"'.     ' onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);"'.
    ' value="'.$tool.'" />'.'<b>'.$tool.'</b></label>&nbsp;&nbsp;&nbsp;');     ' value="'.$tool.'" />'.'<b>'.$tool.'</b></label>&nbsp;&nbsp;&nbsp;');
                 }                  }
                 $r->print('</nobr></td></tr>');                  $r->print('</span></td></tr>');
             }              }
         }          }
         my %Sortby = ();          my %Sortby = ();
Line 2588  END Line 2593  END
                 $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').'                  $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').'
                             <td>');                              <td>');
                 if ($$current{$user}{changestate} eq 'reenable') {                  if ($$current{$user}{changestate} eq 'reenable') {
                     $r->print('<nobr><label>'.                       $r->print('<span class="LC_nobreak"><label>'. 
    '<input type="checkbox" name="reenable" value="'.$user.'" />'.     '<input type="checkbox" name="reenable" value="'.$user.'" />'.
    $lt{'reen'}.'</label></nobr><br />');     $lt{'reen'}.'</label></span><br />');
                 } elsif ($$current{$user}{changestate} eq 'expire') {                  } elsif ($$current{$user}{changestate} eq 'expire') {
                     $r->print('<nobr><label>'.                      $r->print('<span class="LC_nobreak"><label>'.
    '<input type="checkbox" name="expire" value="'.$user.'" />'.     '<input type="checkbox" name="expire" value="'.$user.'" />'.
    $lt{'expi'}.'</label></nobr><br />');     $lt{'expi'}.'</label></span><br />');
                 } elsif ($$current{$user}{changestate} eq 'activate') {                  } elsif ($$current{$user}{changestate} eq 'activate') {
                     $r->print('<nobr><label>'.                      $r->print('<span class="LC_nobreak"><label>'.
    '<input type="checkbox" name="activate" value="'.$user.'" />'.     '<input type="checkbox" name="activate" value="'.$user.'" />'.
    $lt{'acti'}.'</label></nobr><br />');     $lt{'acti'}.'</label></span><br />');
                 }                  }
                 $r->print('<nobr><label>'.                  $r->print('<span class="LC_nobreak"><label>'.
    '<input type="checkbox" name="deletion" value="'.$user.'" />'.     '<input type="checkbox" name="deletion" value="'.$user.'" />'.
    $lt{'dele'}.'</label></nobr>');     $lt{'dele'}.'</label></span>');
                 if ($specificity eq 'Yes') {                  if ($specificity eq 'Yes') {
                     $r->print('<br /><nobr><label>'.                      $r->print('<br /><span class="LC_nobreak"><label>'.
    '<input type="checkbox" name="changepriv" value="'.$user.'" />'.$lt{'chpr'}.     '<input type="checkbox" name="changepriv" value="'.$user.'" />'.$lt{'chpr'}.
    '</label></nobr>');     '</label></span>');
                 }                  }
                 $r->print('                  $r->print('
    </td>'.     </td>'.
Line 2617  END Line 2622  END
    '<td>'.$start.'</td>'.     '<td>'.$start.'</td>'.
    '<td>'.$end.'</td>');     '<td>'.$end.'</td>');
                 if ($hastools) {                  if ($hastools) {
                     $r->print('<td align="left"><nobr>'.                      $r->print('<td align="left"><span class="LC_nobreak">'.
                                   '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');                                    '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
                     foreach my $tool (@{$$current{$user}{currtools}}) {                      foreach my $tool (@{$$current{$user}{currtools}}) {
                         if ($granularity eq 'Yes') {                          if ($granularity eq 'Yes') {
Line 2633  END Line 2638  END
                          }                           }
                          $r->print('&nbsp;&nbsp;&nbsp;');                           $r->print('&nbsp;&nbsp;&nbsp;');
                     }                      }
                     $r->print('</nobr></td>');                      $r->print('</span></td>');
                 }                  }
                 if ($addtools) {                  if ($addtools) {
                     $r->print('<td align="left">');                      $r->print('<td align="left">');
                     if ($granularity eq 'Yes') {                      if ($granularity eq 'Yes') {
                         foreach my $tool (@{$$current{$user}{newtools}}) {                          foreach my $tool (@{$$current{$user}{newtools}}) {
                             $r->print('<nobr><label><input type="checkbox"                              $r->print('<span class="LC_nobreak"><label><input type="checkbox"
                                           name="user_'.$tool.'" value="'.                                            name="user_'.$tool.'" value="'.
                                           $user.'" />'.$tool.                                            $user.'" />'.$tool.
                                           '</label></nobr>&nbsp;&nbsp;&nbsp;');                                            '</label></span>&nbsp;&nbsp;&nbsp;');
                         }                          }
                     } else {                      } else {
                         foreach my $tool (@{$$current{$user}{newtools}}) {                          foreach my $tool (@{$$current{$user}{newtools}}) {
                             $r->print('<nobr><input type="hidden"                               $r->print('<span class="LC_nobreak"><input type="hidden" 
                                           name="user_'. $tool.'" value="'.                                            name="user_'. $tool.'" value="'.
                                           $user.'" />'.$tool.                                            $user.'" />'.$tool.
                                           '</nobr>&nbsp;&nbsp;&nbsp;');                                            '</span>&nbsp;&nbsp;&nbsp;');
                         }                          }
                     }                      }
                     $r->print('</td>');                      $r->print('</td>');
Line 2670  sub check_uncheck_buttons { Line 2675  sub check_uncheck_buttons {
      <td '.$colspan.'>       <td '.$colspan.'>
        <fieldset>         <fieldset>
        <legend><b>'.$title.'</b></legend>         <legend><b>'.$title.'</b></legend>
       <nobr>        <span class="LC_nobreak">
        <input type="button" value="check all"         <input type="button" value="'.&mt('check all').'"
        onclick="javascript:checkAll(document.'.$formname.'.'.$field.')" />         onclick="javascript:checkAll(document.'.$formname.'.'.$field.')" />
        &nbsp;&nbsp;         &nbsp;&nbsp;
        <input type="button" value="uncheck all"         <input type="button" value="'.&mt('uncheck all').'"
        onclick="javascript:uncheckAll(document.'.$formname.'.'.$field.')" />         onclick="javascript:uncheckAll(document.'.$formname.'.'.$field.')" />
       </nobr>        </span>
        </fieldset>         </fieldset>
      </td>       </td>
 ');  ');
Line 2876  sub member_privileges_form { Line 2881  sub member_privileges_form {
                       'members being added or modified, '.                         'members being added or modified, '. 
                       'there are no optional privileges to set '.                        'there are no optional privileges to set '.
                       'for specific members.',                        'for specific members.',
             'algr' => 'All new group members will receive the same privileges.',            'ifex' => 'If previously expired members are being re-enabled, or '.              'algr' => 'All new group members will receive the same privileges.',
               'ifex' => 'If previously expired members are being re-enabled, or '.
                       'if access for future members is being activated now, '.                        'if access for future members is being activated now, '.
                       'previously set privileges will be preserved.',                        'previously set privileges will be preserved.',
             'asno' => 'As no group members are being added, '.              'asno' => 'As no group members are being added, '.
Line 2954  sub member_privileges_form { Line 2960  sub member_privileges_form {
                             $r->print('<td valign="top">');                              $r->print('<td valign="top">');
                             $r->print('<table class="thinborder"><tr>'.                              $r->print('<table class="thinborder"><tr>'.
       '<th colspan="'.$colspan.'">'.        '<th colspan="'.$colspan.'">'.
                                       $tool.'</th></tr><tr>');                                        &mt($tool).'</th></tr><tr>');
                             my $privcount = 0;                              my $privcount = 0;
                             foreach my $priv (@{$showboxes{$tool}}) {                              foreach my $priv (@{$showboxes{$tool}}) {
                                 $privcount ++;                                  $privcount ++;
Line 2968  sub member_privileges_form { Line 2974  sub member_privileges_form {
                                 } else {                                  } else {
                                     $r->print('<td>');                                      $r->print('<td>');
                                 }                                  }
                                 $r->print(qq|                                  $r->print(
        <fieldset><legend><b>$$toolprivs{$tool}{$priv}</b></legend>   '<fieldset><legend><b>'.&mt($$toolprivs{$tool}{$priv}).'</b></legend>'
        <nobr>  .'<span class="LC_nobreak">'
        <input type="button" value="check all"  .' <input type="button" value="'.&mt('check all').'"'
          onclick="javascript:checkAll(document.$formname.userpriv_$priv)" />  .' onclick="javascript:checkAll(document.'.$formname.'.userpriv_'.$priv.')" />'
        &nbsp;  .'&nbsp;'
        <input type="button" value="uncheck all"  .'<input type="button" value="'.&mt('uncheck all').'"'
         onclick="javascript:uncheckAll(document.$formname.userpriv_$priv)" />  .' onclick="javascript:uncheckAll(document.'.$formname.'.userpriv_'.$priv.')" />'
       </nobr></fieldset><br />|);  .'</span></fieldset><br />'
                                   );
                                 $r->print('</td>');                                  $r->print('</td>');
                                 if ($privcount < @{$showboxes{$tool}}) {                                  if ($privcount < @{$showboxes{$tool}}) {
                                     if (@{$showboxes{$tool}} > 2) {                                      if (@{$showboxes{$tool}} > 2) {
Line 3221  sub write_group_data { Line 3228  sub write_group_data {
                 my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';                  my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';
                 my $boardsmap = $crspath.'group_boards_'.$groupname.'.sequence';                  my $boardsmap = $crspath.'group_boards_'.$groupname.'.sequence';
                 my $navmap = Apache::lonnavmaps::navmap->new();                  my $navmap = Apache::lonnavmaps::navmap->new();
                 my $bbmapres = $navmap->getResourceByUrl($boardsmap);                  my ($bbmapres,$error);
                 undef($navmap);                  if (defined($navmap)) {
                 if (!$bbmapres) {                      $bbmapres = $navmap->getResourceByUrl($boardsmap);
                     my $grpmap = $crspath.'group_folder_'.$groupname.'.sequence';                      undef($navmap);
                     my $disctitle = &mt('Discussion Boards');                      if (!$bbmapres) {
                     my $outcome = &map_updater($cdom,$cnum,'group_boards_'.                          my $grpmap = $crspath.'group_folder_'.$groupname.'.sequence';
                                                $groupname.'.sequence','bbseq',                          my $disctitle = &mt('Discussion Boards');
                                                $disctitle,$grpmap);                          my $outcome = &map_updater($cdom,$cnum,'group_boards_'.
                     my ($furl,$ferr) =                                                      $groupname.'.sequence','bbseq',
                         &Apache::lonuserstate::readmap($cdom.'/'.$cnum);                                                     $disctitle,$grpmap);
                     $navmap = Apache::lonnavmaps::navmap->new();                          my ($furl,$ferr) = 
                     # modify parameter                              &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
                     if ($outcome eq 'ok') {                          # modify parameter
                         my $parm_result = &parm_setter($navmap,$cdom,$boardsmap,                          if ($outcome eq 'ok') {
                                                        $groupname);                              $navmap = Apache::lonnavmaps::navmap->new();
                         if ($parm_result) {                              if (defined($navmap)) {
                             $r->print('<div class="LC_error">'                                  my $parm_result = &parm_setter($navmap,$cdom,$boardsmap,
                                      .&mt('An error occurred while setting parameters '                                                                 $groupname);
                                          .'for Discussion Boards folder: '                                  if ($parm_result) {
                                          .'[_1]',$parm_result)                                      $error = &mt('An error occurred while setting parameters '
                                      .'</div>');                                               .'for Discussion Boards folder: '
                                                .'[_1]',$parm_result);
                                   } else {
                                       $r->print('<div class="LC_success">'.
                                                 &mt('Discussion Boards Folder created.')
                                                 .'</div>');
                                   }
                                   undef($navmap);
                               } else {
                                   $error = &mt('An error occurred while setting parameters '.
                                                'for Discussion Boards folder: '.
                                                'Could not retrieve course information' );
                               }
                         } else {                          } else {
                             $r->print('<div class="LC_success">'                              $r->print($outcome);
                                      .&mt('Discussion Boards Folder created.')  
                                      .'</div>');  
                         }                          }
                     } else {  
                         $r->print($outcome);  
                     }                      }
                     undef($navmap);                  } else {
                       $error = &mt("An error occurred while retrieving the contents of the group's folder.").'<br />'.
                                &mt('You need to re-initialize the course.');
                   }
                   if ($error ne '') {
                       $r->print('<div class="LC_error">'.$error.'</div>');
                 }                  }
             }              }
             $r->print('<div class="LC_success">'              $r->print('<div class="LC_success">'
Line 3471  sub process_membership { Line 3491  sub process_membership {
         $r->print('<br />');          $r->print('<br />');
     }      }
     if (@unchanged > 0) {      if (@unchanged > 0) {
         $r->print(&mt('No change occurred for the following users:<br />'));          $r->print(&mt('No change occurred for the following users:').'<br />');
         foreach my $user (sort(@unchanged)) {          foreach my $user (sort(@unchanged)) {
             $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />');              $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />');
         }          }
         $r->print('<br />');          $r->print('<br />');
     }      }
     if ($roster_result eq 'ok') {      if ($roster_result eq 'ok') {
         $r->print('<br />'.&mt('[_1] membership list updated.',$ucgpterm));          $r->print('<div class="LC_success">'
  $r->print('<p>'.&mt("Any currently logged in course users affected by the changes you made to group membership or privileges for the [_1] group will need to log out and log back in for their LON-CAPA sessions to reflect these changes.",$groupname).'</p>');                   .&mt($ucgpterm.' membership list updated.')
                    .'</div>');
    $r->print('<p class="LC_info">'
                    .&mt('Any currently logged in course users affected by the changes you made'
                        .' to group membership or privileges for the [_1] group will need to log out'
                        .' and log back in for their LON-CAPA sessions to reflect these changes.'
                        ,'<i>'.$groupname.'</i>')
                    .'</p>'
           );
     } else {      } else {
         $r->print('<br />'.&mt('An error occurred while updating the [_1] membership list -',$gpterm).$roster_result.'<br />');          $r->print('<div class="LC_error">'
                    .&mt("An error occurred while updating the $gpterm membership list:")
                    .'<br />'.$roster_result
                    .'</div>');
     }      }
     return;      return;
 }  }
Line 3497  sub mapping_options { Line 3528  sub mapping_options {
         'adds'  => "If automatic $gpterm enrollment is enabled, when a user is newly assigned a ".lc($crstype)."-wide or section-specific role, he/she will automatically be added as a member of the $gpterm, with start and end access dates defined by the default dates set for the $gpterm, unless he/she is already a $gpterm member, with access dates that permit either current or future $gpterm access.",          'adds'  => "If automatic $gpterm enrollment is enabled, when a user is newly assigned a ".lc($crstype)."-wide or section-specific role, he/she will automatically be added as a member of the $gpterm, with start and end access dates defined by the default dates set for the $gpterm, unless he/she is already a $gpterm member, with access dates that permit either current or future $gpterm access.",
         'drops'  => "If automatic $gpterm disenrollment is enabled, when a user's role is expired, access to the $gpterm will be terminated unless the user continues to have other ".lc($crstype)."-wide or section-specific active or future roles which receive automatic membership in the $gpterm.",          'drops'  => "If automatic $gpterm disenrollment is enabled, when a user's role is expired, access to the $gpterm will be terminated unless the user continues to have other ".lc($crstype)."-wide or section-specific active or future roles which receive automatic membership in the $gpterm.",
         'pirs' => "Pick roles and sections for automatic $gpterm enrollment",          'pirs' => "Pick roles and sections for automatic $gpterm enrollment",
         'curr' => 'Currently set to',  
         'on' => 'on',          'on' => 'on',
         'off' => 'off',          'off' => 'off',
         'auad' => "Automatically enable $gpterm membership when roles are added?",          'auad' => "Automatically enable $gpterm membership when roles are added?",
Line 3522  sub automapping { Line 3552  sub automapping {
     }      }
     $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'endi'}).'      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'endi'}).'
     <b>'.$$lt{'gmma'}.':</b><br />'.$$lt{'adds'}.'<br />'.$$lt{'drops'}.'<br /><br />      <b>'.$$lt{'gmma'}.':</b><br />'.$$lt{'adds'}.'<br />'.$$lt{'drops'}.'<br /><br />
    <nobr>'.$$lt{'auad'}.':&nbsp;     <span class="LC_nobreak">'.$$lt{'auad'}.':&nbsp;
     <label><input type="radio" name="autoadd" value="on" />on&nbsp;&nbsp;</label><label><input type="radio" name="autoadd" value="off" checked="checked" />off</label>');      <label><input type="radio" name="autoadd" value="on" />'.&mt('on').'&nbsp;&nbsp;</label><label><input type="radio" name="autoadd" value="off" checked="checked" />'.&mt('off').'</label>');
     if ($action eq 'modify') {      if ($action eq 'modify') {
         $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.$$lt{'curr'}.' <b>'.$$lt{$add}.'</b>)');          $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.&mt('Currently set to [_1].','<b>'.$$lt{$add}.'</b>').')');
     }      }
     $r->print('      $r->print('
     </nobr><br />      </span><br />
     <nobr>'.$$lt{'auex'}.':&nbsp;      <span class="LC_nobreak">'.$$lt{'auex'}.':&nbsp;
     <label><input type="radio" name="autodrop" value="on" />on&nbsp;&nbsp;</label><label><input type="radio" name="autodrop" value="off" checked="checked" />off</label>');      <label><input type="radio" name="autodrop" value="on" />'.&mt('on').'&nbsp;&nbsp;</label><label><input type="radio" name="autodrop" value="off" checked="checked" />'.&mt('off').'</label>');
     if ($action eq 'modify') {      if ($action eq 'modify') {
         $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.$$lt{'curr'}.' <b>'.$$lt{$drop}.'</b>)');          $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.&mt('Currently set to [_1].','<b>'.$$lt{$drop}.'</b>').')');
     }      }
     $r->print('</nobr><br /><br />'.$$lt{'mapr'});      $r->print('</span><br /><br />'.$$lt{'mapr'});
 }  }
   
 sub mapping_settings {  sub mapping_settings {
Line 3694  sub member_privs_entries { Line 3724  sub member_privs_entries {
                         if ($privcount == 3) {                          if ($privcount == 3) {
                             $dynamic .= '</tr><tr>';                              $dynamic .= '</tr><tr>';
                         }                          }
                         $dynamic .='<td><nobr><label><input type="checkbox" '.                          $dynamic .='<td><span class="LC_nobreak"><label><input type="checkbox" '.
                                'name="userpriv_'.$priv.'" value="'.$user.'"';                                 'name="userpriv_'.$priv.'" value="'.$user.'"';
                         if (grep/^\Q$priv\E$/,@{$defprivs}) {                          if (grep/^\Q$priv\E$/,@{$defprivs}) {
                             $dynamic .= ' checked="checked" ';                              $dynamic .= ' checked="checked" ';
                         }                          }
                         $dynamic .= ' />'.$$toolprivs{$tool}{$priv}.                          $dynamic .= ' />'.$$toolprivs{$tool}{$priv}.
                                     '</label></nobr></td>';                                      '</label></span></td>';
                     }                      }
                 }                  }
                 $r->print('<tr><td colspan="2"><nobr>'.$fixed.'</nobr></td></tr><tr>'.$dynamic.'</tr></table></td>');                  $r->print('<tr><td colspan="2"><span class="LC_nobreak">'.$fixed.'</span></td></tr><tr>'.$dynamic.'</tr></table></td>');
             } else {              } else {
                 $r->print('<td valign="top"><table width="100%"><tr><th colspan="2">'.$tool.'</th></tr><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr></table></td>');                  $r->print('<td valign="top"><table width="100%"><tr><th colspan="2">'.$tool.'</th></tr><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr></table></td>');
             }              }
Line 3730  sub date_setting_table { Line 3760  sub date_setting_table {
     my $endform = &Apache::lonhtmlcommon::date_setter($formname,      my $endform = &Apache::lonhtmlcommon::date_setter($formname,
                                                       'enddate',$endtime);                                                        'enddate',$endtime);
     my $perpetual =       my $perpetual = 
  '<nobr><label><input type="checkbox" name="no_end_date" />'.   '<span class="LC_nobreak"><label><input type="checkbox" name="no_end_date" />'.
  &mt('None').'</label></nobr>';   &mt('None').'</label></span>';
     my $table = "<table class=\"LC_descriptive_input\">\n".      my $table = "<table class=\"LC_descriptive_input\">\n".
  '<tr><td class="LC_description">'.&mt('Start:').'</td>'.   '<tr><td class="LC_description">'.&mt('Start:').'</td>'.
         '<td>'.$startform.'</td>'.          '<td>'.$startform.'</td>'.
Line 3747  sub add_group_folder { Line 3777  sub add_group_folder {
     my ($cdom,$cnum,$now,$groupname,$action,$description,$tools,$groupinfo,      my ($cdom,$cnum,$now,$groupname,$action,$description,$tools,$groupinfo,
         $gpterm,$ucgpterm,$crstype) = @_;          $gpterm,$ucgpterm,$crstype) = @_;
     if ($cdom eq '' || $cnum eq '') {      if ($cdom eq '' || $cnum eq '') {
         return &mt('Error: invalid course domain or number - group folder creation failed');            return '<span class="LC_error">'
                 .&mt('Error: invalid course domain or number - group folder creation failed.')
                 .'</span>';
     }      }
     my ($outcome,$allgrpsmap,$grpmap,$boardsmap,$grppage,$warning);      my ($outcome,$allgrpsmap,$grpmap,$boardsmap,$grppage,$warning);
     my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';      my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';
Line 3757  sub add_group_folder { Line 3789  sub add_group_folder {
             # check if group_allfolders.sequence exists.              # check if group_allfolders.sequence exists.
             my $mapcontents = &Apache::lonnet::getfile($allgrpsmap);              my $mapcontents = &Apache::lonnet::getfile($allgrpsmap);
             if ($mapcontents eq '-1') { #file does not exist;              if ($mapcontents eq '-1') { #file does not exist;
                 my $grpstitle = &mt('[_1] [_2]s',$crstype,$ucgpterm);                  my $grpstitle = &mt("$crstype $ucgpterm".'s');
                 my $topmap_url = '/'.$env{'course.'.$env{'request.course.id'}.'.url'};                  my $topmap_url = '/'.$env{'course.'.$env{'request.course.id'}.'.url'};
                 $topmap_url =~ s|/+|/|g;                  $topmap_url =~ s|/+|/|g;
                 if ($topmap_url =~ m|^/uploaded|) {                  if ($topmap_url =~ m|^/uploaded|) {
                     $outcome = &map_updater($cdom,$cnum,'group_allfolders.sequence',                      $outcome = &map_updater($cdom,$cnum,'group_allfolders.sequence',
                                             'toplevelgroup',$grpstitle,$topmap_url);                                              'toplevelgroup',$grpstitle,$topmap_url);
                 } else {                  } else {
                     $outcome = &mt('Non-standard course - folder for all groups not added.');                      $outcome = '<span class="LC_warning">'
                                 .&mt('Non-standard course - folder for all groups not added.')
                                 .'</span>';
                 }                  }
                 if ($outcome ne 'ok') {                  if ($outcome ne 'ok') {
                     my $delresult = &release_folder_lock($cdom,$cnum,'group_allfolders');                      my $delresult = &release_folder_lock($cdom,$cnum,'group_allfolders');
                     if ($delresult ne 'ok') {                      if ($delresult ne 'ok') {
                         $warning = $delresult;                          $warning = $delresult;
                     }                      }
                     return $outcome;                      return $outcome.$warning;
                 }                  }
             }              }
             my $delresult = &release_folder_lock($cdom,$cnum,'group_allfolders');              my $delresult = &release_folder_lock($cdom,$cnum,'group_allfolders');
Line 3779  sub add_group_folder { Line 3813  sub add_group_folder {
                 $warning = $delresult ;                  $warning = $delresult ;
             }              }
         } else {          } else {
             $outcome = &mt('Could not obtain exclusive lock to check status of the folder for all groups. No group folder added.');              $outcome = '<span class="LC_error">'
                         .&mt('Could not obtain exclusive lock to check status of the folder for all groups. No group folder added.')
                         .'</span>';
             return $outcome;              return $outcome;
         }          }
         my $grpfolder = &mt($ucgpterm.' Folder - [_1]',$description);          my $grpfolder = &mt($ucgpterm.' Folder - [_1]',$description);
Line 3810  sub add_group_folder { Line 3846  sub add_group_folder {
     }      }
     my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum);      my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
       if (!defined($navmap)) {
           return $warning.'<span class="LC_error">'.&mt('Error retrieving course contents').
                  ' '.&mt('You need to re-initialize the course.').'</span>';
       }
     # modify parameters      # modify parameters
     my $parm_result;      my $parm_result;
     if ($action eq 'create') {      if ($action eq 'create') {
Line 3855  sub release_folder_lock { Line 3895  sub release_folder_lock {
     my @del_lock = ($folder_name."\0".'locked_folder');      my @del_lock = ($folder_name."\0".'locked_folder');
     my $dellockoutcome=&Apache::lonnet::del('coursegroups',\@del_lock,$cdom,$cnum);      my $dellockoutcome=&Apache::lonnet::del('coursegroups',\@del_lock,$cdom,$cnum);
     if ($dellockoutcome ne 'ok') {      if ($dellockoutcome ne 'ok') {
         return ('<br />'.&mt('Warning: failed to release lock for folder: [_1].',$folder_name).'<br />');           return ('<div class="LC_error">'
                  .&mt('Warning: failed to release lock for folder: [_1].','<tt>'.$folder_name.'</tt>')
                  .'</div>'
                  );
     } else {      } else {
         return 'ok';          return 'ok';
     }      }
Line 3870  sub map_updater { Line 3913  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 = &mt('Error uploading new folder.')." ($newfile): $newmapurl".'<br />';          $outcome = '<div class="LC_error">'
                     .&mt('Error uploading new folder.')." ($newfile): $newmapurl"
                     .'</div>';
         return $outcome;          return $outcome;
     }      }
     my ($errtext,$fatal)=&LONCAPA::map::mapread($parentmap);      my ($errtext,$fatal)=&LONCAPA::map::mapread($parentmap);
     if ($fatal) {      if ($fatal) {
         $outcome = &mt('Error reading contents of parent folder')." ($parentmap): $errtext".'<br />';          $outcome = '<div class="LC_error">'
                     .&mt('Error reading contents of parent folder.')." ($parentmap): $errtext"
                     .'</div>';
         return $outcome;          return $outcome;
     } else {      } else {
         my $newidx=&LONCAPA::map::getresidx($newmapurl);          my $newidx=&LONCAPA::map::getresidx($newmapurl);
Line 3884  sub map_updater { Line 3931  sub map_updater {
         $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx;          $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx;
         my ($outtext,$errtext) = &LONCAPA::map::storemap($parentmap,1);          my ($outtext,$errtext) = &LONCAPA::map::storemap($parentmap,1);
         if ($errtext) {          if ($errtext) {
             $outcome = &mt('Error saving updated parent folder')." ($parentmap):  $errtext".'<br />';              $outcome = '<div class="LC_error">'
                         .&mt('Error saving updated parent folder.')." ($parentmap):  $errtext"
                         .'</div>';
             return $outcome;              return $outcome;
         }          }
     }      }
Line 3906  sub new_map { Line 3955  sub new_map {
 sub parm_setter {  sub parm_setter {
     my ($navmap,$cdom,$url,$groupname) = @_;      my ($navmap,$cdom,$url,$groupname) = @_;
     my $allresults;      my $allresults;
       if (!defined($navmap)) {
           $allresults = '<div class="LC_warning">'.
                         &mt('Parameters not set for [_1] because the contents of the course could not be retrieved.',$url).' '.
                         &mt('You need to reinitialize the course.').
                         '</div>';
       }
     my %hide_settings = (      my %hide_settings = (
                            'course' =>  {                             'course' =>  {
                                           'num' => 13,                                            'num' => 13,
Line 3934  sub parm_setter { Line 3989  sub parm_setter {
             }              }
         }          }
     } else {      } else {
         $allresults = &mt('Parameters not set for [_1] because the resource was not recognized as part of the course',$url).'<br />';          $allresults = '<div class="LC_warning">' 
                        .&mt('Parameters not set for [_1] because the resource was not recognized'
                            .' as part of the course.','<tt>'.$url.'</tt>')
                        .'</div>';
     }      }
     return $allresults;      return $allresults;
 }  }

Removed from v.1.79  
changed lines
  Added in v.1.86


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