--- loncom/homework/default_homework.lcpm 2008/05/30 01:16:04 1.134 +++ loncom/homework/default_homework.lcpm 2008/09/06 21:39:15 1.138 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.134 2008/05/30 01:16:04 www Exp $ +# $Id: default_homework.lcpm,v 1.138 2008/09/06 21:39:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -316,7 +316,9 @@ sub caparesponse_check_list { $unit=~s/\s//; foreach my $response (@$responses) { foreach my $element (@$response) { - $element =~ s/\s//g; + if (($type eq 'float') || (($type eq '') && ($unit ne ''))) { + $element =~ s/\s//g; + } my $appendunit=$unit; if ($unit=~/\%/) { $element=$element/100; @@ -424,10 +426,12 @@ sub caparesponse_check_list { } sub cas { - my ($system,$input)=@_; + my ($system,$input,$library)=@_; my $output; if ($system eq 'maxima') { - $output=&maxima_eval($input); + $output=&maxima_eval($input,$library); + } else { + $output='Error: unrecognized CAS'; } return $output; } @@ -1024,46 +1028,57 @@ sub sec { return $sec; } +sub submission { + my ($partid,$responseid,$subnumber)=@_; + my $sub=''; + if ($subnumber) { $sub=$subnumber.':'; } + return &EXT('user.resource.'.$sub.'resource.'.$partid.'.'.$responseid.'.submission'); +} + +sub currentpart { + return $external::part; +} + +sub eval_time { + my ($timestamp)=@_; + unless ($timestamp) { return ''; } + return &locallocaltime($timestamp); +} + sub open_date { my ($partid)=@_; unless ($partid) { $partid=0; } - my @dc = split(/\s+/,localtime(&EXT('resource.'.$partid.'.opendate'))); - return '' if ($dc[0] eq "Wed" and $dc[2] == 31 and $dc[4] == 1969); - my @hm = split(/:/,$dc[3]); - my $ampm = " am"; - if ($hm[0] > 12) { - $hm[0]-=12; - $ampm = " pm"; - } - return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$hm[0].':'.$hm[1].$ampm; + return &eval_time(&EXT('resource.'.$partid.'.opendate')); } sub due_date { my ($partid)=@_; unless ($partid) { $partid=0; } - my @dc = split(/\s+/,localtime(&EXT('resource.'.$partid.'.duedate'))); - return '' if ($dc[0] eq "Wed" and $dc[2] == 31 and $dc[4] == 1969); - my @hm = split(/:/,$dc[3]); - my $ampm = " am"; - if ($hm[0] > 12) { - $hm[0]-=12; - $ampm = " pm"; - } - return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$hm[0].':'.$hm[1].$ampm; + return &eval_time(&EXT('resource.'.$partid.'.duedate')); } sub answer_date { my ($partid)=@_; unless ($partid) { $partid=0; } - my @dc = split(/\s+/,localtime(&EXT('resource.'.$partid.'.answerdate'))); - return '' if ($dc[0] eq "Wed" and $dc[2] == 31 and $dc[4] == 1969); - my @hm = split(/:/,$dc[3]); - my $ampm = " am"; - if ($hm[0] > 12) { - $hm[0]-=12; - $ampm = " pm"; - } - return $dc[0].', '.$dc[1].' '.$dc[2].', '.$dc[4].' at '.$hm[0].':'.$hm[1].$ampm; + return &eval_time(&EXT('resource.'.$partid.'.answerdate')); +} + +sub open_date_epoch { + my ($partid)=@_; + unless ($partid) { $partid=0; } + return &EXT('resource.'.$partid.'.opendate'); +} + +sub due_date_epoch { + my ($partid)=@_; + unless ($partid) { $partid=0; } + return &EXT('resource.'.$partid.'.duedate'); +} + +sub answer_date_epoch { + my ($partid)=@_; + unless ($partid) { $partid=0; } + return &EXT('resource.'.$partid.'.answerdate'); } sub array_moments {