Diff for /loncom/homework/chemresponse.pm between versions 1.85 and 1.100

version 1.85, 2008/12/22 15:05:49 version 1.100, 2021/04/07 22:16:03
Line 68  sub chem_standard_order { Line 68  sub chem_standard_order {
   
 sub separate_jme_window {  sub separate_jme_window {
     my ($smile_input,$jme_input,$molecule,$options,$shown_text)=@_;      my ($smile_input,$jme_input,$molecule,$options,$shown_text)=@_;
       my $usejsme = 1;
       if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) {
           if (exists($env{'course.'.$env{'request.course.id'}.'.usejsme'})) {
               if ($env{'course.'.$env{'request.course.id'}.'.usejsme'} eq '0') {
                   $usejsme = 0;
               }
           } else {
               my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
               if ($domdefs{'usejsme'} eq '0') {
                   $usejsme = 0;
               }
           }
       } else {
           my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
           if ($domdefs{'usejsme'} eq '0') {
               $usejsme = 0;
           }
       }
       if ($usejsme) {
           if ($env{'browser.type'} eq 'safari') {
               unless ($env{'browser.mobile'}) {
                   if ($env{'browser.version'} < 534) {
                       $usejsme = 0;
                   }
               }
           } elsif ($env{'browser.type'} eq 'mozilla') {
               if ($env{'browser.version'} < 5) {
                   $usejsme = 0;
               } elsif ($env{'browser.info'} =~ /^firefox\-([\d\.]+)/) {
                   my $firefox = $1;
                   if ($firefox < 12) {
                       $usejsme = 0;
                   }
               }
           } elsif ($env{'browser.type'} eq 'explorer') {
               if ($env{'browser.version'} < 7) {
                   $usejsme = 0;
               }
           } elsif ($env{'browser.type'} eq 'opera') {
               if ($env{'browser.version'} < 15) {
                   $usejsme = 0;
               }
           }
       } else {
           if ($env{'browser.mobile'}) {
               $usejsme = 1;
           }
       }
       my $linkstyle = 'display:none';
       my $creditstyle = 'display:inline';
       if ($env{'browser.type'} eq 'explorer') {
           if (($env{'browser.os'} eq 'win') && ($env{'browser.version'} < 9)) {
               $linkstyle = 'display:inline';
               $creditstyle = 'display:none';
           }
       }
     my $smilesection;      my $smilesection;
     if (defined($smile_input)) {      if (defined($smile_input)) {
           my $smiles;
           if ($usejsme) {
               $smiles = 'document.JME.smiles()'; 
           } else {
               $smiles = 'document.applets.JME.smiles()';
           }
  $smilesection=<<SMILESECTION;   $smilesection=<<SMILESECTION;
         smiles = document.applets.JME.smiles();   opener.document.lonhomework.$smile_input.value = $smiles;
  opener.document.lonhomework.$smile_input.value = smiles;  
 SMILESECTION  SMILESECTION
     }      }
     my $jmesection;      my $jmesection;
       my $jmefile;
     if (defined($jme_input)) {      if (defined($jme_input)) {
           if ($usejsme) {
               $jmefile = 'document.JME.jmeFile()';
           } else {
               $jmefile = 'document.applets.JME.jmeFile()';
           }
  $jmesection=<<JMESECTION;   $jmesection=<<JMESECTION;
  jmeFile = document.applets.JME.jmeFile();   opener.document.lonhomework.$jme_input.value = $jmefile;
  opener.document.lonhomework.$jme_input.value = jmeFile;  
 JMESECTION  JMESECTION
     }      }
   
     if ($molecule) { $molecule='<param name="jme" value="'.$molecule.'" />'; }      if ($molecule) {
           if ($usejsme) {
               $molecule = 'document.JME.readMolecule("'.$molecule.'")';
           } else {
               $molecule='<param name="jme" value="'.$molecule.'" />';
           }
       }
     my $insert_answer;      my $insert_answer;
     if ($shown_text eq '') {       if ($shown_text eq '') { 
  $insert_answer=   $insert_answer=
     '<input type="button" name="submit" value="Insert Answer" onclick="javascript:submitSmiles();" />';      '<input type="button" name="submit" value="'.&mt('Insert Answer').'" onclick="javascript:submitSmiles();" /><br />';
     }      }
   
     my $js = <<CHEMJS;     
   
       my ($jsme_js,$js,$buttonstyle,$viewportjs,$resizejs);
       if ($usejsme) {
           $buttonstyle = 'display:none';
           $resizejs =<<RESIZEJS;
   <script type="text/javascript">
   function callResize() {
       var timer;
       clearTimeout(timer);
       timer=setTimeout('resize_jsme()',100);
   }
   
   window.onresize = callResize;
   
   function resize_jsme() {
       init_geometry();
       var vph = Geometry.getViewportHeight();
       var vpw = Geometry.getViewportWidth();
       var lowerdivheight = document.getElementById('JMEbuttons').offsetHeight;
       var formheight = document.getElementById('JMEform').offsetHeight;
       var freevspace = vph-(lowerdivheight+50);
       var freehspace = vpw-20;
       if (typeof jsmeApplet !== 'undefined') {
           jsmeApplet.setSize(freehspace,freevspace);
       }
   }
   </script>
   RESIZEJS
           $resizejs = &Apache::loncommon::js_ready($resizejs);
           $jsme_js = '
   <script type="text/javascript" language="javascript" src="/adm/jsme/jsme.nocache.js"></script>'."\n";
           $js =<<CHEMJS;
   <script type="text/javascript">
   function jsmeOnLoad() {
       document.getElementById('JMErefresh').style.display="none";
       document.getElementById('JMEcredits').style.display="inline";
       jsmeApplet = new JSApplet.JSME("jme", "420px", "330px", {"options" : "$options"});
       document.JME = jsmeApplet;
       $molecule;
       document.getElementById('JMEbuttons').style.display="block";
       callResize();
   }
   
   function submitSmiles() {
       jmeFile = document.JME.jmeFile();
       if (jmeFile == "") {
           alert("Nothing to submit");
       } else {
           $jmesection
           $smilesection
           window.close();
       }
   }
   function openHelpWindow() {
       window.open("http://peter-ertl.com/jsme/2013_03/help.html","","scrollbars=yes,resizable=yes,width=500,height=600");
   }
   
   </script>
   
   CHEMJS
   
           $viewportjs = &Apache::loncommon::viewport_geometry_js();
           $viewportjs = '<script type="text/javascript">'."\n".
                         $viewportjs."\n".
                         '</script>';
   
       } else {
           $buttonstyle = 'display:block';
           $js =<<CHEMJS; 
 <script type="text/javascript">  <script type="text/javascript">
 function submitSmiles() {  function submitSmiles() {
     jmeFile = document.applets.JME.jmeFile();      jmeFile = document.applets.JME.jmeFile();
Line 108  function openHelpWindow() { Line 249  function openHelpWindow() {
 function substituent(r) {document.applets.JME.setSubstituent(r);}  function substituent(r) {document.applets.JME.setSubstituent(r);}
 </script>  </script>
 CHEMJS  CHEMJS
       }
   
     my $start_page =       my $start_page = 
         &Apache::loncommon::start_page('Molecule Editor',undef,          &Apache::loncommon::start_page('Molecule Editor',$viewportjs,
        {'only_body' => 1,         {'only_body' => 1,
  'js_ready'  => 1,   'js_ready'  => 1,
  'bgcolor'   => '#FFFFFF',});   'bgcolor'   => '#FFFFFF',});
     my $end_page =      my $end_page =
   &Apache::loncommon::end_page({'js_ready' => 1,});    &Apache::loncommon::end_page({'js_ready' => 1,});
       my $java_not_enabled=&Apache::lonhtmlcommon::java_not_enabled();
     my $body=<<CHEMPAGE;      my %lt = &Apache::lonlocal::texthash(
 $js          'seltext' => 'Select substituent...',
           'close'   => 'Close',
           'help'    => 'Help',
          );
       my $body = "
   $jsme_js
   $js".'
 <center>  <center>
 <form>  <form action="" id="JMEform">
   ';
       if ($usejsme) {
           $body.= <<"ENDCHEM";
   <div id="jme">
   <div id="JMEcredits" style="$creditstyle">
   <span style="font-size:small; font-family:arial,sans-serif;"><a href="http://peter-ertl.com/jsme/">JSME Molecular Editor</a> courtesy of Peter Ertl (Novartis) and Bruno Bienfait</span></div>
   </div>
   ENDCHEM
       } else {
           $body.=<<CHEMPAGE;
   <table width="440"><tr>    <table width="440"><tr>
     <td></td>      <td></td>
     <td align="right">      <td align="right">
       <select onchange="javascript:substituent(options[selectedIndex].text)">        <select onchange="javascript:substituent(options[selectedIndex].text)">
         <option>Select substituent</option>          <option>$lt{'seltext'}</option>
         <option>-C(=O)OH</option>          <option>-C(=O)OH</option>
         <option>-C(=O)OMe</option>          <option>-C(=O)OMe</option>
         <option>-OC(=O)Me</option>          <option>-OC(=O)Me</option>
Line 143  $js Line 301  $js
     </td></tr>      </td></tr>
   </table>    </table>
 <applet code="JME.class" name="JME" archive="/adm/jme/JME.jar" width="440" height="390" mayscript>  <applet code="JME.class" name="JME" archive="/adm/jme/JME.jar" width="440" height="390" mayscript>
 You have to enable Java and JavaScript on your machine.  $java_not_enabled
 $molecule  $molecule
 <param name="options" value="$options" />  <param name="options" value="$options" />
 </applet><br />  </applet>
 <font face="arial,helvetica,sans-serif" size="-1"><a href="http://www.molinspiration.com/jme/index.html">JME Editor</a> courtesy of Peter Ertl, Novartis</font>  
 <br />  <br />
   <font face="arial,helvetica,sans-serif" size="-1"><a href="http://www.molinspiration.com/jme/index.html">JME Editor</a> courtesy of Peter Ertl, Novartis</font>
   CHEMPAGE
       }
       $body .= <<CHEMPAGE;
   <div id="JMEbuttons" style="$buttonstyle">
 $insert_answer  $insert_answer
 <br />  <input type="button" value="$lt{'close'}" onclick="javascript:window.close()" />
 <input type="button" value="  Close  " onclick = "javascript:window.close()" />  
 &nbsp;&nbsp;  &nbsp;&nbsp;
 <input type="button" value="  Help  " onclick = "javascript:openHelpWindow()" />  <input type="button" value="$lt{'help'}" onclick="javascript:openHelpWindow()" />
   </div>
   <div id="JMErefresh" style="$linkstyle">
   <a href="javascript:location.reload();">Display Molecule Editor</a>
   </div> 
 </form>  </form>
 </center>  </center>
 CHEMPAGE  CHEMPAGE
Line 164  CHEMPAGE Line 329  CHEMPAGE
     my $display=&mt('Draw Molecule');      my $display=&mt('Draw Molecule');
     if (defined($shown_text)) { $display=&mt($shown_text); }      if (defined($shown_text)) { $display=&mt($shown_text); }
     my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};      my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
     my $function =       my $function =
  'LONCAPA_draw_molecule_'.&Apache::lonhtmlcommon::get_uniq_name();   'LONCAPA_draw_molecule_'.&get_uniq_name();
     my $result=<<CHEMINPUT;      my $result=<<CHEMINPUT;
 <script type="text/javascript">  <script type="text/javascript">
     function $function() {      function $function() {
  editor=window.open($nothing,'jmeedit','width=500,height=500,menubar=no,scrollbars=no,resizable=yes');   editor=window.open($nothing,'jmeedit','width=500,height=500,menubar=no,scrollbars=no,resizable=yes');
  editor.$docopen;          if (editor) {
  editor.document.write('$start_page $body $end_page');      editor.$docopen;
  editor.document.close();      editor.document.write('$start_page $body $resizejs $end_page');
  editor.focus();      editor.document.close();
       editor.focus();
           }
     }      }
 </script>  </script>
 <a href="javascript:$function();void(0);"><img class="stift" src='$iconpath/stift.gif' alt='$display' title='$display' /></a>  
 CHEMINPUT  CHEMINPUT
       my $jscall = "javascript:$function();void(0);";
       if ($shown_text eq '') {
           $result .=<<PENCIL;
   <a href="$jscall"><img class="stift" src="$iconpath/stift.gif" alt="$display" title="$display" /></a>
   PENCIL
       } else {
           $result .= '<input type="button" value="'.&mt($shown_text).'" onclick="$jscall" />';
       }
     return $result;      return $result;
 }  }
 sub jme_img {  sub jme_img {
Line 203  sub start_organicresponse { Line 377  sub start_organicresponse {
     } elsif ($target eq 'web') {      } elsif ($target eq 'web') {
  my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,   my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,
  $safeeval);   $safeeval);
  if (  &Apache::response::show_answer() && $jmeanswer ne '') {   if (&Apache::response::show_answer()) {
     my $options=&Apache::lonxml::get_param('options',$parstack,              my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,
    $safeeval);                                                       $safeeval);
     my $width=&Apache::lonxml::get_param('width',$parstack,              if ($jmeanswer ne '') {
    $safeeval);          my $options=&Apache::lonxml::get_param('options',$parstack,
     my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,             $safeeval);
  $safeeval);          my $width=&Apache::lonxml::get_param('width',$parstack,
     $result.=&jme_img($jmeanswer,$answers[0],$width,$options);  
  } else {  
     my $molecule;  
     if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) {  
  $molecule=$Apache::lonhomework::history{"resource.$partid.$id.molecule"};  
     } else {  
  $molecule=&Apache::lonxml::get_param('molecule',$parstack,  
      $safeeval);       $safeeval);
     }          my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,
     my $options=&Apache::lonxml::get_param('options',$parstack,       $safeeval);
    $safeeval);          $result.=&jme_img($jmeanswer,$answers[0],$width,$options);
     my $shown_text;              }
     if (&Apache::response::show_answer()) {   } else {
  $shown_text="Show Your Last Answer";  
     }  
     #stift $result=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,  
 # $options,$shown_text);  
     $result.= '<input type="hidden" name="MOLECULE_'.$id.'" value="" />';      $result.= '<input type="hidden" name="MOLECULE_'.$id.'" value="" />';
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
Line 246  sub start_organicresponse { Line 409  sub start_organicresponse {
  $result .=&Apache::edit::text_arg('Correct Answer:','answer',   $result .=&Apache::edit::text_arg('Correct Answer:','answer',
   $token,40);    $token,40);
  $result .='</span><br /><span class="LC_nobreak">';   $result .='</span><br /><span class="LC_nobreak">';
  $result .=&Apache::edit::text_arg('JME string of the answer (automatically updated when using the Draw Molecule button):',   $result .=&Apache::edit::text_arg('JME string of the answer - automatically updated by "Insert Answer" in the JME pop-up (click pencil):',
   'jmeanswer',$token);    'jmeanswer',$token);
  my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,   my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,
  $safeeval);   $safeeval);
Line 309  sub end_organicresponse { Line 472  sub end_organicresponse {
     $ad='INCORRECT';      $ad='INCORRECT';
  }   }
     }      }
     if ($ad && $Apache::lonhomework::type eq 'survey') {              if ($ad) {
  $ad='SUBMITTED';          if ($Apache::lonhomework::type eq 'survey') {
     }      $ad='SUBMITTED';
                   } elsif ($Apache::lonhomework::type eq 'surveycred') {
                       $ad='SUBMITTED_CREDIT';
                   } elsif ($Apache::lonhomework::type eq 'anonsurvey') {
                       $ad='ANONYMOUS';
                   } elsif ($Apache::lonhomework::type eq 'anonsurveycred') {
                       $ad='ANONYMOUS_CREDIT';
                   }
               }
     &Apache::response::handle_previous(\%previous,$ad);      &Apache::response::handle_previous(\%previous,$ad);
     $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}=$ad;      $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}=$ad;
     $Apache::lonhomework::results{"resource.$partid.$id.molecule"}=$env{"form.MOLECULE_$id"};      $Apache::lonhomework::results{"resource.$partid.$id.molecule"}=$env{"form.MOLECULE_$id"};
Line 334  sub end_organicresponse { Line 505  sub end_organicresponse {
   
     if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||       if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || 
  $target eq 'tex' || $target eq 'analyze') {   $target eq 'tex' || $target eq 'analyze') {
  &Apache::lonxml::increment_counter(&Apache::response::repetition(),           my $repetition = &Apache::response::repetition();
    "$partid.$id"); # part.response   &Apache::lonxml::increment_counter($repetition,"$partid.$id"); # part.response
  if ($target eq 'analyze') {   if ($target eq 'analyze') {
             $Apache::lonhomework::analyze{"$partid.$id.type"} = 'organicresponse';              $Apache::lonhomework::analyze{"$partid.$id.type"} = 'organicresponse';
             push (@{ $Apache::lonhomework::analyze{"parts"} },"$partid.$id");              push (@{ $Apache::lonhomework::analyze{"parts"} },"$partid.$id");
     &Apache::lonhomework::set_bubble_lines();      &Apache::lonhomework::set_bubble_lines();
  }   }
     }      }
     if (($target eq 'web' ) && ($Apache::lonhomework::type ne 'exam') && ($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')){      if ($target eq 'web' ) {
             my $options=&Apache::lonxml::get_param('options',$parstack,          my ($showpencil,$shown_text);
                                                    $safeeval);          if ($Apache::inputtags::status['-1'] eq 'CAN_ANSWER') {
             my $shown_text;              $showpencil = 1;
             if (&Apache::response::show_answer()) {          } elsif (&Apache::response::show_answer()) {
               my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,                                                         $safeeval);
               if ($jmeanswer eq '') {
                   $showpencil = 1;
                 $shown_text="Show Your Last Answer";                  $shown_text="Show Your Last Answer";
             }              }
           }
           if ($showpencil) {
               my $options=&Apache::lonxml::get_param('options',$parstack,
                                                      $safeeval);
   
     my $molecule;      my $molecule;
     if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) {      if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) {
  $molecule=$Apache::lonhomework::history{"resource.$partid.$id.molecule"};   $molecule=$Apache::lonhomework::history{"resource.$partid.$id.molecule"};
Line 356  sub end_organicresponse { Line 535  sub end_organicresponse {
  $molecule=&Apache::lonxml::get_param('molecule',$parstack,   $molecule=&Apache::lonxml::get_param('molecule',$parstack,
      $safeeval);       $safeeval);
     }      }
  $result.=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,      $result.=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,
                              $options,$shown_text);                                            $options,$shown_text);
           }
     }      }
     &Apache::response::end_response();      &Apache::response::end_response();
     return $result;      return $result;
Line 365  sub end_organicresponse { Line 545  sub end_organicresponse {
   
 sub format_prior_answer_organic {  sub format_prior_answer_organic {
     my ($mode,$answer,$other_data) = @_;      my ($mode,$answer,$other_data) = @_;
     my $result=&mt('Smile representation: "[_1]"','<tt>'.$answer.'</tt>');      my $result=&mt('Smile representation: [_1]','"<tt>'.$answer.'</tt>"');
     my $jme=$other_data->[0];      my $jme=$other_data->[0];
     $result.=&jme_img($jme,$answer,400);      $result.=&jme_img($jme,$answer,400);
     return $result;      return $result;
Line 405  sub start_organicstructure { Line 585  sub start_organicstructure {
  $id=&escape($id);   $id=&escape($id);
  &Apache::lonxml::register_ssi("/cgi-bin/convertjme.pl?$id");   &Apache::lonxml::register_ssi("/cgi-bin/convertjme.pl?$id");
  if ($options =~ /border/) { $result.= '\fbox{'; }   if ($options =~ /border/) { $result.= '\fbox{'; }
  $result .= '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$texwidth.' mm]{'.$filename.'.eps}';   $result .= '\graphicspath{{'.LONCAPA::tempdir().
       '}}\includegraphics[width='.$texwidth.' mm]{'.$filename.'.eps}';
  if ($options =~ /border/) { $result.= '} '; }   if ($options =~ /border/) { $result.= '} '; }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .=&Apache::edit::tag_start($target,$token);   $result .=&Apache::edit::tag_start($target,$token);
Line 449  sub end_organicstructure { Line 630  sub end_organicstructure {
     return $result;      return $result;
 }  }
   
 sub edit_reaction_button {  sub reaction_preview {
     my ($id,$field,$reaction)=@_;      my ($field, $reaction) = @_;
     my $id_es=&escape($id);      
     my $field_es=&escape($field);      # NOTE: $reaction should be encoded if the document was sent as XHTML
     my $reaction_es=&escape($reaction);      $reaction =~ s/"//g;
     my $docopen=&Apache::lonhtmlcommon::javascript_docopen();      my $result=<<JS_PREVIEW;
     my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};  <input type="button" value="Help" onclick = "window.open('/adm/reactionresponse/reaction_help.html','','scrollbars=yes,resizable=yes,width=550,height=600')" />
     my $display=&mt('Edit Answer');  
     my $start_page =   
  &Apache::loncommon::start_page('LON-CAPA Reaction Editor',undef,  
        {'frameset'    => 1,  
  'js_ready'    => 1,  
  'add_entries' => {  
     'rows'   => "30%,*",  
     'border' => "0",}},);  
     my $end_page =   
  &Apache::loncommon::end_page({'frameset' => 1,  
       'js_ready' => 1});  
     my $result=<<EDITREACTION;  
 <script type="text/javascript">  <script type="text/javascript">
 // <!--      if (typeof reaction_preview_started === 'undefined') {
     function create_reaction_window_${id}_${field} () {          var script = document.createElement('script');
  editor=window.open('','','width=500,height=270,scrollbars=no,resizable=yes');          script.type = 'text/javascript';
  editor.$docopen;          script.src = '/adm/reactionresponse/reaction_preview.js';
  editor.document.writeln('$start_page <frame src="/res/adm/pages/reactionresponse/reaction_viewer.html?inhibitmenu=yes" name="viewer" scrolling="no" />  <frame src="/res/adm/pages/reactionresponse/reaction_editor.html?inhibitmenu=yes&reaction=$reaction_es&id=$id_es&field=$field_es" name="editor" scrolling="no" /> $end_page');          document.body.appendChild(script);
  editor.document.close();          reaction_preview_started = true;
     }      }
 // -->      window.addEventListener('load', function(e) {
           var input = document.forms.lonhomework.$field;
           input.readonly = '';
           input.value = "$reaction";
           if (!input.id)
               input.id = "$field";
           var preview = new LC.HW.ReactionPreview(input.id);
           preview.start_preview();
       }, false);
 </script>  </script>
 <a href="javascript:create_reaction_window_${id}_${field}();void(0);"><img class="stift" src='$iconpath/stift.gif' alt='$display' title='$display' /></a>  JS_PREVIEW
 EDITREACTION  
     return $result;      return $result;
 }  }
   
Line 506  sub start_reactionresponse { Line 682  sub start_reactionresponse {
  $safeeval);   $safeeval);
  $result .='<span class="LC_nobreak">'.   $result .='<span class="LC_nobreak">'.
     &Apache::edit::text_arg('Answer:','answer',$token,40);      &Apache::edit::text_arg('Answer:','answer',$token,40);
  $result .=&edit_reaction_button($id,&Apache::edit::html_element_name('answer'),$answer).'</span>';   $result .= &reaction_preview(&Apache::edit::html_element_name('answer'), $answer).'</span>';
  my $initial=&Apache::lonxml::get_param('initial',$parstack,$safeeval);   my $initial=&Apache::lonxml::get_param('initial',$parstack,$safeeval);
  $result.='<span class="LC_nobreak">'.   $result.='<span class="LC_nobreak">'.
     &Apache::edit::text_arg('Initial Reaction:','initial',$token,40);      &Apache::edit::text_arg('Initial Reaction:','initial',$token,40);
  $result .=&edit_reaction_button($id,&Apache::edit::html_element_name('initial'),$initial).'</span>';          $result .= &reaction_preview(&Apache::edit::html_element_name('initial'), $initial).'</span>';
  $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();   $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
     }  elsif ($target eq 'modified') {      }  elsif ($target eq 'modified') {
  my $constructtag=&Apache::edit::get_new_args($token,$parstack,   my $constructtag=&Apache::edit::get_new_args($token,$parstack,
Line 554  sub end_reactionresponse { Line 730  sub end_reactionresponse {
     $ad='INCORRECT';      $ad='INCORRECT';
  }   }
     }      }
     if ($ad && $Apache::lonhomework::type eq 'survey') {              if ($ad) {
  $ad='SUBMITTED';                  if ($Apache::lonhomework::type eq 'survey') {
     }      $ad='SUBMITTED';
           } elsif ($ad && $Apache::lonhomework::type eq 'surveycred') {
                       $ad='SUBMITTED_CREDIT';
                   } elsif ($ad && $Apache::lonhomework::type eq 'anonsurvey') {
                       $ad='ANONYMOUS';
                   } elsif ($ad && $Apache::lonhomework::type eq 'anonsurveycred') {
                       $ad='ANONYMOUS_CREDIT';
                   }
               }
     &Apache::response::handle_previous(\%previous,$ad);      &Apache::response::handle_previous(\%previous,$ad);
     $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}=$ad;      $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}=$ad;
  }   }
Line 578  sub end_reactionresponse { Line 762  sub end_reactionresponse {
   
     if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||       if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || 
  $target eq 'tex' || $target eq 'analyze') {   $target eq 'tex' || $target eq 'analyze') {
  &Apache::lonxml::increment_counter(&Apache::response::repetition(), "$partid.$id");   my $repetition = &Apache::response::repetition();
           &Apache::lonxml::increment_counter($repetition,"$partid.$id");
         if ($target eq 'analyze') {          if ($target eq 'analyze') {
             $Apache::lonhomework::analyze{"$partid.$id.type"} = 'reactionresponse';              $Apache::lonhomework::analyze{"$partid.$id.type"} = 'reactionresponse';
             push (@{ $Apache::lonhomework::analyze{"parts"} },"$partid.$id");              push (@{ $Apache::lonhomework::analyze{"parts"} },"$partid.$id");
Line 589  sub end_reactionresponse { Line 774  sub end_reactionresponse {
     if  (($target eq 'web') && ($Apache::lonhomework::type ne 'exam') && ($status eq 'CAN_ANSWER')) {      if  (($target eq 'web') && ($Apache::lonhomework::type ne 'exam') && ($status eq 'CAN_ANSWER')) {
         my $reaction=$Apache::lonhomework::history{"resource.$partid.$id.submission"};          my $reaction=$Apache::lonhomework::history{"resource.$partid.$id.submission"};
         if ($reaction eq '') {  $reaction=&Apache::lonxml::get_param('initial',$parstack,$safeeval); }          if ($reaction eq '') {  $reaction=&Apache::lonxml::get_param('initial',$parstack,$safeeval); }
         $result.=&edit_reaction_button($id,"HWVAL_$id",$reaction);          $result .= &reaction_preview("HWVAL_$id", $reaction);
     }      }
     &Apache::response::end_response();      &Apache::response::end_response();
     return $result;      return $result;
Line 622  sub end_chem { Line 807  sub end_chem {
     return $result;      return $result;
 }  }
   
   my $uniq=0;
   sub get_uniq_name {
       $uniq++;
       return 'uniquename'.$uniq;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.85  
changed lines
  Added in v.1.100


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.