# The LearningOnline Network with CAPA # chemical equation style response # # $Id: chemresponse.pm,v 1.2 2003/05/04 22:14:53 albertel Exp $ # # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # # LON-CAPA is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # LON-CAPA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ # # package Apache::chemresponse; use strict; use Apache::lonxml; use Apache::lonnet; BEGIN { &Apache::lonxml::register('Apache::chemresponse',('chemresponse','chemstructure')); } sub seperate_jme_window { my ($smile_input,$jme_input,$molecule)=@_; my $smilesection; if (defined($smile_input)) { $smilesection=< Molecule Editor
You have to enable Java and JavaScript on your machine.
JME Editor courtesy of Peter Ertl, Novartis

  
CHEMPAGE $body=&HTML::Entities::encode($body); $body=~s/\n/ /g; my $result=< CHEMINPUT return $result; } sub start_chemresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; my $partid = $Apache::inputtags::part; my $id = &Apache::response::start_response($parstack,$safeeval); if ($target eq 'meta') { } elsif ($target eq 'web') { 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); } $result=&seperate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule); $result.= ''; } elsif ($target eq 'edit') { $result .=&Apache::edit::tag_start($target,$token); $result .=&Apache::edit::text_arg('Starting Molecule:','molecule', $token,40); my $molecule=&Apache::lonxml::get_param('molecule',$parstack, $safeeval); $result .=&seperate_jme_window(undef, &Apache::edit::html_element_name('molecule'), $molecule); $result .='
'; $result .=&Apache::edit::text_arg('Correct Answer:','answer', $token,40); $result .=&Apache::edit::hidden_arg('jmeanswer',$token); my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack, $safeeval); $result .=&seperate_jme_window( &Apache::edit::html_element_name('answer'), &Apache::edit::html_element_name('jmeanswer'), $jmeanswer); $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, $safeeval,'molecule', 'answer','jmeanswer'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } } return $result; } sub end_chemresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; if ($target eq 'grade' && defined($ENV{'form.submitted'})) { &Apache::response::setup_params($$tagstack[-1]); my $response = &Apache::response::getresponse(); if ( $response =~ /[^\s]/) { my $partid = $Apache::inputtags::part; my $id = $Apache::inputtags::response['-1']; my $answer=&Apache::lonxml::get_param('answer',$parstack,$safeeval); my %previous = &Apache::response::check_for_previous($response,$partid,$id); $Apache::lonhomework::results{"resource.$partid.$id.submission"}=$response; &Apache::lonxml::debug("submitted a $response for $answer
\n"); my $ad; if ($response eq $answer) { $ad='EXACT_ANS'; } else { $ad='INCORRECT'; } &Apache::response::handle_previous(\%previous,$ad); $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}=$ad; $Apache::lonhomework::results{"resource.$partid.$id.molecule"}=$ENV{"form.MOLECULE_$id"}; } } elsif ($target eq "edit") { $result.= &Apache::edit::tag_end($target,$token,''); } &Apache::response::end_response; return $result; } sub start_chemstructure { } sub end_chemstructure { } 1; __END__