diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index f9a79f4bf..f97ccdde3 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -13,6 +13,7 @@ - fixed: errors on package importing are always reported as corrupted packages - fixed: Optional pubDate RSS field generates warnings when missing - fixed: Collaboration System threads can return other object types when asked for replies + - fixed: Able to cut or trash system assets 7.5.7 - fixed: HttpProxy mixes original site's content encoding with WebGUI's diff --git a/lib/WebGUI/AssetClipboard.pm b/lib/WebGUI/AssetClipboard.pm index 45b7cf3a2..51ccad407 100644 --- a/lib/WebGUI/AssetClipboard.pm +++ b/lib/WebGUI/AssetClipboard.pm @@ -293,6 +293,8 @@ Cuts (removes to clipboard) self, returns the www_view of the Parent if canEdit. sub www_cut { my $self = shift; return $self->session->privilege->insufficient() unless $self->canEdit; + return $self->session->privilege->vitalComponent + if $self->get('isSystem'); $self->cut; $self->session->asset($self->getParent); return $self->getParent->www_view; @@ -311,7 +313,7 @@ sub www_cutList { return $self->session->privilege->insufficient() unless $self->canEdit; foreach my $assetId ($self->session->form->param("assetId")) { my $asset = WebGUI::Asset->newByDynamicClass($self->session,$assetId); - if ($asset->canEdit) { + if ($asset->canEdit && !$asset->get('isSystem')) { $asset->cut; } } diff --git a/lib/WebGUI/AssetTrash.pm b/lib/WebGUI/AssetTrash.pm index 5849bd8c2..237dce738 100644 --- a/lib/WebGUI/AssetTrash.pm +++ b/lib/WebGUI/AssetTrash.pm @@ -212,7 +212,7 @@ lineage is changed in state to trash-limbo. sub trash { my $self = shift; - return undef if ($self->getId eq $self->session->setting->get("defaultPage") || $self->getId eq $self->session->setting->get("notFoundPage")); + return undef if ($self->getId eq $self->session->setting->get("defaultPage") || $self->getId eq $self->session->setting->get("notFoundPage") || $self->get('isSystem')); foreach my $asset ($self, @{$self->getLineage(['descendants'], {returnObjects => 1})}) { $asset->_invokeWorkflowOnExportedFiles($self->session->setting->get('trashWorkflow'), 1); } @@ -264,6 +264,7 @@ Moves self to trash, returns www_view() method of Parent if canEdit. Otherwise r sub www_delete { my $self = shift; return $self->session->privilege->insufficient() unless ($self->canEdit && $self->canEditIfLocked); + return $self->session->privilege->vitalComponent() if $self->get('isSystem'); return $self->session->privilege->vitalComponent() if (isIn($self->getId, $self->session->setting->get("defaultPage"), $self->session->setting->get("notFoundPage"))); $self->trash; $self->session->asset($self->getParent);