cvsuser     02/04/05 14:26:34

  Modified:    P5EEx/Blue/P5EEx/Blue/Widget/HTML DataTable.pm
  Log:
  added support for the 'save' event which allows us to edit table data from a 
Repository
  
  Revision  Changes    Path
  1.7       +56 -4     p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/DataTable.pm
  
  Index: DataTable.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/DataTable.pm,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- DataTable.pm      22 Mar 2002 23:06:57 -0000      1.6
  +++ DataTable.pm      5 Apr 2002 22:26:34 -0000       1.7
  @@ -1,10 +1,10 @@
   
   ######################################################################
  -## $Id: DataTable.pm,v 1.6 2002/03/22 23:06:57 spadkins Exp $
  +## $Id: DataTable.pm,v 1.7 2002/04/05 22:26:34 spadkins Exp $
   ######################################################################
   
   package P5EEx::Blue::Widget::HTML::DataTable;
  -$VERSION = do { my @r=(q$Revision: 1.6 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
  +$VERSION = do { my @r=(q$Revision: 1.7 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
   
   use P5EEx::Blue::P5EE;
   use P5EEx::Blue::Widget::HTML;
  @@ -99,6 +99,8 @@
       my ($self, $wname, $event, @args) = @_;
       my ($name, $wc, $colnum, $x, $y, $startrow, $maxrows, $width, $direction);
   
  +    #$self->clear_messages();
  +
       $name = $self->{name};
       
$self->{context}->dbgprint("DataTable($name)->handle_event($wname,$event,@args)")
           if ($P5EEx::Blue::DEBUG && $self->{context}->dbg(1));
  @@ -127,6 +129,19 @@
           $self->set("startrow",$startrow);
           return 1;
       }
  +    elsif ($wname eq "$name.save") {
  +        $self->save();
  +        $self->delete("editdata");
  +        return 1;
  +    }
  +    elsif ($wname eq "$name.add") {
  +        $self->{context}->add_message("Add Rows: not yet implemented");
  +        return 1;
  +    }
  +    elsif ($wname eq "$name.delete") {
  +        $self->{context}->add_message("Delete Rows: not yet implemented");
  +        return 1;
  +    }
       elsif ($event eq "sort") {
           ($colnum, $direction) = @args;
   
  @@ -322,6 +337,40 @@
       }
   }
   
  +sub save {
  +    my $self = shift;
  +    my ($repname, $wc, $rep, $table);
  +    my ($editdata, $key, $column, @columns, @values);
  +
  +    $repname = $self->get("repository");
  +    $wc = $self->{context};
  +    $rep = $wc->repository($repname);
  +    if (! $rep) {
  +        $wc->add_message("No repository specified");
  +        return;
  +    }
  +
  +    $table = $self->get("table");
  +    if (! $table) {
  +        $wc->add_message("No table specified");
  +        return;
  +    }
  +
  +    $editdata = $self->get("editdata");
  +    if ($editdata) {
  +        foreach $key (keys %$editdata) {
  +            @columns = ();
  +            @values = ();
  +            foreach $column (keys %{$editdata->{$key}}) {
  +                push(@columns, $column);
  +                push(@values, $editdata->{$key}{$column});
  +            }
  +            $rep->set_values($table, $key, \@columns, \@values);
  +        }
  +    }
  +    $rep->commit();
  +}
  +
   sub substitute {
       my ($self, $text, $values) = @_;
       $self->{context}->dbgprint("DataTable->substitute()")
  @@ -572,7 +621,7 @@
                            #lightweight => 1,
                            label => 'Add Rows',
                            height => 17,
  -                         width => 70,
  +                         width => 85,
                            bevel => 2,
                        )->display();
               $html .= "</td>\n";
  @@ -583,12 +632,15 @@
                            #lightweight => 1,
                            label => 'Delete Rows',
                            height => 17,
  -                         width => 70,
  +                         width => 85,
                            bevel => 2,
                        )->display();
               $html .= "</td></tr></table>\n";
           }
       
  +        my $msgs = $self->get_messages_as_html();
  +        $html .= "$elem_begin$msgs$elem_end" if ($msgs);
  +
           $html .= $table_begin;
           if (!$sql) {
               if ($sortable) {
  
  
  


Reply via email to