version 1.2, 2010/10/04 14:34:43
|
version 1.4, 2010/10/04 19:26:39
|
Line 33 use Apache::lonlocal;
|
Line 33 use Apache::lonlocal;
|
use Apache::lonnet; |
use Apache::lonnet; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse')); |
&Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse','backgroundplot')); |
} |
} |
|
|
sub geogebra_startcode { |
sub geogebra_startcode { |
|
my ($id)=@_; |
return (<<ENDSTARTCODE); |
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> |
codebase="/adm/geogebra/" width="714" height="447" MAYSCRIPT> |
<param name="java_arguments" value="-Xmx512m -Djnlp.packEnabled=true"/> |
<param name="java_arguments" value="-Xmx512m -Djnlp.packEnabled=true"/> |
ENDSTARTCODE |
ENDSTARTCODE |
Line 55 ENDSPLINEPROGRAM
|
Line 56 ENDSPLINEPROGRAM
|
} |
} |
|
|
sub geogebra_default_parameters { |
sub geogebra_default_parameters { |
|
my ($id)=@_; |
return(<<ENDDEFAULTPARAMETERS); |
return(<<ENDDEFAULTPARAMETERS); |
<param name="image" value="/adm/lonIcons/lonanim.gif" /> |
<param name="image" value="/adm/lonIcons/lonanim.gif" /> |
<param name="boxborder" value="false" /> |
<param name="boxborder" value="false" /> |
Line 76 sub geogebra_default_parameters {
|
Line 78 sub geogebra_default_parameters {
|
<param name="enableShiftDragZoom" value="false" /> |
<param name="enableShiftDragZoom" value="false" /> |
<param name="allowRescaling" value="false" /> |
<param name="allowRescaling" value="false" /> |
<param name="enableLabelDrags" value="false" /> |
<param name="enableLabelDrags" value="false" /> |
<param name="ggbOnInitParam" value="applet1" /> |
<param name="ggbOnInitParam" value="applet_$id" /> |
ENDDEFAULTPARAMETERS |
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() { |
|
ENDSTARTINIT |
|
} |
|
|
|
sub axes_script { |
|
my ($id,$xmin,$xmax,$ymin,$ymax,$xvisible,$yvisible,$gvisible)=@_; |
|
return (<<ENDAXESSCRIPT); |
|
// changes (xmin, xmax, ymin, ymax) |
|
document.ggbApplet_$id.setCoordSystem($xmin,$xmax,$ymin,$ymax); |
|
|
|
// makes the (x,y) axis (in)visible |
|
document.ggbApplet_$id.setAxesVisible($xvisible,$yvisible); |
|
// makes the grid (in)visible |
|
document.ggbApplet_$id.setGridVisible($gvisible); |
|
ENDAXESSCRIPT |
|
} |
|
|
|
sub plot_script { |
|
my ($id,$function)=@_; |
|
return (<<ENDPLOTSCRIPT); |
|
document.ggbApplet_$id.evalCommand("y=$function"); |
|
ENDPLOTSCRIPT |
|
} |
|
|
|
sub start_backgroundplot { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
my $result=''; |
|
my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1]; |
|
my $function=&Apache::lonxml::get_param('function',$parstack,$safeeval); |
|
unless ($function) { $function="0"; } |
|
if ($target eq 'web') { |
|
$result.=&plot_script($internalid,$function); |
|
} |
|
return $result; |
|
} |
|
|
|
sub end_backgroundplot { |
|
} |
|
|
|
sub end_init_script { |
|
return (<<ENDENDINIT); |
|
} |
|
// ]]> |
|
</script> |
|
ENDENDINIT |
|
} |
|
|
sub start_functionplotresponse { |
sub start_functionplotresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result=''; |
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); |
|
$xmin=($xmin?$xmin:-10); |
|
my $xmax=&Apache::lonxml::get_param('xmax',$parstack,$safeeval); |
|
$xmax=($xmax?$xmax:10); |
|
my $ymin=&Apache::lonxml::get_param('ymin',$parstack,$safeeval); |
|
$ymin=($ymin?$ymin:-10); |
|
my $ymax=&Apache::lonxml::get_param('ymax',$parstack,$safeeval); |
|
$ymax=($ymax?$ymax:10); |
|
my $xaxisvisible=(&Apache::lonxml::get_param('xaxisvisible',$parstack,$safeeval)=~/on|true|1/i?'true':'false'); |
|
my $yaxisvisible=(&Apache::lonxml::get_param('yaxisvisible',$parstack,$safeeval)=~/on|true|1/i?'true':'false'); |
|
my $gridvisible=(&Apache::lonxml::get_param('gridvisible',$parstack,$safeeval)=~/on|true|1/i?'true':'false'); |
|
|
|
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$result.=&geogebra_startcode(); |
$result.=&start_init_script($internalid); |
$result.=&geogebra_spline_program(); |
$result.=&axes_script($internalid,$xmin,$xmax,$ymin,$ymax,$xaxisvisible,$yaxisvisible,$gridvisible); |
$result.=&geogebra_default_parameters(); |
|
} |
} |
return $result; |
return $result; |
} |
} |
Line 95 sub start_functionplotresponse {
|
Line 176 sub start_functionplotresponse {
|
sub end_functionplotresponse { |
sub end_functionplotresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
&Apache::response::end_response; |
&Apache::response::end_response; |
|
|
my $result; |
my $result; |
|
my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1]; |
|
|
# if ($target eq 'edit') { $result=&Apache::edit::end_table(); } |
# if ($target eq 'edit') { $result=&Apache::edit::end_table(); } |
if ($target eq 'web') { |
if ($target eq 'web') { |
|
$result.=&end_init_script(); |
|
$result.=&geogebra_startcode($internalid); |
|
$result.=&geogebra_spline_program(); |
|
$result.=&geogebra_default_parameters($internalid); |
$result.=&geogebra_endcode(); |
$result.=&geogebra_endcode(); |
} |
} |
return $result; |
return $result; |