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

www www@source.lon-capa.org
Mon, 04 Oct 2010 18:28:53 -0000


www		Mon Oct  4 18:28:53 2010 EDT

  Modified files:              
    /loncom/homework	functionplotresponse.pm structuretags.pm 
  Log:
  Enable more than one GeoGebra response on one page
  
  
Index: loncom/homework/functionplotresponse.pm
diff -u loncom/homework/functionplotresponse.pm:1.2 loncom/homework/functionplotresponse.pm:1.3
--- loncom/homework/functionplotresponse.pm:1.2	Mon Oct  4 14:34:43 2010
+++ loncom/homework/functionplotresponse.pm	Mon Oct  4 18:28:53 2010
@@ -1,7 +1,7 @@
 # LearningOnline Network with CAPA
 # option list style responses
 #
-# $Id: functionplotresponse.pm,v 1.2 2010/10/04 14:34:43 www Exp $
+# $Id: functionplotresponse.pm,v 1.3 2010/10/04 18:28:53 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -37,8 +37,9 @@
 }
 
 sub geogebra_startcode {
+    my ($id)=@_;
     return (<<ENDSTARTCODE);
-<applet name="ggbApplet" code="geogebra.GeoGebraApplet" archive="geogebra.jar"
+<applet name="ggbApplet_$id" code="geogebra.GeoGebraApplet" archive="geogebra.jar"
          codebase="/adm/geogebra/"  width="714" height="447" MAYSCRIPT>
        <param name="java_arguments" value="-Xmx512m -Djnlp.packEnabled=true"/>
 ENDSTARTCODE
@@ -55,6 +56,7 @@
 }
 
 sub geogebra_default_parameters {
+   my ($id)=@_;
    return(<<ENDDEFAULTPARAMETERS);
         <param name="image" value="/adm/lonIcons/lonanim.gif"  />
         <param name="boxborder" value="false"  />
@@ -76,18 +78,58 @@
         <param name="enableShiftDragZoom" value="false" />
         <param name="allowRescaling" value="false" />
         <param name="enableLabelDrags" value="false" />
-        <param name="ggbOnInitParam" value="applet1" />
+        <param name="ggbOnInitParam" value="applet_$id" />
 ENDDEFAULTPARAMETERS
 }
 
+sub init_script {
+   if ($Apache::functionplotresponse::callscripts) {
+      return (<<ENDGGBINIT);
+<script type="text/javascript">
+// <![CDATA[
+function ggbOnInit(param) {
+$Apache::functionplotresponse::callscripts
+}
+// ]]>
+</script>
+ENDGGBINIT
+   }
+}
+
+sub start_init_script {
+    my ($id)=@_;
+    $Apache::functionplotresponse::callscripts.="if (param=='applet_$id') { ggbInit_$id(); }\n";
+    return (<<ENDSTARTINIT);
+<script type="text/javascript">
+// <![CDATA[
+function ggbInit_$id() {
+   alert("Hello $id");
+ENDSTARTINIT
+}
+
+sub end_init_script {
+    return (<<ENDENDINIT);
+}
+// ]]>
+</script>
+ENDENDINIT
+}
+
 sub start_functionplotresponse {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   my $result='';
-  my $id = &Apache::response::start_response($parstack,$safeeval);
+  my $internalid = $Apache::inputtags::part.'_'.&Apache::response::start_response($parstack,$safeeval);
+  my $xmin=&Apache::lonxml::get_param('xmin',$parstack,$safeeval);
+  my $xmax=&Apache::lonxml::get_param('xmax',$parstack,$safeeval);
+  my $ymin=&Apache::lonxml::get_param('ymin',$parstack,$safeeval);
+  my $ymax=&Apache::lonxml::get_param('ymax',$parstack,$safeeval);
+  my $xaxisvisible=&Apache::lonxml::get_param('xaxisvisible',$parstack,$safeeval);
+  my $yaxisvisible=&Apache::lonxml::get_param('yaxisvisible',$parstack,$safeeval);
+  my $gridvisible=&Apache::lonxml::get_param('gridvisible',$parstack,$safeeval);
+
+
   if ($target eq 'web') {
-     $result.=&geogebra_startcode();
-     $result.=&geogebra_spline_program();
-     $result.=&geogebra_default_parameters();
+     $result.=&start_init_script($internalid);
   }
   return $result;
 }
@@ -95,9 +137,16 @@
 sub end_functionplotresponse {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   &Apache::response::end_response;
+
   my $result;
+  my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1];
+
 #  if ($target eq 'edit') { $result=&Apache::edit::end_table(); }
   if ($target eq 'web') {
+     $result.=&end_init_script();
+     $result.=&geogebra_startcode($internalid);
+     $result.=&geogebra_spline_program();
+     $result.=&geogebra_default_parameters($internalid);
      $result.=&geogebra_endcode();
   }
   return $result;
Index: loncom/homework/structuretags.pm
diff -u loncom/homework/structuretags.pm:1.475 loncom/homework/structuretags.pm:1.476
--- loncom/homework/structuretags.pm:1.475	Mon Aug 30 14:06:16 2010
+++ loncom/homework/structuretags.pm	Mon Oct  4 18:28:53 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # definition of tags that give a structure to a document
 #
-# $Id: structuretags.pm,v 1.475 2010/08/30 14:06:16 raeburn Exp $
+# $Id: structuretags.pm,v 1.476 2010/10/04 18:28:53 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -783,6 +783,7 @@
 	&Apache::lonhomework::reset_show_problem_status();
 	$Apache::lonhomework::ignore_response_errors=1;
     }
+    $Apache::functionplotresponse::callscripts='';
     @Apache::inputtags::responselist = ();
     @Apache::inputtags::importlist = ();
     @Apache::inputtags::previous=();
@@ -810,6 +811,7 @@
     undef($Apache::lonhomework::type);
     undef($Apache::lonhomework::scantronmode);
     undef($Apache::lonhomework::ignore_response_errors);
+    undef($Apache::functionplotresponse::callscripts);
     &Apache::lonhomework::reset_show_problem_status();
 }
 
@@ -1202,6 +1204,9 @@
 		}
 	    }
 	}
+        if ($target eq 'web') {
+           $result.=&Apache::functionplotresponse::init_script();
+        }
 	if ($target eq 'grade') {
 	    &Apache::lonhomework::showhash(%Apache::lonhomework::results);
 	    &finalize_storage();