--- loncom/homework/edit.pm 2008/08/26 03:18:29 1.115 +++ loncom/homework/edit.pm 2009/10/16 17:23:51 1.124 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # edit mode helpers # -# $Id: edit.pm,v 1.115 2008/08/26 03:18:29 raeburn Exp $ +# $Id: edit.pm,v 1.124 2009/10/16 17:23:51 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,6 +26,108 @@ # http://www.lon-capa.org/ # +=head1 NAME + +Apache::edit - edit mode helpers + +=head1 SYNOPSIS + +Invoked by many homework and xml related modules. + + &Apache::edit::SUBROUTINENAME(ARGUMENTS); + +=head1 INTRODUCTION + +This module outputs HTML syntax helpful for the rendering of edit +mode interfaces. + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 SUBROUTINES + +=over 4 + +=item initialize_edit() + +initialize edit (set colordepth to zero) + +=item tag_start($target,$token,$description) + +provide deletion and insertion lists +for the manipulation of a start tag; return a scalar string + +=item tag_end($target,$token,$description) + +ending syntax corresponding to +&tag_start. return a scalar string. + +=item start_table($token) + +start table; update colordepth; return scalar string. + +=item end_table() + +reduce color depth; end table; return scalar string + +=item start_spanning_row() + +start a new table row spanning the 'edit' environment. + +=item start_row() + +start a new table row and element. + +=item end_row() + +end current table element and row. + +=item movebuttons($target,$token) + +move-up and move-down buttons; return scalar string + +=item deletelist($target,$token) + +provide a yes option in an HTML select element; return scalar string + +=item handle_delete($space,$target,$token,$tagstack,$parstack,$parser,$safeeval, +$style) + +respond to a user delete request by passing relevant stack +and array information to various rendering functions; return a scalar string + +=item get_insert_list($token) + +provide an insertion list based on possibilities from lonxml; return a scalar string + +=item insertlist($target,$token) + +api that uses get_insert_list; return a scalar string + +=item handleinsert($token) + +provide an insertion list based on possibilities from lonxml; return a scalar string + +=item get_insert_list($token) + +provide an insertion list based on possibilities from lonxml; return a scalar string + +=item browse($elementname) + +provide a link which will open up the filesystem browser (lonindexer) and, once a file is selected, place the result in the form element $elementname. + +=item search($elementname) + +provide a link which will open up the filesystem searcher (lonsearchcat) and, once a file is selected, place the result in the form element $elementname. + +=item editline(tag,data,description,size) + +Provide a for single-line text entry. This is to be used for text enclosed by tags, not arguements/parameters associated with a tag. + +=back + +=cut + package Apache::edit; use strict; @@ -61,7 +163,7 @@ sub tag_start { if (!$description) { $description="<$tag>"; } } $result.= &start_table($token)."$description - Delete". + ".&mt('Delete?').' '. &deletelist($target,$token) ." ". @@ -100,7 +202,7 @@ sub start_table { $Apache::edit::colordepth++; push(@Apache::edit::inserttag,$token->[1]); my $result='
'; - $result.=''; + $result.='
'; return $result; } @@ -128,7 +230,7 @@ sub end_table { return $result; } -sub start_spanning_row { return ''; } @@ -145,7 +247,7 @@ sub deletelist { my ($target,$token) = @_; my $result = ""; return $result; } @@ -215,7 +317,7 @@ sub innerinsertlist { if ($target eq 'edit') { my $optionlist= &get_insert_list($tagname); if ($optionlist) { - $result = "Insert: + $result = &mt('Insert:')." " @@ -510,6 +612,18 @@ sub insert_numericalhint { '; } +sub insert_reactionhint { + return ' + +'; +} + +sub insert_organichint { + return ' + +'; +} + sub insert_stringhint { return ' @@ -740,15 +854,15 @@ sub checked_arg { $text=$option; $value='value="'.$option.'"'; } - $result.="\n"; + $result.=&element_change_detection().' />'.$text.''."\n"; } return $result; } @@ -761,7 +875,7 @@ sub text_arg { $result=&mt($description).' '; - return ''.$result.''; + return ''.$result.''; } sub select_arg { @@ -769,26 +883,28 @@ sub select_arg { my $result; my $optionlist=""; my $selected=$token->[2]{$name}; - foreach my $option (@$list) { - my ($text,$value); - if ( ref($option) eq 'ARRAY') { - $value='value="'.&HTML::Entities::encode($$option[0]).'"'; - $text=$$option[1]; - $option=$$option[0]; - } else { - $text=$option; - $value='value="'.&HTML::Entities::encode($option,'\'"&<>').'"'; - } - if ( $selected eq $option ) { - $optionlist.="\n"; - } else { - $optionlist.="\n"; - } + if (ref($list) eq 'ARRAY') { + foreach my $option (@{$list}) { + my ($text,$value); + if (ref($option) eq 'ARRAY') { + $value='value="'.&HTML::Entities::encode($option->[0]).'"'; + $text=$option->[1]; + $option=$option->[0]; + } else { + $text=$option; + $value='value="'.&HTML::Entities::encode($option,'\'"&<>').'"'; + } + if ( $selected eq $option ) { + $optionlist.="\n"; + } else { + $optionlist.="\n"; + } + } } - $result.=''.$description.'  '.$optionlist.' - '; + '; return $result; } @@ -798,22 +914,24 @@ sub select_or_text_arg { my $optionlist=""; my $found=0; my $selected=$token->[2]{$name}; - foreach my $option (@$list) { - my ($text,$value); - if ( ref($option) eq 'ARRAY') { - $value='value="'.&HTML::Entities::encode($$option[0]).'"'; - $text=$$option[1]; - $option=$$option[0]; - } else { - $text=$option; - $value='value="'.&HTML::Entities::encode($option,'\'"&<>').'"'; - } - if ( $selected eq $option ) { - $optionlist.="\n"; - $found=1; - } else { - $optionlist.="\n"; - } + if (ref($list) eq 'ARRAY') { + foreach my $option (@{$list}) { + my ($text,$value); + if (ref($option) eq 'ARRAY') { + $value='value="'.&HTML::Entities::encode($option->[0]).'"'; + $text=$option->[1]; + $option=$option->[0]; + } else { + $text=$option; + $value='value="'.&HTML::Entities::encode($option,'\'"&<>').'"'; + } + if ( $selected eq $option ) { + $optionlist.="\n"; + $found=1; + } else { + $optionlist.="\n"; + } + } } $optionlist.="
';} +sub start_spanning_row { return '
';} sub start_row { return '
'; } sub end_row { return '