diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 25b928913..c27382eff 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -8,6 +8,7 @@ - fixed #10560: 7.7.2 upgrade script leaves rssFromParent assets behind (Wes Morgan) - fixed #10612: strange i18n, with regard to label - fixed #9935: German characters in Collaboration System + - fixed #10610: editing a page and editing goes away 7.7.13 - fixed #10574: Creating Calendar Entry diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 8cc4b603c..67433325f 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -2728,7 +2728,7 @@ sub www_editSave { } my $object; if ($isNewAsset) { - $object = $self->addChild({className=>$self->session->form->process("class","className")}); + $object = $self->addChild({className=>$session->form->process("class","className")}); return $self->www_view unless defined $object; $object->{_parent} = $self; $object->{_properties}{url} = undef; @@ -2738,15 +2738,15 @@ sub www_editSave { $object = $self->addRevision; } else { - return $self->session->asset($self->getContainer)->www_view; + return $session->asset($self->getContainer)->www_view; } } # Process properties from form post my $errors = $object->processPropertiesFromFormPost; if (ref $errors eq 'ARRAY') { - $self->session->stow->set('editFormErrors', $errors); - if ($self->session->form->process('assetId') eq 'new') { + $session->stow->set('editFormErrors', $errors); + if ($session->form->process('assetId') eq 'new') { $object->purge; return $self->www_add(); } else { @@ -2762,16 +2762,27 @@ sub www_editSave { $object->requestAutoCommit; } # else, try to to auto commit - elsif(WebGUI::VersionTag->autoCommitWorkingIfEnabled($self->session, { - override => scalar $self->session->form->process('saveAndCommit'), - allowComments => 1, - returnUrl => $self->getUrl, - }) eq 'redirect') { - return undef; + else { + my $commitStatus = WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { + override => scalar $session->form->process('saveAndCommit'), + allowComments => 1, + returnUrl => $self->getUrl, + }); + $session->log->warn('editSave commitStatus: '. $commitStatus); + if ($commitStatus eq 'redirect') { + ##Redirect set by tag. Return nothing to send the user over to the redirect. + return undef; + } + elsif ($commitStatus eq 'commit') { + ##Commit was successful. Update the local object cache so that it will no longer + ##register as locked. + $self->{_properties}{isLockedBy} = $object->{_properties}{isLockedBy} = undef; + $session->log->warn('Cleared isLockedBy'); + } } # Handle "saveAndReturn" button - if ( $self->session->form->process( "saveAndReturn" ) ne "" ) { + if ( $session->form->process( "saveAndReturn" ) ne "" ) { return $object->www_edit; } @@ -2795,8 +2806,8 @@ sub www_editSave { return $self->session->asset->$method(); } - $self->session->asset($object->getContainer); - return $self->session->asset->www_view; + $session->asset($object->getContainer); + return $session->asset->www_view; } diff --git a/lib/WebGUI/AssetVersioning.pm b/lib/WebGUI/AssetVersioning.pm index 2a8daaf0b..219edb789 100644 --- a/lib/WebGUI/AssetVersioning.pm +++ b/lib/WebGUI/AssetVersioning.pm @@ -536,7 +536,7 @@ Sets the versioning lock to "off" so that this piece of content may be edited on sub unsetVersionLock { my $self = shift; - $self->session->db->write("update asset set isLockedBy=NULL where assetId=".$self->session->db->quote($self->getId)); + $self->session->db->write("update asset set isLockedBy=NULL where assetId=?",[$self->getId]); $self->{_properties}{isLockedBy} = undef; $self->updateHistory("unlocked"); $self->purgeCache;