Diff for /loncom/interface/lonpopulate.pm between versions 1.43 and 1.44

version 1.43, 2006/05/18 01:08:51 version 1.44, 2006/07/27 23:24:19
Line 479  ENDTWO Line 479  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 @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 491  ENDTWO Line 493  ENDTWO
       } else {        } else {
           $noteset = "OFF";            $noteset = "OFF";
       }        }
             my %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc']);
         foreach my $server (keys %dompersonnel) {
             foreach my $user (sort(keys %{$dompersonnel{$server}})) {
                 my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);
                 if (!grep/^$uname:$udom$/,@domcoord) {
                     push(@domcoord,$uname.':'.$udom);
                 }
             }
         }
       $r->print("        $r->print("
                   <form name=\"enter\" method=\"post\"><br/>                    <form name=\"enter\" method=\"post\"><br/>
                    <table width=\"100%\" border=\"0\" cellpadding=\"6\" cellspacing=\"0\">                     <table width=\"100%\" border=\"0\" cellpadding=\"6\" cellspacing=\"0\">
Line 521  ENDTWO Line 531  ENDTWO
               </td>                </td>
              </tr>               </tr>
       ");        ");
       my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$dom,$crs);        my %coursepersonnel = &Apache::lonnet::dump('nohist_userroles',$dom,$crs);
       my @ccs = ();        my @ccs;
       my @oldccs = ();        my %pname;
       my %pname = ();        my %notifystate;
       my %notifystate = ();        my %status;
       foreach (@coursepersonnel) {        my $now = time;
           my @roleinfo = split/:/,$_;        foreach my $person (sort(keys(%coursepersonnel))) {
           if ($roleinfo[0] eq 'cc')  {            my $match = 0;
               unless (grep/^$roleinfo[1]\:$roleinfo[2]/,@ccs) {            my ($role,$user,$usec) = ($person =~ /^([^:]+):([^:]+:[^:]+):([^:]*)/);
                   my $active_cc = &Apache::loncommon::check_user_status($roleinfo[2],$roleinfo[1],$dom,$crs,'cc');            $user =~ s/:$//;
                   if ($active_cc eq 'active') {            my ($end,$start) = split(/:/,$coursepersonnel{$person});
                       push @ccs, $roleinfo[1].':'.$roleinfo[2];            if ($end == -1 || $start == -1) {
                       $pname{$roleinfo[1].':'.$roleinfo[2]} = &Apache::loncommon::plainname($roleinfo[1],$roleinfo[2]);                next;
                       if (grep/^$roleinfo[1]\:$roleinfo[2]$/,@notified) {            }
                           $notifystate{$roleinfo[1].':'.$roleinfo[2]} = 1;            if ($role eq 'cc')  {
                       } else {                unless (grep/^$user$/,@ccs) {
                           $notifystate{$roleinfo[1].':'.$roleinfo[2]} = 0;                    if ($end && $end < $now) {
                       }                        $status{$user} = 'previous';
                     } elsif ($start > $now) {
                         $status{$user} = 'future';
                   } else {                    } else {
                       push @oldccs, $roleinfo[1].':'.$roleinfo[2];                        $status{$user} = 'active';
                     }
                     push(@ccs,$user);
                     my ($uname,$udom) = split(/:/,$user);
                     $pname{$user} = 
                              &Apache::loncommon::plainname($uname,$udom);
                     if (grep/^$user$/,@notified) {
                         $notifystate{$user} = 1;
                     } else {
                         $notifystate{$user} = 0;
                   }                    }
               }                }
           }            }
       }        }
       if ($notifycount > 0) {  
           foreach my $person (@notified) {  
               unless ( (grep/^$person$/,@ccs) || ($person eq '') || (grep/^$person$/,@oldccs) ) {  
                   push @ccs, $person;  
                   my ($puname,$pdom) = split/:/,$person;  
                   $pname{$person} =  &Apache::loncommon::plainname($puname,$pdom);  
                   $notifystate{$person} = 1;  
               }  
           }  
       }  
       my $viewer = $env{'user.name'}.':'.$env{'user.domain'};  
       unless ( (grep/^$viewer$/,@ccs) || ($viewer eq '') )  {  
           push @ccs,$viewer;  
           $pname{$viewer} =  &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'});  
           $notifystate{$viewer} = 0;  
       }  
   
       my $notifyshow = @ccs;        my $notifyshow = @ccs;
         my %lt = &Apache::lonlocal::texthash(
                                     name => 'Name',
                                     usnm => 'username:domain',
                                     coac => 'Course Access',
                                     curn => 'Current notification status',
                                     notf => 'Notification?',
                                     ntac => 'Notification active',
                                     ntin => 'Notification inactive',
         );
       if (@ccs > 0) {        if (@ccs > 0) {
           @ccs = sort @ccs;            @ccs = sort @ccs;
           $r->print("            $r->print("
              <tr>               <tr>
                <td>The table below contains a list of course coordinators in this course. Uncheck the 'Notification?' checkbox for each person who is to be removed from the list of recipients who are currently informed of roster changes whenever any adds or drops occur during the nightly enrollment check. To include individuals who are not currently recipients, simply check the 'Notification?' checkbox. Click 'Go' to store your changes.                 <td>".&mt('The table below contains a list of [_1]s in this course.',&Apache::lonnet::plaintext('cc'))."
               </td>                </td>
              </tr>               </tr>
              <tr>               <tr>
               <td>");                <td>");
           $r->print(&Apache::loncommon::start_data_table());            $r->print(&notifier_tables('cc',\%lt,\@ccs,\%status,\%notifystate,
           $r->print(&Apache::loncommon::start_data_table_row());                                       \%pname,\$notifyshow));
             $r->print("</td></tr>");
         } else {
           $r->print("            $r->print("
                  <th>Name</th>               <tr>
                  <th>username:domain</th>                <td>".
                  <th>Current status</th>               &mt('No [_1]s found.',&Apache::lonnet::plaintext('cc'))."
                  <th>Notification?</th>              </td>
           ");             </tr>");
           $r->print(&Apache::loncommon::end_data_table_row());        }
           for (my $i=0; $i<@ccs; $i++) {        my $viewer = $env{'user.name'}.':'.$env{'user.domain'};
               $r->print(&Apache::loncommon::start_data_table_row());        my $showalldc = 0;
               $r->print("        if (grep(/^$viewer$/,@domcoord)) {
                  <td>$pname{$ccs[$i]}</td>            $showalldc = 1;
                  <td><input type=\"hidden\" name=\"notifyname_$i\" value=\"$ccs[$i]\" />$ccs[$i]</td>        }
                  <td>        foreach my $dc (@domcoord) {
               ");            if (!grep(/^$dc$/,@ccs)) {
               if ($notifystate{$ccs[$i]} == 1) {                if (grep(/^$dc$/,@notified)) {
                   $r->print("Notification active");                    $notifystate{$dc} = 1;
               } else {  
                   $r->print("Notification inactive");  
               }  
               if ($notifystate{$ccs[$i]} == 1) {  
                   $r->print("</td><td><input type=\"checkbox\" name=\"note_$i\" checked=\"true\" /></td>");  
               } else {                } else {
                   $r->print("</td><td><input type=\"checkbox\" name=\"note_$i\" /></td>");                    $notifystate{$dc} = 0;
                     if (!$showalldc) {
                         next;
                     }
               }                }
               $r->print(&Apache::loncommon::end_data_table_row());                my ($dcuname,$dcdom) = split(/:/,$dc);
                 $pname{$dc} =  &Apache::loncommon::plainname($dcuname,$dcdom);
                 push(@showdom,$dc);
           }            }
           $r->print(&Apache::loncommon::end_data_table());        }
         my $showdomnum = scalar(@showdom);
         if ($showdomnum) {
           $r->print("            $r->print("
                <br/>               <tr>
                <table width=\"100%\" border=\"0\" cellspadding=\"2\" cellspacing=\"2\">                <td>&nbsp;</td>
                 <tr>               </tr><tr>
                  <td align=\"right\">                <td>");
                   <input type=\"button\" name=\"notifyset\" value=\"Go\" onclick=\"process('notify')\" />            if ($showalldc) {
                  </td>                $r->print(&mt("The table below contains a list of [_1]s from this course's domain who are not also [_2]s.",&Apache::lonnet::plaintext('dc'),&Apache::lonnet::plaintext('cc')));
                 </tr>            } else {
                </table>                $r->print(&mt("The table below contains a list of [_1] from this course's domain who currently receive notification, and are not also [_2]s.",&Apache::lonnet::plaintext('dc'),&Apache::lonnet::plaintext('cc')));
             }
             $r->print(" 
               </td>                </td>
              </tr>               </tr>
           ");  
       } else {  
           $r->print("  
              <tr>               <tr>
               <td>                <td>");
              No course coordinators found.            $r->print(&notifier_tables('dc',\%lt,\@showdom,\%status,\%notifystate,
             </td>                                       \%pname,\$notifyshow));
            </tr>");            $r->print("
                </td>
             </tr>");
         }
         if ($notifycount || @showdom > 0) {
             $r->print("<tr><td>&nbsp;</td></tr><tr><td>".
                   &mt("Uncheck the 'Notification?' checkbox for each person who is to be removed from the list of recipients who are currently informed of roster changes whenever any adds or drops occur during the nightly enrollment check.").' '.&mt("To include individuals who are not currently recipients, simply check the 'Notification?' checkbox. Click 'Go' to store your changes.")."
              <br/>
              <table width=\"100%\" border=\"0\" cellspadding=\"2\" cellspacing=\"2\">
               <tr>
                <td align=\"right\">
                 <input type=\"button\" name=\"notifyset\" value=\"Go\" onclick=\"process('notify')\" />
                </td>
               </tr>
              </table>
             </td>
            </tr>
         ");
       }        }
       $r->print("        $r->print("
           </table>        </table>
           <input type=\"hidden\" name=\"notifyshow\" value=\"$notifyshow\" />        <input type=\"hidden\" name=\"notifyshow\" value=\"$notifyshow\" />
           <input type=\"hidden\" name=\"action\" value=\"$action\" />        <input type=\"hidden\" name=\"action\" value=\"$action\" />
           <input type=\"hidden\" name=\"state\" value=\"process\" />        <input type=\"hidden\" name=\"state\" value=\"process\" />
           </form>        </form>
       ");        ");
   } elsif ($action eq "crosslist") {    } elsif ($action eq "crosslist") {
       my @xlists;        my @xlists;
Line 881  your changes.</td> Line 913  your changes.</td>
       my ($result,$perm_reqd)=&Apache::lonnet::auto_photo_permission($crs,$dom);        my ($result,$perm_reqd)=&Apache::lonnet::auto_photo_permission($crs,$dom);
       my $can_enable = 1;        my $can_enable = 1;
       my $institution = $Apache::lonnet::domaindescription{$dom};        my $institution = $Apache::lonnet::domaindescription{$dom};
         my $user;
         if ($enrollvar{'courseowner'} =~ /^[^:]+:[^:]+$/) {
             $user = $env{'user.name'}.':'.$env{'user.domain'};
         } else {
             $user = $env{'user.name'};
         }
       if ($result eq 'ok') {        if ($result eq 'ok') {
           if ($perm_reqd eq 'yes') {            if ($perm_reqd eq 'yes') {
               if (!($enrollvar{'photopermission'} eq 'yes')) {                if (!($enrollvar{'photopermission'} eq 'yes')) {
                   $can_enable = 0;                    $can_enable = 0;
               } else {                } else {
                   if ($env{'user.name'} eq $enrollvar{'courseowner'}) {                    if ($user eq $enrollvar{'courseowner'}) {
                       $r->print('                        $r->print('
                     <tr>                      <tr>
                      <td>'.                       <td>'.
 &mt('Previously the owner of this course agreed to the conditions of use of digital student photos required by [_1].', $institution).'<br />'.&mt('As a result Course Coordinators can choose to automatically import student photos into this course.').'<br /><nobr><label>'.&mt('[_1] owner acceptance of these conditions of use?','<b>Cancel</b>').'&nbsp;<input type="checkbox" name="cancel_agreement" value="1" /></label></nobr>  &mt('Previously the owner of this course agreed to the conditions of use of digital student photos required by [_1].', $institution).'<br />'.&mt('As a result [_1]s can choose to automatically import student photos into this course.',&Apache::lonnet::plaintext('cc')).'<br /><nobr><label>'.&mt('[_1] owner acceptance of these conditions of use?','<b>Cancel</b>').'&nbsp;<input type="checkbox" name="cancel_agreement" value="1" /></label></nobr>
                      </td>                       </td>
                     </tr>                      </tr>
                       ');                        ');
Line 919  your changes.</td> Line 957  your changes.</td>
                     </tr>                      </tr>
 ');  ');
       } else {        } else {
           if ($env{'user.name'} eq $enrollvar{'courseowner'}) {            if ($user eq $enrollvar{'courseowner'}) {
               $r->print('                $r->print('
                     <tr>                      <tr>
                      <td>'.                       <td>'.
Line 937  your changes.</td> Line 975  your changes.</td>
               $r->print('                $r->print('
                     <tr>                      <tr>
                      <td>'.                       <td>'.
 &mt('The policies of your institution [_1] require that the course owner [_2] must indicate acceptance of the conditions of use of digital photos of registered students, before they may be made available for use in a course.',$institution,$ownername).'<br /><br />'.&mt('Please direct the course owner [_1] to visit the "Student photos" page in the Automated Enrollment Manager to indicate acceptance of these conditions of use.',$emailstr).'<br /><br /><input type="button" name="mainmenu" value="Go back" onclick="javascript:history.go(-1);" />  &mt('The policies of your institution ([_1]) require that the course owner ([_2]) must indicate acceptance of the conditions of use of digital photos of registered students, before they may be made available for use in a course.',$institution,$ownername).'<br /><br />'.&mt('Please direct the course owner [_1] to visit the "Student photos" page in the Automated Enrollment Manager to indicate acceptance of these conditions of use.',$emailstr).'<br /><br /><input type="button" name="mainmenu" value="Go back" onclick="javascript:history.go(-1);" />
                     </td>                      </td>
                    </tr>                     </tr>
                   </form>                    </form>
Line 1133  END Line 1171  END
   }    }
 }  }
   
   sub notifier_tables {
       my ($role,$lt,$users,$status,$notifystate,$pname,$notifyshow) = @_;
       my $output = &Apache::loncommon::start_data_table();
       $output .= &Apache::loncommon::start_data_table_header_row();
       $output .= "<th>$$lt{name}</th>
                   <th>$$lt{usnm}</th>";
       if ($role eq 'cc') {
           $output .= "<th>$$lt{coac}</th>";
       } 
       $output .=  "<th>$$lt{curn}</th>
                    <th>$$lt{notf}</th>";
       $output .= &Apache::loncommon::end_data_table_header_row();
       for (my $i=0; $i<@{$users}; $i++) {
           $output .= &Apache::loncommon::start_data_table_row();
           $output .= '<td>'.$$pname{$$users[$i]}.'</td>'.
                      '<td><input type="hidden" name="notifyname_'.$$notifyshow.
                      '" value="'.$$users[$i].'" />'.$$users[$i].'</td>';
           if ($role eq 'cc') {
               $output .= '<td>'.$$status{$$users[$i]}.'</td>';
           }
           $output .= '<td>';
           if ($$notifystate{$$users[$i]} == 1) {
               $output .= $$lt{ntac};
           } else {
               $output .= $$lt{ntin};
           }
           $output .= '</td><td><input type="checkbox" name="note_'.$$notifyshow.'"'; 
           if ($$notifystate{$$users[$i]} == 1) {
               $output .= ' checked="checked"';
           }
           $output .= ' /></td>';
           $output .= &Apache::loncommon::end_data_table_row();
           $$notifyshow ++;
       }
       $output .= &Apache::loncommon::end_data_table();
       return $output;
   }
   
 sub print_accessdate_table {  sub print_accessdate_table {
     my ($r,$enrollvar,$tasktitleref,$action) = @_;      my ($r,$enrollvar,$tasktitleref,$action) = @_;
     my ($start_table,$end_table) = &date_setting_table($$enrollvar{'default_enrollment_start_date'},$$enrollvar{'default_enrollment_end_date'},$action);      my ($start_table,$end_table) = &date_setting_table($$enrollvar{'default_enrollment_start_date'},$$enrollvar{'default_enrollment_end_date'},$action);
Line 1612  sub print_notify_response { Line 1688  sub print_notify_response {
     }      }
     $response .= "</ul>\n";      $response .= "</ul>\n";
  } else {   } else {
     $response = "Notification of enrollment changes was <b> not enabled</b> as no course coordinators were selected as recipients.<br/>";      $response = &mt('Notification of enrollment changes was <b> not enabled</b> as no [_1]s were selected as recipients.<br/>',&Apache::lonnet::plaintext('cc'));
  }   }
     } else {      } else {
  if ($currcount) {   if ($currcount) {
Line 2287  function agreement_result(caller) { Line 2363  function agreement_result(caller) {
   </form>    </form>
 ';  ';
     } else {      } else {
         my ($ownername,$owneremail) = &get_oenerinfo($dom,$courseowner);          my ($ownername,$owneremail) = &get_ownerinfo($dom,$courseowner);
         $response = &mt('The policies of your institution [_1] require that the course owner [_2] must indicate acceptance of the conditions of use of digital photos of registered students, before they may be made available for use in a course.',$institution,$ownername).'<br /><br />'.&mt('Please direct the course owner (e-mail: [_1]) to visit the "Student photos" page in the Automated Enrollment Manager to indicate acceptance of these conditions of use',$owneremail);          my $emailstr;
           if ($owneremail) {
               $emailstr = "(e-mail: $owneremail)";
           }
           $response = &mt('The policies of your institution [_1] require that the course owner [_2] must indicate acceptance of the conditions of use of digital photos of registered students, before they may be made available for use in a course.',$institution,$ownername).'<br /><br />'.&mt('Please direct the course owner [_1] to visit the "Student photos" page in the Automated Enrollment Manager to indicate acceptance of these conditions of use',$emailstr);
     }      }
     &print_reply($r,$response,$$tasktitleref{$action});      &print_reply($r,$response,$$tasktitleref{$action});
 }  }
Line 2426  function photowindow(photolink) { Line 2506  function photowindow(photolink) {
   
 sub get_ownerinfo {  sub get_ownerinfo {
     my ($dom,$owner) = @_;       my ($dom,$owner) = @_; 
     my ($ownername,$owneremail);      my ($ownername,$owneremail,$own_uname,$own_udom);
     if ($owner) {      if ($owner) {
         $ownername=&Apache::loncommon::plainname($owner,$dom,'firstname');          if ($owner =~ /^([^:]+):([^:]+)$/) {
               $own_uname = $1;
               $own_udom = $2; 
           } else {
               $own_uname = $owner;
               $own_udom = $dom; 
           }
           $ownername=&Apache::loncommon::plainname($own_uname,$own_udom,
                                                    'firstname');
         my %ownerinfo = &Apache::lonnet::get('environment',['permanentemail'],          my %ownerinfo = &Apache::lonnet::get('environment',['permanentemail'],
      $dom,$owner);       $own_udom,$own_uname);
         $owneremail = $ownerinfo{'permanentemail'};          $owneremail = $ownerinfo{'permanentemail'};
     }      }
     return ($ownername,$owneremail);      return ($ownername,$owneremail);

Removed from v.1.43  
changed lines
  Added in v.1.44


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