--- loncom/homework/edit.pm 2002/11/03 19:16:19 1.38 +++ loncom/homework/edit.pm 2003/02/13 23:53:33 1.46 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # edit mode helpers # -# $Id: edit.pm,v 1.38 2002/11/03 19:16:19 www Exp $ +# $Id: edit.pm,v 1.46 2003/02/13 23:53:33 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -99,26 +99,31 @@ sub start_table { } $Apache::edit::colordepth++; push(@Apache::edit::inserttag,$token->[1]); - my $result="<p align=\"right\"><table bgcolor=\"$color\" width=\"95%\" border=\"2\">"; + my $result='<div align="right">'; + $result.='<table bgcolor="'.$color.'" width="97%" border="0" cellspacing="5" cellpadding="3">'; return $result; } sub end_table { $Apache::edit::colordepth--; - my $result="</table></p>"; - $result.= - "<p><table width=\"100%\"><tr><td>". - &innerinsertlist('edit', - (defined($Apache::edit::inserttag[-2])?$Apache::edit::inserttag[-2]:'problem') -, - (defined($Apache::edit::inserttag[-1])?$Apache::edit::inserttag[-1]:'')). - "</td></tr></table></p>"; + my $result='</table></div>'; + $result.="<table><tr><td>"; + + my ($tagname,$closingtag); + if (defined($Apache::edit::inserttag[-2])) { + $tagname=$Apache::edit::inserttag[-2]; + } else {$tagname='problem';} + if (defined($Apache::edit::inserttag[-1])) { + $closingtag=$Apache::edit::inserttag[-1]; + } + $result.=&innerinsertlist('edit',$tagname,$closingtag). + "</td></tr></table>"; pop(@Apache::edit::inserttag); return $result; } -sub start_spanning_row { return '<tr><td colspan="3">';} -sub start_row { return '<tr><td>'; } +sub start_spanning_row { return '<tr><td colspan="3" bgcolor="#DDDDDD">';} +sub start_row { return '<tr><td bgcolor="#DDDDDD">'; } sub end_row { return '</td></tr>'; } sub movebuttons { @@ -154,7 +159,7 @@ sub handle_delete { } if (!$result) { my $endtag='/'.$token->[1]; - my $bodytext=&Apache::lonxml::get_all_text($endtag,$$parser[$#$parser]); + my $bodytext=&Apache::lonxml::get_all_text($endtag,$parser); $$parser['-1']->get_token(); &Apache::lonxml::debug("Deleting :$bodytext: for $token->[1]"); &Apache::lonxml::end_tag($tagstack,$parstack,$token); @@ -322,6 +327,28 @@ sub insert_radiobuttonresponse { </radiobuttonresponse>'; } +sub insert_rankresponse { + return ' +<rankresponse max="10"> + <foilgroup options=""> + </foilgroup> + <hintgroup> + </hintgroup> +</rankresponse>'; +} + +sub insert_matchresponse { + return ' +<matchresponse max="10"> + <foilgroup options=""> + <itemgroup> + </itemgroup> + </foilgroup> + <hintgroup> + </hintgroup> +</matchresponse>'; +} + sub insert_displayduedate { return '<displayduedate />'; } sub insert_displaytitle { return '<displaytitle />'; } sub insert_hintpart { @@ -338,6 +365,18 @@ sub insert_numericalhint { </numericalhint>'; } +sub insert_stringhint { + return ' +<stringhint> +</stringhint>'; +} + +sub insert_formulahint { + return ' +<formulahint> +</formulahint>'; +} + sub insert_radiobuttonhint { return ' <radiobuttonhint> @@ -447,60 +486,81 @@ sub text_arg { my $result; if (!defined $size) { $size=20; } my $arg=$token->[2]{$name}; - $result=$description.'<input name="'."$Apache::lonxml::curdepth.$name". + $result=$description.' <input name="'."$Apache::lonxml::curdepth.$name". '" type="text" value="'.$arg.'" size="'.$size.'" />'; return $result; } sub select_arg { - my ($description,$name,$list,$token) = @_; - my $result; - my $optionlist=""; - my $selected=$token->[2]{$name}; - foreach my $option (@$list) { - if ( $selected eq $option ) { - $optionlist.="<option selected=\"on\">$option</option>\n"; - } else { - $optionlist.="<option>$option</option>\n"; + my ($description,$name,$list,$token) = @_; + my $result; + my $optionlist=""; + my $selected=$token->[2]{$name}; + foreach my $option (@$list) { + my $value; + if ( ref($option) eq 'ARRAY') { + $value='value="'.$$option[0].'"'; + $option=$$option[1]; + } else { + $value='value="'.$option.'"'; + } + if ( $selected eq $option ) { + $optionlist.="<option $value selected=\"on\">$option</option>\n"; + } else { + $optionlist.="<option $value >$option</option>\n"; + } } - } - $result.=$description.'<select name="'."$Apache::lonxml::curdepth.$name".'"> + $result.=$description.' <select name="'. + "$Apache::lonxml::curdepth.$name".'"> '.$optionlist.' </select>'; - return $result; + return $result; } sub select_or_text_arg { - my ($description,$name,$list,$token,$size) = @_; - my $result; - my $optionlist=""; - my $found=0; - my $selected=$token->[2]{$name}; - foreach my $option (@$list) { - if ( $selected eq $option ) { - $optionlist.="<option selected=\"on\">$option</option>\n"; - $found=1; - } else { - $optionlist.="<option>$option</option>\n"; - } - } - $optionlist.="<option value=\"TYPEDINVALUE\">Type in value</option>\n"; - if (($found) || (!$selected)) { - $result.=$description.'<select name="'."$Apache::lonxml::curdepth.$name".'"> + my ($description,$name,$list,$token,$size) = @_; + my $result; + my $optionlist=""; + my $found=0; + my $selected=$token->[2]{$name}; + foreach my $option (@$list) { + my $value; + if ( ref($option) eq 'ARRAY') { + $value='value="'.$$option[0].'"'; + $option=$$option[1]; + } else { + $value='value="'.$option.'"'; + } + if ( $selected eq $option ) { + $optionlist.="<option $value selected=\"on\">$option</option>\n"; + $found=1; + } else { + $optionlist.="<option $value>$option</option>\n"; + } + } + $optionlist.="<option value=\"TYPEDINVALUE\">Type in value</option>\n"; + if (($found) || (!$selected)) { + $result.=$description.' <select name="'."$Apache::lonxml::curdepth.$name".'"> '.$optionlist.' </select>'; - } else { - $result.=&text_arg($description,$name,$token,$size); - } - return $result; + } else { + $result.=&text_arg($description,$name,$token,$size); + } + return $result; } #----------------------------------------------------- browse sub browse { # insert a link to call up the filesystem browser (lonindexer) - $_ = shift; + my ($id, $mode) = @_; my $form = 'lonhomework'; - my $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$_"); + my $element; + if (! defined($mode) || $mode eq 'attribute') { + $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$id"); + } elsif ($mode eq 'textnode') { # for data between <tag> ... </tag> + $element = &Apache::lonnet::escape('homework_edit_'. + $Apache::lonxml::curdepth); + } my $result = <<"ENDBUTTON"; <a href=\"javascript:openbrowser('$form','$element')\"\>Browse</a> ENDBUTTON