From b725e93f35b1341fa3cd185edb186a954494cd20 Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Thu, 15 Nov 2007 07:30:15 +0000 Subject: [PATCH] fix shortcuts not copying overrides with asset or removing them on purge --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Shortcut.pm | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index d191cb6fa..a7b8f472c 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -11,6 +11,7 @@ 7.4.14 - fix: CS posts won't allow new attachments after deleting an old one - fix: SSL redirection broken + - fix: Shortcut overrides not copied with asset or removed on purge 7.4.13 - fix: field_loop missing from SQL Form template diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm index 4513698b1..4d2e7fdef 100644 --- a/lib/WebGUI/Asset/Shortcut.pm +++ b/lib/WebGUI/Asset/Shortcut.pm @@ -207,6 +207,19 @@ sub discernUserId { return ($self->canManage && $self->session->var->isAdminOn) ? '1' : $self->session->user->userId; } +#------------------------------------------------------------------- +sub duplicate { + my $self = shift; + my $newAsset = $self->SUPER::duplicate(@_); + $self->session->db->write(<<'END_SQL', [$newAsset->getId, $self->getId]); +INSERT INTO Shortcut_overrides (assetId, fieldName, newValue) +SELECT ?, fieldName, newValue +FROM Shortcut_overrides +WHERE assetId = ? +END_SQL + return $newAsset; +} + #------------------------------------------------------------------- sub getEditForm { my $self = shift; @@ -636,7 +649,16 @@ sub processPropertiesFromFormPost { } #------------------------------------------------------------------- +sub purge { + my $self = shift; + $self->session->db->write(<<'END_SQL', [$self->getId]); +DELETE FROM Shortcut_overrides +WHERE assetId = ? +END_SQL + return $self->SUPER::purge(@_); +} +#------------------------------------------------------------------- sub uncacheOverrides { my $self = shift; WebGUI::Cache->new($self->session,$self->_overridesCacheTag)->delete;