--- loncom/interface/lonpopulate.pm 2009/07/17 22:24:08 1.64 +++ loncom/interface/lonpopulate.pm 2011/01/11 22:09:50 1.68 @@ -1,5 +1,5 @@ # automated enrollment configuration handler -# $Id: lonpopulate.pm,v 1.64 2009/07/17 22:24:08 droeschl Exp $ +# $Id: lonpopulate.pm,v 1.68 2011/01/11 22:09:50 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -217,26 +217,28 @@ sub print_mainbox { } elsif ($action eq "newsections") { $action = "sections"; } - $page .= "-> ".$$tasklongref{$action}." -> result"; + $page .= "» ".$$tasklongref{$action}." » result"; } else { - $page .= " -> ".$$tasklongref{$action}.""; + $page .= " » ".$$tasklongref{$action}.""; } } my $usrmang = &mt('User Management'); my $autenrl = &mt('Automated Enrollment Manager'); + #LC_pick_box is used in the following. This is only a temporary solution to adapt the site to the design. $r->print(< - - $realm -> $usrmang -> $page
+ + $realm » $usrmang » $page
- - $autenrl  + + $autenrl  - - +
+
+ ENDTHIS } @@ -247,9 +249,7 @@ sub print_navmenu { $action = $env{'form.action'}; } $r->print(<  - - - - "); @@ -1132,7 +1153,8 @@ onclick="javascript:document.photoupdate my ($indexhash,$keylist) = &Apache::lonuserutils::make_keylist_array(); my $classlist = &Apache::loncoursedata::get_classlist(); 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})) { if (exists($permission->{'view_section'})) { if ($classlist->{$student}[$secidx] ne $permission->{'view_section'}) { @@ -1230,12 +1252,15 @@ END } 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(); $output .= &Apache::loncommon::start_data_table_header_row(); $output .= ""; - if ($role eq 'cc') { + if ($role eq 'dc') { + $output .= ""; + } elsif ($role eq 'cc') { $output .= ""; } $output .= " @@ -1246,7 +1271,19 @@ sub notifier_tables { $output .= ''. ''; - if ($role eq 'cc') { + if ($role eq 'dc') { + $output .= ''; + } elsif ($role eq 'cc') { $output .= ''; } $output .= '
-
+
ENDONE foreach my $task (@{$tasksref}) { if ($task eq $action) { @@ -272,9 +272,7 @@ ENDONE $r->print("

 

  "); + "); } ############################################################### @@ -429,7 +427,7 @@ Note: Any students added manually by cou } my $dateshow; if ( ($oldendshow eq '') && ($oldstartshow eq '') ) { - $dateshow = "
Warning. Currently NO first enrollment or last enrollment dates are set. You must use this menu to set a start date and an end date if you plan to utilise automated adds and/or drops in this course.\n"; + $dateshow = "
Warning. Currently NO first enrollment or last enrollment dates are set. You must use this menu to set a start date and an end date if you plan to utilise automated adds and/or drops in this course.\n"; } else { $dateshow = "Currently: First enrollment: $oldstartshow, Last enrollment: $oldendshow\n"; } @@ -508,8 +506,7 @@ ENDTWO } elsif ($action eq "notify") { my $notifycount = 0; my @notified = split(/,/,$enrollvar{notifylist}); - my @domcoord; - my @showdom; + my (@domcoord,@showdom,@olddomcoord,@futuredomcoord); for (my $i=0; $i<@notified; $i++) { if ($notified[$i] !~ /:/) { $notified[$i] =~ s/\@/:/; @@ -522,12 +519,26 @@ ENDTWO } else { $noteset = "OFF"; } + my $now = time; 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); + my ($end,$start) = split(':',$dompersonnel{$server}{$user}); + 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); + } } } } @@ -565,7 +576,6 @@ ENDTWO my %pname; my %notifystate; my %status; - my $now = time; foreach my $person (sort(keys(%coursepersonnel))) { my $match = 0; my ($role,$user,$usec) = ($person =~ /^([^:]+):([^:]+:[^:]+):([^:]*)/); @@ -601,6 +611,7 @@ ENDTWO usnm => 'username:domain', coac => 'Course Access', curn => 'Current notification status', + doms => 'Domain Coordinator status', notf => 'Notification?', ntac => 'Notification active', ntin => 'Notification inactive', @@ -630,7 +641,7 @@ ENDTWO if (grep(/^$viewer$/,@domcoord)) { $showalldc = 1; } - foreach my $dc (@domcoord) { + foreach my $dc (@domcoord,@futuredomcoord) { if (!grep(/^$dc$/,@ccs)) { if (grep(/^$dc$/,@notified)) { $notifystate{$dc} = 1; @@ -645,6 +656,16 @@ ENDTWO 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); if ($showdomnum) { $r->print(" @@ -662,8 +683,8 @@ ENDTWO
"); - $r->print(¬ifier_tables('dc',\%lt,\@showdom,\%status,\%notifystate, - \%pname,\$notifyshow)); + $r->print(¬ifier_tables('dc',\%lt,\@showdom,\%status,\%notifystate,\%pname, + \$notifyshow,\@olddomcoord,\@futuredomcoord)); $r->print("
$$lt{name} $$lt{usnm}$$lt{doms}$$lt{coac}$$lt{curn}'.$$pname{$$users[$i]}.''.$$users[$i].''; + 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 .= ''.$$status{$$users[$i]}.''; @@ -1295,7 +1332,7 @@ sub print_accessdate_table { ); my $dateshow; if ( ($oldendshow eq '') && ($oldstartshow eq '') ) { - $dateshow = "
".&mt('Warning').". ".$lt{'cuno'}." "; + $dateshow = "
".&mt('Warning').". ".$lt{'cuno'}." "; if ($action eq 'setaccess') { $dateshow .= $lt{'ifyo'}."\n"; } elsif ($action eq 'updatenow') { @@ -1475,7 +1512,7 @@ sub print_chgsettings_response { } if ($autoadds || $autodrops) { $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you indicated that nightly "; + $warn_prefix = "
Warning. Although you indicated that nightly "; $warn_suffix = " should be enabled, additional action is required.
"; } if ($autoadds) { @@ -1573,7 +1610,7 @@ sub print_setdates_response { } } $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you set a start and end date for auto-enrollment, additional action is required.
"; + $warn_prefix = "
Warning. Although you set a start and end date for auto-enrollment, additional action is required.
"; unless ($warning eq '') { $response .= $warn_prefix.$warning; } @@ -1672,7 +1709,7 @@ start and end access dates for this cour } } $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have set default first and last access dates for students who are added via automatic enrollment, additional action is required.
"; + $warn_prefix = "
Warning. Although you have set default first and last access dates for students who are added via automatic enrollment, additional action is required.
"; unless ($warning eq '') { $response .= $warn_prefix.$warning; } @@ -1857,7 +1894,7 @@ sub print_crosslistings_menu () { sub print_crosslistings_response () { my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.crosslistings','internal.coursecode','internal.courseowner'],$dom,$crs); + my %settings = &Apache::lonnet::get('environment',['internal.crosslistings','internal.coursecode','internal.courseowner','internal.co-owners'],$dom,$crs); my @currxlists = (); my @xlists = (); my @allxlists = (); @@ -1869,6 +1906,7 @@ sub print_crosslistings_response () { my $xliststr = $settings{'internal.crosslistings'}; my $coursecode = $settings{'internal.coursecode'}; my $owner = $settings{'internal.courseowner'}; + my $coowners = $settings{'internal.co-owners'}; my $response = ''; my $warning = ''; my $warn_prefix = ''; @@ -1902,7 +1940,7 @@ sub print_crosslistings_response () { $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$env{"form.$xl"}); if ($coursecheck eq 'ok') { my $addcheck = ''; - $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$env{"form.$xl"},$owner); + $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$env{"form.$xl"},$owner,$coowners); if ($addcheck eq 'ok') { push @xlists,$env{"form.$xl"}.":".$env{"form.$lc_sec"}; } else { @@ -1980,7 +2018,7 @@ sub print_crosslistings_response () { if (@allxlists > 0) { $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have selected crosslisted courses to contribute enrollment to this course, additional action is required.
"; + $warn_prefix = "
Warning. Although you have selected crosslisted courses to contribute enrollment to this course, additional action is required.
"; unless ($warning eq '') { $response .= $warn_prefix.$warning; } @@ -1992,7 +2030,7 @@ sub print_crosslistings_response () { sub print_sections_menu () { my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode','internal.courseowner'],$dom,$crs); + my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode','internal.courseowner','internal.co-owners'],$dom,$crs); my @currsections = (); my @sections = (); my @badowner = (); @@ -2006,6 +2044,7 @@ sub print_sections_menu () { my $warn_prefix = ""; my $coursecode = $settings{'internal.coursecode'}; my $owner = $settings{'internal.courseowner'}; + my $coowners = $settings{'internal.co-owners'}; if ($settings{'internal.sectionnums'} ne '') { @currsections = split(/,/,$settings{'internal.sectionnums'}); } @@ -2030,7 +2069,7 @@ sub print_sections_menu () { my $newsec = $coursecode.$env{"form.$secnum"}; my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); if ($coursecheck eq 'ok') { - my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$newsec,$owner); + my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$newsec,$owner,$coowners); if ($addcheck eq 'ok') { push @sections,$env{"form.$secnum"}.":".$env{"form.$lc_sec"}; $seccount ++; @@ -2118,7 +2157,7 @@ sections which contribute to enrollment if ($seccount > 0) { $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; + $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; unless ($warning eq '') { $response .= $warn_prefix.$warning; } @@ -2174,7 +2213,7 @@ sections which contribute to enrollment sub print_sections_response () { my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode','internal.courseowner'],$dom,$crs); + my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode','internal.courseowner','internal.co-owners'],$dom,$crs); my @currsections = (); my @sections = (); my @allsections = (); @@ -2186,6 +2225,7 @@ sub print_sections_response () { my $secstr = $settings{'internal.sectionnums'}; my $coursecode = $settings{'internal.coursecode'}; my $owner = $settings{'internal.courseowner'}; + my $coowners = $settings{'internal.co-owners'}; my $response = ''; my $putreply = ''; my $warning = ''; @@ -2216,7 +2256,7 @@ sub print_sections_response () { my $newsec = $coursecode.$env{"form.$sec"}; my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); if ($coursecheck eq 'ok') { - my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$newsec,$owner); + my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$newsec,$owner,$coowners); if ($addcheck eq 'ok') { push @sections,$env{"form.$sec"}.":".$env{"form.$lc_sec"}; } else { @@ -2289,7 +2329,7 @@ sub print_sections_response () { if (@allsections > 0) { $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; + $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; unless ($warning eq '') { $response .= $warn_prefix.$warning; }