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

matthew lon-capa-cvs@mail.lon-capa.org
Mon, 08 Apr 2002 21:28:53 -0000


matthew		Mon Apr  8 17:28:53 2002 EDT

  Modified files:              
    /loncom/homework	randomlabel.pm 
  Log:
  Sanity checking on all those integers.
  
  
Index: loncom/homework/randomlabel.pm
diff -u loncom/homework/randomlabel.pm:1.22 loncom/homework/randomlabel.pm:1.23
--- loncom/homework/randomlabel.pm:1.22	Fri Mar 22 17:06:06 2002
+++ loncom/homework/randomlabel.pm	Mon Apr  8 17:28:53 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # random labelling tool
 #
-# $Id: randomlabel.pm,v 1.22 2002/03/22 22:06:06 albertel Exp $
+# $Id: randomlabel.pm,v 1.23 2002/04/08 21:28:53 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -64,16 +64,26 @@
   &Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label'));
 }
 
+sub check_int {
+    # utility function to do error checking on a integer.
+    my ($num,$default) = @_;
+    $default = 100 if (! defined($default));
+    $num =~ s/\s+//g;  # We dont need no stinkin white space!
+    # If it is a real, just grab the integer part.
+    ($num,undef) = split (/\./,$num) if ($num =~ /\./); 
+    # set to default if what we have left doesn't match anything...
+    $num = $default unless ($num =~/^\d+$/);
+    return $num;
+}
+
 sub start_randomlabel {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   my $result='';
-  $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
-    '/res/adm/includes/GLabel.class';
+  push (@Apache::lonxml::extlinks, '/res/adm/includes/GLabel.class');
   push (@Apache::lonxml::namespace,'randomlabel');
   my $bgimg= &Apache::lonxml::get_param('bgimg',$parstack,$safeeval);
-
   if ( $bgimg !~ /^http:/ ) {
-    $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$bgimg;
+    push (@Apache::lonxml::extlinks,$bgimg);
     $bgimg=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$bgimg);
     if ($bgimg =~ /$Apache::lonnet::perlvar{'lonDocRoot'}/) {
       $bgimg=~s/$Apache::lonnet::perlvar{'lonDocRoot'}//;
@@ -84,8 +94,8 @@
   }
   my $code = &Apache::lonxml::get_param('code',$parstack,$safeeval);
   my $codebase = &Apache::lonxml::get_param('codebase',$parstack,$safeeval);
-  my $w= &Apache::lonxml::get_param('width',$parstack,$safeeval);
-  my $h= &Apache::lonxml::get_param('height',$parstack,$safeeval);
+  my $w= &check_int(&Apache::lonxml::get_param('width',$parstack,$safeeval));
+  my $h= &check_int(&Apache::lonxml::get_param('height',$parstack,$safeeval));
   my $texwidth= &Apache::lonxml::get_param('texwidth',$parstack,$safeeval);
   if (!$code) { $code='GLabel.class'; }
   if (!$codebase) { $codebase='/res/adm/includes/'; }
@@ -272,8 +282,8 @@
 # <location x="123" y="456" value="some value"/>
 sub start_location {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-  my $x= &Apache::lonxml::get_param('x',$parstack,$safeeval);
-  my $y= &Apache::lonxml::get_param('y',$parstack,$safeeval);
+  my $x= &check_int(&Apache::lonxml::get_param('x',$parstack,$safeeval),50);
+  my $y= &check_int(&Apache::lonxml::get_param('y',$parstack,$safeeval),50);
   my $value= &Apache::lonxml::get_param('value',$parstack,$safeeval);
   my $result='';
   push(@Apache::randomlabel::xcoord,$x);