From fd98f4acc4ec2ea139236b3fbbabbe2e5ff9f70b Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 22 Oct 2010 15:45:09 -0700 Subject: [PATCH] Make a write method, similar to Asset's. --- lib/WebGUI/Crud.pm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/WebGUI/Crud.pm b/lib/WebGUI/Crud.pm index 803ef47ea..b237b88c2 100644 --- a/lib/WebGUI/Crud.pm +++ b/lib/WebGUI/Crud.pm @@ -952,5 +952,29 @@ sub updateFromFormPost { return $self->update(\%data); } +#------------------------------------------------------------------- + +=head2 write ( ) + +Serializes the object's data to the database. Automatically handles deserializing property values to javascript, +if necessary. + +=cut + + +sub write { + my $self = shift; + my $session = $self->session; + my $data = {}; + PROPERTY: foreach my $property_name ($self->meta->get_all_property_list) { + my $property = $self->meta->find_attribute_by_name($property_name); + my $value = $self->$property_name; + if ($property->does('WebGUI::Definition::Meta::Property::Serialize')) { + $value = eval { JSON::to_json($value); } || ''; + } + $data->{$property_name} = $value; + } + $session->db->setRow($self->tableName, $self->tableKey, $data); +} 1;