[LON-CAPA-cvs] cvs: loncom /homework edit.pm hint.pm insertlist.xml
www
www@source.lon-capa.org
Sun, 28 Jun 2009 19:40:41 -0000
This is a MIME encoded message
--www1246218041
Content-Type: text/plain
www Sun Jun 28 19:40:41 2009 EDT
Modified files:
/loncom/homework edit.pm hint.pm insertlist.xml
Log:
Adaptive hint conditions for reactionresponse and organicresponse.
--www1246218041
Content-Type: text/plain
Content-Disposition: attachment; filename="www-20090628194041.txt"
Index: loncom/homework/edit.pm
diff -u loncom/homework/edit.pm:1.122 loncom/homework/edit.pm:1.123
--- loncom/homework/edit.pm:1.122 Wed Feb 18 07:06:12 2009
+++ loncom/homework/edit.pm Sun Jun 28 19:40:41 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# edit mode helpers
#
-# $Id: edit.pm,v 1.122 2009/02/18 07:06:12 raeburn Exp $
+# $Id: edit.pm,v 1.123 2009/06/28 19:40:41 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -612,6 +612,18 @@
</numericalhint>';
}
+sub insert_reactionhint {
+ return '
+<reactionhint>
+</reactionhint>';
+}
+
+sub insert_organichint {
+ return '
+<organichint>
+</organichint>';
+}
+
sub insert_stringhint {
return '
<stringhint>
Index: loncom/homework/hint.pm
diff -u loncom/homework/hint.pm:1.75 loncom/homework/hint.pm:1.76
--- loncom/homework/hint.pm:1.75 Fri Apr 17 01:00:15 2009
+++ loncom/homework/hint.pm Sun Jun 28 19:40:41 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# implements the tags that control the hints
#
-# $Id: hint.pm,v 1.75 2009/04/17 01:00:15 www Exp $
+# $Id: hint.pm,v 1.76 2009/06/28 19:40:41 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,12 +36,13 @@
use Apache::caparesponse();
use Apache::lonmaxima();
use Apache::lonr();
+use Apache::chemresponse();
use Apache::response();
use Apache::lonlocal;
use Storable qw(dclone);
BEGIN {
- &Apache::lonxml::register('Apache::hinttags',('hintgroup','hintpart','numericalhint','stringhint','formulahint','optionhint','radiobuttonhint','mathhint','customhint'));
+ &Apache::lonxml::register('Apache::hinttags',('hintgroup','hintpart','numericalhint','stringhint','formulahint','optionhint','radiobuttonhint','mathhint','customhint','reactionhint','organichint'));
}
@@ -467,6 +468,126 @@
return $result;
}
+# reactionhint
+
+sub start_reactionhint {
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ #do everything in end, so intervening <responseparams> work
+ &Apache::response::start_hintresponse($parstack,$safeeval);
+ my $result;
+ if ($target eq 'edit') {
+ $result.=&Apache::edit::tag_start($target,$token);
+ $result.=&Apache::edit::text_arg('Name:','name',$token);
+ $result.=&Apache::edit::text_arg('Answer:','answer',$token);
+ $result.=&Apache::edit::end_row();
+ $result.=&Apache::edit::start_spanning_row();
+ } elsif ($target eq 'modified') {
+ my $constructtag;
+ $constructtag=&Apache::edit::get_new_args($token,$parstack,
+ $safeeval,'name','answer',
+ );
+ $result = &Apache::edit::rebuild_tag($token);
+ } elsif ($target eq 'web') {
+ &Apache::response::reset_params();
+ }
+ return $result;
+}
+
+sub end_reactionhint {
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result;
+ if ($target eq 'web') {
+ if (!$Apache::lonxml::default_homework_loaded) {
+ &Apache::lonxml::default_homework_load($safeeval);
+ }
+ my $hint_name= &Apache::lonxml::get_param('name',$parstack,$safeeval);
+ &Apache::response::setup_params('reactionhint',$safeeval);
+ my $partid=$Apache::inputtags::part;
+ my $id=$Apache::inputtags::hint[-1];
+ #id submissions occurred under
+ my $submitid=$Apache::inputtags::response[-1];
+ my $response = $Apache::lonhomework::history{
+ "resource.$partid.$submitid.submission"};
+ &Apache::lonxml::debug("hintgroup is using $response<br />\n");
+ my $answer=&Apache::lonxml::get_param('answer',$parstack,
+ $safeeval);
+ &Apache::lonxml::debug("current $response");
+ &Apache::lonxml::debug("current $answer");
+ if (&Apache::chemresponse::chem_standard_order($response) eq
+ &Apache::chemresponse::chem_standard_order($answer)) {
+ push(@Apache::hint::which,$hint_name);
+ }
+ $result='';
+ } elsif ($target eq 'meta') {
+ $result=&Apache::response::meta_package_write($token->[1]);
+ } elsif ($target eq 'edit') {
+ $result.=&Apache::edit::end_row().&Apache::edit::end_table();
+ }
+ &Apache::response::end_hintresponse();
+ return $result;
+}
+
+# organichint
+
+sub start_organichint {
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ #do everything in end, so intervening <responseparams> work
+ &Apache::response::start_hintresponse($parstack,$safeeval);
+ my $result;
+ if ($target eq 'edit') {
+ $result.=&Apache::edit::tag_start($target,$token);
+ $result.=&Apache::edit::text_arg('Name:','name',$token);
+ $result.=&Apache::edit::text_arg('Answer:','answer',$token);
+ $result.=&Apache::edit::end_row();
+ $result.=&Apache::edit::start_spanning_row();
+ } elsif ($target eq 'modified') {
+ my $constructtag;
+ $constructtag=&Apache::edit::get_new_args($token,$parstack,
+ $safeeval,'name','answer',
+ );
+ $result = &Apache::edit::rebuild_tag($token);
+ } elsif ($target eq 'web') {
+ &Apache::response::reset_params();
+ }
+ return $result;
+}
+
+sub end_organichint {
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result;
+ if ($target eq 'web') {
+ if (!$Apache::lonxml::default_homework_loaded) {
+ &Apache::lonxml::default_homework_load($safeeval);
+ }
+ my $hint_name= &Apache::lonxml::get_param('name',$parstack,$safeeval);
+ &Apache::response::setup_params('organichint',$safeeval);
+ my $partid=$Apache::inputtags::part;
+ my $id=$Apache::inputtags::hint[-1];
+ #id submissions occurred under
+ my $submitid=$Apache::inputtags::response[-1];
+ my $response = $Apache::lonhomework::history{
+ "resource.$partid.$submitid.submission"};
+ &Apache::lonxml::debug("hintgroup is using $response<br />\n");
+ my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);
+ my %previous = &Apache::response::check_for_previous($response,$partid,$id);
+ foreach my $answer (@answers) {
+ &Apache::lonxml::debug("submitted a $response for $answer<br \>\n");
+ if ($response eq $answer) {
+ push(@Apache::hint::which,$hint_name);
+ last;
+ }
+ }
+ $result='';
+ } elsif ($target eq 'meta') {
+ $result=&Apache::response::meta_package_write($token->[1]);
+ } elsif ($target eq 'edit') {
+ $result.=&Apache::edit::end_row().&Apache::edit::end_table();
+ }
+ &Apache::response::end_hintresponse();
+ return $result;
+}
+
+
# a part shows if it is on, if no specific parts are on, then default shows
sub start_hintpart {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
Index: loncom/homework/insertlist.xml
diff -u loncom/homework/insertlist.xml:1.12 loncom/homework/insertlist.xml:1.13
--- loncom/homework/insertlist.xml:1.12 Wed Oct 17 22:11:55 2007
+++ loncom/homework/insertlist.xml Sun Jun 28 19:40:41 2009
@@ -65,7 +65,7 @@
<description>Hint</description>
<color>#accacc</color>
<insert_sub>insert_hintgroup</insert_sub>
- <allow>customhint,formulahint,hintpart,mathhint,numericalhint,optionhint,radiobuttonhint,startouttext,stringhint</allow>
+ <allow>customhint,formulahint,hintpart,mathhint,numericalhint,optionhint,radiobuttonhint,reactionhint,organichint,startouttext,stringhint</allow>
</tag>
<tag name="hintpart">
<description>Conditional Hint</description>
@@ -85,6 +85,20 @@
<insert_sub>insert_numericalhint</insert_sub>
<allow>responseparam</allow>
</tag>
+ <tag name="reactionhint">
+ <description>Reaction Hint Condition</description>
+ <color>#ccaacc</color>
+ <insert_sub>insert_reactionhint</insert_sub>
+ <allow>responseparam</allow>
+ </tag>
+ <tag name="organichint">
+ <description>Organic Hint Condition</description>
+ <color>#ccaacc</color>
+ <insert_sub>insert_organichint</insert_sub>
+ <allow>responseparam</allow>
+ </tag>
+
+
<tag name="optionhint">
<description>Option Response Hint Condition</description>
<color>#ccaacc</color>
--www1246218041--