File: browser

package info (click to toggle)
libace-perl 1.92-12
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,012 kB
  • sloc: perl: 7,763; ansic: 7,420; makefile: 81
file content (68 lines) | stat: -rwxr-xr-x 1,982 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/perl

use strict;
use vars qw($DB);

use lib '..';

use Ace 1.76;
use CGI::Carp qw/fatalsToBrowser/;
use CGI 2.42 qw/:standard :html3 escape/;
use Ace::Browser::AceSubs qw(:DEFAULT ResolveUrl DoRedirect);
use Ace::Browser::SearchSubs;

my $search_class   = param('class');
my $search_pattern = param('query');
my $offset         = AceSearchOffset();

# fetch database handle
$DB = OpenDatabase() || AceError("Couldn't open database.");

# here's where the search happens
my ($objs,$count);
$search_pattern ||= '*';
($objs,$count) = do_search($search_class,$search_pattern || '*',$offset) if $search_class;
DoRedirect(@$objs) if $count==1;

PrintTop(undef,undef,'Acedb Class Search');

display_search($objs,$count,$offset,$search_class,$search_pattern) if defined $search_class;
display_search_form();  
PrintBottom;

sub display_search_form {
  my @classlist = $DB->classes;
  my $name = Configuration()->Name;
  AceSearchTable("$name Class Browser",
		 table({-align=>'CENTER'},
		       TR({-valign=>'MIDDLE'},
			  td(td({-class=>'large',-rowspan=>2},scrolling_list(-name=>'class',
									     -Values=>\@classlist,-size=>10,
									    ))),
			  td({-align=>'LEFT',-valign=>'TOP'},
			     table({-border=>0},
				   TR(td('Search pattern (optional):',textfield(-name=>'query'))),
				   TR(td({-align=>'RIGHT'},submit(-label=>'Search ACE')))))
			 )
		      )
		);
}

sub do_search {
  my ($class,$pattern,$offset) = @_;
  my $count;
  my (@objs) = $DB->fetch(-class=>$class,-pattern=>$pattern,
			  -count=>MAXOBJECTS,-offset=>$offset,
			  -total=>\$count);
  return unless @objs;
  return (\@objs,$count);
}

sub display_search {
  my ($objs,$count,$offset,$class,$pattern) = @_;
  my $title;
  $title = $count > 0 ? p(strong($count),"objects of type",strong($class),"contain pattern",strong($pattern))
    :p({-class=>'error'},'No matching objects found');
  my @objects = map { ObjectLink($_) } @$objs;
  AceResultsTable(\@objects,$count,$offset,$title);
}