Log Message:
-----------
added sorting of set definition files, fixing bug #809.
also added no_chdir=>1 flag to File::Find::find and modified
$get_set_defs_wanted accordingly.
Modified Files:
--------------
webwork2/lib/WeBWorK/ContentGenerator/Instructor:
SetMaker.pm
Revision Data
-------------
Index: SetMaker.pm
===================================================================
RCS file: /webwork/cvs/system/webwork2/lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm,v
retrieving revision 1.57
retrieving revision 1.58
diff -Llib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm -Llib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm -u -r1.57 -r1.58
--- lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm
+++ lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm
@@ -156,13 +156,14 @@
my @found_set_defs;
# get_set_defs_wanted is a closure over @found_set_defs
my $get_set_defs_wanted = sub {
- my $fn = $_;
- my $fdir = $File::Find::dir;
- return() if($fn !~ /^set.*\.def$/);
- #return() if(not -T $fn);
- push @found_set_defs, "$fdir/$fn";
+ #my $fn = $_;
+ #my $fdir = $File::Find::dir;
+ #return() if($fn !~ /^set.*\.def$/);
+ ##return() if(not -T $fn);
+ #push @found_set_defs, "$fdir/$fn";
+ push @found_set_defs, $_ if m|/set[^/]*\.def$|;
};
- find({ wanted => $get_set_defs_wanted, follow_fast=>1}, $topdir);
+ find({ wanted => $get_set_defs_wanted, follow_fast=>1, no_chdir=>1}, $topdir);
map { $_ =~ s|^$topdir/?|| } @found_set_defs;
return @found_set_defs;
}
@@ -673,7 +674,11 @@
my $ce = $r->ce;
my $library_selected = shift;
my $default_value = "Select a Set Definition File";
- my @list_of_set_defs = get_set_defs($ce->{courseDirs}{templates});
+ # in the following line, the parens after sort are important. if they are
+ # omitted, sort will interpret get_set_defs as the name of the comparison
+ # function, and ($ce->{courseDirs}{templates}) as a single element list to
+ # be sorted. *barf*
+ my @list_of_set_defs = sort(get_set_defs($ce->{courseDirs}{templates}));
if(scalar(@list_of_set_defs) == 0) {
@list_of_set_defs = (NO_LOCAL_SET_STRING);
} elsif (not $library_selected or $library_selected eq $default_value) {
|