Diff for /loncom/interface/lonpopulate.pm between versions 1.62 and 1.66

version 1.62, 2009/05/06 13:37:56 version 1.66, 2009/10/30 20:35:34
Line 508  ENDTWO Line 508  ENDTWO
   } elsif ($action eq "notify") {    } elsif ($action eq "notify") {
       my $notifycount = 0;        my $notifycount = 0;
       my @notified = split(/,/,$enrollvar{notifylist});        my @notified = split(/,/,$enrollvar{notifylist});
       my @domcoord;        my (@domcoord,@showdom,@olddomcoord,@futuredomcoord);
       my @showdom;  
       for (my $i=0; $i<@notified; $i++) {        for (my $i=0; $i<@notified; $i++) {
           if ($notified[$i] !~ /:/) {            if ($notified[$i] !~ /:/) {
               $notified[$i] =~ s/\@/:/;                $notified[$i] =~ s/\@/:/;
Line 522  ENDTWO Line 521  ENDTWO
       } else {        } else {
           $noteset = "OFF";            $noteset = "OFF";
       }        }
         my $now = time;
       my %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc']);        my %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc']);
       foreach my $server (keys(%dompersonnel)) {        foreach my $server (keys(%dompersonnel)) {
           foreach my $user (sort(keys(%{$dompersonnel{$server}}))) {            foreach my $user (sort(keys(%{$dompersonnel{$server}}))) {
               my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);                my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);
               if (!grep(/^$uname:$udom$/,@domcoord)) {                my ($end,$start) = split(':',$dompersonnel{$server}{$user});
                   push(@domcoord,$uname.':'.$udom);                if (($end eq '') || ($end == 0) || ($end > $now)) {
                     if ($start > $now) {
                         if (!grep(/^\Q$uname\E:\Q$udom\E$/,@futuredomcoord)) {
                             push(@futuredomcoord,$uname.':'.$udom);
                         }
                     } else {
                         if (!grep(/^\Q$uname\E:\Q$udom\E$/,@domcoord)) {
                             push(@domcoord,$uname.':'.$udom);
                         }
                     }
                 } else {
                     if (!grep(/^\Q$uname\E:\Q$udom\E$/,@olddomcoord)) {
                         push(@olddomcoord,$uname.':'.$udom);
                     }
               }                }
           }            }
       }        }
Line 565  ENDTWO Line 578  ENDTWO
       my %pname;        my %pname;
       my %notifystate;        my %notifystate;
       my %status;        my %status;
       my $now = time;  
       foreach my $person (sort(keys(%coursepersonnel))) {        foreach my $person (sort(keys(%coursepersonnel))) {
           my $match = 0;            my $match = 0;
           my ($role,$user,$usec) = ($person =~ /^([^:]+):([^:]+:[^:]+):([^:]*)/);            my ($role,$user,$usec) = ($person =~ /^([^:]+):([^:]+:[^:]+):([^:]*)/);
Line 601  ENDTWO Line 613  ENDTWO
                                   usnm => 'username:domain',                                    usnm => 'username:domain',
                                   coac => 'Course Access',                                    coac => 'Course Access',
                                   curn => 'Current notification status',                                    curn => 'Current notification status',
                                     doms => 'Domain Coordinator status',
                                   notf => 'Notification?',                                    notf => 'Notification?',
                                   ntac => 'Notification active',                                    ntac => 'Notification active',
                                   ntin => 'Notification inactive',                                    ntin => 'Notification inactive',
Line 630  ENDTWO Line 643  ENDTWO
       if (grep(/^$viewer$/,@domcoord)) {        if (grep(/^$viewer$/,@domcoord)) {
           $showalldc = 1;            $showalldc = 1;
       }        }
       foreach my $dc (@domcoord) {        foreach my $dc (@domcoord,@futuredomcoord) {
           if (!grep(/^$dc$/,@ccs)) {            if (!grep(/^$dc$/,@ccs)) {
               if (grep(/^$dc$/,@notified)) {                if (grep(/^$dc$/,@notified)) {
                   $notifystate{$dc} = 1;                    $notifystate{$dc} = 1;
Line 645  ENDTWO Line 658  ENDTWO
               push(@showdom,$dc);                push(@showdom,$dc);
           }            }
       }        }
         foreach my $olddc (@olddomcoord) {
             if (grep(/^$olddc$/,@notified)) {
                 if (!grep(/^\Q$olddc\E$/,@ccs)) {
                     $notifystate{$olddc} = 1;
                     my ($dcname,$dcdom) = split(/:/,$olddc);
                     $pname{$olddc} =  &Apache::loncommon::plainname($dcname,$dcdom);
                     push(@showdom,$olddc);
                 }
             }
         }
       my $showdomnum = scalar(@showdom);        my $showdomnum = scalar(@showdom);
       if ($showdomnum) {        if ($showdomnum) {
           $r->print("            $r->print("
Line 662  ENDTWO Line 685  ENDTWO
              </tr>               </tr>
              <tr>               <tr>
               <td>");                <td>");
           $r->print(&notifier_tables('dc',\%lt,\@showdom,\%status,\%notifystate,            $r->print(&notifier_tables('dc',\%lt,\@showdom,\%status,\%notifystate,\%pname,
                                      \%pname,\$notifyshow));                                       \$notifyshow,\@olddomcoord,\@futuredomcoord));
           $r->print("            $r->print("
              </td>               </td>
           </tr>");            </tr>");
Line 1132  onclick="javascript:document.photoupdate Line 1155  onclick="javascript:document.photoupdate
       my ($indexhash,$keylist) = &Apache::lonuserutils::make_keylist_array();        my ($indexhash,$keylist) = &Apache::lonuserutils::make_keylist_array();
       my $classlist = &Apache::loncoursedata::get_classlist();        my $classlist = &Apache::loncoursedata::get_classlist();
       my $secidx = &Apache::loncoursedata::CL_SECTION();        my $secidx = &Apache::loncoursedata::CL_SECTION();
       my ($permission,$allowed) = &Apache::lonuserutils::get_permission();        my $crstype =&Apache::loncommon::course_type();
         my ($permission,$allowed) = &Apache::lonuserutils::get_permission('course',$crstype);
       foreach my $student (keys(%{$classlist})) {        foreach my $student (keys(%{$classlist})) {
           if (exists($permission->{'view_section'})) {            if (exists($permission->{'view_section'})) {
               if ($classlist->{$student}[$secidx] ne $permission->{'view_section'}) {                if ($classlist->{$student}[$secidx] ne $permission->{'view_section'}) {
Line 1168  onclick="javascript:document.photoupdate Line 1192  onclick="javascript:document.photoupdate
               if ($autocount > 0) {                if ($autocount > 0) {
                   $cellcount ++;                    $cellcount ++;
                   $r->print(<<END);                    $r->print(<<END);
                        <td><fieldset><legend>&nbsp;<b>Change auto</b></legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.chgauto)" />&nbsp;&nbsp;                         <td><fieldset><legend>Change auto</legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.chgauto)" />&nbsp;&nbsp;
                        <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.chgauto)" /></fieldset></td>                         <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.chgauto)" /></fieldset></td>
 END  END
               }                }
               if ($manualcount > 0) {                if ($manualcount > 0) {
                   $cellcount ++;                    $cellcount ++;
                   $r->print(<<END);                    $r->print(<<END);
                        <td><fieldset><legend>&nbsp;<b>Change manual</b></legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.chgmanual)" />&nbsp;&nbsp;                         <td><fieldset><legend>Change manual</legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.chgmanual)" />&nbsp;&nbsp;
                        <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.chgmanual)" /></fieldset></td>                         <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.chgmanual)" /></fieldset></td>
 END  END
               }                }
Line 1185  END Line 1209  END
                   }                    }
                   $cellcount ++;                    $cellcount ++;
                   $r->print(<<END);                    $r->print(<<END);
                        <td><fieldset><legend>&nbsp;<b>Lock manual</b></legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.lockchg)" />&nbsp;&nbsp;                         <td><fieldset><legend>Lock manual</legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.lockchg)" />&nbsp;&nbsp;
                        <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.lockchg)" /></fieldset></td>                         <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.lockchg)" /></fieldset></td>
 END  END
               }                }
Line 1195  END Line 1219  END
                   }                    }
                   $cellcount ++;                    $cellcount ++;
                   $r->print(<<END);                    $r->print(<<END);
                        <td><fieldset><legend>&nbsp;<b>Unlock manual</b></legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.unlockchg)" />&nbsp;&nbsp;                         <td><fieldset><legend>Unlock manual</legend><input type="button" value="check all" onclick="javascript:checkAll(document.studentform.unlockchg)" />&nbsp;&nbsp;
                        <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.unlockchg)" /></fieldset></td>                         <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.unlockchg)" /></fieldset></td>
 END  END
               }                }
Line 1230  END Line 1254  END
 }  }
   
 sub notifier_tables {  sub notifier_tables {
     my ($role,$lt,$users,$status,$notifystate,$pname,$notifyshow) = @_;      my ($role,$lt,$users,$status,$notifystate,$pname,$notifyshow,$olddomcoord,
           $futuredomcoord) = @_;
     my $output = &Apache::loncommon::start_data_table();      my $output = &Apache::loncommon::start_data_table();
     $output .= &Apache::loncommon::start_data_table_header_row();      $output .= &Apache::loncommon::start_data_table_header_row();
     $output .= "<th>$$lt{name}</th>      $output .= "<th>$$lt{name}</th>
                 <th>$$lt{usnm}</th>";                  <th>$$lt{usnm}</th>";
     if ($role eq 'cc') {      if ($role eq 'dc') {
           $output .= "<th>$$lt{doms}</th>";
       } elsif ($role eq 'cc') {
         $output .= "<th>$$lt{coac}</th>";          $output .= "<th>$$lt{coac}</th>";
     }       } 
     $output .=  "<th>$$lt{curn}</th>      $output .=  "<th>$$lt{curn}</th>
Line 1246  sub notifier_tables { Line 1273  sub notifier_tables {
         $output .= '<td>'.$$pname{$$users[$i]}.'</td>'.          $output .= '<td>'.$$pname{$$users[$i]}.'</td>'.
                    '<td><input type="hidden" name="notifyname_'.$$notifyshow.                     '<td><input type="hidden" name="notifyname_'.$$notifyshow.
                    '" value="'.$$users[$i].'" />'.$$users[$i].'</td>';                     '" value="'.$$users[$i].'" />'.$$users[$i].'</td>';
         if ($role eq 'cc') {          if ($role eq 'dc') {
               $output .= '<td>';
               if ((ref($olddomcoord) eq 'ARRAY') && (ref($futuredomcoord) eq 'ARRAY')) {
                   if (grep(/^\Q$users->[$i]\E$/,@{$olddomcoord})) {
                       $output .= &mt('expired');
                   } elsif (grep(/^\Q$users->[$i]\E$/,@{$futuredomcoord})) {
                       $output .= &mt('future');
                   } else {
                       $output .= &mt('active');
                   }
               }
               $output .= '</td>';
           } elsif ($role eq 'cc') {
             $output .= '<td>'.$$status{$$users[$i]}.'</td>';              $output .= '<td>'.$$status{$$users[$i]}.'</td>';
         }          }
         $output .= '<td>';          $output .= '<td>';
Line 1291  sub print_accessdate_table { Line 1330  sub print_accessdate_table {
          'fnew' => 'for new students added when you update the class roster',           'fnew' => 'for new students added when you update the class roster',
          'ifad'  => 'If automated adds are enabled, then when students are added their student roles will become active on the date set here for first access, and their roles will become inactive on the date set here for last access.  These default access dates will be overridden for specific students if the institutional classlist data supplied to the automatic enrollment process includes entries for the startdate and enddate fields for those students.',           'ifad'  => 'If automated adds are enabled, then when students are added their student roles will become active on the date set here for first access, and their roles will become inactive on the date set here for last access.  These default access dates will be overridden for specific students if the institutional classlist data supplied to the automatic enrollment process includes entries for the startdate and enddate fields for those students.',
          'ncds'  => 'changing default start and end access dates will affect <b>future enrollments</b> and also <b>currently inactive</b> students (i.e., those for whom access will begin in the future).',           'ncds'  => 'changing default start and end access dates will affect <b>future enrollments</b> and also <b>currently inactive</b> students (i.e., those for whom access will begin in the future).',
          'tcha' => 'To change access dates for <b>currently active</b> students, use User Management -> "Display Class Lists and Manage Multiple Users" to display currently active students, then use the dropdown menu for "Action to take for selected users:" to choose "Change starting/ending dates", select the students to change, and click "Proceed".',           'tcha' => 'To change access dates for <b>currently active</b> students, use User Management -> "Manage Course Users" to display currently active students, then use the dropdown menu for "Action to take for selected users:" to choose "Change starting/ending dates", select the students to change, and click "Proceed".',
     );      );
     my $dateshow;      my $dateshow;
     if ( ($oldendshow eq '') && ($oldstartshow eq '') ) {      if ( ($oldendshow eq '') && ($oldstartshow eq '') ) {
Line 1623  start and end access dates for this cour Line 1662  start and end access dates for this cour
     } else {      } else {
         $response .= "The last access date for students being added via automated enrollment has been changed to $showend.<br/>";          $response .= "The last access date for students being added via automated enrollment has been changed to $showend.<br/>";
     }      }
             $response .= '<br />'.&mt('Any change in access dates will only apply to students who are not currently active, i.e., those who currently have access start dates in the future, and to those added by future automated enrollment.').'<br /><br />'.&mt('To change access dates for any currently active students, use User Management -> "Display Class Lists and Manage Multiple Users" to display currently active students, then use the dropdown menu for "Action to take for selected users:" to choose "Change starting/ending dates", select the students to change, and click "Proceed".').'<br />';              $response .= '<br />'.&mt('Any change in access dates will only apply to students who are not currently active, i.e., those who currently have access start dates in the future, and to those added by future automated enrollment.').'<br /><br />'.&mt('To change access dates for any currently active students, use User Management -> "Manage Users" to display currently active students, then use the dropdown menu for "Action to take for selected users:" to choose "Change starting/ending dates", select the students to change, and click "Proceed".').'<br />';
   
 # Generate message in case where old first access date was later than today, but new first access date is now today or earlier.  # Generate message in case where old first access date was later than today, but new first access date is now today or earlier.
   

Removed from v.1.62  
changed lines
  Added in v.1.66


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