--- loncom/homework/edit.pm 2002/11/07 19:45:16 1.39 +++ loncom/homework/edit.pm 2003/05/09 22:10:12 1.50 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # edit mode helpers # -# $Id: edit.pm,v 1.39 2002/11/07 19:45:16 albertel Exp $ +# $Id: edit.pm,v 1.50 2003/05/09 22:10:12 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -40,6 +40,9 @@ use HTML::Entities(); # depth of nesting of edit $Apache::edit::colordepth=0; @Apache::edit::inserttag=(); +# image-type responses: active background image and curdepth at definition +$Apache::edit::bgimgsrc=''; +$Apache::edit::bgimgsrccurdepth=''; sub initialize_edit { $Apache::edit::colordepth=0; @@ -99,14 +102,14 @@ sub start_table { } $Apache::edit::colordepth++; push(@Apache::edit::inserttag,$token->[1]); - my $result='

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

'; + my $result=''; $result.="'; } sub movebuttons { @@ -159,7 +162,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); @@ -327,6 +330,28 @@ sub insert_radiobuttonresponse { '; } +sub insert_rankresponse { + return ' + + + + + +'; +} + +sub insert_matchresponse { + return ' + + + + + + + +'; +} + sub insert_displayduedate { return ''; } sub insert_displaytitle { return ''; } sub insert_hintpart { @@ -343,12 +368,30 @@ sub insert_numericalhint { '; } +sub insert_stringhint { + return ' + +'; +} + +sub insert_formulahint { + return ' + +'; +} + sub insert_radiobuttonhint { return ' '; } +sub insert_optionhint { + return ' + +'; +} + sub insert_startouttext { return "\n"; } @@ -414,7 +457,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; @@ -447,12 +491,26 @@ 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; } @@ -476,8 +534,8 @@ sub select_arg { $optionlist.="\n"; } } - $result.=$description.' '.$optionlist.' '; return $result; @@ -506,7 +564,8 @@ sub select_or_text_arg { } $optionlist.="\n"; if (($found) || (!$selected)) { - $result.=$description.' '.$optionlist.' '; } else { @@ -515,12 +574,76 @@ sub select_or_text_arg { return $result; } +#----------------------------------------------------- image coordinates +# single image coordinates, x, y +sub entercoords { + my ($idx,,$idy,$mode,$width,$height) = @_; + unless ($Apache::edit::bgimgsrc) { return ''; } + if ($idx) { $idx.='_'; } + if ($idy) { $idy.='_'; } + my $bgfile=&Apache::lonnet::escape($Apache::edit::bgimgsrc); + my $form = 'lonhomework'; + my $element; + if (! defined($mode) || $mode eq 'attribute') { + $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth"); + } elsif ($mode eq 'textnode') { # for data between ... + $element = &Apache::lonnet::escape('homework_edit_'. + $Apache::lonxml::curdepth); + } + my $formheight=''; + if ($height) { + $formheight='&formheight='.$height.'_'.$Apache::edit::bgimgsrccurdepth; + } + my $formwidth=''; + if ($width) { + $formwidth='&formwidth='.$width.'_'.$Apache::edit::bgimgsrccurdepth; + } + my $result = <<"ENDBUTTON"; +Click Coordinates +ENDBUTTON + return $result; +} + +# coordinate pair (x1,y1)-(x2,y2) +sub entercoordpair { + my ($id,$mode,$width,$height) = @_; + unless ($Apache::edit::bgimgsrc) { return ''; } + my $bgfile=&Apache::lonnet::escape($Apache::edit::bgimgsrc); + my $form = 'lonhomework'; + my $element; + if (! defined($mode) || $mode eq 'attribute') { + $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth"); + } elsif ($mode eq 'textnode') { # for data between ... + $element = &Apache::lonnet::escape('homework_edit_'. + $Apache::lonxml::curdepth); + } + my $formheight=''; + if ($height) { + $formheight='&formheight='.$height.'_'.$Apache::edit::bgimgsrccurdepth; + } + my $formwidth=''; + if ($width) { + $formwidth='&formwidth='.$width.'_'.$Apache::edit::bgimgsrccurdepth; + } + my $result = <<"ENDBUTTON"; +Click Coordinate Pair +ENDBUTTON + 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("$id\_$Apache::lonxml::curdepth"); + } elsif ($mode eq 'textnode') { # for data between ... + $element = &Apache::lonnet::escape('homework_edit_'. + $Apache::lonxml::curdepth); + } my $result = <<"ENDBUTTON"; Browse ENDBUTTON @@ -530,9 +653,15 @@ ENDBUTTON #----------------------------------------------------- browse sub search { # 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("$id\_$Apache::lonxml::curdepth"); + } elsif ($mode eq 'textnode') { # for data between ... + $element = &Apache::lonnet::escape('homework_edit_'. + $Apache::lonxml::curdepth); + } my $result = <<"ENDBUTTON"; Search ENDBUTTON
"; my ($tagname,$closingtag); @@ -122,8 +125,8 @@ sub end_table { return $result; } -sub start_spanning_row { return '
';} -sub start_row { return '
'; } +sub start_spanning_row { return '
';} +sub start_row { return '
'; } sub end_row { return '