From: Gavin L. v. a. <we...@ma...> - 2008-07-01 13:36:23
|
Log Message: ----------- SetMaker: update to make problems that are "tried" display according to the assignment type of the selected set. We may want to back this change out at some point: because the set type is determined when the page is built, changing the selected set doesn't change how viewed problems are displayed until the page is reloaded. I think the behavior introduced by this patch is better than showing all problems as homework problems, but it may be otherwise. 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.84 retrieving revision 1.85 diff -Llib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm -Llib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm -u -r1.84 -r1.85 --- lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm +++ lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm @@ -843,6 +843,19 @@ $sourceFileName =~ s|^./||; # clean up top ugliness my $urlpath = $self->r->urlpath; + my $db = $self->r->db; + + ## to set up edit and try links elegantly we want to know if + ## any target set is a gateway assignment or not + my $localSet = $self->r->param('local_sets'); + my $setRecord; + if ( defined($localSet) && $localSet ne SELECT_SET_STRING && + $localSet ne NO_LOCAL_SET_STRING ) { + $setRecord = $db->getGlobalSet( $localSet ); + } + my $isGatewaySet = ( defined($setRecord) && + $setRecord->assignment_type =~ /gateway/ ); + my $problem_output = $pg->{flags}->{error_flag} ? CGI::div({class=>"ResultsWithError"}, CGI::em("This problem produced an error")) : CGI::div({class=>"RenderSolo"}, $pg->{body_text}); @@ -862,19 +875,22 @@ my $displayMode = $self->r->param("mydisplayMode"); $displayMode = $self->r->ce->{pg}->{options}->{displayMode} if not defined $displayMode or $displayMode eq "None"; + my $module = ( $isGatewaySet ) ? "GatewayQuiz" : "Problem"; + my %pathArgs = ( courseID =>$urlpath->arg("courseID"), + setID=>"Undefined_Set" ); + $pathArgs{problemID} = "1" if ( ! $isGatewaySet ); + my $try_link = CGI::a({href=>$self->systemLink( - $urlpath->newFromModule("WeBWorK::ContentGenerator::Problem", - courseID =>$urlpath->arg("courseID"), - setID=>"Undefined_Set", - problemID=>"1"), - params =>{ - effectiveUser => scalar($self->r->param('user')), - editMode => "SetMaker", - problemSeed=> $problem_seed, - sourceFilePath => "$sourceFileName", - displayMode => $displayMode, - } - ), target=>"WW_View"}, "Try it"); + $urlpath->newFromModule("WeBWorK::ContentGenerator::$module", + %pathArgs ), + params =>{ + effectiveUser => scalar($self->r->param('user')), + editMode => "SetMaker", + problemSeed=> $problem_seed, + sourceFilePath => "$sourceFileName", + displayMode => $displayMode, + } + ), target=>"WW_View"}, "Try it"); my %add_box_data = ( -name=>"trial$cnt",-value=>1,-label=>"Add this problem to the target set on the next update"); if($mark & SUCCESS) { |