From: Sam H. v. a. <we...@ma...> - 2005-10-11 22:07:10
|
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) { |