--- loncom/interface/lonhtmlcommon.pm 2010/04/13 10:21:29 1.271 +++ loncom/interface/lonhtmlcommon.pm 2010/06/10 09:09:59 1.277 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common html routines # -# $Id: lonhtmlcommon.pm,v 1.271 2010/04/13 10:21:29 www Exp $ +# $Id: lonhtmlcommon.pm,v 1.277 2010/06/10 09:09:59 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -927,7 +927,7 @@ Returns: none =item Increment_PrgWin -Increment the count of items completed for the progress window by 1. +Increment the count of items completed for the progress window by $step or 1 if no step is provided. Inputs: @@ -940,6 +940,8 @@ Inputs: =item $extraInfo A description of the items being iterated over. Typically 'student'. +=item $step (optional) counter step. Will be set to default 1 if ommited. + =back Returns: none @@ -1049,11 +1051,22 @@ sub Update_PrgWin { # increment progress state sub Increment_PrgWin { - my ($r,$prog_state,$extraInfo)=@_; - $$prog_state{'done'}++; + my ($r,$prog_state,$extraInfo,$step)=@_; + if ( ($step == 0) || ($step !~ /^\d+(\.\d+)*$/) ) { + $step = 1; # default + } + $$prog_state{'done'} += $step; + + # Catch (max modulo step) <> 0 + my $current = $$prog_state{'done'}; + my $last = ($$prog_state{'max'} - $current); + if ($last <= 0) { + $last = 1; + $current = $$prog_state{'max'}; + } + my $time_est= (&Time::HiRes::time() - $$prog_state{'firststart'})/ - $$prog_state{'done'} * - ($$prog_state{'max'}-$$prog_state{'done'}); + $current * $last; $time_est = int($time_est); # my $min = int($time_est/60); @@ -1100,7 +1113,7 @@ sub Increment_PrgWin { $$prog_state{'window'}.'.document.'. $$prog_state{'formname'}.'.'. $$prog_state{'inputname'}.'.value="'. - $$prog_state{'done'}.'/'.$$prog_state{'max'}. + $current.'/'.$$prog_state{'max'}. ': '.$time_est.' '.&mt('remaining').' '.$lasttime.'";' )); $$prog_state{'laststart'}=&Time::HiRes::time(); @@ -1481,7 +1494,10 @@ returns: nothing my $lasttext = $last->{'no_mt'} ? $last->{'text'} : mt( $last->{'text'} ); - $links .= htmltag( 'li', htmltag('b', $lasttext), {title => $lasttext}); + # last breadcrumb is the first order heading of a page + # for course breadcrumbs it's just bold + $links .= htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1', + $lasttext), {title => $lasttext}); my $icons = ''; $faq = $last->{'faq'} if (exists($last->{'faq'})); @@ -2392,6 +2408,7 @@ returns: XHTML list as String. # \@items, {listattr => { class => 'abc', id => 'xyx' }, itemattr => {class => 'abc', id => 'xyx'}} sub list_from_array { my ($items, $args) = @_; + return unless scalar @$items; my ($ul, $li) = inittags( qw(ul li) ); my $listitems = join '', map { $li->($_, $args->{itemattr}) } @$items; return $ul->( $listitems, $args->{listattr} );