--- loncom/homework/edit.pm 2003/06/09 22:42:49 1.54 +++ loncom/homework/edit.pm 2003/10/16 18:36:22 1.57.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # edit mode helpers # -# $Id: edit.pm,v 1.54 2003/06/09 22:42:49 albertel Exp $ +# $Id: edit.pm,v 1.57.2.4 2003/10/16 18:36:22 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -75,13 +75,7 @@ sub tag_end { my ($target,$token,$description) = @_; my $result=''; if ($target eq 'edit') { - my $tag=$token->[1]; - if (!defined($description)) { - $result.="</td></tr><tr><td></$tag></td><td colspan=\"2\"> </td>"; - } else { - if ($description ne '') { $result.="</td></tr><tr><td>$description</td><td colspan=\"2\"> </td>"; } - } - $result.="</tr>".&end_table()."\n"; + $result.="</td></tr>".&end_table()."\n"; } return $result; } @@ -464,17 +458,21 @@ sub modifiedfield { # Returns a 1 if the token has been modified and you should rebuild the tag # side-effects, will modify the $token if new values are found sub get_new_args { - my ($token,$parstack,$safeeval,@args)=@_; - my $rebuild=0; - foreach my $arg (@args) { + my ($token,$parstack,$safeeval,@args)=@_; + my $rebuild=0; + foreach my $arg (@args) { #just want the string that it was set to my $value=$token->[2]->{$arg}; my $element=&html_element_name($arg); my $newvalue=$ENV{"form.$element"}; &Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:"); if (defined($newvalue) && $value ne $newvalue) { - $token->[2]->{$arg}=$newvalue; - $rebuild=1; + if (ref($newvalue) eq 'ARRAY') { + $token->[2]->{$arg}=join(',',@$newvalue); + } else { + $token->[2]->{$arg}=$newvalue; + } + $rebuild=1; } } return $rebuild; @@ -517,6 +515,35 @@ sub hidden_arg { return $result; } +sub checked_arg { + my ($description,$name,$list,$token) = @_; + my $result; + my $optionlist=""; + my $allselected=$token->[2]{$name}; + $result=$description; + foreach my $option (@$list) { + my ($value,$text); + if ( ref($option) eq 'ARRAY') { + $value='value="'.$$option[0].'"'; + $text=$$option[1]; + $option=$$option[0]; + } else { + $text=$option; + $value='value="'.$option.'"'; + } + $result.="<nobr><input type='checkbox' $value name='". + &html_element_name($name)."'"; + foreach my $selected (split(/,/,$allselected)) { + if ( $selected eq $option ) { + $result.=" checked='on' "; + last; + } + } + $result.=" />$text</nobr>\n"; + } + return $result; +} + sub text_arg { my ($description,$name,$token,$size) = @_; my $result; @@ -524,7 +551,7 @@ sub text_arg { my $arg=$token->[2]{$name}; $result=$description.' <input name="'.&html_element_name($name). '" type="text" value="'.$arg.'" size="'.$size.'" />'; - return $result; + return '<nobr>'.$result.'</nobr>'; } sub select_arg { @@ -533,23 +560,25 @@ sub select_arg { my $optionlist=""; my $selected=$token->[2]{$name}; foreach my $option (@$list) { - my $value; + my ($text,$value); if ( ref($option) eq 'ARRAY') { $value='value="'.$$option[0].'"'; - $option=$$option[1]; + $text=$$option[1]; + $option=$$option[0]; } else { + $text=$option; $value='value="'.$option.'"'; } if ( $selected eq $option ) { - $optionlist.="<option $value selected=\"on\">$option</option>\n"; + $optionlist.="<option $value selected=\"on\">$text</option>\n"; } else { - $optionlist.="<option $value >$option</option>\n"; + $optionlist.="<option $value >$text</option>\n"; } } - $result.=$description.' <select name="'.&html_element_name($name). - '"> + $result.='<nobr>'.$description.' <select name="'. + &html_element_name($name).'"> '.$optionlist.' - </select>'; + </select></nobr>'; return $result; } @@ -560,18 +589,20 @@ sub select_or_text_arg { my $found=0; my $selected=$token->[2]{$name}; foreach my $option (@$list) { - my $value; + my ($text,$value); if ( ref($option) eq 'ARRAY') { $value='value="'.$$option[0].'"'; - $option=$$option[1]; + $text=$$option[1]; + $option=$$option[0]; } else { + $text=$option; $value='value="'.$option.'"'; } if ( $selected eq $option ) { - $optionlist.="<option $value selected=\"on\">$option</option>\n"; + $optionlist.="<option $value selected=\"on\">$text</option>\n"; $found=1; } else { - $optionlist.="<option $value>$option</option>\n"; + $optionlist.="<option $value>$text</option>\n"; } } $optionlist.="<option value=\"TYPEDINVALUE\">Type in value</option>\n"; @@ -583,7 +614,7 @@ sub select_or_text_arg { } else { $result.=&text_arg($description,$name,$token,$size); } - return $result; + return '<nobr>'.$result.'</nobr>'; } #----------------------------------------------------- image coordinates @@ -657,7 +688,7 @@ sub browse { $Apache::lonxml::curdepth); } my $result = <<"ENDBUTTON"; -<a href=\"javascript:openbrowser('$form','$element')\"\>Browse</a> +<a href=\"javascript:openbrowser('$form','$element')\"\>Select</a> ENDBUTTON return $result; }