[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--