HTMLUtils - a module for useful HTML utilities for Genex DBs

- NAME
- SYNOPSIS
- DESCRIPTION
- FUNCTIONS
- AUTHOR
- SEE ALSO

# NAME

HTMLUtils - a module for useful HTML utilities for Genex DBs

# SYNOPSIS

      use HTMLUtils;

      %new_hash = post_process(%args);

      $html_string = objs2table(HEADER=>1, CGI=>$cgi, OBJECTS=>\@obj_list);

# DESCRIPTION

Methods for transforming information from a GeneX DB into HTML.

# FUNCTIONS

`post_process($cgi,%args)`
  Begin to post-process information from a Genex table before writing it to an HTML table. In order to write HTML we use CGI.pm, so any calling routine must pass in the current CGI object.

  Currently, `post_process()` handles the following tasks:

  - Lookup foreign key values from the appropriate table.

  - Change the output of fkeys to be hyperlinks to the cgi script for that table type.

  - Modify URLs and email addresses to be active hyperlinks.

  - Filter out sensitive information such as login names and passwords.

  For example, after generating a Genex object, we can create a hyperlinked HTML table output for that object by doing the following:

          # we need a CGI object
          my $q = new CGI;

          my $object = Bio::Genex::Species->new(id=>25);
          foreach (@{Bio::Genex::Species->column_names()}) {
            no strict 'refs';
            $tmp_values{$_} = $object->$_;
          }

          # call post_process() to HTML'ize the values
          %tmp_values = post_process($q,%tmp_values);

          # make a header that's human readable
          my @rows;
          my @keys = keys %{Bio::Genex::Species->column2name()};
          my @values = values %{Bio::Genex::Species->column2name()};
          push(@rows,td([@values]));

          # add the data in the same order of the header
          push(@rows,td([@tmp_values{@keys}]));

          # now contstruct the table,
          print $q->html_start("Information for Species: $object->primary_scientific_name");
          print $q->table({-border=>''},
                          Tr(\@rows)  # Tr() distributes over an array reference
                         );
          print $q->html_end();

objs2table(HEADER=>1, CGI=>$cgi, OBJECTS=>\@obj_list)
  Returns an HTML string encoding the list of objects as an HTML table rows using the $cgi object. Each attribute will be printed out as a separate column for each object. Before printing the value for each object the data will be fed through `post_process()`.

  The 'HEADER' parameter pair is optional and specifies that a human readable header row should be included as the first row of the table output.

  NOTE: The returned string must still be wrapped by a $cgi->`table()` function call. This is so that the application can pass optional parameters to the table call.

  CAUTION: it is assumed that all the objects in @obj_list are of the same class.

# AUTHOR

Jason Stewart (jes@ncgr.org)

# SEE ALSO

perl(1).