--- loncom/interface/lonhelper.pm 2005/01/10 12:15:23 1.92 +++ loncom/interface/lonhelper.pm 2005/02/22 11:43:05 1.98 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # .helper XML handler to implement the LON-CAPA helper # -# $Id: lonhelper.pm,v 1.92 2005/01/10 12:15:23 foxr Exp $ +# $Id: lonhelper.pm,v 1.98 2005/02/22 11:43:05 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -575,6 +575,7 @@ sub display { } # Phase 4: Display. + my $html=&Apache::lonxml::xmlbegin(); my $stateTitle=&mt($state->title()); my $helperTitle = &mt($self->{TITLE}); my $bodytag = &Apache::loncommon::bodytag($helperTitle,'',''); @@ -584,9 +585,8 @@ sub display { my $loncapaHelper = &mt("LON-CAPA Helper:"); $result .= < +$html - $loncapaHelper: $helperTitle $bodytag @@ -1165,7 +1165,7 @@ sub start_choice { $parser)); my $nextstate = $token->[2]{'nextstate'}; my $evalFlag = $token->[2]{'eval'}; - push @{$paramHash->{CHOICES}}, [$human, $computer, $nextstate, + push @{$paramHash->{CHOICES}}, [&mtn($human), $computer, $nextstate, $evalFlag]; return ''; } @@ -1281,7 +1281,7 @@ BUTTONS $choiceLabel = &$choiceLabel($helper, $self); } $result .= "/> ".qq{\n"; + $choiceLabel. "\n"; } $result .= "\n\n\n"; $result .= $buttons; @@ -1715,7 +1715,9 @@ to false. The "suppressEmptySequences" a suppressEmptySequences argument to the render routine, which will cause folders that have all of their contained resources filtered out to also be filtered out. The 'addstatus' attribute, if true, will add the icon -and long status display columns to the display. +and long status display columns to the display. The 'addparts' +attribute will add in a part selector beside problems that have more +than 1 part. =head3 SUB-TAGS @@ -1782,6 +1784,10 @@ sub start_resource { $paramHash->{'suppressEmptySequences'} = $token->[2]{'suppressEmptySequences'}; $paramHash->{'toponly'} = $token->[2]{'toponly'}; $paramHash->{'addstatus'} = $token->[2]{'addstatus'}; + $paramHash->{'addparts'} = $token->[2]{'addparts'}; + if ($paramHash->{'addparts'}) { + $helper->declareVar($paramHash->{'variable'}.'_part'); + } $paramHash->{'closeallpages'} = $token->[2]{'closeallpages'}; return ''; } @@ -1955,9 +1961,10 @@ BUTTONS my $filterFunc = $self->{FILTER_FUNC}; my $choiceFunc = $self->{CHOICE_FUNC}; my $valueFunc = $self->{VALUE_FUNC}; - my $multichoice = $self->{'multichoice'}; + my $multichoice = $self->{'multichoice'}; my $option_vars = $self->{OPTION_VARS}; my $option_texts = $self->{OPTION_TEXTS}; + my $addparts = $self->{'addparts'}; my $headings_done = 0; # Evaluate the map url as needed @@ -1970,6 +1977,7 @@ BUTTONS $mapUrl = $self->{MAP_URL}; } + # Create the composite function that renders the column on the nav map # have to admit any language that lets me do this can't be all bad # - Jeremy (Pythonista) ;-) @@ -1998,14 +2006,19 @@ BUTTONS return $result; } else { my $col = ""; + my $raw_name = &$valueFunc($resource); my $resource_name = - HTML::Entities::encode(&$valueFunc($resource),"<>&\"'"); + HTML::Entities::encode($raw_name,"<>&\"'"); if($option_vars) { foreach my $option_var (@$option_vars) { + my $checked =""; + if($helper->{VARS}->{$option_var} =~ /$raw_name/) { + $checked = "checked"; + } $col .= " "; + $resource_name . "' $checked /> "; } } @@ -2019,12 +2032,51 @@ BUTTONS $checked = 1; } $col .= "value='" . $resource_name . "' />"; + return $result.$col; } }; + my $renderPartsFunc = sub { + my ($resource, $part, $params) = @_; + my $col= ""; + my $id=$resource->{ID}; + my $resource_name = + &HTML::Entities::encode(&$valueFunc($resource),"<>&\"'"); + if ($addparts && (scalar(@{$resource->parts}) > 1)) { + $col .= ""; + } + $col .= ""; + }; + $result.=(< + function updateRadio(form,name,value) { + var radiobutton=form[name]; + for (var i=0; i