--- loncom/interface/lonmodifycourse.pm 2003/12/28 01:37:02 1.2 +++ loncom/interface/lonmodifycourse.pm 2003/12/28 18:27:49 1.3 @@ -1,3 +1,25 @@ +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# package Apache::lonmodifycourse; use strict; @@ -28,7 +50,7 @@ sub print_course_selection_page { &print_header($r,$tasklongref); $r->print(< -

$lt{'csae'}

+

$lt{'csae'}

$lt{'unst'}

$lt{'chcs'}
$lt{'eaen'} @@ -102,9 +124,28 @@ ENDBLOCK sub print_course_modification_page { my ($r,$tasklongref,$typeref) = @_; my %enrollvar = (); - my @bgcolors=("#eeeeee","#cccccc"); - my $course = $ENV{'form.course'}; + my $javascript_validations; + my $course = ''; my $dom = $ENV{'user.domain'}; + if ( defined($ENV{'form.course'}) ) { + $course = $ENV{'form.course'}; + } + my $ok_course = 'ok'; + if ( ($course == -1) || ($course == '-2') || ($course eq '') ) { + $ok_course = 'invalid'; + } else { + $ok_course = &check_course($dom,$course); + } + + unless ($ok_course eq 'ok') { + &print_header($r,$tasklongref,'',\$javascript_validations); + my $reply = "
".&mt("The LON-CAPA course selected was not a valid course for this domain"); + $r->print($reply); + &print_footer($r); + return; + } + + my @bgcolors=("#eeeeee","#cccccc"); my $ownertable; my %lt=&Apache::lonlocal::texthash( 'actv' => "Active", @@ -207,7 +248,7 @@ all settings except course code, course unless ($curr_authtype eq '') { $curr_authfield = $curr_authtype.'arg'; } - my $javascript_validations=&Apache::londropadd::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield); + $javascript_validations=&Apache::londropadd::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield); my %param = ( formname => 'document.cmod', kerb_def_dom => $krbdefdom, kerb_def_auth => $krbdef, @@ -305,7 +346,7 @@ all settings except course code, course &print_header($r,$tasklongref,$settings{'description'},\$javascript_validations); $r->print(< -

$lt{'aecs'}

+

$lt{'aecs'}

$lt{'cose'}$lt{'aenm'}$lt{'andb'}

@@ -383,6 +424,15 @@ sub modify_course { my ($r,$tasklongref,$typeref) = @_; my $dom = $ENV{'user.domain'}; my $crs = $ENV{'form.course'}; + + unless ( &check_course($dom,$crs) eq 'ok' ) { + &print_header($r,$tasklongref); + my $reply = "
".&mt("The LON-CAPA course selected was not a valid course for this domain"); + $r->print($reply); + &print_footer($r); + return; + } + my %settings = &Apache::lonnet::get('environment',['internal.courseowner','internal.coursecode','internal.authtype','internal.autharg','internal.sectionnums','internal.crosslistings','description'],$dom,$crs); my %currattr = (); my %newattr = (); @@ -499,10 +549,9 @@ sub modify_course { foreach my $sec (@sections) { if ($sec =~ m/^(.+):/) { my $course_id = $newattr{'coursecode'}.$1; -# my $course_check = &localenroll::validate_courseID($course_id); - my $course_check = 'ok'; + my $course_check = &localenroll::validate_courseID($course_id); if ($course_check eq 'ok') { -# my $outcome = &localenroll::new_course($course_id,$newattr{'courseowner'}); + my $outcome = &localenroll::new_course($course_id,$newattr{'courseowner'}); my $outcome = 'ok'; unless ($outcome eq 'ok') { $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $1 for the following reason: $outcome.
"); @@ -521,8 +570,7 @@ sub modify_course { if ( (@xlists > 0) && ($changeowner) ) { foreach my $xlist (@xlists) { if ($xlist =~ m/^(.+):/) { -# my $outcome = &localenroll::new_course($1,$newattr{'courseowner'}); - my $outcome = 'ok'; + my $outcome = &localenroll::new_course($1,$newattr{'courseowner'}); unless ($outcome eq 'ok') { $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for crosslisted class: ").$1.&mt(" for the following reason: $outcome.
"); } @@ -554,7 +602,8 @@ sub modify_course { $reply = $response; } &print_header($r,$tasklongref,$description); - $r->print("
$reply
".$reply."
"; + $r->print($reply); &print_footer($r); return; } @@ -622,6 +671,23 @@ sub print_footer { ENDBASE } +sub check_course { + my ($dom,$course) = @_; + my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1); + my @courses = (); + foreach my $key (sort keys %courseIDs) { + if ($key =~ m/^($dom)_(\w+)$/) { + push @courses, $2; + } + } + if (grep/^$course$/,@courses) { + return 'ok'; + } + else { + return 'invalid course'; + } +} + sub handler { my $r = shift;