added automatic file versioning to file assets

This commit is contained in:
JT Smith 2004-12-02 17:00:30 +00:00
parent d81ebd361a
commit fd76365c1b
4 changed files with 41 additions and 5 deletions

View file

@ -74,7 +74,11 @@ sub definition {
fileSize=>{
fieldType=>'hidden',
defaultValue=>undef
}
},
olderVersions=>{
fieldType=>'hidden',
defaultValue=>undef
}
}
});
return $class->SUPER::definition($definition);
@ -117,6 +121,26 @@ sub getName {
}
#-------------------------------------------------------------------
=head2 purge
=cut
sub purge {
my $self = shift;
my @old = split("\n",$self->get("olderVersions"));
foreach my $oldone (@old) {
my ($storageId, $filename) = split("|",$oldone);
my $storage = WebGUI::Storage->new($storageId);
$storage->delete;
}
my $storage = WebGUI::Storage->new($self->get("storageId"));
$storage->delete;
return $self->SUPER::purge;
}
#-------------------------------------------------------------------
=head2 www_editSave
@ -131,11 +155,21 @@ sub www_editSave {
my $storage = WebGUI::Storage->create;
my $filename = $storage->addFileFromFormPost("file");
if (defined $filename) {
my $oldVersions;
if ($self->get($filename)) { # do file versioning
my @old = split("\n",$self->get("olderVersions"));
push(@old,$self->get{"storageId")."|".$self->get("filename"));
$oldVersions = join("\n",@old);
}
$self->update({
filename=>$filename,
storageId=>$storage->getId,
fileSize=>$storage->getFileSize
fileSize=>$storage->getFileSize,
olderVersions=>$oldVersions
});
} else {
$storage->delete;
}
return "";
}