fixed: Importing a package can break when updating a pending asset
This commit is contained in:
parent
878ded9c70
commit
48d5d544eb
3 changed files with 43 additions and 7 deletions
|
|
@ -9,6 +9,7 @@
|
|||
- fixed: Editting matrix listings shows fields from other matrix assets
|
||||
- fixed: Matrix assets show pending listings from all matrix assets on a site
|
||||
- fixed: Changing name of Matrix listing leaves discussion forum with old name
|
||||
- fixed: Importing a package can break when updating a pending asset
|
||||
|
||||
7.5.7
|
||||
- fixed: HttpProxy mixes original site's content encoding with WebGUI's
|
||||
|
|
|
|||
|
|
@ -1902,6 +1902,39 @@ sub newByUrl {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 newPending ( session, assetId )
|
||||
|
||||
Instances an existing Asset by assetId, ignoring the status and always selecting the most recent revision.
|
||||
|
||||
=head3 session
|
||||
|
||||
A reference to the current session.
|
||||
|
||||
=head3 assetId
|
||||
|
||||
The asset's id
|
||||
|
||||
=cut
|
||||
|
||||
sub newPending {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $assetId = shift;
|
||||
croak "First parameter to newPending needs to be a WebGUI::Session object"
|
||||
unless $session && $session->isa('WebGUI::Session');
|
||||
croak "Second parameter to newPending needs to be an assetId"
|
||||
unless $assetId;
|
||||
my ($className, $revisionDate) = $session->db->quickArray("SELECT asset.className, assetData.revisionDate FROM asset INNER JOIN assetData ON asset.assetId = assetData.assetId WHERE asset.assetId = ? ORDER BY assetData.revisionDate DESC LIMIT 1", [ $assetId ]);
|
||||
if ($className ne "" || $revisionDate ne "") {
|
||||
return WebGUI::Asset->new($session, $assetId, $className, $revisionDate);
|
||||
}
|
||||
else {
|
||||
croak "Invalid asset id '$assetId' requested!";
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 prepareView ( )
|
||||
|
||||
Executes what is necessary to make the view() method work with content chunking. This includes things like processing template head tags.
|
||||
|
|
|
|||
|
|
@ -136,8 +136,8 @@ sub importAssetData {
|
|||
WebGUI::Asset->loadModule( $self->session, $class );
|
||||
|
||||
my $asset;
|
||||
my $assetExists = WebGUI::Asset->assetExists($self->session, $id, $class, $version);
|
||||
if ($assetExists) { # update an existing revision
|
||||
my $revisionExists = WebGUI::Asset->assetExists($self->session, $id, $class, $version);
|
||||
if ($revisionExists) { # update an existing revision
|
||||
$asset = WebGUI::Asset->new($self->session, $id, $class, $version);
|
||||
$error->info("Updating an existing revision of asset $id");
|
||||
$asset->update($data->{properties});
|
||||
|
|
@ -150,13 +150,15 @@ sub importAssetData {
|
|||
}
|
||||
}
|
||||
else {
|
||||
$asset = WebGUI::Asset->new($self->session, $id, $class);
|
||||
if (defined $asset) { # create a new revision of an existing asset
|
||||
$error->info("Creating a new revision of asset $id");
|
||||
eval {
|
||||
$asset = WebGUI::Asset->newPending($self->session, $id, $class);
|
||||
};
|
||||
if (defined $asset) { # create a new revision of an existing asset
|
||||
$error->info("Creating a new revision of asset $id");
|
||||
$asset = $asset->addRevision($data->{properties}, $version, {skipAutoCommitWorkflows => 1});
|
||||
}
|
||||
else { # add an entirely new asset
|
||||
$error->info("Adding $id that didn't previously exist.");
|
||||
else { # add an entirely new asset
|
||||
$error->info("Adding $id that didn't previously exist.");
|
||||
$asset = $self->addChild($data->{properties}, $id, $version, {skipAutoCommitWorkflows => 1});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue