--- loncom/interface/lonhelper.pm 2004/12/07 11:25:53 1.89 +++ loncom/interface/lonhelper.pm 2005/01/16 08:20:38 1.93 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # .helper XML handler to implement the LON-CAPA helper # -# $Id: lonhelper.pm,v 1.89 2004/12/07 11:25:53 foxr Exp $ +# $Id: lonhelper.pm,v 1.93 2005/01/16 08:20:38 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1760,7 +1760,7 @@ BEGIN { &Apache::lonhelper::register('Apache::lonhelper::resource', ('resource', 'filterfunc', 'choicefunc', 'valuefunc', - 'mapurl')); + 'mapurl','option')); } sub new { @@ -1865,6 +1865,42 @@ sub start_mapurl { sub end_mapurl { return ''; } + +sub start_option { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + if (!defined($paramHash->{OPTION_TEXTS})) { + $paramHash->{OPTION_TEXTS} = [ ]; + $paramHash->{OPTION_VARS} = [ ]; + + } + # OPTION_TEXTS is a list of the text attribute + # values used to create column headings. + # OPTION_VARS is a list of the variable names, used to create the checkbox + # inputs. + # We're ok with empty elements. as place holders + # Although the 'variable' element should really exist. + # + + my $option_texts = $paramHash->{OPTION_TEXTS}; + my $option_vars = $paramHash->{OPTION_VARS}; + push(@$option_texts, $token->[2]{'text'}); + push(@$option_vars, $token->[2]{'variable'}); + + # Need to create and declare the option variables as well to make them + # persistent. + # + my $varname = $token->[2]{'variable'}; + $helper->declareVar($varname); + + + return ''; +} + +sub end_option { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return ''; +} + # A note, in case I don't get to this before I leave. # If someone complains about the "Back" button returning them # to the previous folder state, instead of returning them to @@ -1916,10 +1952,13 @@ BUTTONS $result .= $buttons; - my $filterFunc = $self->{FILTER_FUNC}; - my $choiceFunc = $self->{CHOICE_FUNC}; - my $valueFunc = $self->{VALUE_FUNC}; - my $multichoice = $self->{'multichoice'}; + my $filterFunc = $self->{FILTER_FUNC}; + my $choiceFunc = $self->{CHOICE_FUNC}; + my $valueFunc = $self->{VALUE_FUNC}; + my $multichoice = $self->{'multichoice'}; + my $option_vars = $self->{OPTION_VARS}; + my $option_texts = $self->{OPTION_TEXTS}; + my $headings_done = 0; # Evaluate the map url as needed my $mapUrl; @@ -1937,15 +1976,40 @@ BUTTONS my $checked = 0; my $renderColFunc = sub { my ($resource, $part, $params) = @_; + my $result = ""; + + if(!$headings_done) { + if ($option_texts) { + foreach my $text (@$option_texts) { + $result .= "$text"; + } + } + $result .= "Select"; + $result .= ""; # Close off the extra row and start a new one. + $headings_done = 1; + } my $inputType; if ($multichoice) { $inputType = 'checkbox'; } else {$inputType = 'radio'; } if (!&$choiceFunc($resource)) { - return ' '; + $result .= ' '; + return $result; } else { - my $col = "&\"'"); + if($option_vars) { + foreach my $option_var (@$option_vars) { + $col .= + " "; + } + } + + $col .= "&\"'") - . "' />"; - return $col; + $col .= "value='" . $resource_name . "' />"; + return $result.$col; } }; @@ -2062,7 +2124,7 @@ sub start_student { $helper->declareVar($paramHash->{'variable'}); $paramHash->{'multichoice'} = $token->[2]{'multichoice'}; $paramHash->{'coursepersonnel'} = $token->[2]{'coursepersonnel'}; - $paramHash->{'sctiveonly'} = $token->[2]{'activeonly'}; + $paramHash->{'activeonly'} = $token->[2]{'activeonly'}; if (defined($token->[2]{'nextstate'})) { $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'}; } @@ -2132,13 +2194,25 @@ SCRIPT $buttons = < - -
- -
- -  - + + + + + + + + + + + + + + + + + + +


 

BUTTONS } @@ -2948,6 +3022,9 @@ will make a "Finish Helper" button that which is useful for the Course Initialization helper so the users never see the old values taking effect. +If the parameter "restartCourse" is not true a 'Finish' Button will be +presented that takes the user back to whatever was defined as + =cut no strict; @@ -3045,8 +3122,12 @@ sub render { $result .= ''; } + my $actionURL = $self->{EXIT_PAGE}; + my $targetURL = ''; + my $finish=&mt('Finish'); if ($self->{'restartCourse'}) { - my $targetURL = '/adm/menu'; + my $actionURL = '/adm/roles'; + $targetURL = '/adm/menu'; if ($ENV{'course.'.$ENV{'request.course.id'}.'.url'}=~/^uploaded/) { $targetURL = '/adm/coursedocs'; } else { @@ -3055,25 +3136,24 @@ sub render { if ($ENV{'course.'.$ENV{'request.course.id'}.'.clonedfrom'}) { $targetURL = '/adm/parmset?overview=1'; } - my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"'); - my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"'); - $result .= "
\n" . - "
\n" . - "" . - "" . - "\n" . - "\n\n" . - "
"; + my $finish=&mt('Finish Course Initialization'); } + my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"'); + my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"'); + $result .= "
\n" . + "
\n" . + "" . + "" . + "\n" . + "\n\n" . + "
"; return $result; } sub overrideForm { - my $self = shift; - return $self->{'restartCourse'}; + return 1; } 1;