--- loncom/homework/edit.pm 2013/06/25 15:07:30 1.145 +++ loncom/homework/edit.pm 2015/01/19 15:35:53 1.153 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # edit mode helpers # -# $Id: edit.pm,v 1.145 2013/06/25 15:07:30 kruse Exp $ +# $Id: edit.pm,v 1.153 2015/01/19 15:35:53 goltermann Exp $ # # Copyright Michigan State University Board of Trustees # @@ -161,21 +161,18 @@ sub tag_start { if ($target eq "edit") { my $tag=$token->[1]; if (!$description) { - $description=&Apache::lonxml::description($token); + $description=&mt(&Apache::lonxml::description($token)); if (!$description) { $description="<$tag>"; } } - $result.= &start_table($token)."<tr><td>$description</td> - <td>".&mt('Delete?').' '. - &deletelist($target,$token) - ."</td> - <td>". - &insertlist($target,$token); + $result.= &start_table($token)."<tr><td>".&Apache::loncommon::insert_folding_button(). + " $description</td><td>".&mt('Delete?')." ".&deletelist($target,$token). + "</td><td>".&insertlist($target,$token); #<td>". # &movebuttons($target,$token). # "</tr><tr><td colspan=\"3\">\n"; my @help = Apache::lonxml::helpinfo($token); if ($help[0]) { - $result .= '</td><td align="right" valign="top">' . + $result .= '</td><td class="LC_edit_problem_latexhelper">'. Apache::loncommon::help_open_topic(@help); } else { $result .= "</td><td> "; } $result .= &end_row().&start_spanning_row(); @@ -203,7 +200,7 @@ sub start_table { } $Apache::edit::colordepth++; push(@Apache::edit::inserttag,$token->[1]); - my $result='<div align="right">'; + my $result='<div>'; $result.='<table bgcolor="'.$color.'" width="97%" border="0" cellspacing="3" cellpadding="2">'; return $result; } @@ -211,7 +208,7 @@ sub start_table { sub end_table { $Apache::edit::colordepth--; my $result='</table></div>'; - $result.='<div align="left"><table><tr><td>'; + $result.='<div><table><tr><td>'; my ($tagname,$closingtag); if (defined($Apache::edit::inserttag[-2])) { @@ -232,7 +229,10 @@ sub end_table { return $result; } -sub start_spanning_row { return '<tr><td colspan="5" bgcolor="#F0F0F0">';} +sub start_spanning_row { + return '<tr name="foldblock_'.$Apache::lonxml::curdepth. + '" style="visibility: \'\'"><td colspan="5" bgcolor="#F0F0F0">'; +} sub start_row { return '<tr><td bgcolor="#DDDDDD">'; } sub end_row { return '</td></tr>'; } @@ -296,7 +296,7 @@ sub get_insert_list { my $descrip=$Apache::lonxml::insertlist{"$tag.description"}; my $tagnum =$Apache::lonxml::insertlist{"$tag.num"}; $options{$descrip} ="<option value=\"$tagnum\">". - $descrip."</option>\n"; + &mt($descrip)."</option>\n"; } foreach my $option (sort(keys(%options))) {$result.=$options{$option};} if ($result) { $result='<option selected="selected"></option>'.$result; } @@ -667,6 +667,9 @@ sub insert_matchresponse { <matchresponse max="10"> <foilgroup options=""> <itemgroup> + <item> + <startouttext /><endouttext /> + </item> </itemgroup> <foil> <startouttext /><endouttext /> @@ -785,14 +788,59 @@ sub element_change_detection { sub submit_ask_anyway { my ($extra_action) = @_; - return ' onclick="still_ask=true;'.$extra_action.'" '; + my $resource = $env{'request.ambiguous'}; + return ' onclick="saveScrollPosition(\''.$resource.'\');still_ask=true;'.$extra_action.';" '; } sub submit_dont_ask { my ($extra_action) = @_; - return ' onclick="is_submit=true;'.$extra_action.'" '; + my $resource = $env{'request.ambiguous'}; + return ' onclick="saveScrollPosition(\''.$resource.'\');is_submit=true;'.$extra_action.';" '; +} + +sub js_update_linknum { + return (<<SCRIPT); +<script type="text/javascript"> +// <![CDATA[ +function updateNumber(name,index,caller,textprompt) { + var pickitem = document.getElementById(name+'_'+index); + var picknumtext = document.getElementById(name+'_numtext_'+index); + if (pickitem.checked) { + var showval = ''; + if (pickitem.value != 'nochoice') { + showval = pickitem.value; + } + var picknum=prompt(textprompt,showval); + if (picknum == '' || picknum == null) { + if (caller == 'check') { + pickitem.checked=false; + pickitem.value='nochoice'; + } + } else { + picknum.toString(); + var regexdigit=/^\\d+\$/; + if (regexdigit.test(picknum)) { + pickitem.value = picknum; + picknumtext.innerHTML = ' <a href="javascript:updateNumber(\\''+name+'\\',\\''+index+'\\',\\'link\\',\\''+textprompt+'\\');">'+picknum+'</a>'; + } else { + if (caller == 'check') { + pickitem.checked=false; + pickitem.value='nochoice'; + } + return; + } + } + } else { + pickitem.value = ''; + picknumtext.innerHTML = ''; + } } +// ]]> +</script> +SCRIPT + +} sub textarea_sizes { my ($data)=@_; @@ -938,7 +986,7 @@ sub hidden_arg { } sub checked_arg { - my ($description,$name,$list,$token) = @_; + my ($description,$name,$list,$token,$onclick,$useid) = @_; my $result; my $optionlist=""; my $allselected=$token->[2]{$name}; @@ -947,10 +995,10 @@ sub checked_arg { my ($value,$text); if ( ref($option) eq 'ARRAY') { $value='value="'.$$option[0].'"'; - $text=$$option[1]; + $text=&mt($$option[1]); $option=$$option[0]; } else { - $text=$option; + $text=&mt($option); $value='value="'.$option.'"'; } $result.=' <span class="LC_edit_opt"><label><input type="checkbox" '.$value.' name="'. @@ -961,7 +1009,10 @@ sub checked_arg { last; } } - $result.=&element_change_detection().' />'.$text.'</label></span>'."\n"; + if ($useid) { + $result .= ' id="'.&html_element_name($name).'" '; + } + $result.=&element_change_detection().$onclick.' />'.$text.'</label></span>'."\n"; } return $result; } @@ -1057,13 +1108,13 @@ sub select_or_text_arg { <span class="LC_edit_opt"> $description <select name="$selectelement" -onChange="if ($selectedvalue!='TYPEDINVALUE') { $hiddenvalue=$selectedvalue; $typedinvalue=''; }" > +onchange="if ($selectedvalue!='TYPEDINVALUE') { $hiddenvalue=$selectedvalue; $typedinvalue=''; }" > $optionlist </select> <input type="text" size="$size" name="$typeinelement" value="$typeinvalue" -onChange="$hiddenvalue=$typedinvalue;" -onFocus="$selectedindex=$selecttypeinindex-1;" /> +onchange="$hiddenvalue=$typedinvalue;" +onfocus="$selectedindex=$selecttypeinindex-1;" /> <input type="hidden" name="$element" value="$selected" $change_code /> </span> ENDSELECTORTYPE