--- loncom/homework/edit.pm 2002/11/03 19:16:19 1.38 +++ loncom/homework/edit.pm 2003/05/04 22:14:53 1.48 @@ -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.48 2003/05/04 22:14:53 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="

"; + my $result='
'; + $result.='
'; return $result; } sub end_table { $Apache::edit::colordepth--; - my $result="

"; - $result.= - "

". - &innerinsertlist('edit', - (defined($Apache::edit::inserttag[-2])?$Apache::edit::inserttag[-2]:'problem') -, - (defined($Apache::edit::inserttag[-1])?$Apache::edit::inserttag[-1]:'')). - "

"; + my $result=''; + $result.="
"; + + 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). + "
"; pop(@Apache::edit::inserttag); return $result; } -sub start_spanning_row { return '';} -sub start_row { return ''; } +sub start_spanning_row { return '';} +sub start_row { return ''; } sub end_row { return ''; } 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 { '; } +sub insert_rankresponse { + return ' + + + + + +'; +} + +sub insert_matchresponse { + return ' + + + + + + + +'; +} + sub insert_displayduedate { return ''; } sub insert_displaytitle { return ''; } sub insert_hintpart { @@ -338,6 +365,18 @@ sub insert_numericalhint { '; } +sub insert_stringhint { + return ' + +'; +} + +sub insert_formulahint { + return ' + +'; +} + sub insert_radiobuttonhint { return ' @@ -409,7 +448,8 @@ sub get_new_args { foreach my $arg (@args) { #just want the string that it was set to my $value=$token->[2]->{$arg}; - my $newvalue=$ENV{"form.$Apache::lonxml::curdepth.$arg"}; + my $element=&html_element_name($arg); + my $newvalue=$ENV{"form.$element"}; &Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:"); if ($value ne $newvalue) { $token->[2]->{$arg}=$newvalue; @@ -442,65 +482,101 @@ sub rebuild_tag { return $result; } +sub html_element_name { + my ($name) = @_; + return $name.'_'.$Apache::lonxml::curdepth; +} + +sub hidden_arg { + my ($name,$token) = @_; + my $result; + my $arg=$token->[2]{$name}; + $result=''; + return $result; +} + sub text_arg { my ($description,$name,$token,$size) = @_; my $result; if (!defined $size) { $size=20; } my $arg=$token->[2]{$name}; - $result=$description.''; 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.="\n"; - } else { - $optionlist.="\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.="\n"; + } else { + $optionlist.="\n"; + } } - } - $result.=$description.' '.$optionlist.' '; - 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.="\n"; - $found=1; - } else { - $optionlist.="\n"; - } - } - $optionlist.="\n"; - if (($found) || (!$selected)) { - $result.=$description.' '.$optionlist.' '; - } 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 ... + $element = &Apache::lonnet::escape('homework_edit_'. + $Apache::lonxml::curdepth); + } my $result = <<"ENDBUTTON"; Browse ENDBUTTON