From dd9cb638f78234ba45cd784f958b6f6ab87b472e Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Fri, 3 Oct 2008 22:27:58 +0000 Subject: [PATCH] added a new permission denied page for the manageVersionTags screen --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Operation/VersionTag.pm | 23 +++++++++++++++++++++-- lib/WebGUI/i18n/English/VersionTag.pm | 12 ++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 0b44b65f7..947eb84ec 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -7,6 +7,7 @@ - fixed: DataForm ignores height on textarea fields - fixed: DataForm doesn't keep posted values properly when data fails validation - fixed: Documentation for DataForm and Thingy updated for Possible Values field + - added a new permission denied page for version tag approval 7.6.0 - added: users may now customize the post received page for the CS diff --git a/lib/WebGUI/Operation/VersionTag.pm b/lib/WebGUI/Operation/VersionTag.pm index ae216cc92..06e41bfb0 100644 --- a/lib/WebGUI/Operation/VersionTag.pm +++ b/lib/WebGUI/Operation/VersionTag.pm @@ -601,14 +601,33 @@ sub www_manageRevisionsInTag { my $tag = WebGUI::VersionTag->new($session, $tagId); return www_manageVersions( $session ) unless $tag; + my $i18n = WebGUI::International->new($session,"VersionTag"); + ### Permissions check # This screen is also used to approve/deny the tag, so check that first if ( !canApproveVersionTag( $session, $tag ) && !canViewVersionTag( $session, $tag ) ) { - return $session->privilege->insufficient; + if ( $session->user->isVisitor ) { + return $session->privilege->noAccess; + } + else { + # Return a nice error message, since people are getting confused when they try + # to approve a tag that's already approved + my $html = '

%s

' . "\n" + . '

%s

' . "\n" + . q{

%s

} . "\n" + ; + + return $session->style->userStyle( + sprintf $html, + $i18n->get( "error permission www_manageRevisionsInTag title" ), + $i18n->get( "error permission www_manageRevisionsInTag body" ), + $session->url->getSiteURL, + $i18n->get( "back to site" ), + ); + } } my $ac = WebGUI::AdminConsole->new($session,"versions"); - my $i18n = WebGUI::International->new($session,"VersionTag"); $ac->addSubmenuItem($session->url->page('op=editVersionTag'), $i18n->get("add a version tag")); $ac->addSubmenuItem($session->url->page('op=manageCommittedVersions'), $i18n->get("manage committed versions")) if canView($session); $ac->addSubmenuItem($session->url->page('op=manageVersions'), $i18n->get("manage versions")); diff --git a/lib/WebGUI/i18n/English/VersionTag.pm b/lib/WebGUI/i18n/English/VersionTag.pm index c2e181956..f857dfcae 100644 --- a/lib/WebGUI/i18n/English/VersionTag.pm +++ b/lib/WebGUI/i18n/English/VersionTag.pm @@ -459,6 +459,18 @@ our $I18N = { lastUpdated => 0, context => q{Message for when someone approves a version tag}, }, + + "error permission www_manageRevisionsInTag title" => { + message => q{Permission Denied}, + lastUpdated => 0, + context => q{Title of "permission denied" page for Manage Revisions In Tag}, + }, + + "error permission www_manageRevisionsInTag body" => { + message => q{You are not allowed to view this version tag. It is possible that it has already been approved or denied. }, + lastUpdated => 0, + context => q{Explanation of Permission Denied message}, + }, }; 1;