version 1.9, 2004/06/17 18:31:24
|
version 1.20, 2005/09/29 20:17:06
|
Line 1
|
Line 1
|
|
# The LearningOnline Network with CAPA |
|
# automated enrollment course setup handler |
|
# |
|
# $Id$ |
|
# |
# Copyright Michigan State University Board of Trustees |
# Copyright Michigan State University Board of Trustees |
# |
# |
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
Line 30 use Apache::lonlocal;
|
Line 35 use Apache::lonlocal;
|
use Apache::londropadd; |
use Apache::londropadd; |
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
use lib '/home/httpd/lib/perl'; |
use lib '/home/httpd/lib/perl'; |
use localenroll; |
|
|
|
sub print_course_selection_page { |
sub print_course_selection_page { |
my ($r,$tasklongref) = @_; |
my ($r,$tasklongref) = @_; |
my $dom = $ENV{'user.domain'}; |
my $dom = $env{'request.role.domain'}; |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'csae' => "Course settings for automated enrollment", |
'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.", |
'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.", |
Line 46 sub print_course_selection_page {
|
Line 50 sub print_course_selection_page {
|
); |
); |
|
|
# Determine the courses |
# Determine the courses |
my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1); |
my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.'); |
&print_header($r,$tasklongref); |
&print_header($r,$tasklongref); |
$r->print(<<ENDBLOCK); |
$r->print(<<ENDBLOCK); |
<form action="/adm/modifycourse" method="post" name="cmod"> |
<form action="/adm/modifycourse" method="post" name="cmod"> |
Line 66 ENDBLOCK
|
Line 70 ENDBLOCK
|
foreach my $key (sort keys %courseIDs) { |
foreach my $key (sort keys %courseIDs) { |
# Get current code |
# Get current code |
my $crs; |
my $crs; |
my $currcode; |
my ($description,$currcode,$owner); |
if ($key =~ m/^($dom)_(\w+)$/) { |
if ($courseIDs{$key} =~ m/^([^:]*):([^:]+)/ ) { |
|
$currcode = $2; |
|
} elsif ($key =~ m/^($dom)_(\w+)$/) { |
$crs = $2; |
$crs = $2; |
my %settings = &Apache::lonnet::get('environment',['internal.coursecode'],$dom,$crs); |
my %settings = &Apache::lonnet::get('environment',['internal.coursecode'],$dom,$crs); |
if (defined($settings{'internal.coursecode'}) ) { |
if (defined($settings{'internal.coursecode'}) ) { |
$currcode = $settings{'internal.coursecode'}; |
$currcode = $settings{'internal.coursecode'}; |
if ($currcode eq '') { |
|
$currcode = "___".$iter; |
|
$iter ++; |
|
} |
|
} else { |
|
$currcode = "___".$iter; |
|
$iter ++; |
|
} |
} |
} else { |
} |
|
if ($currcode eq '') { |
$currcode = "___".$iter; |
$currcode = "___".$iter; |
$iter ++; |
$iter ++; |
} |
} |
unless (grep/^$currcode$/,@codes) { |
unless (grep/^$currcode$/,@codes) { |
push @codes,$currcode; |
push @codes,$currcode; |
Line 100 ENDBLOCK
|
Line 100 ENDBLOCK
|
unless ($code =~m/^___\d+$/) { $showcode = $code; } |
unless ($code =~m/^___\d+$/) { $showcode = $code; } |
if ($item =~ m/^($dom)_(\w+)$/) { |
if ($item =~ m/^($dom)_(\w+)$/) { |
$crs = $2; |
$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 |
# Get course owner |
my %settings = &Apache::lonnet::get('environment',['internal.courseowner'],$dom,$crs); |
if ($owner eq '') { |
if ( defined($settings{'internal.courseowner'}) ) { |
my %settings = &Apache::lonnet::get('environment',['internal.courseowner'],$dom,$crs); |
$owner = $settings{'internal.courseowner'}; |
if ( defined($settings{'internal.courseowner'}) ) { |
|
$owner = $settings{'internal.courseowner'}; |
|
} |
|
} |
|
unless ($owner eq '') { |
$ownername = &Apache::loncommon::plainname($owner,$dom); |
$ownername = &Apache::loncommon::plainname($owner,$dom); |
} |
} |
$r->print("<option value=\"$crs\">$showcode -- $description ---------- $ownername"); |
$r->print("<option value=\"$crs\">$showcode -- $description ---------- $ownername"); |
Line 126 sub print_course_modification_page {
|
Line 137 sub print_course_modification_page {
|
my %enrollvar = (); |
my %enrollvar = (); |
my $javascript_validations; |
my $javascript_validations; |
my $course = ''; |
my $course = ''; |
my $dom = $ENV{'user.domain'}; |
my $dom = $env{'request.role.domain'}; |
if ( defined($ENV{'form.course'}) ) { |
if ( defined($env{'form.course'}) ) { |
$course = $ENV{'form.course'}; |
$course = $env{'form.course'}; |
} |
} |
my $ok_course = 'ok'; |
my $ok_course = 'ok'; |
if ( ($course == -1) || ($course == '-2') || ($course eq '') ) { |
if ( ($course == -1) || ($course == '-2') || ($course eq '') ) { |
Line 220 all settings except course code, course
|
Line 231 all settings except course code, course
|
my @roleinfo = split/:/,$_; |
my @roleinfo = split/:/,$_; |
if ( ($roleinfo[0] eq 'cc') && ($roleinfo[2] eq $dom) ) { |
if ( ($roleinfo[0] eq 'cc') && ($roleinfo[2] eq $dom) ) { |
unless (grep/^$roleinfo[1]$/,@local_ccs) { |
unless (grep/^$roleinfo[1]$/,@local_ccs) { |
$active_cc = &LONCAPA::Enrollment::check_user_status($roleinfo[2],$roleinfo[1],$dom,$course,'cc'); |
$active_cc = &Apache::loncommon::check_user_status($roleinfo[2],$roleinfo[1],$dom,$course,'cc'); |
if ($active_cc eq 'ok') { |
if ($active_cc eq 'active') { |
push @local_ccs, $roleinfo[1]; |
push @local_ccs, $roleinfo[1]; |
$pname{$roleinfo[1]} = &Apache::loncommon::plainname($roleinfo[1],$roleinfo[2]); |
$pname{$roleinfo[1]} = &Apache::loncommon::plainname($roleinfo[1],$roleinfo[2]); |
$cc_status{$roleinfo[1]} = $lt{'actv'}; |
$cc_status{$roleinfo[1]} = $lt{'actv'}; |
Line 232 all settings except course code, course
|
Line 243 all settings except course code, course
|
unless ( (grep/^$enrollvar{'courseowner'}$/,@local_ccs) || ($enrollvar{'courseowner'} eq '') ) { |
unless ( (grep/^$enrollvar{'courseowner'}$/,@local_ccs) || ($enrollvar{'courseowner'} eq '') ) { |
push @local_ccs, $enrollvar{'courseowner'}; |
push @local_ccs, $enrollvar{'courseowner'}; |
$pname{$enrollvar{'courseowner'}} = &Apache::loncommon::plainname($enrollvar{'courseowner'},$dom); |
$pname{$enrollvar{'courseowner'}} = &Apache::loncommon::plainname($enrollvar{'courseowner'},$dom); |
$active_cc = &LONCAPA::Enrollment::check_user_status($dom,$enrollvar{'coursecode'},$dom,$course,'cc'); |
$active_cc = &Apache::loncommon::check_user_status($dom,$enrollvar{'coursecode'},$dom,$course,'cc'); |
if ($active_cc eq 'ok') { |
if ($active_cc eq 'active') { |
$cc_status{$enrollvar{'courseowner'}} = $lt{'actv'}; |
$cc_status{$enrollvar{'courseowner'}} = $lt{'actv'}; |
} else { |
} else { |
$cc_status{$enrollvar{'courseowner'}} = $lt{'inac'}; |
$cc_status{$enrollvar{'courseowner'}} = $lt{'inac'}; |
Line 242 all settings except course code, course
|
Line 253 all settings except course code, course
|
my $numlocalcc = @local_ccs; |
my $numlocalcc = @local_ccs; |
my $bodytag=&Apache::loncommon::bodytag(&mt("Modify Course Settings")); |
my $bodytag=&Apache::loncommon::bodytag(&mt("Modify Course Settings")); |
my $helplink=&Apache::loncommon::help_open_topic('Modify_Course',&mt("Help on Modifying Courses")); |
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($dom); |
my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($defdom); |
|
my $curr_authtype = ''; |
my $curr_authtype = ''; |
my $curr_authfield = ''; |
my $curr_authfield = ''; |
if ($enrollvar{'authtype'} =~ /^krb/) { |
if ($enrollvar{'authtype'} =~ /^krb/) { |
Line 331 all settings except course code, course
|
Line 341 all settings except course code, course
|
my $colflag = $i%2; |
my $colflag = $i%2; |
$ownertable .= "<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">"; |
$ownertable .= "<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">"; |
if ($local_ccs[$i] eq $enrollvar{'courseowner'}) { |
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 { |
} else { |
$ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$i\" /></td>"; |
$ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" /></td>"; |
} |
} |
$ownertable .= " |
$ownertable .= " |
<td>$pname{$local_ccs[$i]}</td> |
<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>"; |
<td>$cc_status{$local_ccs[$i]} $lt{'ccor'}</td></tr>"; |
} |
} |
$ownertable .= "</table> |
$ownertable .= "</table> |
Line 431 ENDDOCUMENT
|
Line 441 ENDDOCUMENT
|
|
|
sub modify_course { |
sub modify_course { |
my ($r,$tasklongref,$typeref) = @_; |
my ($r,$tasklongref,$typeref) = @_; |
my $dom = $ENV{'user.domain'}; |
my $dom = $env{'user.domain'}; |
my $crs = $ENV{'form.course'}; |
my $crs = $env{'form.course'}; |
unless ( &check_course($dom,$crs) eq 'ok' ) { |
unless ( &check_course($dom,$crs) eq 'ok' ) { |
&print_header($r,$tasklongref); |
&print_header($r,$tasklongref); |
my $reply = "<br/>".&mt("The LON-CAPA course selected was not a valid course for this domain"); |
my $reply = "<br/>".&mt("The LON-CAPA course selected was not a valid course for this domain"); |
Line 480 sub modify_course {
|
Line 490 sub modify_course {
|
my $description = $settings{'description'}; |
my $description = $settings{'description'}; |
my %cenv = (); |
my %cenv = (); |
|
|
if ($ENV{'form.login'} eq 'krb') { |
if ($env{'form.login'} eq 'krb') { |
$newattr{'authtype'} = $ENV{'form.login'}; |
$newattr{'authtype'} = $env{'form.login'}; |
$newattr{'authtype'} .= $ENV{'form.krbver'}; |
$newattr{'authtype'} .= $env{'form.krbver'}; |
$newattr{'autharg'} = $ENV{'form.krbarg'}; |
$newattr{'autharg'} = $env{'form.krbarg'}; |
$newattr{'autharg'} =~ tr/a-z/A-Z/; |
} elsif ($env{'form.login'} eq 'int') { |
} elsif ($ENV{'form.login'} eq 'int') { |
|
$newattr{'authtype'} ='internal'; |
$newattr{'authtype'} ='internal'; |
if ((defined($ENV{'form.intarg'})) && ($ENV{'form.intarg'})) { |
if ((defined($env{'form.intarg'})) && ($env{'form.intarg'})) { |
$newattr{'autharg'} = $ENV{'form.intarg'}; |
$newattr{'autharg'} = $env{'form.intarg'}; |
} |
} |
} elsif ($ENV{'form.login'} eq 'loc') { |
} elsif ($env{'form.login'} eq 'loc') { |
$newattr{'authtype'} = 'localauth'; |
$newattr{'authtype'} = 'localauth'; |
if ((defined($ENV{'form.locarg'})) && ($ENV{'form.locarg'})) { |
if ((defined($env{'form.locarg'})) && ($env{'form.locarg'})) { |
$newattr{'autharg'} = $ENV{'form.locarg'}; |
$newattr{'autharg'} = $env{'form.locarg'}; |
} |
} |
} |
} |
if ( $newattr{'authtype'}=~ /^krb/) { |
if ( $newattr{'authtype'}=~ /^krb/) { |
Line 503 sub modify_course {
|
Line 512 sub modify_course {
|
} |
} |
} |
} |
|
|
if ( exists($ENV{'form.courseowner'}) ) { |
if ( exists($env{'form.courseowner'}) ) { |
my $ownerparam = 'username_'.$ENV{'form.courseowner'}; |
$newattr{'courseowner'}=$env{'form.courseowner'}; |
if ( exists($ENV{"form.$ownerparam"}) ) { |
unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) { |
$newattr{'courseowner'}=$ENV{"form.$ownerparam"}; |
$changeowner = 1; |
unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) { |
|
$changeowner = 1; |
|
} |
|
} |
} |
} |
} |
|
|
if ( exists($ENV{'form.coursecode'}) ) { |
if ( exists($env{'form.coursecode'}) ) { |
$newattr{'coursecode'}=$ENV{'form.coursecode'}; |
$newattr{'coursecode'}=$env{'form.coursecode'}; |
unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) { |
unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) { |
$changecode = 1; |
$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) { |
foreach (@params) { |
if ($currattr{$_} eq $newattr{$_}) { |
if ($currattr{$_} eq $newattr{$_}) { |
Line 636 sub print_header {
|
Line 646 sub print_header {
|
'comg' => 'Course Manager', |
'comg' => 'Course Manager', |
); |
); |
my $action = "start"; |
my $action = "start"; |
if ( exists($ENV{'form.action'}) ) { |
if ( exists($env{'form.action'}) ) { |
$action = $ENV{'form.action'}; |
$action = $env{'form.action'}; |
} |
} |
if ( ($description eq '') || (!defined($description)) ) { |
if ( ($description eq '') || (!defined($description)) ) { |
$description = $lt{'comg'}; |
$description = $lt{'comg'}; |
Line 649 sub print_header {
|
Line 659 sub print_header {
|
} else { |
} else { |
$page = '<a href="/adm/modifycourse">'.$lt{'chco'}.'</a>'; |
$page = '<a href="/adm/modifycourse">'.$lt{'chco'}.'</a>'; |
if ( $action eq 'process' ) { |
if ( $action eq 'process' ) { |
my $course = $ENV{'form.course'}; |
my $course = $env{'form.course'}; |
$page .= "-> <a href=\"/adm/modifycourse?action=display&course=$course\">".$$tasklongref{'display'}."</a> -> <b>$$tasklongref{$action}</b> "; |
$page .= "-> <a href=\"/adm/modifycourse?action=display&course=$course\">".$$tasklongref{'display'}."</a> -> <b>$$tasklongref{$action}</b> "; |
} else { |
} else { |
$page .= " -> <b>".$$tasklongref{$action}."</b>"; |
$page .= " -> <b>".$$tasklongref{$action}."</b>"; |
} |
} |
} |
} |
|
my $html=&Apache::lonxml::xmlbegin(); |
$r->print(" |
$r->print(" |
<html> |
$html |
<head>"); |
<head> |
|
"); |
if ($action eq 'display') { |
if ($action eq 'display') { |
$r->print(" |
$r->print(" |
<script language=\"JavaScript\" type=\"text/javascript\"> |
<script language=\"JavaScript\" type=\"text/javascript\"> |
Line 694 ENDBASE
|
Line 706 ENDBASE
|
|
|
sub check_course { |
sub check_course { |
my ($dom,$course) = @_; |
my ($dom,$course) = @_; |
my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1); |
my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.'); |
foreach my $key (sort keys %courseIDs) { |
foreach my $key (sort keys %courseIDs) { |
if ($key =~ m/^($dom)_(\w+)$/) { |
if ($key =~ m/^($dom)_(\w+)$/) { |
if ($2 eq $course) { |
if ($2 eq $course) { |
Line 714 sub handler {
|
Line 726 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
if (&Apache::lonnet::allowed('ccc',$ENV{'request.role.domain'})) { |
if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['action','course']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['action','course']); |
my $dom = $ENV{'user.domain'}; |
my $dom = $env{'user.domain'}; |
my %longtype=&Apache::lonlocal::texthash( |
my %longtype=&Apache::lonlocal::texthash( |
'authtype' => 'Default authentication method', |
'authtype' => 'Default authentication method', |
'autharg' => 'Default authentication parameter', |
'autharg' => 'Default authentication parameter', |
Line 741 sub handler {
|
Line 753 sub handler {
|
'process' => 'Results of changes', |
'process' => 'Results of changes', |
); |
); |
|
|
if ($ENV{'form.action'} eq 'process') { |
if ($env{'form.action'} eq 'process') { |
&modify_course($r,\%tasklong,\%longtype); |
&modify_course($r,\%tasklong,\%longtype); |
} elsif ($ENV{'form.action'} eq 'display') { |
} elsif ($env{'form.action'} eq 'display') { |
&print_course_modification_page($r,\%tasklong,\%longtype); |
&print_course_modification_page($r,\%tasklong,\%longtype); |
} else { |
} else { |
&print_course_selection_page($r,\%tasklong); |
&print_course_selection_page($r,\%tasklong); |
} |
} |
} else { |
} else { |
$ENV{'user.error.msg'}= |
$env{'user.error.msg'}= |
"/adm/modifycourse:ccc:0:0:Cannot modify course settings"; |
"/adm/modifycourse:ccc:0:0:Cannot modify course settings"; |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |