Diff for /loncom/homework/chemresponse.pm between versions 1.53 and 1.62

version 1.53, 2005/05/25 21:45:07 version 1.62, 2005/07/05 10:06:34
Line 30  package Apache::chemresponse; Line 30  package Apache::chemresponse;
 use strict;  use strict;
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::lonlocal;
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse','chem'));      &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse','chem'));
Line 63  sub chem_standard_order { Line 64  sub chem_standard_order {
 }  }
   
 sub separate_jme_window {  sub separate_jme_window {
     my ($smile_input,$jme_input,$molecule,$options)=@_;      my ($smile_input,$jme_input,$molecule,$options,$shown_text)=@_;
     my $smilesection;      my $smilesection;
     if (defined($smile_input)) {      if (defined($smile_input)) {
  $smilesection=<<SMILESECTION;   $smilesection=<<SMILESECTION;
Line 80  JMESECTION Line 81  JMESECTION
     }      }
   
     if ($molecule) { $molecule='<param name="jme" value="'.$molecule.'" />'; }      if ($molecule) { $molecule='<param name="jme" value="'.$molecule.'" />'; }
       my $insert_answer;
       if ($shown_text eq '') { 
    $insert_answer=
       '<input type="button" name="submit" value="Insert Answer" onclick="javascript:submitSmiles();" />';
       }
   
     my $body=<<CHEMPAGE;      my $body=<<CHEMPAGE;
 <html>  <html>
 <head>  <head>
Line 98  function submitSmiles() { Line 105  function submitSmiles() {
 function openHelpWindow() {  function openHelpWindow() {
     window.open("/adm/jme/jme_help.html","","scrollbars=yes,resizable=yes,width=500,height=600");      window.open("/adm/jme/jme_help.html","","scrollbars=yes,resizable=yes,width=500,height=600");
 }  }
   function substituent(r) {document.applets.JME.setSubstituent(r);}
 </script>  </script>
 </head>  </head>
 <body bgcolor="#ffffff">  <body bgcolor="#ffffff">
 <center>  <center>
 <applet code="JME.class" name="JME" archive="/adm/jme/JME.jar" width="440" height="390">  <form>
     <table width="440"><tr>
       <td></td>
       <td align="right">
         <select onchange="javascript:substituent(options[selectedIndex].text)">
           <option>Select substituent</option>
           <option>-C(=O)OH</option>
           <option>-C(=O)OMe</option>
           <option>-OC(=O)Me</option>
           <option>-CMe3</option>
           <option>-CF3</option>
           <option>-CCl3</option>
           <option>-NO2</option>
           <option>-SO2-NH2</option>
           <option>-NH-SO2-Me</option>
           <option>-NMe2</option>
           <option>-C#N</option>
           <option>-C#C-Me</option>
           <option>-C#CH</option>
         </select>
       </td></tr>
     </table>
   <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.  You have to enable Java and JavaScript on your machine.
 $molecule  $molecule
 <param name="options" value="$options" />  <param name="options" value="$options" />
 </applet><br />  </applet><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>  <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>
 <form>  
 <input type="button" name="submit" value="Insert Answer" onclick = "submitSmiles();" />  
 <br />  <br />
 <input type="button" value="  Close  " onclick = "window.close()" />  $insert_answer
   <br />
   <input type="button" value="  Close  " onclick = "javascript:window.close()" />
 &nbsp;&nbsp;  &nbsp;&nbsp;
 <input type="button" value="  Help  " onclick = "openHelpWindow()" />  <input type="button" value="  Help  " onclick = "javascript:openHelpWindow()" />
 </form>  </form>
 </center>  </center>
 </body>  </body>
Line 123  CHEMPAGE Line 153  CHEMPAGE
     $body=~s/\n/ /g;      $body=~s/\n/ /g;
     my $nothing=&Apache::lonhtmlcommon::javascript_nothing();      my $nothing=&Apache::lonhtmlcommon::javascript_nothing();
     my $docopen=&Apache::lonhtmlcommon::javascript_docopen();      my $docopen=&Apache::lonhtmlcommon::javascript_docopen();
       my $display=&mt('Draw Molecule');
       if (defined($shown_text)) { $display=&mt($shown_text); }
     my $result=<<CHEMINPUT;      my $result=<<CHEMINPUT;
 <input type="button" value="Draw Molecule" onclick="javascript:editor=window.open('$nothing','jmeedit','width=500,height=500,menubar=yes,scrollbars=no,resizable=yes');editor.$docopen;editor.document.write('$body');editor.document.close();editor.focus()" />  <input type="button" value="$display" onclick="javascript:editor=window.open($nothing,'jmeedit','width=500,height=500,menubar=no,scrollbars=no,resizable=yes');editor.$docopen;editor.document.write('$body');editor.document.close();editor.focus()" />
 CHEMINPUT  CHEMINPUT
     return $result;      return $result;
 }  }
   
   sub jme_img {
       my ($jme,$smile,$width,$options)=@_;
       my $id=&Apache::loncommon::get_cgi_id();
       my $result='<img alt="'.$smile.'" src="/cgi-bin/convertjme.pl?'.$id.'"';
       if ($options =~ /border/) { $result.= ' border="1"'; }
       $result.=' />';
       &Apache::lonnet::appenv('cgi.'.$id.'.JME'   =>
       &Apache::lonnet::escape($jme),
       'cgi.'.$id.'.PNG'   => 1,
       'cgi.'.$id.'.WIDTH' => $width);
       return $result;
   }
   
 sub start_organicresponse {  sub start_organicresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;      my $result;
Line 137  sub start_organicresponse { Line 182  sub start_organicresponse {
     if ($target eq 'meta') {      if ($target eq 'meta') {
  $result=&Apache::response::meta_package_write('organicresponse');   $result=&Apache::response::meta_package_write('organicresponse');
     } elsif ($target eq 'web') {      } elsif ($target eq 'web') {
  if (  &Apache::response::show_answer() ) {   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 '') {
     my $options=&Apache::lonxml::get_param('options',$parstack,      my $options=&Apache::lonxml::get_param('options',$parstack,
    $safeeval);     $safeeval);
     my $width=&Apache::lonxml::get_param('width',$parstack,      my $width=&Apache::lonxml::get_param('width',$parstack,
    $safeeval);     $safeeval);
     my $id=&Apache::loncommon::get_cgi_id();      my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,
     $result="<img src='/cgi-bin/convertjme.pl?$id'";   $safeeval);
     if ($options =~ /border/) { $result.= ' border="1"'; }      $result.=&jme_img($jmeanswer,$answers[0],$width,$options);
     $result.=' />';  
     &Apache::lonnet::appenv('cgi.'.$id.'.JME'   =>  
            &Apache::lonnet::escape($jmeanswer),  
     'cgi.'.$id.'.PNG'   => 1,  
     'cgi.'.$id.'.WIDTH' => $width);  
  } else {   } else {
     my $molecule;      my $molecule;
     if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) {      if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) {
Line 162  sub start_organicresponse { Line 202  sub start_organicresponse {
     }      }
     my $options=&Apache::lonxml::get_param('options',$parstack,      my $options=&Apache::lonxml::get_param('options',$parstack,
    $safeeval);     $safeeval);
     $result=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,$options);      my $shown_text;
       if (&Apache::response::show_answer()) {
    $shown_text="Show Your Last Answer";
       }
       $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 270  sub start_organicstructure { Line 315  sub start_organicstructure {
     'cgi.'.$id.'.WIDTH' => $width );      'cgi.'.$id.'.WIDTH' => $width );
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $texwidth=&Apache::lonxml::get_param('texwidth',$parstack,$safeeval,undef,1);   my $texwidth=&Apache::lonxml::get_param('texwidth',$parstack,$safeeval,undef,1);
    my $webwidth=&Apache::lonxml::get_param('width', $parstack, $safeeval);
    my $webheight=&Apache::lonxml::get_param('height', $parstack, $safeeval);
    if (!$webheight) { $webheight = $webwidth; }
  if (!$texwidth) { $texwidth='90'; }   if (!$texwidth) { $texwidth='90'; }
    $result = "%DYNAMICIMAGE:$webwidth:$webheight:$texwidth\n";
  my $molecule=&Apache::lonxml::get_param('molecule',$parstack,$safeeval);   my $molecule=&Apache::lonxml::get_param('molecule',$parstack,$safeeval);
  my $options=&Apache::lonxml::get_param('options',$parstack,$safeeval);   my $options=&Apache::lonxml::get_param('options',$parstack,$safeeval);
  my $filename = $env{'user.name'}.'_'.$env{'user.domain'}.   my $filename = $env{'user.name'}.'_'.$env{'user.domain'}.

Removed from v.1.53  
changed lines
  Added in v.1.62


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