more merging of versioning and workflow

This commit is contained in:
JT Smith 2006-03-14 22:25:18 +00:00
parent cba26ecc0c
commit 81fc744a8b
8 changed files with 45 additions and 37 deletions

View file

@ -32,7 +32,6 @@ use WebGUI::Search;
use WebGUI::Search::Index;
use WebGUI::TabForm;
use WebGUI::Utility;
use WebGUI::VersionTag;
=head1 NAME
@ -1014,8 +1013,8 @@ sub manageAssets {
assetManager.AddColumn('".$i18n->get("99")."','','left','');
assetManager.AddColumn('".$i18n->get("type")."','','left','');
assetManager.AddColumn('".$i18n->get("last updated")."','','center','');
assetManager.AddColumn('".$i18n->get("size")."','','right','');\n";
$output .= "assetManager.AddColumn('".$i18n->get("locked")."','','center','');\n" unless ($self->session->setting->get("autoCommit"));
assetManager.AddColumn('".$i18n->get("size")."','','right','');\n
assetManager.AddColumn('".$i18n->get("locked")."','','center','');\n";
foreach my $child (@{$self->getLineage(["children"],{returnObjects=>1})}) {
$output .= 'var contextMenu = new contextMenu_createWithLink("'.$child->getId.'","More");
contextMenu.addLink("'.$child->getUrl("func=editBranch").'","'.$i18n->get("edit branch").'");
@ -1033,7 +1032,7 @@ sub manageAssets {
$edit = "'<a href=\"".$child->getUrl("func=edit;proceed=manageAssets")."\">Edit</a> | '+";
$locked = '<img src="'.$self->session->config->get("extrasURL").'/assetManager/unlocked.gif" alt="unlocked" style="border: 0px;" />';
}
my $lockLink = ", '<a href=\"".$child->getUrl("func=manageRevisions")."\">".$locked."</a>'" unless ($self->session->setting->get("autoCommit"));
my $lockLink = ", '<a href=\"".$child->getUrl("func=manageRevisions")."\">".$locked."</a>'";
$output .= "assetManager.AddLine('"
.WebGUI::Form::checkbox($self->session,{
name=>'assetId',
@ -1193,7 +1192,7 @@ sub manageAssetsSearch {
$edit = "'<a href=\"".$child->getUrl("func=edit;proceed=manageAssets")."\">Edit</a> | '+";
$locked = '<img src="'.$self->session->config->get("extrasURL").'/assetManager/unlocked.gif" alt="unlocked" style="border: 0px;" />';
}
my $lockLink = ", '<a href=\"".$child->getUrl("func=manageRevisions")."\">".$locked."</a>'" unless ($self->session->setting->get("autoCommit"));
my $lockLink = ", '<a href=\"".$child->getUrl("func=manageRevisions")."\">".$locked."</a>'";
$output .= "assetManager.AddLine('"
.WebGUI::Form::checkbox($self->session,{
name=>'assetId',
@ -1257,10 +1256,9 @@ sub new {
my $assetRevision = $session->stow->get("assetRevision");
my $revisionDate = shift || $assetRevision->{$assetId}{$session->scratch->get("versionTag")||'_'};
unless ($revisionDate) {
($revisionDate) = $session->db->quickArray("select max(revisionDate) from assetData where assetId="
.$session->db->quote($assetId)." and (status='approved' or status='archived' or tagId="
.$session->db->quote($session->scratch->get("versionTag")).")
group by assetData.assetId order by assetData.revisionDate");
($revisionDate) = $session->db->quickArray("select max(revisionDate) from assetData where assetId=? and
(status='approved' or status='archived' or tagId=?) order by assetData.revisionDate",
[$assetId, $session->scratch->get("versionTag")]);
$assetRevision->{$assetId}{$session->scratch->get("versionTag")||'_'} = $revisionDate;
$session->stow("assetRevision",$assetRevision);
}
@ -1744,7 +1742,6 @@ sub www_editSave {
my $self = shift;
return $self->session->privilege->insufficient() unless $self->canEdit;
my $object;
my $tag = WebGUI::VersionTag->getWorking($self->session);
if ($self->session->form->process("assetId") eq "new") {
$object = $self->addChild({className=>$self->session->form->process("class")});
$object->{_parent} = $self;

View file

@ -16,6 +16,7 @@ package WebGUI::Asset;
use strict;
use WebGUI::Paginator;
use WebGUI::VersionTag;
=head1 NAME
@ -56,20 +57,19 @@ sub addRevision {
my $self = shift;
my $properties = shift;
my $now = shift ||$self->session->datetime->time();
my $versionTag = $self->session->scratch->get("versionTag") || 'pbversion0000000000002';
my $status = $self->session->setting->get("autoCommit") ? 'approved' : 'pending';
my $workingTag = WebGUI::VersionTag->getWorking($self->session);
$self->session->db->write("insert into assetData (assetId, revisionDate, revisedBy, tagId, status, url,
ownerUserId, groupIdEdit, groupIdView) values (".$self->session->db->quote($self->getId).",".$now.", ".$self->session->db->quote($self->session->user->userId).",
".$self->session->db->quote($versionTag).", ".$self->session->db->quote($status).", ".$self->session->db->quote($self->getId).", '3','3','7')");
ownerUserId, groupIdEdit, groupIdView) values (?, ?, ?, ?, 'pending', ?, '3','3','7')",
[$self->getId, $now, $self->session->user->userId, $workingTag->getId, $self->getId] );
foreach my $definition (@{$self->definition($self->session)}) {
unless ($definition->{tableName} eq "assetData") {
$self->session->db->write("insert into ".$definition->{tableName}." (assetId,revisionDate) values (".$self->session->db->quote($self->getId).",".$now.")");
$self->session->db->write("insert into ".$definition->{tableName}." (assetId,revisionDate) values (?,?)", [$self->getId, $now]);
}
}
my $newVersion = WebGUI::Asset->new($self->session,$self->getId, $self->get("className"), $now);
$newVersion->updateHistory("created revision");
$newVersion->update($self->get);
$newVersion->setVersionLock unless ($self->session->setting->get("autoCommit"));
$newVersion->setVersionLock;
$newVersion->update($properties) if (defined $properties);
return $newVersion;
}

View file

@ -98,10 +98,12 @@ sub process {
}
}
my $working = WebGUI::VersionTag->getWorking($session, 1);
my $workingId = "";
my @tags = ();
if ($working) {
$workingId = $working->getId;
push(@tags, {
url=>$session->url->page("op=commitVersionTag;backToSite=1;tagId=".$working->getId),
url=>$session->url->page("op=commitVersionTag;backToSite=1;tagId=".$workingId),
title=>$i18n->get("commit my changes"),
icon=>$session->config->get("extrasURL").'/adminConsole/small/versionTags.gif'
});
@ -110,7 +112,7 @@ sub process {
while (my ($id, $name) = $rs->array) {
push(@tags, {
url=>$session->url->page("op=setWorkingVersionTag;backToSite=1;tagId=".$id),
title=>($id eq $working->getId) ? '<span style="color: #000080;">* '.$name.'</span>' : $name,
title=>($id eq $workingId) ? '<span style="color: #000080;">* '.$name.'</span>' : $name,
icon=>$session->config->get("extrasURL").'/spacer.gif'
});
}

View file

@ -84,7 +84,7 @@ sub getOperations {
'manageVersions' => 'WebGUI::Operation::VersionTag',
'manageRevisionsInTag' => 'WebGUI::Operation::VersionTag',
'rollbackVersionTag' => 'WebGUI::Operation::VersionTag',
'setVersionTag' => 'WebGUI::Operation::VersionTag',
'setWorkingVersionTag' => 'WebGUI::Operation::VersionTag',
'addWorkflow' => 'WebGUI::Operation::Workflow',
'deleteWorkflow' => 'WebGUI::Operation::Workflow',
'editWorkflowActivity' => 'WebGUI::Operation::Workflow',

View file

@ -249,7 +249,7 @@ sub www_manageVersions {
<td>'.$session->datetime->epochToHuman($date).'</td>
<td>'.$u->username.'</td>
<td>
<a href="'.$session->url->page("op=setVersionTag;tagId=".$id).'">'.$setTag.'</a> |
<a href="'.$session->url->page("op=setWorkingVersionTag;tagId=".$id).'">'.$setTag.'</a> |
<a href="'.$session->url->page("op=commitVersionTag;tagId=".$id).'" onclick="return confirm(\''.$commitPrompt.'\');">'.$commit.'</a></td></tr>';
}
$sth->finish;
@ -281,22 +281,25 @@ sub www_manageRevisionsInTag {
$ac->addSubmenuItem($session->url->page('op=manageCommittedVersions'), $i18n->get("manage committed versions")) if ($session->user->isInGroup(3));
$ac->addSubmenuItem($session->url->page('op=manageVersions'), $i18n->get("manage versions"));
my $output = '<table width=100% class="content">
<tr><th></th><th>'.$i18n->get("title","Asset").'</th><th>'.$i18n->get("type","Asset").'</th><th>'.$i18n->get("revision date","Asset").'</th><th>'.$i18n->get("revised by","Asset").'</th></tr> ';
my $p = WebGUI::Paginator->new($session,$session->url->page("op=manageRevisionsInTag;tagId=".$session->form->process("tagId")));
<tr><th></th><th>'.$i18n->get(99,"Asset").'</th><th>'.$i18n->get("type","Asset").'</th><th>'.$i18n->get("revision date","Asset").'</th><th>'.$i18n->get("revised by","Asset").'</th></tr> ';
my $p = WebGUI::Paginator->new($session,$session->url->page("op=manageRevisionsInTag;tagId=".$tag->getId));
$p->setDataByQuery("select assetData.revisionDate, users.username, asset.assetId, asset.className from assetData
left join asset on assetData.assetId=asset.assetId left join users on assetData.revisedBy=users.userId
where assetData.tagId=?",undef, undef, [$session->form->process("tagId")]);
where assetData.tagId=?",undef, undef, [$tag->getId]);
foreach my $row (@{$p->getPageData}) {
my ($date,$by,$id, $class) = ($row->{revisionDate}, $row->{username}, $row->{assetId}, $row->{className});
my $asset = WebGUI::Asset->new($session,$id,$class,$date);
$output .= '<tr><td>'.$session->icon->delete("func=purgeRevision;proceed=manageRevisionsInTag;tagId=".$session->form->process("tagId").";revisionDate=".$date,$asset->get("url"),$i18n->get("purge revision prompt")).'</td>
$output .= '<tr><td>'
.$session->icon->delete("func=purgeRevision;proceed=manageRevisionsInTag;tagId=".$tag->getId.";revisionDate=".$date,$asset->get("url"),$i18n->get("purge revision prompt"))
.$session->icon->view("func=viewRevision;revisionDate=".$date)
.'</td>
<td>'.$asset->getTitle.'</td>
<td><img src="'.$asset->getIcon(1).'" alt="'.$asset->getName.'" />'.$asset->getName.'</td>
<td><a href="'.$asset->getUrl("func=viewRevision;revisionDate=".$date).'">'.$session->datetime->epochToHuman($date).'</a></td>
<td>'.$session->datetime->epochToHuman($date).'</td>
<td>'.$by.'</td></tr>';
}
$output .= '</table>'.$p->getBarSimple;
my $tag = $session->db->getRow("assetVersionTag","tagId",$session->form->process("tagId"));
my $tag = $session->db->getRow("assetVersionTag","tagId",$tag->getId);
return $ac->render($output,$i18n->get("revisions in tag").": ".$tag->{name});
}
@ -332,7 +335,7 @@ sub www_rollbackVersionTag {
#-------------------------------------------------------------------
=head2 www_setVersionTag ( session )
=head2 www_setWorkingVersionTag ( session )
Sets the current user's working version tag.
@ -342,7 +345,7 @@ A reference to the current session.
=cut
sub www_setVersionTag () {
sub www_setWorkingVersionTag () {
my $session = shift;
my $tag = WebGUI::VersionTag->new($session, $session->form->process("tagId"));
if (defined $tag && $session->user->isInGroup($tag->get("groupToUse"))) {

View file

@ -538,10 +538,10 @@ sub setDataByQuery {
my ($self, $sql, $dbh, $unconditional, $placeholders, $dynamicPageNumberKey, $dynamicPageNumberValue) = @_;
$dbh ||= $self->session->dbSlave;
if ($unconditional) {
$sth = $dbh->unconditionalRead($sql,undef,$placeholders);
$sth = $dbh->unconditionalRead($sql,$placeholders);
return $sth->errorMessage if ($sth->errorCode > 0);
} else {
$sth = $dbh->read($sql,undef,$placeholders);
$sth = $dbh->read($sql,$placeholders);
}
my $defaultPageNumber = $self->getPageNumber;
$self->{_totalRows} = $sth->rows;