--- loncom/interface/lonmodifycourse.pm 2003/12/26 16:30:17 1.1 +++ loncom/interface/lonmodifycourse.pm 2004/06/08 22:09:44 1.7 @@ -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; @@ -14,9 +36,11 @@ sub print_course_selection_page { my ($r,$tasklongref) = @_; my $dom = $ENV{'user.domain'}; my %lt=&Apache::lonlocal::texthash( - 'incs' => "Internal course settings", - 'stat' => "Although the majority of course settings for LON-CAPA courses may be modified by a Course Coordinator, there are a small number of settings which may only be modified by a Domain Coordinator. These particular course parameters control automated student enrollment in LON-CAPA courses based on classlist data available from your institution's student information system.", - 'chcs' => "Once you have chosen the course for which you wish to view/modify internal settings, click 'Go' to proceed", + '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.", + 'chcs' => "Choose the course for which you wish to view/modify automated enrollment settings from the select box below and click 'Go' to proceed.", + 'eaen' => "Each entry in the select box contains: course code -- course title ------- course owner, and entries are ordered alphabetically by course code.", + 'psac' => "Please select a course", 'ccrs' => "Choose a course", 'gobt' => "Go" ); @@ -25,14 +49,15 @@ sub print_course_selection_page { my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1); &print_header($r,$tasklongref); $r->print(< -

$lt{'incs'}

-

$lt{'stat'} +

+

$lt{'csae'}

+

$lt{'unst'}

$lt{'chcs'} -

+
$lt{'eaen'} +

$lt{'ccrs'}: $local_ccs[$i] - $cc_status{$local_ccs[$i]} Course Coordinator"; + $cc_status{$local_ccs[$i]} $lt{'ccor'}"; } $ownertable .= " @@ -277,7 +346,7 @@ who are from this domain', &print_header($r,$tasklongref,$settings{'description'},\$javascript_validations); $r->print(< -

$lt{'aecs'}

+

$lt{'aecs'}

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

@@ -302,30 +371,34 @@ $disp_table

- +
+ + + @@ -345,13 +418,25 @@ $locform
ENDDOCUMENT &print_footer($r); + return; } sub modify_course { my ($r,$tasklongref,$typeref) = @_; my $dom = $ENV{'user.domain'}; my $crs = $ENV{'form.course'}; - my %settings = &Apache::lonnet::get('environment',['internal.courseowner','internal.coursecode','internal.authtype','internal.autharg','internal.sectionnums','internal.crosslistngs','description'],$dom,$crs); + my $homeserver = &Apache::lonnet::homeserver($crs,$dom); + my $server = $Apache::lonnet::perlvar{'lonHostID'}; + + 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 = (); my %cenv = (); @@ -394,6 +479,7 @@ 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'})) { @@ -407,8 +493,8 @@ sub modify_course { } if ( $newattr{'authtype'}=~ /^krb/) { if ($newattr{'autharg'} eq '') { - $warning = qq(''. - &mt('As you did not include the default Kerberos domain to be used for authentication in this class, the institutional data used by the automated enrollment process must include the Kerberos domain for each new student').'

'); + $warning = qq(). + &mt("As you did not include the default Kerberos domain to be used for authentication in this class, the institutional data used by the automated enrollment process must include the Kerberos domain for each new student").qq(

); } } @@ -440,58 +526,67 @@ sub modify_course { } if (@changes > 0) { - $chgresponse = "The following automated enrollment parameters have been changed:
    "; + $chgresponse = &mt("The following automated enrollment parameters have been changed:
      "); } if (@nochanges > 0) { - $nochgresponse = "The following automated enrollment parameters remain unchanged:
        "; + $nochgresponse = &mt("The following automated enrollment parameters remain unchanged:
          "); } if (@changes > 0) { my $putreply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs); if ($putreply !~ /^ok$/) { - $response = "There was a problem processing your requested changes. The automated enrollment settings for this course have been left unchanged.
          "; + $response = &mt("There was a problem processing your requested changes. The automated enrollment settings for this course have been left unchanged.
          "); } else { foreach my $attr (@params) { if (grep/^$attr$/,@changes) { - $chgresponse .= "
        • $$typeref{$attr} now set to $newattr{$attr}.
        • "; + $chgresponse .= "
        • $$typeref{$attr} ".&mt("now set to \"").$newattr{$attr}."\".
        • "; } else { - $nochgresponse .= "
        • $$typeref{$attr} still set to $currattr{$attr}.
        • "; + $nochgresponse .= "
        • $$typeref{$attr} ".&mt("still set to \"").$currattr{$attr}."\".
        • "; } } if ($changecode || $changeowner) { if ( $newattr{'courseowner'} eq '') { - $warning .= "There is no owner associated with this LON-CAPA course. If automated enrollment in LON-CAPA courses at your institution requires validation of course owners, automated enrollment will fail for this course.
          "; + $warning .= &mt("There is no owner associated with this LON-CAPA course. If automated enrollment in LON-CAPA courses at your institution requires validation of course owners, automated enrollment will fail for this course.
          "); } else { if (@sections > 0) { - foreach my $sec (@sections) { - if ($sec =~ m/^(.+):/) { - my $course_id = $newattr{'coursecode'}.$1; - if ($changecode) { -# my $course_check = &localenroll::validate_courseID($course_id); - my $course_check = 'ok'; - if ($course_check eq 'ok') { -# my $outcome = &localenroll::new_course($course_id,$newattr{'courseowner'}); - my $outcome = 'ok'; + if ($changecode) { + foreach my $sec (@sections) { + if ($sec =~ m/^(.+):/) { + my $course_id = $newattr{'coursecode'}.$1; + my $course_check = &Apache::lonnet::auto_validate_courseID($homeserver,$course_id); + if ($course_check eq 'ok') { + my $outcome = &Apache::lonnet::auto_new_course($homeserver,$course_id,$newattr{'courseowner'}); unless ($outcome eq 'ok') { - $warning .= "If automatic enrollment is enabled for LON-CAPA course: $description, automated enrollment may fail for $newattr{'coursecode'} - section $1 for the following reason: $outcome.
          "; + $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.
          "); } } else { - $warning .= "If automatic enrollment is enabled for LON-CAPA course: $description, automated enrollment may fail for $newattr{'coursecode'} - section $1 for the following reason: $course_check.
          "; + $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: $course_check.
          "); } } else { - $warning .= "If automatic enrollment is enabled for LON-CAPA course: $description, automated enrollment may fail for $newattr{'coursecode'} - section $sec because this is not a valid section entry.
          "; + $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $sec because this is not a valid section entry.
          "); } } - } + } elsif ($changeowner) { + foreach my $sec (@sections) { + if ($sec =~ m/^(.+):/) { + my $course_id = $newattr{'coursecode'}.$1; + my $outcome = &Apache::lonnet::auto_new_course($homeserver,$course_id,$newattr{'courseowner'}); + 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.
          "); + } + } else { + $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $sec because this is not a valid section entry.
          "); + } + } + } } else { - $warning .= "As no section numbers are currently listed for LON-CAPA course: $description, automated enrollment will not occur for any sections of coursecode: $newattr{'coursecode'}.
          "; + $warning .= &mt("As no section numbers are currently listed for LON-CAPA course: ").$description.&mt(", automated enrollment will not occur for any sections of coursecode: ").$newattr{'coursecode'}."
          "; } if ( (@xlists > 0) && ($changeowner) ) { foreach my $xlist (@xlists) { if ($xlist =~ m/^(.+):/) { -# my $outcome = &localenroll::new_course($1,$newattr{'courseowner'}); - my $outcome = 'ok'; + my $outcome = &Apache::lonnet::auto_new_course($homeserver,$1,$newattr{'courseowner'}); unless ($outcome eq 'ok') { - $warning .= "If automatic enrollment is enabled for LON-CAPA course: $description, automated enrollment may fail for crosslisted class: $1 for the following reason: $outcome.
          "; + $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.
          "); } } } @@ -499,8 +594,13 @@ sub modify_course { } } } + } else { + foreach my $attr (@params) { + $nochgresponse .= "
        • $$typeref{$attr} ".&mt("still set to \"").$currattr{$attr}."\".
        • "; + } } + if (@changes > 0) { $chgresponse .= "


        "; } @@ -508,7 +608,7 @@ sub modify_course { $nochgresponse .= "


      "; } unless ($warning eq '') { - $warning = "The following warning messages were generated as a result of applying the changes you specified to course settings that can affect the automated enrollment process:

      ".$warning; + $warning = &mt("The following warning messages were generated as a result of applying the changes you specified to course settings that can affect the automated enrollment process:

      ").$warning; } if ($response eq '') { $reply = $chgresponse.$nochgresponse.$warning; @@ -516,14 +616,15 @@ sub modify_course { $reply = $response; } &print_header($r,$tasklongref,$description); - $r->print("
Use the appropriate text boxes and radio buttons below to change some or all of the four automated enrollment settings that may only be changed by a Domain Coordinator. Click the "$lt{'gobt'}" button to save your changes.
- $lt{'ccod'} + $lt{'ccod'}:  

$lt{'ccus'}
- $lt{'cown'}

- $lt{'cous'} -

+ $lt{'cown'}:

$ownertable +

+ $lt{'cous'}
- $lt{'deam'}.

+ $lt{'deam'}:

+ $krbform +
+ $intform +
+ $locform +
+
$lt{'deus'}. -

-$krbform -
-$intform -
-$locform

 
$reply
".$reply."
"; + $r->print($reply); &print_footer($r); return; } sub print_header { my ($r,$tasklongref,$description,$javascriptref) = @_; - my %lt = ( + my %lt =&Apache::lonlocal::texthash( 'vmcs' => 'View/Modify Course Settings', 'chco' => 'Choose a course', 'main' => 'Main Menu', @@ -573,15 +674,30 @@ $bodytag ENDTHIS + return; } sub print_footer { - my $r = shift; - $r->print(<print(< ENDBASE + return; +} + +sub check_course { + my ($dom,$course) = @_; + my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1); + foreach my $key (sort keys %courseIDs) { + if ($key =~ m/^($dom)_(\w+)$/) { + if ($2 eq $course) { + return 'ok'; + } + } + } + return 'invalid course'; } @@ -599,7 +715,7 @@ sub handler { &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['action','course']); my $dom = $ENV{'user.domain'}; - my %longtype = ( + my %longtype=&Apache::lonlocal::texthash( 'authtype' => 'Default authentication method', 'autharg' => 'Default authentication parameter', 'autoadds' => 'Automated adds', @@ -613,7 +729,7 @@ sub handler { 'crosslistings' => 'Crosslisted class(:groupID)', ); - my %tasklong = ( + my %tasklong = &Apache::lonlocal::texthash( 'display' => 'View/modify settings', 'process' => 'Results of changes', ); @@ -627,7 +743,7 @@ sub handler { } } else { $ENV{'user.error.msg'}= - "/adm/createcourse:ccc:0:0:Cannot modify course settings"; + "/adm/modifycourse:ccc:0:0:Cannot modify course settings"; return HTTP_NOT_ACCEPTABLE; } return OK;