--- loncom/homework/randomlabel.pm 2001/08/29 19:48:26 1.2
+++ loncom/homework/randomlabel.pm 2001/08/30 19:39:12 1.3
@@ -1,7 +1,8 @@
# The LearningOnline Network with CAPA
# random labelling tool
-# 7/20/2001 Isaac Tsai
-# 8/10/2001 Isaac Tsai
+# 7/20/2001 Isaac Tsai, initial syntax
+# 8/10/2001 Isaac Tsai,
+# 8/30/2001 Isaac Tsai,
# SYNTAX:
#
#
@@ -16,18 +17,19 @@
#
#
#
-#
-#
-#
+#
+#
+#
#
#
# ===========================================
-# location (123,456): $GroupOne[1] = ...
-# (321,654): $GroupOne[2] = ...
-# (213,546): $GroupOne[3] = ...
-# location (12,45) : $GroupOne[1] = ...
-# (321,654): $GroupOne[2] = ...
-# (213,546): $GroupOne[3] = ...
+# side effect:
+# location (123,456): $GroupOne[0] = 2 # images give out indexes
+# (321,654): $GroupOne[1] = 1
+# (213,546): $GroupOne[2] = 0
+# location (12,45) : $GroupTwo[0] = "TEXT-3"
+# (32,65) : $GroupTwo[1] = "TEXT-1"
+# (21,54) : $GroupTwo[2] = "TEXT-2"
# ===========================================
package Apache::randomlabel;
use strict;
@@ -45,17 +47,35 @@ sub start_randomlabel {
my $w= &Apache::lonxml::get_param('width',$parstack,$safeeval);
my $h= &Apache::lonxml::get_param('height',$parstack,$safeeval);
- $result.="
";
+ }
+ return $result;
}
sub start_labelgroup {
@@ -69,50 +89,52 @@ sub start_labelgroup {
@Apache::randomlabel::xcoord = ();
@Apache::randomlabel::ycoord = ();
@Apache::randomlabel::label_arr = ();
- return '';
+ return $result;
}
# begin to assign labels to locations
sub end_labelgroup {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $gname = $Apache::randomlabel::groupname;
- my $count = $#Apache::randomlabel::label_arr + 1;
+ my $count;
my $type = $Apache::randomlabel::type;
my $code;
my $out;
my $label;
my $x;
my $y;
- my $text;
+ my $text='';
my $str;
my $xstr;
my $ystr;
- if( $type eq 'text') {
- $text= "";
- $str = 'LB';
- $xstr = 'X';
- $ystr = 'Y';
- }
- if( $type eq 'image') {
- $text= "";
- $str = 'IMG';
- $xstr = 'IX';
- $ystr = 'IY';
- }
my @idx_arr = (0 .. $#Apache::randomlabel::label_arr);
&Apache::structuretags::shuffle(\@idx_arr);
for(0 .. $#Apache::randomlabel::label_arr) {
$label = "$Apache::randomlabel::label_arr[ $idx_arr[$_] ]";
- $x = pop @Apache::randomlabel::xcoord;
- $y = pop @Apache::randomlabel::ycoord;
- $text .= "";
- $text .= " ";
- $text .= "";
- $code = "push(\@$gname, $label);" ;
+ if( $type eq 'text') {
+ $code = "push(\@$gname, $label);" ;
+ $str = 'LB'.$Apache::randomlabel::tlabel_cnt;
+ $xstr = 'X'.$Apache::randomlabel::tlabel_cnt;
+ $ystr = 'Y'.$Apache::randomlabel::tlabel_cnt;
+ $Apache::randomlabel::tlabel_cnt += 1;
+ } elsif ( $type eq 'image') {
+ $code = "push(\@$gname, $idx_arr[$_]);" ;
+ $str = 'LB'.$Apache::randomlabel::ilabel_cnt;
+ $xstr = 'X'.$Apache::randomlabel::ilabel_cnt;
+ $ystr = 'Y'.$Apache::randomlabel::ilabel_cnt;
+ $Apache::randomlabel::ilabel_cnt += 1;
+ } else {
+ }
+ # $x = pop @Apache::randomlabel::xcoord;
+ # $y = pop @Apache::randomlabel::ycoord;
+ $x = $Apache::randomlabel::xcoord[$_];
+ $y = $Apache::randomlabel::ycoord[$_];
+ $text .= "";
+ $text .= " ";
+ $text .= "";
$out=Apache::run::run($code,$safeeval);
}
-
return $text;
}
@@ -121,27 +143,34 @@ 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 $result='';
push(@Apache::randomlabel::xcoord,$x);
push(@Apache::randomlabel::ycoord,$y);
- return '';
+ return $result;
}
sub end_location {
- return '';
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result='';
+ return $result;
}
#
sub start_label {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $ltext=&Apache::lonxml::get_all_text("/label",$$parser[$#$parser]);
+ my $result='';
push(@Apache::randomlabel::label_arr,$ltext);
- return '';
+ return $result;
}
sub end_label {
- return '';
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result='';
+
+ return $result;
}