--- loncom/interface/lonmodifycourse.pm 2004/06/09 17:01:55 1.8 +++ loncom/interface/lonmodifycourse.pm 2005/02/17 08:29:43 1.15 @@ -30,11 +30,10 @@ use Apache::lonlocal; use Apache::londropadd; use LONCAPA::Enrollment; use lib '/home/httpd/lib/perl'; -use localenroll; sub print_course_selection_page { my ($r,$tasklongref) = @_; - my $dom = $ENV{'user.domain'}; + my $dom = $ENV{'request.role.domain'}; my %lt=&Apache::lonlocal::texthash( 'csae' => "Course settings for automated enrollment", 'unst' => "Unlike standard LON-CAPA course parameters, such as course description, feedback addresses, and top level map, which are displayed and/or modified using the 'Course Environment Parameters' screen, settings that control automated enrollment based on classlist data available from your institution's student information system are handled differently. Automated enrollment settings fall into two groups: (a) settings that can be modified by a Course Coordinator using the Automated Enrollment Manager and (b) settings that may only be modified by a Domain Coordinator via the 'View/Modify Course settings' menu accessed from this page.", @@ -46,7 +45,7 @@ sub print_course_selection_page { ); # Determine the courses - my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1); + my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.'); &print_header($r,$tasklongref); $r->print(<<ENDBLOCK); <form action="/adm/modifycourse" method="post" name="cmod"> @@ -66,23 +65,19 @@ ENDBLOCK foreach my $key (sort keys %courseIDs) { # Get current code my $crs; - my $currcode; - if ($key =~ m/^($dom)_(\w+)$/) { + my ($description,$currcode,$owner); + if ($courseIDs{$key} =~ m/^([^:]*):([^:]+)/ ) { + $currcode = $2; + } elsif ($key =~ m/^($dom)_(\w+)$/) { $crs = $2; my %settings = &Apache::lonnet::get('environment',['internal.coursecode'],$dom,$crs); if (defined($settings{'internal.coursecode'}) ) { $currcode = $settings{'internal.coursecode'}; - if ($currcode eq '') { - $currcode = "___".$iter; - $iter ++; - } - } else { - $currcode = "___".$iter; - $iter ++; } - } else { + } + if ($currcode eq '') { $currcode = "___".$iter; - $iter ++; + $iter ++; } unless (grep/^$currcode$/,@codes) { push @codes,$currcode; @@ -100,11 +95,22 @@ ENDBLOCK unless ($code =~m/^___\d+$/) { $showcode = $code; } if ($item =~ m/^($dom)_(\w+)$/) { $crs = $2; - $description = $courseIDs{$item}; + if ($courseIDs{$item} =~ /^([^:]*):([^:]*):([^:]*)/) { + $description = &Apache::lonnet::unescape($1); + $owner = &Apache::lonnet::unescape($3); + } elsif ($courseIDs{$item} =~ /^([^:]*):([^:]*)$/) { + $description = &Apache::lonnet::unescape($1); + } else { + $description = &Apache::lonnet::unescape($courseIDs{$item}); + } # Get course owner - my %settings = &Apache::lonnet::get('environment',['internal.courseowner'],$dom,$crs); - if ( defined($settings{'internal.courseowner'}) ) { - $owner = $settings{'internal.courseowner'}; + if ($owner eq '') { + my %settings = &Apache::lonnet::get('environment',['internal.courseowner'],$dom,$crs); + if ( defined($settings{'internal.courseowner'}) ) { + $owner = $settings{'internal.courseowner'}; + } + } + unless ($owner eq '') { $ownername = &Apache::loncommon::plainname($owner,$dom); } $r->print("<option value=\"$crs\">$showcode -- $description ---------- $ownername"); @@ -126,7 +132,7 @@ sub print_course_modification_page { my %enrollvar = (); my $javascript_validations; my $course = ''; - my $dom = $ENV{'user.domain'}; + my $dom = $ENV{'request.role.domain'}; if ( defined($ENV{'form.course'}) ) { $course = $ENV{'form.course'}; } @@ -136,6 +142,7 @@ sub print_course_modification_page { } else { $ok_course = &check_course($dom,$course); } + print STDERR "Response was $ok_course for $dom,$course\n"; unless ($ok_course eq 'ok') { &print_header($r,$tasklongref,'',\$javascript_validations); @@ -197,9 +204,17 @@ all settings except course code, course } else { $enrollvar{$1} = localtime($settings{$item}); } - } elsif ($1 eq "courseowner" || $1 eq "authtype" || $1 eq "autharg" || $1 eq "sectionnums" || $1 eq "coursecode") { + } elsif ($1 eq "courseowner" || $1 eq "authtype" || $1 eq "autharg" || $1 eq "sectionnums" || $1 eq "coursecode" || $1 eq "crosslistings") { $enrollvar{$1} = $settings{$item}; } + } elsif ($item =~ m/^default_enrollment_(start|end)_date$/) { + if ( ($1 eq 'end') && ($settings{$item} == 0) ) { + $enrollvar{$item} = $lt{'noen'}; + } elsif ( ($1 eq 'start') && ($settings{$item} eq '') ) { + $enrollvar{$item} = 'When enrolled'; + } else { + $enrollvar{$item} = localtime($settings{$item}); + } } } @@ -234,8 +249,7 @@ all settings except course code, course my $numlocalcc = @local_ccs; my $bodytag=&Apache::loncommon::bodytag(&mt("Modify Course Settings")); my $helplink=&Apache::loncommon::help_open_topic('Modify_Course',&mt("Help on Modifying Courses")); - my $defdom=$ENV{'request.role.domain'}; - my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($defdom); + my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($dom); my $curr_authtype = ''; my $curr_authfield = ''; if ($enrollvar{'authtype'} =~ /^krb/) { @@ -323,13 +337,13 @@ all settings except course code, course my $colflag = $i%2; $ownertable .= "<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">"; if ($local_ccs[$i] eq $enrollvar{'courseowner'}) { - $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$i\" checked=\"true\"/></td>"; + $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" checked=\"true\"/></td>"; } else { - $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$i\" /></td>"; + $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" /></td>"; } $ownertable .= " <td>$pname{$local_ccs[$i]}</td> - <td><input type=\"hidden\" name=\"username_$i\" value=\"$local_ccs[$i]\" />$local_ccs[$i]</td> + <td>$local_ccs[$i]</td> <td>$cc_status{$local_ccs[$i]} $lt{'ccor'}</td></tr>"; } $ownertable .= "</table> @@ -476,7 +490,6 @@ sub modify_course { $newattr{'authtype'} = $ENV{'form.login'}; $newattr{'authtype'} .= $ENV{'form.krbver'}; $newattr{'autharg'} = $ENV{'form.krbarg'}; - $newattr{'autharg'} =~ tr/a-z/A-Z/; } elsif ($ENV{'form.login'} eq 'int') { $newattr{'authtype'} ='internal'; if ((defined($ENV{'form.intarg'})) && ($ENV{'form.intarg'})) { @@ -496,12 +509,9 @@ sub modify_course { } if ( exists($ENV{'form.courseowner'}) ) { - my $ownerparam = 'username_'.$ENV{'form.courseowner'}; - if ( exists($ENV{"form.$ownerparam"}) ) { - $newattr{'courseowner'}=$ENV{"form.$ownerparam"}; - unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) { - $changeowner = 1; - } + $newattr{'courseowner'}=$ENV{'form.courseowner'}; + unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) { + $changeowner = 1; } } @@ -511,6 +521,10 @@ sub modify_course { $changecode = 1; } } + if ($changeowner == 1 || $changecode == 1) { + my $courseid_entry = &Apache::lonnet::escape($dom.'_'.$crs).'='.&Apache::lonnet::escape($description).':'.&Apache::lonnet::escape($ENV{'form.coursecode'}).':'.&Apache::lonnet::escape($ENV{'form.courseowner'}); + &Apache::lonnet::courseidput($dom,$courseid_entry,&Apache::lonnet::homeserver($crs,$dom)); + } foreach (@params) { if ($currattr{$_} eq $newattr{$_}) { @@ -647,9 +661,11 @@ sub print_header { $page .= " -> <b>".$$tasklongref{$action}."</b>"; } } + my $html=&Apache::lonxml::xmlbegin(); $r->print(" -<html> -<head>"); +$html +<head> +"); if ($action eq 'display') { $r->print(" <script language=\"JavaScript\" type=\"text/javascript\"> @@ -686,7 +702,7 @@ ENDBASE sub check_course { my ($dom,$course) = @_; - my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1); + my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.'); foreach my $key (sort keys %courseIDs) { if ($key =~ m/^($dom)_(\w+)$/) { if ($2 eq $course) { @@ -717,8 +733,10 @@ sub handler { 'autharg' => 'Default authentication parameter', 'autoadds' => 'Automated adds', 'autodrops' => 'Automated drops', - 'autostart' => 'Date of first enrollment', - 'autoend' => 'Date of last enrollment', + 'autostart' => 'Date of first automated enrollment', + 'autoend' => 'Date of last automated enrollment', + 'default_enrollment_start_date' => 'Date of first student access', + 'default_enrollment_end_date' => 'Date of last student access', 'coursecode' => 'Official course code', 'courseowner' => "Username of course owner (\@$dom)", 'notifylist' => 'Course Coordinators to be notified of enrollment changes',