[LON-CAPA-cvs] cvs: loncom /homework optionresponse.pm

www www@source.lon-capa.org
Fri, 05 Feb 2010 15:34:02 -0000


www		Fri Feb  5 15:34:02 2010 EDT

  Modified files:              
    /loncom/homework	optionresponse.pm 
  Log:
  Saving my work: bug #2294 true/false as checkbox
  Still needs XML structure and editor interface, otherwise works.
  
  
Index: loncom/homework/optionresponse.pm
diff -u loncom/homework/optionresponse.pm:1.158 loncom/homework/optionresponse.pm:1.159
--- loncom/homework/optionresponse.pm:1.158	Mon May  4 13:42:50 2009
+++ loncom/homework/optionresponse.pm	Fri Feb  5 15:34:02 2010
@@ -1,7 +1,7 @@
 # LearningOnline Network with CAPA
 # option list style responses
 #
-# $Id: optionresponse.pm,v 1.158 2009/05/04 13:42:50 onken Exp $
+# $Id: optionresponse.pm,v 1.159 2010/02/05 15:34:02 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -463,12 +463,39 @@
               }
           }
       }
+# debug for checkbox
+      my $checkboxopt='';
+# end debug for checkbox
       if ($target ne 'tex') {
 	  if ($Apache::lonhomework::type ne 'exam') {
-	      $optionlist='<select onchange="javascript:setSubmittedPart(\''.
+# we are on the web, this is not an exam, and the problem can be answered
+              if ($checkboxopt) {
+# generate checkboxes
+                  my $fieldname=$Apache::inputtags::response['-1'].':'.$temp;
+                  my $altopt=$opt[0];
+                  if ($opt[0] eq $checkboxopt) {
+                     $altopt=$opt[1];
+                  }
+                  my $defopt=$lastopt;
+                  unless ($defopt) { $defopt=$altopt; }
+                  my $escdefopt=&HTML::Entities::encode($defopt,'\'"&<>');
+                  my $esccheckboxopt=&HTML::Entities::encode($checkboxopt,'\'"&<>');
+                  my $escaltopt=&HTML::Entities::encode($altopt,'\'"&<>');
+# checkboxopt is how the box is labelled
+# altopt is the alternative option
+# lastopt is what the user submitted before
+# defopt is what the field is going to start out with: either previous choice or altopt
+# fieldname is this input field's name after HWVAL_
+                  $optionlist='<input type="hidden" name="HWVAL_'.$fieldname.'" value="'.$escdefopt.'" />'.
+                  '<label><input type="checkbox" name="HWCHK_'.$fieldname.'" onclick="javascript:if (this.form.elements[\'HWCHK_'.
+                  $fieldname.'\'].checked) { this.form.elements[\'HWVAL_'.$fieldname.'\'].value=\''.$esccheckboxopt.'\'; } else { this.form.elements[\'HWVAL_'.$fieldname.'\'].value=\''.$escaltopt.'\'; };setSubmittedPart(\''.$part.'\');"'.($defopt eq $checkboxopt?' checked="checked"':'').' /><i>'.$checkboxopt.":</i></label>\n";
+              } else {
+# classic selection list
+	          $optionlist='<select onchange="javascript:setSubmittedPart(\''.
 		  $part.'\');" name="HWVAL_'.
 		  $Apache::inputtags::response['-1'].':'.$temp.'">'.
 		  $optionlist."</select>\n";
+              }
 	  } else {
 	      $optionlist='<u>'.('&nbsp;'x10).'</u>';
 	  }