Diff for /loncom/xml/lontable.pm between versions 1.1 and 1.2

version 1.1, 2008/11/24 11:56:53 version 1.2, 2008/11/25 12:27:34
Line 239  sub new { Line 239  sub new {
     my $self = {      my $self = {
  alignment      => "left",   alignment      => "left",
  outer_border   => 0,   outer_border   => 0,
  inner_borders  => 0,   inner_border  => 0,
  caption        => "",   caption        => "",
  theme          => "Zurich",   theme          => "Zurich",
  column_count   => 0,   column_count   => 0,
Line 259  sub new { Line 259  sub new {
 #-------------------------------------------------------------------------  #-------------------------------------------------------------------------
 #  #
 #  Methods that get/set table global configuration.  #  Methods that get/set table global configuration.
   #
   
   =pod
   
   =head2 Gets/set alignment.  
   
   If the method is passed a new alignment value, that replaces the current one.
   Regardless, the current alignment is used:
   
   =head3 Examples:
   
    my $align = $table->alignment(); # Return current alignment
    $table->alignment("center");     # Attempt centered alignment.
   
   =cut
   
   sub alignment {
       my ($self, $new_value) = @_;
   
       if (defined($new_value)) {
    $self->{alignment} = $new_value;
       }
       return $self->{alignment};
   }
   
   =pod
   
   =head2 table_border
   
   Set or get the presence of an outer border in the table.
   If passed a parameter, that parameter replaces the current request
   for or not for an outer border. Regardless, the function returns
   the final value of the outer_border request.
   
   =head3 Examples:
   
     $table->table_border(1);      # Request an outer border.
     my $outer_requested = $table->table_border();
   
   =cut
   
   sub table_border {
       my ($self, $new_value) = @_;
   
       if (defined($new_value)) {
    $self->{outer_border} = $new_value;
       }
       return $self->{outer_border};
   }
   
   
   =pod
   
   =head2 cell_border
   
   Set or get the presence of a request for cells to have borders
   drawn around them.  If a paramter is passed, it will be treated as
   a new value for the cell border configuration.  Regardless,the final
   value of that configuration parameter is returned.
   
   =head3 Examples:
   
    my $cell_borders = $table->cell_border(); # ask if cell borders are requested.
    $table->cell_border(1); # Request cell borders.
   
   =cut
   
   sub cell_borders {
       my ($self, $new_value) = @_;
   
       if (defined($new_value)) {
    $self->{inner_border} = $new_value;
       }
       reurn $self->{inner_border};
   }
   
   =pod
   
   =head2 caption
   
   Gets and/or sets the caption string for the table.  The caption string appears to label
   the table.  If a parameter is supplied it will become the new caption string.k
   
   =head3 Examples:
   
   
     $my caption = $table->caption();
     $table->caption("This is the new table caption");
   
   =cut
   
   sub caption {
       my ($self, $new_value) = @_;
   
       if (defined($new_value)) {
    $self->catpion = $new_value;
       }
   
       return $self->caption;
   }
   
   =pod
   
   =head2 theme
   
   Gets and optionally sets the table theme.  The table theme describes how the
   table will be typset by the table package.  If a parameter is supplied it
   will be the new theme selection.
   
   =head3 Examples:
   
     my $theme = $table->theme();
     $table->theme("Dresden");
   
   =cut
   
   sub theme {
       my ($self, $new_value) = @_;
   
       if (defined($new_value)) {
    $self->theme = $new_value;
       }
       return $self->theme;
   }
   
   =pod
   
   =head2 start_row
   
   Begins a new row in the table.  If a row is already open, that row is
   closed off prior to starting the new row.  Rows can have the following attributes
   which are specified by an optional hash passed in to this function.
   
   =over 3
   
   =item default_halign
   
   The default horizontal alignment of the row. This can be "left", "center", or "right"
   
   =item default_valign
   
   The default vertical alignment of the row.  This can be "top", "center", or "bottom"
   
   =back
   
   =head3 Examples:
   
     $table_start_row();                  # no attributes.
     $table_start({default_halign => "center",
                   default_valign => "bottom"}); # Create setting the attrbutes.
   
   =cut
   
   sub start_row {
       my ($self, %config) = @_;
   
       if ($self->row_open) { 
    $self->end_row;
       }
       my $row_hash = {
    is_header      =>  0,
    default_halign => "left",
    default_valign => "top",
    cells          => []
       };
   
       # Override the defaults if the config hash is present:
   
       if (defined(%config)) {
    foreach my $key  (keys %config) {
       $row_hash->{$key} = $config{$key};
    }
       }
       
       my $rows = $self->{rows};
       push(@$rows, $row_hash);
   
       $self->row_open = 1; # Row is now open and ready for business.
   }
   
   =pod
   
   =head2  end_row 
   
   Closes off a row.  Once closed, cells cannot be added to this row again.
   
   =head3 Examples:
   
      $table->close_row();
   
   
   =cut
   
   sub close_row {
       my ($self) = @_;
   
       if ($self->row_open) {
   
    # Mostly we need to determine if this row has the maximum
    # cell count of any row in existence in the table:
   
    my $row        = $self->{rows}[-1];
    my $cells      = $row->{cells};
    my $cell_count = scalar(@$cells);
    if ($cell_count > $self->{column_count}) {
       $self->{column_count} = $cell_count;
    }
   
    $self->row_closed;
       }
   }
   
   =pod
   
   =head2 start_header
   
   Starts a row that is a header.  This is the same as start_row,but the is_header flag
   is set to true.
   
   
   =cut
   
   sub start_header {
       my ($self, %config) = @_;
   
       $self->start_row(%config);
       $self->{rows}[-1]->is_header = 1;
   }
   
   
   

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>