diff --git a/lib/WeBWorK/ContentGenerator/CourseAdmin.pm b/lib/WeBWorK/ContentGenerator/CourseAdmin.pm index d8a07e5867..15a7ed8d6c 100644 --- a/lib/WeBWorK/ContentGenerator/CourseAdmin.pm +++ b/lib/WeBWorK/ContentGenerator/CourseAdmin.pm @@ -1233,6 +1233,10 @@ sub unarchive_course_validate ($c) { push @errors, $c->maketext('Course ID cannot exceed [_1] characters.', $ce->{maxCourseIdLength}); } + unless ($courseID =~ /^[\w-]*$/) { # regex copied from CourseAdministration.pm + push @errors, $c->maketext('Course ID may only contain letters, numbers, hyphens, and underscores.'); + } + return @errors; } diff --git a/lib/WeBWorK/Utils/CourseManagement.pm b/lib/WeBWorK/Utils/CourseManagement.pm index dcefd4ddaa..f3466e82bb 100644 --- a/lib/WeBWorK/Utils/CourseManagement.pm +++ b/lib/WeBWorK/Utils/CourseManagement.pm @@ -505,11 +505,7 @@ sub renameCourse { } # get new course environment - my $newCE = $oldCE->new( - $oldCE->{webworkDirs}->{root}, - $oldCE->{webworkURLs}->{root}, - $oldCE->{pg}->{directories}->{root}, $newCourseID, - ); + my $newCE = $oldCE->new({ courseName => $newCourseID }); # find the course dirs that still exist in their original locations # (i.e. are not subdirs of $courseDir)