Diff for /loncom/homework/chemresponse.pm between versions 1.19 and 1.33

version 1.19, 2003/10/18 07:24:35 version 1.33, 2004/06/07 21:17:42
Line 35  BEGIN { Line 35  BEGIN {
     &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse'));      &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse'));
 }  }
   
 sub seperate_jme_window {  sub separate_jme_window {
     my ($smile_input,$jme_input,$molecule,$options)=@_;      my ($smile_input,$jme_input,$molecule,$options)=@_;
     my $smilesection;      my $smilesection;
     if (defined($smile_input)) {      if (defined($smile_input)) {
  $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
     }      }
Line 58  JMESECTION Line 59  JMESECTION
 <title>Molecule Editor</title>  <title>Molecule Editor</title>
 <script language="JavaScript">  <script language="JavaScript">
 function submitSmiles() {  function submitSmiles() {
     smiles = document.applets.JME.smiles();      jmeFile = document.applets.JME.jmeFile();
     if (smiles == "") {      if (jmeFile == "") {
  alert("Nothing to submit");   alert("Nothing to submit");
     } else {      } else {
         $smilesection  
         $jmesection          $jmesection
           $smilesection
  window.close();   window.close();
     }      }
 }  }
Line 74  function openHelpWindow() { Line 75  function openHelpWindow() {
 </head>  </head>
 <body bgcolor="#ffffff">  <body bgcolor="#ffffff">
 <center>  <center>
 <applet code="JME.class" name="JME" archive="/adm/jme/JME.jar" width="97%" height="78%">  <applet code="JME.class" name="JME" archive="/adm/jme/JME.jar" width="440" height="390">
 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" />
Line 91  $molecule Line 92  $molecule
 </body>  </body>
 </html>  </html>
 CHEMPAGE  CHEMPAGE
     $body=&HTML::Entities::encode($body);      $body=&HTML::Entities::encode($body,'<>&"');
     $body=~s/\n/ /g;      $body=~s/\n/ /g;
     my $result=<<CHEMINPUT;      my $result=<<CHEMINPUT;
 <input type="button" value="Draw Molecule" onClick="javascript:editor=window.open('','','width=500,height=500,scrollbars=no,resizable=yes');editor.document.open('text/html','replace');editor.document.writeln('$body')" />  <input type="button" value="Draw Molecule" onClick="javascript:editor=window.open('','','width=500,height=500,scrollbars=no,resizable=yes');editor.document.open('text/html','replace');editor.document.writeln('$body')" />
Line 105  sub start_organicresponse { Line 106  sub start_organicresponse {
     my $partid = $Apache::inputtags::part;      my $partid = $Apache::inputtags::part;
     my $id = &Apache::response::start_response($parstack,$safeeval);      my $id = &Apache::response::start_response($parstack,$safeeval);
     if ($target eq 'meta') {      if ($target eq 'meta') {
    $result=&Apache::response::meta_package_write('organicresponse');
     } elsif ($target eq 'web') {      } elsif ($target eq 'web') {
  my $molecule;   my $molecule;
  if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) {   if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) {
Line 115  sub start_organicresponse { Line 117  sub start_organicresponse {
  }   }
  my $options=&Apache::lonxml::get_param('options',$parstack,   my $options=&Apache::lonxml::get_param('options',$parstack,
        $safeeval);         $safeeval);
  $result=&seperate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,$options);   $result=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,$options);
  $result.= '<input type="hidden" name="MOLECULE_'.$id.'" value="" />';   $result.= '<input type="hidden" name="MOLECULE_'.$id.'" value="" />';
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .=&Apache::edit::tag_start($target,$token);   $result .=&Apache::edit::tag_start($target,$token);
Line 127  sub start_organicresponse { Line 129  sub start_organicresponse {
     $token,40);      $token,40);
  my $molecule=&Apache::lonxml::get_param('molecule',$parstack,   my $molecule=&Apache::lonxml::get_param('molecule',$parstack,
  $safeeval);   $safeeval);
  $result .=&seperate_jme_window(undef,   $result .=&separate_jme_window(undef,
       &Apache::edit::html_element_name('molecule'),        &Apache::edit::html_element_name('molecule'),
       $molecule,$options);        $molecule,$options);
  $result .='</nobr><br /><nobr>';   $result .='</nobr><br /><nobr>';
Line 136  sub start_organicresponse { Line 138  sub start_organicresponse {
  $result .=&Apache::edit::hidden_arg('jmeanswer',$token);   $result .=&Apache::edit::hidden_arg('jmeanswer',$token);
  my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,   my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,
  $safeeval);   $safeeval);
  $result .=&seperate_jme_window(   $result .=&separate_jme_window(
                       &Apache::edit::html_element_name('answer'),                        &Apache::edit::html_element_name('answer'),
                       &Apache::edit::html_element_name('jmeanswer'),                        &Apache::edit::html_element_name('jmeanswer'),
       $jmeanswer,$options);        $jmeanswer,$options);
  $result .='</nobr><br />';   $result .='</nobr><br />';
  $result .=&Apache::edit::checked_arg('Options:','options',   $result .=&Apache::edit::checked_arg('Options:','options',
     [ ['autoez','Auto E,Z sterochemistry'],      [ ['autoez','Auto E,Z stereochemistry'],
       ['multipart','Multipart Structures'],        ['multipart','Multipart Structures'],
       ['nostereo','No stereochemistry'],        ['nostereo','No stereochemistry'],
       ['reaction','Is a reaction'],        ['reaction','Is a reaction'],
Line 163  sub end_organicresponse { Line 165  sub end_organicresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;      my $result;
     if ($target eq 'grade' && defined($ENV{'form.submitted'})) {      if ($target eq 'grade' && defined($ENV{'form.submitted'})) {
  &Apache::response::setup_params($$tagstack[-1]);   &Apache::response::setup_params($$tagstack[-1],$safeeval);
  my $response = &Apache::response::getresponse();   my $response = &Apache::response::getresponse();
  if ( $response =~ /[^\s]/) {   if ( $response =~ /[^\s]/) {
     my $partid = $Apache::inputtags::part;      my $partid = $Apache::inputtags::part;
Line 207  sub start_organicstructure { Line 209  sub start_organicstructure {
  my $width=&Apache::lonxml::get_param('width',$parstack,$safeeval);   my $width=&Apache::lonxml::get_param('width',$parstack,$safeeval);
  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 $id=time.'_'.int(rand(1000));   my $id=&Apache::loncommon::get_cgi_id();
  $result="<img src='/cgi-bin/convertjme.pl?$id'";   $result="<img src='/cgi-bin/convertjme.pl?$id'";
  if ($options =~ /border/) { $result.= ' border="1"'; }   if ($options =~ /border/) { $result.= ' border="1"'; }
  $result.=' />';   $result.=' />';
Line 229  sub start_organicstructure { Line 231  sub start_organicstructure {
      'cgi.'.$id.'.WIDTH' => $texwidth );       'cgi.'.$id.'.WIDTH' => $texwidth );
  $id=&Apache::lonnet::escape($id);   $id=&Apache::lonnet::escape($id);
  &Apache::lonxml::register_ssi("/cgi-bin/convertjme.pl?$id");   &Apache::lonxml::register_ssi("/cgi-bin/convertjme.pl?$id");
  $result = '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$texwidth.' mm]{'.$filename.'.eps}';   if ($options =~ /border/) { $result.= '\fbox{'; }
    $result .= '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$texwidth.' mm]{'.$filename.'.eps}';
    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);
  $result .=&Apache::edit::text_arg('Width:','width',$token,5);   $result .=&Apache::edit::text_arg('Width (pixels):','width',$token,5);
  $result .=&Apache::edit::text_arg('Height:','height',$token,5);   $result .=&Apache::edit::text_arg('TeXwidth (mm):','texwidth',$token,5);
  $result .=&Apache::edit::text_arg('TeXwidth:','texwidth',$token,5);  
  $result .='<nobr>';   $result .='<nobr>';
  $result .=&Apache::edit::text_arg('Molecule:','molecule',$token,40);   $result .=&Apache::edit::text_arg('Molecule:','molecule',$token,40);
  my $molecule=&Apache::lonxml::get_param('molecule',$parstack,   my $molecule=&Apache::lonxml::get_param('molecule',$parstack,
Line 245  sub start_organicstructure { Line 248  sub start_organicstructure {
     $options.= ',multipart,number';      $options.= ',multipart,number';
  }   }
         
  $result .=&seperate_jme_window(undef,   $result .=&separate_jme_window(undef,
  &Apache::edit::html_element_name('molecule'),   &Apache::edit::html_element_name('molecule'),
        $molecule,$options);         $molecule,$options);
  $result.="</nobr><br />";   $result.="</nobr><br />";
Line 253  sub start_organicstructure { Line 256  sub start_organicstructure {
      [ ['reaction','Is a reaction'],       [ ['reaction','Is a reaction'],
        ['border','Draw a border'] ],         ['border','Draw a border'] ],
      $token);       $token);
  $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();   $result .=&Apache::edit::end_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,
      $safeeval,'molecule',       $safeeval,'molecule',
      'width','height',       'width','texwidth',
      'texwidth','options');       'options');
  if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }   if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
     }      }
     return $result;      return $result;
Line 296  sub start_reactionresponse { Line 299  sub start_reactionresponse {
     my $result;      my $result;
     my $id = &Apache::response::start_response($parstack,$safeeval);      my $id = &Apache::response::start_response($parstack,$safeeval);
     if ($target eq 'meta') {      if ($target eq 'meta') {
    $result=&Apache::response::meta_package_write('reactionresponse');
     } elsif ($target eq 'web') {      } elsif ($target eq 'web') {
  my $partid = $Apache::inputtags::part;   my $partid = $Apache::inputtags::part;
  my $id = $Apache::inputtags::response['-1'];   my $id = $Apache::inputtags::response['-1'];
  my $reaction=$Apache::lonhomework::history{"resource.$partid.$id.submission"};   my $reaction=$Apache::lonhomework::history{"resource.$partid.$id.submission"};
  $result.=&edit_reaction_button($id,"HWVAL_$id",$reaction);   my $status=$Apache::inputtags::status['-1'];
    if ($status eq 'CAN_ANSWER') {
       $result.=&edit_reaction_button($id,"HWVAL_$id",$reaction);
    }
    if (  &Apache::response::show_answer() ) {
       my $ans=&Apache::lonxml::get_param('answer',$parstack,$safeeval);
       $ans=~s/(\\|\')/\\$1/g;
       $Apache::inputtags::answertxt{$id}=&Apache::run::run("return &chemparse('$ans');",$safeeval);
    }
     } elsif ($target eq "edit") {      } elsif ($target eq "edit") {
  $result .=&Apache::edit::tag_start($target,$token);   $result .=&Apache::edit::tag_start($target,$token);
  my $answer=&Apache::lonxml::get_param('answer',$parstack,   my $answer=&Apache::lonxml::get_param('answer',$parstack,
Line 322  sub end_reactionresponse { Line 334  sub end_reactionresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;      my $result;
     if ($target eq 'grade' && defined($ENV{'form.submitted'})) {      if ($target eq 'grade' && defined($ENV{'form.submitted'})) {
  &Apache::response::setup_params($$tagstack[-1]);   &Apache::response::setup_params($$tagstack[-1],$safeeval);
  my $response = &Apache::response::getresponse();   my $response = &Apache::response::getresponse();
  if ( $response =~ /[^\s]/) {   if ( $response =~ /[^\s]/) {
     my $partid = $Apache::inputtags::part;      my $partid = $Apache::inputtags::part;

Removed from v.1.19  
changed lines
  Added in v.1.33


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