Merged versionTagMode support from amh development branch. Upgrade scripts not updated yet
This commit is contained in:
commit
2a3ed29d26
6 changed files with 349 additions and 48 deletions
9
lib/WebGUI/Auth.pm
Normal file → Executable file
9
lib/WebGUI/Auth.pm
Normal file → Executable file
|
|
@ -760,6 +760,8 @@ sub isVisitor {
|
||||||
Superclass method that performs standard login routines. This is what should happen after a user has been authenticated.
|
Superclass method that performs standard login routines. This is what should happen after a user has been authenticated.
|
||||||
Authentication should always happen in the subclass routine.
|
Authentication should always happen in the subclass routine.
|
||||||
|
|
||||||
|
Open version tag is reclaimed if user is in site wide or singlePerUser mode.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub login {
|
sub login {
|
||||||
|
|
@ -803,7 +805,12 @@ sub login {
|
||||||
$self->session->http->setRedirect($self->session->scratch->get("redirectAfterLogin"));
|
$self->session->http->setRedirect($self->session->scratch->get("redirectAfterLogin"));
|
||||||
$self->session->scratch->delete("redirectAfterLogin");
|
$self->session->scratch->delete("redirectAfterLogin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Get open version tag. This is needed if we want
|
||||||
|
# to reclaim a version right after login (singlePerUser and siteWide mode)
|
||||||
|
# and to have the correct version displayed.
|
||||||
|
WebGUI::VersionTag->getWorking($self->session(), q{noCreate});
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
31
lib/WebGUI/Operation/Settings.pm
Normal file → Executable file
31
lib/WebGUI/Operation/Settings.pm
Normal file → Executable file
|
|
@ -80,14 +80,29 @@ sub definition {
|
||||||
label=>$i18n->get("default version tag workflow"),
|
label=>$i18n->get("default version tag workflow"),
|
||||||
hoverHelp=>$i18n->get('default version tag workflow help'),
|
hoverHelp=>$i18n->get('default version tag workflow help'),
|
||||||
});
|
});
|
||||||
push(@fields, {
|
|
||||||
tab=>"content",
|
# Support for versionTagMode. We'll have:
|
||||||
fieldType=>"yesNo",
|
# - multi version tag per user
|
||||||
name=>"autoRequestCommit",
|
# - one version tag per user (SwiftySite mode)
|
||||||
label=>$i18n->get("auto request commit"),
|
# - one site wide version tag
|
||||||
hoverHelp=>$i18n->get("auto request commit help"),
|
# - auto commit
|
||||||
defaultValue=>$setting->get("autoRequestCommit")
|
push (
|
||||||
});
|
@fields,
|
||||||
|
{ tab => q{content},
|
||||||
|
fieldType => q{selectBox},
|
||||||
|
name => q{versionTagMode},
|
||||||
|
defaultValue => [ $setting->get(q{versionTagMode}) ],
|
||||||
|
options => {
|
||||||
|
multiPerUser => $i18n->get(q{versionTagMode multiPerUser}),
|
||||||
|
singlePerUser => $i18n->get(q{versionTagMode singlePerUser}),
|
||||||
|
siteWide => $i18n->get(q{versionTagMode siteWide}),
|
||||||
|
autoCommit => $i18n->get(q{versionTagMode autoCommit}),
|
||||||
|
},
|
||||||
|
label => $i18n->get(q{version tag mode}),
|
||||||
|
hoverHelp => $i18n->get(q{version tag mode help}),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
push(@fields, {
|
push(@fields, {
|
||||||
tab=>"content",
|
tab=>"content",
|
||||||
fieldType=>"yesNo",
|
fieldType=>"yesNo",
|
||||||
|
|
|
||||||
0
lib/WebGUI/ProfileField.pm
Normal file → Executable file
0
lib/WebGUI/ProfileField.pm
Normal file → Executable file
184
lib/WebGUI/VersionTag.pm
Normal file → Executable file
184
lib/WebGUI/VersionTag.pm
Normal file → Executable file
|
|
@ -73,11 +73,14 @@ sub autoCommitWorkingIfEnabled {
|
||||||
my $versionTag = $class->getWorking($session, "nocreate");
|
my $versionTag = $class->getWorking($session, "nocreate");
|
||||||
return undef
|
return undef
|
||||||
unless $versionTag;
|
unless $versionTag;
|
||||||
|
|
||||||
|
#Auto commit is no longer determined from autoRequestCommit
|
||||||
|
|
||||||
# auto commit assets
|
# auto commit assets
|
||||||
# save and commit button and site wide auto commit work the same
|
# save and commit button and site wide auto commit work the same
|
||||||
if (
|
if (
|
||||||
$options->{override}
|
$options->{override}
|
||||||
|| $session->setting->get("autoRequestCommit")
|
|| $class->getVersionTagMode($session) eq q{autoCommit}
|
||||||
) {
|
) {
|
||||||
if ($session->setting->get("skipCommitComments") || !$options->{allowComments}) {
|
if ($session->setting->get("skipCommitComments") || !$options->{allowComments}) {
|
||||||
$versionTag->requestCommit;
|
$versionTag->requestCommit;
|
||||||
|
|
@ -358,6 +361,35 @@ sub getRevisionCount {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getVersionTagMode ( session )
|
||||||
|
|
||||||
|
Return version tag mode for current session
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getVersionTagMode {
|
||||||
|
my $class = shift;
|
||||||
|
my $session = shift;
|
||||||
|
|
||||||
|
my $mode = q{};
|
||||||
|
|
||||||
|
$mode = $session->user()->profileField(q{versionTagMode});
|
||||||
|
|
||||||
|
#verify mode.
|
||||||
|
if (!(defined $mode && WebGUI::Utility::isIn($mode, qw{autoCommit siteWide singlePerUser multiPerUser}))) {
|
||||||
|
$mode = q{};
|
||||||
|
}
|
||||||
|
|
||||||
|
#Get mode from settings
|
||||||
|
if ($mode eq q{}) {
|
||||||
|
$mode = $session->setting()->get(q{versionTagMode});
|
||||||
|
}
|
||||||
|
|
||||||
|
return $mode;
|
||||||
|
} #getVersionTagMode
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 getWorkflowInstance ( )
|
=head2 getWorkflowInstance ( )
|
||||||
|
|
@ -388,26 +420,92 @@ A boolean that if set to true, will prevent this method from creating an autotag
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub getWorking {
|
sub getWorking {
|
||||||
my $class = shift;
|
my $class = shift;
|
||||||
my $session = shift;
|
my $session = shift;
|
||||||
my $noCreate = shift;
|
my $noCreate = shift;
|
||||||
if ($session->stow->get("versionTag")) {
|
|
||||||
return $session->stow->get("versionTag");
|
my $stow = $session->stow();
|
||||||
} else {
|
my $mode = $class->getVersionTagMode($session);
|
||||||
my $tagId = $session->scratch->get("versionTag");
|
my $tag;
|
||||||
if ($tagId) {
|
my $tagId;
|
||||||
my $tag = $class->new($session, $tagId);
|
|
||||||
$session->stow->set("versionTag",$tag);
|
#First see if there is already a version tag
|
||||||
return $tag;
|
$tag = $stow->get(q{versionTag});
|
||||||
} elsif ($noCreate) {
|
|
||||||
return undef;
|
return $tag if $tag;
|
||||||
} else {
|
|
||||||
my $tag = $class->create($session);
|
$tagId = $session->scratch()->get(q{versionTag});
|
||||||
$tag->setWorking;
|
if ($tagId) {
|
||||||
return $tag;
|
$tag = $class->new($session, $tagId);
|
||||||
}
|
|
||||||
}
|
$stow->set(q{versionTag}, $tag);
|
||||||
}
|
|
||||||
|
return $tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
#No tag found. Create or reclaim one?
|
||||||
|
# multiPerUser / autoCommit: no reclaim, create if not noCreate
|
||||||
|
# singlePerUser: try to reclaim previous if only 1 open tag
|
||||||
|
# siteWide: try to claim site-wide version tag
|
||||||
|
# autoCommit:
|
||||||
|
|
||||||
|
if ($mode eq q{singlePerUser}) {
|
||||||
|
# Get all open tags for user. If only 1 tag open then reclaim
|
||||||
|
# it.
|
||||||
|
my @openTags = ();
|
||||||
|
my $userId = $session->user()->userId();
|
||||||
|
|
||||||
|
OPENTAG:
|
||||||
|
foreach my $openTag (@{WebGUI::VersionTag->getOpenTags($session)}) {
|
||||||
|
|
||||||
|
# Do not reclaim site wide tag in singlePerUser mode
|
||||||
|
next OPENTAG if $openTag->get(q{isSiteWide});
|
||||||
|
|
||||||
|
if ($openTag->get(q{createdBy}) eq $userId) {
|
||||||
|
|
||||||
|
push @openTags, $openTag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# For now, we only reclaim if 1 tag open.
|
||||||
|
if (scalar @openTags == 1) {
|
||||||
|
$tag = $openTags[0];
|
||||||
|
|
||||||
|
$tag->setWorking();
|
||||||
|
|
||||||
|
return $tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ($mode eq q{siteWide}) {
|
||||||
|
# Check for site wide version tag. Reclaim if available
|
||||||
|
|
||||||
|
OPENTAG:
|
||||||
|
foreach my $openTag (@{WebGUI::VersionTag->getOpenTags($session)}) {
|
||||||
|
if ($openTag->get(q{isSiteWide})) {
|
||||||
|
|
||||||
|
$tag = $openTag;
|
||||||
|
|
||||||
|
$tag->setWorking();
|
||||||
|
|
||||||
|
return $tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return undef if $noCreate;
|
||||||
|
|
||||||
|
# Create new tag.
|
||||||
|
my %properties = ();
|
||||||
|
|
||||||
|
if ($mode eq q{siteWide}) {
|
||||||
|
$properties{isSiteWide} = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$tag = $class->create($session, \%properties);
|
||||||
|
|
||||||
|
$tag->setWorking();
|
||||||
|
|
||||||
|
return $tag;
|
||||||
|
} #getWorking
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -553,17 +651,20 @@ The time that a version tag shoudl stop displaying on the website.
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub set {
|
sub set {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $properties = shift;
|
my $properties = shift;
|
||||||
|
|
||||||
my $now = $self->session->datetime->time();
|
my $now = $self->session->datetime->time();
|
||||||
my $startTime = WebGUI::DateTime->new($self->session,$now)->toDatabase;
|
my $startTime = WebGUI::DateTime->new($self->session,$now)->toDatabase;
|
||||||
my $endTime = WebGUI::DateTime->new($self->session,'2036-01-01 00:00:00')->toDatabase;
|
my $endTime = WebGUI::DateTime->new($self->session,'2036-01-01 00:00:00')->toDatabase;
|
||||||
|
|
||||||
$self->{_data}{'name' } = $properties->{name} || $self->{_data}{name} || $self->session->user->username." / ".$self->session->datetime->epochToHuman()." (Autotag)";
|
#In case of site wide version tag, mark it as Site wide autotag instead
|
||||||
$self->{_data}{'workflowId'} = $properties->{workflowId} || $self->{_data}{workflowId} || $self->session->setting->get("defaultVersionTagWorkflow");
|
my $isSiteWide = $properties->{isSiteWide} || $self->{_data}{isSiteWide} || 0;
|
||||||
$self->{_data}{'groupToUse'} = $properties->{groupToUse} || $self->{_data}{groupToUse} || "12";
|
|
||||||
|
$self->{_data}{'name' } = $properties->{name} || $self->{_data}{name} || $self->session->user->username." / ".$self->session->datetime->epochToHuman().($isSiteWide ? q{ (Site wide autotag)} : q{ (Autotag)});
|
||||||
|
$self->{_data}{'workflowId'} = $properties->{workflowId} || $self->{_data}{workflowId} || $self->session->setting->get("defaultVersionTagWorkflow");
|
||||||
|
$self->{_data}{'groupToUse'} = $properties->{groupToUse} || $self->{_data}{groupToUse} || "12";
|
||||||
|
|
||||||
#This is necessary for upgrade prior to 7.5.11 in order to ensure that this field exists.
|
#This is necessary for upgrade prior to 7.5.11 in order to ensure that this field exists.
|
||||||
#The if() blocks should be removd once the next branch point is reached.
|
#The if() blocks should be removd once the next branch point is reached.
|
||||||
my $assetVersionTagDesc = $self->session->db->buildHashRef('describe assetVersionTag');
|
my $assetVersionTagDesc = $self->session->db->buildHashRef('describe assetVersionTag');
|
||||||
|
|
@ -572,15 +673,22 @@ sub set {
|
||||||
$self->{_data}{'startTime' } = $properties->{startTime} || $self->{_data}{startTime} || $startTime;
|
$self->{_data}{'startTime' } = $properties->{startTime} || $self->{_data}{startTime} || $startTime;
|
||||||
$self->{_data}{'endTime' } = $properties->{endTime} || $self->{_data}{endTime} || $endTime;
|
$self->{_data}{'endTime' } = $properties->{endTime} || $self->{_data}{endTime} || $endTime;
|
||||||
}
|
}
|
||||||
if (exists $properties->{comments}) {
|
|
||||||
$self->{_data}{comments}=$self->session->datetime->epochToHuman.' - '.$self->session->user->username
|
#New field isSiteWide is added. Check if field exists. This is needed to let upgrades work
|
||||||
."\n"
|
if (grep { $_ =~ /^isSiteWide/ } keys %{$assetVersionTagDesc}) {
|
||||||
.$properties->{comments}
|
|
||||||
."\n\n"
|
$self->{_data}{'isSiteWide'} = $isSiteWide;
|
||||||
.$self->{_data}{comments};
|
}
|
||||||
}
|
|
||||||
$self->session->db->setRow("assetVersionTag","tagId",$self->{_data});
|
if (exists $properties->{comments}) {
|
||||||
}
|
$self->{_data}{comments}=$self->session->datetime->epochToHuman.' - '.$self->session->user->username
|
||||||
|
."\n"
|
||||||
|
.$properties->{comments}
|
||||||
|
."\n\n"
|
||||||
|
.$self->{_data}{comments};
|
||||||
|
}
|
||||||
|
$self->session->db->setRow("assetVersionTag","tagId",$self->{_data});
|
||||||
|
} #set
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
23
lib/WebGUI/i18n/English/WebGUI.pm
Normal file → Executable file
23
lib/WebGUI/i18n/English/WebGUI.pm
Normal file → Executable file
|
|
@ -4147,6 +4147,29 @@ LongTruncOk=1</p>
|
||||||
context => q{Label for the user profile field used by the UsersOnline macro},
|
context => q{Label for the user profile field used by the UsersOnline macro},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#Support for versionTagMode.
|
||||||
|
'version tag mode' => {
|
||||||
|
message => q{Version tag mode},
|
||||||
|
},
|
||||||
|
'version tag mode help' => {
|
||||||
|
message => q{Version tag mode help...TODO},
|
||||||
|
},
|
||||||
|
'versionTagMode multiPerUser' => {
|
||||||
|
message => q{Multi version tags per user},
|
||||||
|
},
|
||||||
|
'versionTagMode singlePerUser' => {
|
||||||
|
message => q{Single version tag per user},
|
||||||
|
},
|
||||||
|
'versionTagMode siteWide' => {
|
||||||
|
message => q{One site wide version tag},
|
||||||
|
},
|
||||||
|
'versionTagMode autoCommit' => {
|
||||||
|
message => q{Commit automatically},
|
||||||
|
},
|
||||||
|
'versionTagMode inherited' => {
|
||||||
|
message => q{Inherit from site settings},
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
||||||
150
t/VersionTag.t
Normal file → Executable file
150
t/VersionTag.t
Normal file → Executable file
|
|
@ -14,7 +14,7 @@ use lib "$FindBin::Bin/lib";
|
||||||
use WebGUI::Test;
|
use WebGUI::Test;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::VersionTag;
|
use WebGUI::VersionTag;
|
||||||
use Test::More tests => 34; # increment this value for each test you create
|
use Test::More tests => 60; # increment this value for each test you create
|
||||||
|
|
||||||
my $session = WebGUI::Test->session;
|
my $session = WebGUI::Test->session;
|
||||||
|
|
||||||
|
|
@ -30,6 +30,65 @@ sub ok_open {
|
||||||
sub getWorking { WebGUI::VersionTag->getWorking($session, @_) }
|
sub getWorking { WebGUI::VersionTag->getWorking($session, @_) }
|
||||||
sub getWorkingId { my $w = getWorking(@_); defined($w)? $w->getId : undef }
|
sub getWorkingId { my $w = getWorking(@_); defined($w)? $w->getId : undef }
|
||||||
|
|
||||||
|
# versionTagMode support. Test that setting version tag mode works. Also, make
|
||||||
|
# sure that the versionTagMode is in multiPerUser before running the test below.
|
||||||
|
|
||||||
|
sub setSiteVersionTagMode {
|
||||||
|
my ($session, $newMode) = @_;
|
||||||
|
|
||||||
|
$session->setting()->set(q{versionTagMode}, $newMode);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} #setSiteVersionTagMode
|
||||||
|
|
||||||
|
sub setUserVersionTagMode {
|
||||||
|
my ($user, $newMode) = @_;
|
||||||
|
|
||||||
|
$user->profileField(q{versionTagMode}, $newMode);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} #setUserVersionTagMode
|
||||||
|
|
||||||
|
can_ok(
|
||||||
|
q{WebGUI::VersionTag},
|
||||||
|
q{getVersionTagMode},
|
||||||
|
);
|
||||||
|
|
||||||
|
my $user = $session->user();
|
||||||
|
|
||||||
|
setSiteVersionTagMode($session, q{multiPerUser});
|
||||||
|
setUserVersionTagMode($user, q{inherited});
|
||||||
|
|
||||||
|
is (
|
||||||
|
WebGUI::VersionTag->getVersionTagMode($session),
|
||||||
|
q{multiPerUser},
|
||||||
|
q{versionTagMode: both site and user setting multiPerUser},
|
||||||
|
);
|
||||||
|
|
||||||
|
setUserVersionTagMode($user, q{singlePerUser});
|
||||||
|
|
||||||
|
is (
|
||||||
|
WebGUI::VersionTag->getVersionTagMode($session),
|
||||||
|
q{singlePerUser},
|
||||||
|
q{versionTagMode: user setting singlePerUser overrides site setting},
|
||||||
|
);
|
||||||
|
|
||||||
|
setSiteVersionTagMode($session, q{autoCommit});
|
||||||
|
|
||||||
|
is (
|
||||||
|
WebGUI::VersionTag->getVersionTagMode($session),
|
||||||
|
q{singlePerUser},
|
||||||
|
q{versionTagMode: update site setting doesn't update user setting},
|
||||||
|
);
|
||||||
|
|
||||||
|
setUserVersionTagMode($user, q{multiPerUser});
|
||||||
|
|
||||||
|
is (
|
||||||
|
WebGUI::VersionTag->getVersionTagMode($session),
|
||||||
|
q{multiPerUser},
|
||||||
|
q{versionTagMode: update user setting to multiPerUser},
|
||||||
|
);
|
||||||
|
|
||||||
my $tag = WebGUI::VersionTag->create($session, {});
|
my $tag = WebGUI::VersionTag->create($session, {});
|
||||||
isa_ok($tag, 'WebGUI::VersionTag', 'empty tag');
|
isa_ok($tag, 'WebGUI::VersionTag', 'empty tag');
|
||||||
ok(defined $tag->getId, 'empty tag has an ID');
|
ok(defined $tag->getId, 'empty tag has an ID');
|
||||||
|
|
@ -105,6 +164,95 @@ $tag3->rollback;
|
||||||
$tag4->rollback;
|
$tag4->rollback;
|
||||||
($asset1, $asset2, $asset3, $tag3, $tag4) = ();
|
($asset1, $asset2, $asset3, $tag3, $tag4) = ();
|
||||||
|
|
||||||
|
#additional tests for versionTagMode
|
||||||
|
#
|
||||||
|
|
||||||
|
setSiteVersionTagMode($session, q{singlePerUser});
|
||||||
|
setUserVersionTagMode($user, q{inherited});
|
||||||
|
|
||||||
|
ok(!defined getWorking(1), 'versionTagMode singlePerUser: no working tag initially present');
|
||||||
|
|
||||||
|
$tag = WebGUI::VersionTag->create($session, {});
|
||||||
|
isa_ok($tag, 'WebGUI::VersionTag', 'versionTagMode singlePerUser: empty tag');
|
||||||
|
ok(defined $tag->getId, 'versionTagMode singlePerUser: empty tag has an ID');
|
||||||
|
ok(!$tag->get(q{isSiteWide}), 'versionTagMode singlePerUser: empty is not site wide');
|
||||||
|
|
||||||
|
my $userTagId = $tag->getId();
|
||||||
|
my $userTag; # user tag in singlePerUser;
|
||||||
|
my $siteWideTagId;
|
||||||
|
my $siteWideTag;
|
||||||
|
|
||||||
|
$tag->clearWorking();
|
||||||
|
|
||||||
|
ok(defined ($userTag = getWorking(1)), 'versionTagMode singlePerUser: reclaim version tag after clearWorking');
|
||||||
|
is ($userTag->getId(), $userTagId, q{versionTagMode singlePerUser: reclaimed version tag has same id});
|
||||||
|
|
||||||
|
|
||||||
|
#switch to sitewide mode
|
||||||
|
|
||||||
|
$userTag->clearWorking();
|
||||||
|
|
||||||
|
setSiteVersionTagMode($session, q{siteWide});
|
||||||
|
|
||||||
|
ok(!defined ($siteWideTag = getWorking(1)), 'versionTagMode siteWide: no working tag initially present');
|
||||||
|
|
||||||
|
$siteWideTag = getWorking(); #force create
|
||||||
|
isa_ok($siteWideTag, 'WebGUI::VersionTag', 'versionTagMode siteWide: empty tag');
|
||||||
|
ok($siteWideTag->get(q{isSiteWide}), 'versionTagMode ssiteWide: empty is site wide');
|
||||||
|
|
||||||
|
ok(defined ($siteWideTagId = $siteWideTag->getId()), 'versionTagMode siteWide: empty tag has an ID');
|
||||||
|
|
||||||
|
ok($siteWideTag->getId() ne $userTagId, 'versionTagMode siteWide: siteWide tag has different version tag id');
|
||||||
|
|
||||||
|
$siteWideTag->clearWorking();
|
||||||
|
|
||||||
|
my $asset4 = WebGUI::Asset->getRoot($session)->addChild({ className => 'WebGUI::Asset::Snippet' });
|
||||||
|
|
||||||
|
ok(defined ($siteWideTag = getWorking(1)), 'versionTagMode siteWide: reclaim version tag after clearWorking and addding new asset');
|
||||||
|
|
||||||
|
is($siteWideTag->getId(), $siteWideTagId, 'versionTagMode siteWide: reclaim site wide version tag has correct id');
|
||||||
|
|
||||||
|
|
||||||
|
## Through in a new session as different user
|
||||||
|
my $admin_session = WebGUI::Session->open($WebGUI::Test::WEBGUI_ROOT, $WebGUI::Test::CONFIG_FILE);
|
||||||
|
$admin_session->user({'userId' => 3});
|
||||||
|
|
||||||
|
setUserVersionTagMode($admin_session->user(), q{singlePerUser});
|
||||||
|
|
||||||
|
my $adminUserTag = WebGUI::VersionTag->getWorking($admin_session, 0);
|
||||||
|
isa_ok($adminUserTag, 'WebGUI::VersionTag', 'versionTagMode siteWide + admin singlePerUser: empty tag');
|
||||||
|
ok(defined $adminUserTag->getId(), 'versionTagMode siteWide + admin singlePerUser: empty tag has an ID');
|
||||||
|
ok(!$adminUserTag->get(q{isSiteWide}), 'versionTagMode siteWide + admin singlePerUser: empty is not site wide');
|
||||||
|
ok($adminUserTag->getId() ne $userTagId, 'versionTagMode siteWide + admin singlePerUser: empty has different ID');
|
||||||
|
ok($adminUserTag->getId() ne $siteWideTagId, 'versionTagMode siteWide + admin singlePerUser: empty has different ID than site wide');
|
||||||
|
|
||||||
|
# Now switch to site wide
|
||||||
|
|
||||||
|
$adminUserTag->clearWorking();
|
||||||
|
|
||||||
|
setUserVersionTagMode($admin_session->user(), q{inherited});
|
||||||
|
|
||||||
|
my $adminSiteWideTag = WebGUI::VersionTag->getWorking($admin_session, 0);
|
||||||
|
|
||||||
|
isa_ok($adminSiteWideTag, 'WebGUI::VersionTag', 'versionTagMode siteWide + admin inherited: reclaimed empty tag');
|
||||||
|
ok($adminSiteWideTag->get(q{isSiteWide}), 'versionTagMode siteWide + admin inherited: empty is site wide');
|
||||||
|
ok($adminSiteWideTag->getId() eq $siteWideTagId, 'versionTagMode siteWide + admin inherited: empty has same ID as site wide');
|
||||||
|
|
||||||
|
|
||||||
|
$admin_session->var()->end();
|
||||||
|
$admin_session->close();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$userTag->rollback();
|
||||||
|
$siteWideTag->rollback();
|
||||||
|
$adminUserTag->rollback();
|
||||||
|
|
||||||
|
#reset (just in case other tests depends on this setting)
|
||||||
|
setSiteVersionTagMode($session, q{multiPerUser});
|
||||||
|
setUserVersionTagMode($user, q{inherited});
|
||||||
|
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# mode: cperl
|
# mode: cperl
|
||||||
# End:
|
# End:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue