Diff for /loncom/homework/edit.pm between versions 1.132 and 1.153

version 1.132, 2010/11/07 01:57:50 version 1.153, 2015/01/19 15:35:53
Line 161  sub tag_start { Line 161  sub tag_start {
     if ($target eq "edit") {      if ($target eq "edit") {
  my $tag=$token->[1];   my $tag=$token->[1];
  if (!$description) {   if (!$description) {
     $description=&Apache::lonxml::description($token);      $description=&mt(&Apache::lonxml::description($token));
     if (!$description) { $description="<$tag>"; }      if (!$description) { $description="<$tag>"; }
  }   }
  $result.= &start_table($token)."<tr><td>$description</td>      $result.= &start_table($token)."<tr><td>".&Apache::loncommon::insert_folding_button().
                       <td>".&mt('Delete?').' '.          " $description</td><td>".&mt('Delete?')." ".&deletelist($target,$token).
       &deletelist($target,$token)          "</td><td>".&insertlist($target,$token);
       ."</td>  
                        <td>".  
        &insertlist($target,$token);  
 #<td>".   #<td>". 
 #  &movebuttons($target,$token).  #  &movebuttons($target,$token).
 #    "</tr><tr><td colspan=\"3\">\n";  #    "</tr><tr><td colspan=\"3\">\n";
  my @help = Apache::lonxml::helpinfo($token);   my @help = Apache::lonxml::helpinfo($token);
  if ($help[0]) {   if ($help[0]) {
     $result .= '</td><td align="right" valign="top">' .      $result .= '</td><td class="LC_edit_problem_latexhelper">'.
  Apache::loncommon::help_open_topic(@help);   Apache::loncommon::help_open_topic(@help);
  } else { $result .= "</td><td>&nbsp;"; }   } else { $result .= "</td><td>&nbsp;"; }
  $result .= &end_row().&start_spanning_row();   $result .= &end_row().&start_spanning_row();
Line 203  sub start_table { Line 200  sub start_table {
     }      }
     $Apache::edit::colordepth++;      $Apache::edit::colordepth++;
     push(@Apache::edit::inserttag,$token->[1]);      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">';      $result.='<table bgcolor="'.$color.'" width="97%" border="0" cellspacing="3" cellpadding="2">';
     return $result;      return $result;
 }  }
Line 211  sub start_table { Line 208  sub start_table {
 sub end_table {  sub end_table {
     $Apache::edit::colordepth--;      $Apache::edit::colordepth--;
     my $result='</table></div>';      my $result='</table></div>';
     $result.='<div align="left"><table><tr><td>';      $result.='<div><table><tr><td>';
   
     my ($tagname,$closingtag);      my ($tagname,$closingtag);
     if (defined($Apache::edit::inserttag[-2])) {      if (defined($Apache::edit::inserttag[-2])) {
Line 232  sub end_table { Line 229  sub end_table {
     return $result;      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 start_row          { return '<tr><td bgcolor="#DDDDDD">';            }
 sub end_row            { return '</td></tr>';          }  sub end_row            { return '</td></tr>';          }
   
Line 296  sub get_insert_list { Line 296  sub get_insert_list {
     my $descrip=$Apache::lonxml::insertlist{"$tag.description"};      my $descrip=$Apache::lonxml::insertlist{"$tag.description"};
     my $tagnum =$Apache::lonxml::insertlist{"$tag.num"};      my $tagnum =$Apache::lonxml::insertlist{"$tag.num"};
     $options{$descrip} ="<option value=\"$tagnum\">".      $options{$descrip} ="<option value=\"$tagnum\">".
  $descrip."</option>\n";   &mt($descrip)."</option>\n";
  }   }
  foreach my $option (sort(keys(%options))) {$result.=$options{$option};}   foreach my $option (sort(keys(%options))) {$result.=$options{$option};}
  if ($result) { $result='<option selected="selected"></option>'.$result; }   if ($result) { $result='<option selected="selected"></option>'.$result; }
Line 400  sub insert_formularesponse { Line 400  sub insert_formularesponse {
 sub insert_functionplotresponse {  sub insert_functionplotresponse {
     return '      return '
 <functionplotresponse>  <functionplotresponse>
 <spline />  <functionplotelements>
 <functionplotrule />  </functionplotelements>
   <functionplotruleset>
   </functionplotruleset>
 </functionplotresponse>';  </functionplotresponse>';
 }  }
   
Line 415  sub insert_backgroundplot { Line 417  sub insert_backgroundplot {
 <backgroundplot />';  <backgroundplot />';
 }  }
   
   sub insert_plotobject {
       return '
   <plotobject />';
   }
   
   sub insert_plotvector {
       return '
   <plotvector />';
   }
   
   sub insert_drawvectorsum {
       return '
   <drawvectorsum />';
   }
   
   
 sub insert_functionplotrule {  sub insert_functionplotrule {
     return '      return '
 <functionplotrule />';  <functionplotrule />';
 }  }
   
   sub insert_functionplotvectorrule {
       return '
   <functionplotvectorrule />';
   }
   
   sub insert_functionplotvectorsumrule {
       return '
   <functionplotvectorsumrule />';
   }
   
   sub insert_functionplotcustomrule {
       return '
   <functionplotcustomrule>
   <answer type="loncapa/perl">
   # &fpr_val("label"), &fpr_f($x), &fpr_dfdx($x), &fpr_d2fdx2($x)
   # ($xs,$xe,$ys,$ye)=&fpr_vectorcoords("Name"), ($x,$y)=&fpr_objectcoords("Name")
   # &fpr_vectorlength("Name"), &fpr_vectorangle("Name")
    
   # Return 0 or 1
   return 1;
   </answer>
   </functionplotcustomrule>';
   }
   
   sub insert_functionplotruleset {
       return '
   <functionplotruleset>
   <functionplotrule />
   </functionplotruleset>';
   }
   
   sub insert_functionplotelements {
       return '
   <functionplotelements>
   <spline />
   </functionplotelements>';
   }
   
 sub insert_numericalresponse {  sub insert_numericalresponse {
     return '      return '
Line 434  sub insert_numericalresponse { Line 488  sub insert_numericalresponse {
 </numericalresponse>';  </numericalresponse>';
 }  }
   
   sub insert_externalresponse {
       return '
   <externalresponse url="" answer="" answerdisplay="" form="">
       <textfield spellcheck="none" />
   </externalresponse>';
   }
   
 sub insert_customresponse {  sub insert_customresponse {
     return '      return '
 <customresponse>  <customresponse>
Line 606  sub insert_matchresponse { Line 667  sub insert_matchresponse {
 <matchresponse max="10">  <matchresponse max="10">
     <foilgroup options="">      <foilgroup options="">
       <itemgroup>        <itemgroup>
           <item>
             <startouttext /><endouttext />
           </item>
       </itemgroup>        </itemgroup>
       <foil>        <foil>
          <startouttext /><endouttext />           <startouttext /><endouttext />
Line 690  sub js_change_detection { Line 754  sub js_change_detection {
     my $unsaved=&mt("There are unsaved changes");      my $unsaved=&mt("There are unsaved changes");
     return (<<SCRIPT);      return (<<SCRIPT);
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 var clean = true;  var clean = true;
 var is_submit = false;  var is_submit = false;
 var still_ask = false;  var still_ask = false;
Line 708  function unClean() { Line 773  function unClean() {
      clean=false;       clean=false;
 }  }
 window.onbeforeunload = compareForm;  window.onbeforeunload = compareForm;
   // ]]>
 </script>  </script>
 SCRIPT  SCRIPT
 }  }
Line 722  sub element_change_detection { Line 788  sub element_change_detection {
   
 sub submit_ask_anyway {  sub submit_ask_anyway {
     my ($extra_action) = @_;      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) = @_;
       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 = '&nbsp;<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 {  sub textarea_sizes {
Line 766  sub editfield { Line 883  sub editfield {
     if ($cols > 80) { $cols = 80; }      if ($cols > 80) { $cols = 80; }
     if ($cols < $minwidth ) { $cols = $minwidth; }      if ($cols < $minwidth ) { $cols = $minwidth; }
     if ($rows < $minheight) { $rows = $minheight; }      if ($rows < $minheight) { $rows = $minheight; }
     if ($description) { $description=$description."<br />"; }      if ($description) { $description='<br />'.&mt($description).'<br />'; }
   
     # remove typesetting whitespace from between data and the end tag      # remove typesetting whitespace from between data and the end tag
     # to make the edit look prettier      # to make the edit look prettier
     $data =~ s/\n?[ \t]*$//;      $data =~ s/\n?[ \t]*$//;
   
     return $description."\n".'<textarea style="width:100%" rows="'.$rows.      return $description."\n".'<textarea style="width:99%" rows="'.$rows.
  '" cols="'.$cols.'" name="homework_edit_'.   '" cols="'.$cols.'" name="homework_edit_'.
  $Apache::lonxml::curdepth.'" id="homework_edit_'.   $Apache::lonxml::curdepth.'" id="homework_edit_'.
  $Apache::lonxml::curdepth.'" '.&element_change_detection().   $Apache::lonxml::curdepth.'" '.&element_change_detection().
         $textareaclass.'>'.          $textareaclass.'>'.
  &HTML::Entities::encode($data,'<>&"').'</textarea>'.   &HTML::Entities::encode($data,'<>&"').'</textarea>'.
  ($usehtmlarea?&Apache::lonhtmlcommon::spelllink('lonhomework',          ($usehtmlarea?'<br />'.&Apache::lonhtmlcommon::spelllink('lonhomework',
  'homework_edit_'.$Apache::lonxml::curdepth):'')."\n";                                     'homework_edit_'.$Apache::lonxml::curdepth):'')."\n";
 }  }
   
 sub modifiedfield {  sub modifiedfield {
Line 869  sub hidden_arg { Line 986  sub hidden_arg {
 }  }
   
 sub checked_arg {  sub checked_arg {
     my ($description,$name,$list,$token) = @_;      my ($description,$name,$list,$token,$onclick,$useid) = @_;
     my $result;      my $result;
     my $optionlist="";      my $optionlist="";
     my $allselected=$token->[2]{$name};      my $allselected=$token->[2]{$name};
Line 878  sub checked_arg { Line 995  sub checked_arg {
  my ($value,$text);   my ($value,$text);
  if ( ref($option) eq 'ARRAY') {   if ( ref($option) eq 'ARRAY') {
     $value='value="'.$$option[0].'"';      $value='value="'.$$option[0].'"';
     $text=$$option[1];      $text=&mt($$option[1]);
     $option=$$option[0];      $option=$$option[0];
  } else {   } else {
     $text=$option;      $text=&mt($option);
     $value='value="'.$option.'"';      $value='value="'.$option.'"';
  }   }
  $result.='<span class="LC_nobreak"><label><input type="checkbox" '.$value.' name="'.          $result.=' <span class="LC_edit_opt"><label><input type="checkbox" '.$value.' name="'.
     &html_element_name($name).'"';      &html_element_name($name).'"';
  foreach my $selected (split(/,/,$allselected)) {   foreach my $selected (split(/,/,$allselected)) {
     if ( $selected eq $option ) {      if ( $selected eq $option ) {
Line 892  sub checked_arg { Line 1009  sub checked_arg {
  last;   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;      return $result;
 }  }
   
 sub text_arg {  sub text_arg {
     my ($description,$name,$token,$size) = @_;      my ($description,$name,$token,$size, $class) = @_;
     my $result;      my $result;
     if (!defined $size) { $size=20; }      if (!defined $size) { $size=20; }
     my $arg=$token->[2]{$name};      my $arg=$token->[2]{$name};
     $result=&mt($description).'&nbsp;<input name="'.&html_element_name($name).      $result=&mt($description).'&nbsp;<input name="'.&html_element_name($name).
  '" type="text" value="'.$arg.'" size="'.$size.'" '.   '" type="text" value="'.$arg.'" size="'.$size.'" ';
  &element_change_detection().'/>';      if (defined $class) {
     return '<span class="LC_nobreak">'.$result.'</span>';   $result .= 'class="' . $class . '" ';
       }
       $result .= &element_change_detection().'/>';
       return ' <span class="LC_edit_opt">'.$result.'</span>';
 }  }
   
 sub select_arg {  sub select_arg {
Line 931  sub select_arg { Line 1054  sub select_arg {
     }      }
         }          }
     }      }
     $result.='<span class="LC_nobreak">'.&mt($description).'&nbsp;<select name="'.      $result.=' <span class="LC_edit_opt">'.&mt($description).'&nbsp;<select name="'.
  &html_element_name($name).'" '.&element_change_detection().' >   &html_element_name($name).'" '.&element_change_detection().' >
        '.$optionlist.'         '.$optionlist.'
       </select></span>';        </select></span>';
Line 982  sub select_or_text_arg { Line 1105  sub select_or_text_arg {
     $description=&mt($description);      $description=&mt($description);
 #  #
     return (<<ENDSELECTORTYPE);      return (<<ENDSELECTORTYPE);
 <span class="LC_nobreak">   <span class="LC_edit_opt">
 $description  $description
 &nbsp;<select name="$selectelement"  &nbsp;<select name="$selectelement"
 onChange="if ($selectedvalue!='TYPEDINVALUE') { $hiddenvalue=$selectedvalue; $typedinvalue=''; }" >  onchange="if ($selectedvalue!='TYPEDINVALUE') { $hiddenvalue=$selectedvalue; $typedinvalue=''; }" >
 $optionlist  $optionlist
 </select>  </select>
 <input type="text" size="$size" name="$typeinelement"  <input type="text" size="$size" name="$typeinelement"
        value="$typeinvalue"          value="$typeinvalue" 
 onChange="$hiddenvalue=$typedinvalue;"  onchange="$hiddenvalue=$typedinvalue;"
 onFocus="$selectedindex=$selecttypeinindex-1;" />  onfocus="$selectedindex=$selecttypeinindex-1;" />
 <input type="hidden" name="$element" value="$selected" $change_code />  <input type="hidden" name="$element" value="$selected" $change_code />
 </span>  </span>
 ENDSELECTORTYPE  ENDSELECTORTYPE

Removed from v.1.132  
changed lines
  Added in v.1.153


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>