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) {