AcePerl

 view release on metacpan or  search on metacpan

Ace/Browser/SearchSubs.pm  view on Meta::CPAN

    TR(th({-class=>'resultstitle'},$title));
  unless (@$objects) {
    print end_table,p();
    return;
  }

  print start_Tr,start_td;

  my $need_navbar = $offset > 0 || $count >= MAXOBJECTS;
  my @buttons = make_navigation_bar($offset,$count) if $need_navbar;

  print table({-width=>'50%',-align=>'CENTER'},Tr(@buttons)) if $need_navbar;
  print table({-width=>'100%'},tableize(ROWS,COLS,\@rheaders,\@cheaders,@$objects));

  print end_td,end_Tr,end_table,p();
}

# ------ ugly internal routines for scrolling along the search results list -----
sub make_navigation_bar {
  my($offset,$count) = @_;
  my (@buttons);
  my ($page,$pages) =  (1+int($offset/MAXOBJECTS),1+int($count/MAXOBJECTS));
  my $c = Configuration();
  my $icons  = $c->Icons || '/ico';
  my $spacer = "$icons/". SPACER_ICON;
  my $left   = "$icons/". LEFT_ICON;
  my $right  = "$icons/". RIGHT_ICON;
  my $url    = url(-absolute=>1,-query=>1);
  #  my $url    = self_url();
  push(@buttons,td({-align=>'RIGHT',-valign=>'MIDDLE'},
		   $offset > 0 
		               ? a({-href=>$url
                                  . '&scroll=-' . MAXOBJECTS},
				      img({-src=>$left,-alt=>'< PREVIOUS',-border=>0}))
                               : img({-src=>$spacer,-alt=>''})
		   )
      );

  my $p = 1;
  while ($pages/$p > 25) { $p++; }
  my (@v,%v);
  for (my $i=1;$i<=$pages;$i++) {
    next unless ($i == $page) or (($i-1) % $p == 0);
    my $s = ($i - $page) * MAXOBJECTS;
    push(@v,$s);
    $v{$s}=$i;
  }
  my @hidden;
  Delete('scroll');
  Delete('Go');
  foreach (param()) {
    push(@hidden,hidden(-name=>$_,-value=>[param($_)]));
  }

  push(@buttons,
       td({-valign=>'MIDDLE',-align=>'CENTER'},
	  start_form({-name=>'form1'}),
	  submit(-name=>'Go',-label=>'Go to'),
	  'page',
	  popup_menu(-name=>'scroll',-Values=>\@v,-labels=>\%v,
		     -default=>($page-1)*MAXOBJECTS-$offset,
		     -override=>1,
		     -onChange=>'document.form1.submit()'),
	  "of $pages",
	  @hidden,
	  end_form()
	 )
      );

  push(@buttons,td({-align=>'LEFT',-valign=>'MIDDLE'},
		   $offset + MAXOBJECTS <= $count 
		   ? a({-href=>$url
			    . '&scroll=+' . MAXOBJECTS},
		       img({-src=>$right,-alt=>'NEXT &gt;',-border=>0}))
		   : img({-src=>$spacer,-alt=>''})
		  )
      );
  @buttons;
}

sub min { return $_[0] < $_[1] ? $_[0] : $_[1] }
#line 295

sub tableize {
    my($rows,$columns,$rheaders,$cheaders,@elements) = @_;
    my($result);
    my($row,$column);
    $result .= TR($rheaders ? th('&nbsp;') : (),th({-align=>'LEFT'},$cheaders)) 
      if $cheaders and @$cheaders > 1;
    for ($row=0;$row<$rows;$row++) {
	next unless defined($elements[$row]);
	$result .= "<TR>";
        $result .= qq(<TH  ALIGN=LEFT CLASS="search">$rheaders->[$row]</TH>) if $rheaders;
	for ($column=0;$column<$columns;$column++) {
	    $result .= qq(<TD VALIGN=TOP CLASS="search">) . $elements[$column*$rows + $row] . "</TD>"
		if defined($elements[$column*$rows + $row]);
	}
	$result .= "</TR>";
    }
    return $result;
}

1;

__END__

=back

=head1 BUGS

Please report them.

=head1 SEE ALSO

L<Ace::Object>, L<Ace::Browser::SiteDefs>, L<Ace::Browsr::AceSubs>,
the README.ACEBROWSER file.

=head1 AUTHOR

Lincoln Stein <lstein@cshl.org>.



( run in 0.827 second using v1.01-cache-2.11-cpan-39bf76dae61 )