version 1.42, 2006/05/16 21:56:14
|
version 1.45, 2006/07/28 01:04:45
|
Line 32 use Apache::loncommon;
|
Line 32 use Apache::loncommon;
|
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::loncoursedata; |
use Apache::loncoursedata; |
|
use Apache::longroup; |
use Apache::Constants qw(:common :http REDIRECT); |
use Apache::Constants qw(:common :http REDIRECT); |
use Time::Local; |
use Time::Local; |
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
Line 45 sub header {
|
Line 46 sub header {
|
|
|
sub choose_header { |
sub choose_header { |
my ($action) = @_; |
my ($action) = @_; |
|
my $notify_check = '/^note_[0-9]+$/'; |
my $scripttag = qq| |
my $scripttag = qq| |
<script language='javascript' type='text/javascript'> |
<script language='javascript' type='text/javascript'> |
<!-- |
<!-- |
Line 110 function process(calling,numauto,nummanu
|
Line 111 function process(calling,numauto,nummanu
|
checker = 0 |
checker = 0 |
} |
} |
} |
} |
|
if (calling == "notify") { |
|
var totalnote = 0; |
|
if (formName.notify[1].checked = true) { |
|
for (var i=0; i<formName.elements.length; i++) { |
|
var elementname = formName.elements[i].name; |
|
var check_name = elementname.match($notify_check); |
|
if (check_name != null) { |
|
if (formName.elements[i].checked) { |
|
totalnote ++; |
|
} |
|
} |
|
} |
|
if (totalnote > 0) { |
|
if (formName.notify[1].checked = true) { |
|
if (confirm("You have indicated that you do not want notification of roster changes messages to be sent, but "+totalnote+" have been checked as recipients.\\nClick 'OK' to erase all recipients, or 'Cancel'.")) { |
|
checker = 1; |
|
} else { |
|
checker = 0; |
|
} |
|
} |
|
} else { |
|
if (formName.notify[0].checked = true) { |
|
alert("You have indicated that you want notification of roster changes messages to be sent, but you have not selected any recipients."); |
|
checker = 0; |
|
} |
|
} |
|
} |
|
} |
if (calling == "viewclass") { |
if (calling == "viewclass") { |
var totcheck = 0 |
var totcheck = 0 |
var numchk = 0 |
var numchk = 0 |
Line 478 ENDTWO
|
Line 507 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 490 ENDTWO
|
Line 521 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 520 ENDTWO
|
Line 559 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) { |
my $notifyshow = 0; |
foreach my $person (@notified) { |
my %lt = &Apache::lonlocal::texthash( |
unless ( (grep/^$person$/,@ccs) || ($person eq '') || (grep/^$person$/,@oldccs) ) { |
name => 'Name', |
push @ccs, $person; |
usnm => 'username:domain', |
my ($puname,$pdom) = split/:/,$person; |
coac => 'Course Access', |
$pname{$person} = &Apache::loncommon::plainname($puname,$pdom); |
curn => 'Current notification status', |
$notifystate{$person} = 1; |
notf => 'Notification?', |
} |
ntac => 'Notification active', |
} |
ntin => 'Notification inactive', |
} |
); |
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; |
|
|
|
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(¬ifier_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> </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(¬ifier_tables('dc',\%lt,\@showdom,\%status,\%notifystate, |
</td> |
\%pname,\$notifyshow)); |
</tr>"); |
$r->print(" |
|
</td> |
|
</tr>"); |
|
} |
|
if (@ccs > 0 || @showdom > 0) { |
|
$r->print("<tr><td> </td></tr><tr><td>"); |
|
if ($notifycount) { |
|
$r->print(&mt("Uncheck the checkbox(es) to terminate notification for people currently informed of roster changes from the nightly enrollment update.<br />")); |
|
} |
|
if ((@ccs + @showdom) > $notifycount) { |
|
$r->print(&mt("Check the checkbox(es) to initiate notification for people not currently informed of roster changes from the nightly enrollment update.<br />")); |
|
} |
|
$r->print(&mt("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 880 your changes.</td>
|
Line 947 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>').' <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>').' <input type="checkbox" name="cancel_agreement" value="1" /></label></nobr> |
</td> |
</td> |
</tr> |
</tr> |
'); |
'); |
Line 918 your changes.</td>
|
Line 991 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 936 your changes.</td>
|
Line 1009 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 1132 END
|
Line 1205 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 1611 sub print_notify_response {
|
Line 1722 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 1748 sub print_crosslistings_response () {
|
Line 1859 sub print_crosslistings_response () {
|
} |
} |
|
|
if ($numcross > 0) { |
if ($numcross > 0) { |
my %curr_groups = &Apache::loncommon::coursegroups(); |
my %curr_groups = &Apache::longroup::coursegroups(); |
for (my $i=0; $i<$numcross; $i++) { |
for (my $i=0; $i<$numcross; $i++) { |
my $xl = "newcross_".$i; |
my $xl = "newcross_".$i; |
my $lc_sec = "newlcsec_".$i; |
my $lc_sec = "newlcsec_".$i; |
Line 2065 sub print_sections_response () {
|
Line 2176 sub print_sections_response () {
|
} |
} |
|
|
if ($numsec > 0) { |
if ($numsec > 0) { |
my %curr_groups = &Apache::loncommon::coursegroups(); |
my %curr_groups = &Apache::longroup::coursegroups(); |
for (my $i=0; $i<$numsec; $i++) { |
for (my $i=0; $i<$numsec; $i++) { |
my $sec = "newsec_".$i; |
my $sec = "newsec_".$i; |
my $lc_sec = "newlcsec_".$i; |
my $lc_sec = "newlcsec_".$i; |
Line 2286 function agreement_result(caller) {
|
Line 2397 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 2425 function photowindow(photolink) {
|
Line 2540 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); |