1: # The LearningOnline Network with CAPA
2: # input definitons
3:
4: package Apache::inputtags;
5: use strict;
6:
7: sub BEGIN {
8: &Apache::lonxml::register('Apache::inputtags',('textarea','textline','answergroup','datasubmission'));
9: }
10:
11:
12: sub initialize_inputtags {
13: @Apache::inputtags::input=();
14: @Apache::inputtags::response=();
15: @Apache::inputtags::responselist=();
16: @Apache::inputtags::answergroup=();
17: $Apache::inputtags::part='';
18: %Apache::inputtags::params=();
19: }
20:
21: sub start_textarea {
22: my ($target,$token,$parstack,$parser,$safeeval)=@_;
23: my $result = "";
24: $Apache::inputtags::curvalue++;
25: if ($target eq 'web') {
26: $result= '<textarea name="HWVAL'.$Apache::inputtags::curvalue.'" value="">';
27: }
28: return $result;
29: }
30:
31: sub end_textarea {
32: my ($target,$token,$parstack,$parser,$safeeval)=@_;
33: return "</textarea>";
34: }
35:
36: sub start_textline {
37: my ($target,$token,$parstack,$parser,$safeeval)=@_;
38: my $result = "";
39: $Apache::inputtags::curvalue++;
40: my $args ='';
41: if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
42: my $size = &Apache::run::run("{$args;".'return $size}',$safeeval);
43: if ($size eq '') { $size=20; }
44: if ($target eq 'web') {
45: $result= '<input type="text" name="HWVAL'.$Apache::inputtags::curvalue.'" value="" size="'.$size.'">';
46: }
47: return $result;
48: }
49:
50: sub end_textline {
51: my ($target,$token,$parstack,$parser,$safeeval)=@_;
52: return "";
53: }
54:
55: sub start_answergroup {
56: my ($target,$token,$parstack,$parser,$safeeval)=@_;
57: my $args ='';
58: if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
59: my $id = &Apache::run::run("{$args;".'return $id}',$safeeval);
60: push (@Apache::inputtags::answergroup,$id);
61: if ($target == 'web') {
62:
63: }
64: return '';
65: }
66:
67: sub end_answergroup {
68: my ($target,$token,$parstack,$parser,$safeeval)=@_;
69: return ''; # <answergroup> has ben deprecated
70: my $args ='';
71: if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
72: my $id = &Apache::run::run("{$args;".'return $id}',$safeeval);
73: push (@Apache::inputtags::answergroup,$id);
74: my $result='';
75: my $button='<input type="submit" name="submit" value="Submit All Answers">';
76: my $showbutton='1';
77: my $usedtry='1';
78: my $response='';
79: if ( $target == 'web' ) {
80: if ( defined $ENV{'form.submit'}) {
81: }
82: if ($showbutton > 0) { $result.=$button }
83: }
84: pop @Apache::inputtags::answergroup;
85: return $result;
86: }
87:
88:
89: sub start_datasubmission {
90: }
91:
92: sub end_datasubmission {
93: my ($target,$token,$parstack,$parser,$safeeval)=@_;
94: if ( $target == 'web' ) {
95: return '<input type="submit" name="submit" value="Submit All Data">';
96: }
97: }
98:
99: sub finalizeawards {
100: my $result='';
101: my $award;
102: if ($#_ == '-1') { $result = "NO_RESPONSE"; }
103: foreach $award (@_) { if ($award eq '') {$result='MISSING_ANSWER'; last;}}
104: if ($result eq '' ) {
105: foreach $award (@_) {
106: if ($award eq 'UNIT_FAIL' ||
107: $award eq 'NO_UNIT' ||
108: $award eq 'UNIT_NOTNEEDED') {
109: $result=$award; last;
110: }
111: }
112: }
113: &Apache::lonxml::debug("1 $result");
114: if ($result eq '' ) {
115: foreach $award (@_) {
116: if ($award eq 'WANTED_NUMERIC' ||
117: $award eq 'BAD_FORMULA') {$result=$award; last;}
118: }
119: }
120: &Apache::lonxml::debug("2 $result");
121: if ($result eq '' ) {
122: foreach $award (@_) { if ($award eq 'SIG_FAIL') {$result=$award; last;} }
123: }
124: &Apache::lonxml::debug("3 $result");
125: if ($result eq '' ) {
126: foreach $award (@_) { if ($award eq 'INCORRECT') {$result=$award; last;} }
127: }
128: &Apache::lonxml::debug("4 $result");
129: if ($result eq '' ) {
130: foreach $award (@_) { if ($award eq 'APPROX_ANS') {$result=$award; last;} }
131: }
132: &Apache::lonxml::debug("5 $result");
133: if ($result eq '' ) { $result='EXACT_ANS'; }
134: &Apache::lonxml::debug("6 $result");
135: return $result
136: }
137:
138: sub grade {
139: my ($target) = @_;
140: my $id = $Apache::inputtags::part;
141: my $result='';
142: my $button='<input type="submit" name="submit" value="Submit All Answers">';
143: my $showbutton='1';
144: my $usedtry='1';
145: my $response='';
146: if ( $target == 'web' ) {
147: if ( defined $ENV{'form.submit'}) {
148: my @awards = ();
149: foreach $response (@Apache::inputtags::responselist) {
150: my $value=$Apache::lonhomework::results{"response.awarddetail.$id.$response"};
151: if ( $value ne '' ) {
152: &Apache::lonxml::debug("keep ing $value from $response for $id");
153: push (@awards,$value);
154: } else {
155: &Apache::lonxml::debug("skipping $value from $response for $id");
156: }
157: }
158: my $finalaward = &finalizeawards(@awards);
159: &Apache::lonxml::debug("final award $finalaward");
160: }
161: if ($showbutton > 0) { $result.=$button }
162: }
163: return $result;
164: }
165:
166: 1;
167: __END__
168:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>