diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index a5a81765c..0e1c1f301 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -9,6 +9,7 @@ - EMS Saved Address (#8864) - rfe: Inclusion of UsersOnline macro into the core (#766) - rfe: Search - Paginate results (#713) + - rfe: Leave Version Tag - WebGUI::Crud can now automatically resolve differences between its definition and the table schema. - Fixed a limit bug in the asset discovery service. diff --git a/lib/WebGUI/Operation.pm b/lib/WebGUI/Operation.pm index 8589e6999..12ab28ab5 100644 --- a/lib/WebGUI/Operation.pm +++ b/lib/WebGUI/Operation.pm @@ -213,6 +213,7 @@ sub getOperations { 'commitVersionTagConfirm' => 'VersionTag', 'editVersionTag' => 'VersionTag', 'editVersionTagSave' => 'VersionTag', + 'leaveVersionTag' => 'VersionTag', 'manageCommittedVersions' => 'VersionTag', 'managePendingVersions' => 'VersionTag', 'manageRevisionsInTag' => 'VersionTag', diff --git a/lib/WebGUI/Operation/VersionTag.pm b/lib/WebGUI/Operation/VersionTag.pm index 06e41bfb0..b89f9686d 100644 --- a/lib/WebGUI/Operation/VersionTag.pm +++ b/lib/WebGUI/Operation/VersionTag.pm @@ -450,6 +450,13 @@ sub www_commitVersionTagConfirm { return www_manageVersions($session); } +#------------------------------------------------------------------- +sub www_leaveVersionTag { + my $session = shift; + WebGUI::VersionTag->getWorking($session)->clearWorking; + return www_manageVersions($session); +} + #------------------------------------------------------------------- =head2 www_manageCommittedVersions ( session ) @@ -543,37 +550,39 @@ sub www_manageVersions { return $session->privilege->insufficient() unless canView($session); 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=managePendingVersions'), $i18n->get("manage pending versions")) if canView($session); - $ac->addSubmenuItem($session->url->page('op=manageCommittedVersions'), $i18n->get("manage committed versions")) if canView($session); + my ($icon, $url, $datetime, $user) = $session->quick(qw(icon url datetime user)); + $ac->addSubmenuItem($url->page('op=editVersionTag'), $i18n->get("add a version tag")); + $ac->addSubmenuItem($url->page('op=managePendingVersions'), $i18n->get("manage pending versions")) if canView($session); + $ac->addSubmenuItem($url->page('op=manageCommittedVersions'), $i18n->get("manage committed versions")) if canView($session); my ($tag,$workingTagId) = $session->db->quickArray("select name,tagId from assetVersionTag where tagId=?",[$session->scratch->get("versionTag")]); $tag ||= "None"; my $rollback = $i18n->get("rollback"); my $commit = $i18n->get("commit"); my $setTag = $i18n->get("set tag"); + my $leave = ($workingTagId eq "") ? "" : '['.$i18n->get("leave this tag").']'; my $rollbackPrompt = $i18n->get("rollback version tag confirm"); my $commitPrompt = $i18n->get("commit version tag confirm"); - my $output = '

'.$i18n->get("current tag is called").': '.$tag.'.

+ my $output = '

'.$i18n->get("current tag is called").': '.$tag.'. '.$leave.'

'; foreach my $tag (@{WebGUI::VersionTag->getOpenTags($session)}) { - next unless ($session->user->isInGroup($tag->get("groupToUse"))); + next unless ($user->isInGroup($tag->get("groupToUse"))); my $u = WebGUI::User->new($session,$tag->get("createdBy")); $output .= ' - - + + '; + getId).'" onclick="return confirm(\''.$commitPrompt.'\');">'.$commit.''; } $output .= '
'.$i18n->get("version tag name").''.$i18n->get("created on").''.$i18n->get("created by").'
'; if (canView($session)) { - $output .= $session->icon->delete("op=rollbackVersionTag;tagId=".$tag->getId,undef,$rollbackPrompt); + $output .= $icon->delete("op=rollbackVersionTag;tagId=".$tag->getId,undef,$rollbackPrompt); } - $output .= $session->icon->edit("op=editVersionTag;tagId=".$tag->getId) + $output .= $icon->edit("op=editVersionTag;tagId=".$tag->getId) .'getId).'">'.$tag->get("name").''.$session->datetime->epochToHuman($tag->get("creationDate")).'getId).'">'.$tag->get("name").''.$datetime->epochToHuman($tag->get("creationDate")).' '.$u->username.' '; unless ($workingTagId eq $tag->getId) { - $output .= 'getId).'">'.$setTag.' | '; + $output .= 'getId).'">'.$setTag.' | '; } $output .=' - getId).'" onclick="return confirm(\''.$commitPrompt.'\');">'.$commit.'
'; return $ac->render($output); diff --git a/lib/WebGUI/i18n/English/VersionTag.pm b/lib/WebGUI/i18n/English/VersionTag.pm index f857dfcae..9e0e568bf 100644 --- a/lib/WebGUI/i18n/English/VersionTag.pm +++ b/lib/WebGUI/i18n/English/VersionTag.pm @@ -13,6 +13,11 @@ our $I18N = { lastUpdated => 0 }, + 'leave this tag' => { + message => q|Leave This Tag|, + lastUpdated => 0 + }, + 'bad commit' => { message => q|Something bad happened while trying to commit your content. Please contact your system administrator.|,