From 81fc744a8bd28608c1328576b35a8e66195c0fce Mon Sep 17 00:00:00 2001 From: JT Smith Date: Tue, 14 Mar 2006 22:25:18 +0000 Subject: [PATCH] more merging of versioning and workflow --- docs/upgrades/upgrade_6.8.7-6.99.0.pl | 14 +++++++------- lib/WebGUI.pm | 6 ++++++ lib/WebGUI/Asset.pm | 17 +++++++---------- lib/WebGUI/AssetVersioning.pm | 12 ++++++------ lib/WebGUI/Macro/AdminBar.pm | 6 ++++-- lib/WebGUI/Operation.pm | 2 +- lib/WebGUI/Operation/VersionTag.pm | 21 ++++++++++++--------- lib/WebGUI/Paginator.pm | 4 ++-- 8 files changed, 45 insertions(+), 37 deletions(-) diff --git a/docs/upgrades/upgrade_6.8.7-6.99.0.pl b/docs/upgrades/upgrade_6.8.7-6.99.0.pl index dbef2d02c..067bd723f 100644 --- a/docs/upgrades/upgrade_6.8.7-6.99.0.pl +++ b/docs/upgrades/upgrade_6.8.7-6.99.0.pl @@ -23,6 +23,7 @@ my $quiet; # this line required my $session = start(); # this line required +addWorkflow(); templateParsers(); removeFiles(); addSearchEngine(); @@ -30,7 +31,6 @@ addEMSTemplates(); addEMSTables(); updateTemplates(); updateDatabaseLinksAndSQLReport(); -addWorkflow(); ipsToCIDR(); addDisabletoRichEditor(); addNavigationMimeType(); @@ -70,6 +70,12 @@ sub addIndexes { #------------------------------------------------- sub addWorkflow { print "\tAdding workflow.\n"; + $session->db->write("alter table assetData drop column startDate"); + $session->db->write("alter table assetData drop column endDate"); + $session->db->write("alter table assetVersionTag add column isLocked int not null default 0"); + $session->db->write("alter table assetVersionTag add column lockedBy varchar(22) binary not null"); + $session->db->write("alter table assetVersionTag add column groupToUse varchar(22) binary not null"); + $session->db->write("alter table assetVersionTag add column workflowId varchar(22) binary not null"); my $group = WebGUI::Group->new($session,"new","pbgroup000000000000015"); $group->set("groupName", "Workflow Managers"); $group->set("description", "People who can create, edit, and delete workflows."); @@ -177,8 +183,6 @@ sub addWorkflow { priority=>3, workflowId=>$workflow->getId }, "pbcron0000000000000001"); - $session->db->write("alter table assetData drop column startDate"); - $session->db->write("alter table assetData drop column endDate"); $workflow = WebGUI::Workflow->create($session, { title=>"Weekly Maintenance Tasks", description=>"This workflow runs once per week to perform maintenance tasks like cleaning up log files.", @@ -225,10 +229,6 @@ sub addWorkflow { priority=>3, workflowId=>$workflow->getId }, "pbcron0000000000000003"); - $session->db->write("alter table assetVersionTag add column isLocked int not null default 0"); - $session->db->write("alter table assetVersionTag add column lockedBy varchar(22) binary not null"); - $session->db->write("alter table assetVersionTag add column groupToUse varchar(22) binary not null"); - $session->db->write("alter table assetVersionTag add column workflowId varchar(22) binary not null"); $session->db->write("update groups set showInForms=1 where groupId='12'"); $session->config->delete("SyncProfilesToLDAP_hour"); $session->config->delete("fileCacheSizeLimit"); diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index 96221bef5..c64497532 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -150,11 +150,13 @@ sub page { my $session = shift; my $assetUrl = shift; my $output = processOperations($session); +$session->errorHandler->warn("a"); if ($output eq "") { my $asset = eval{WebGUI::Asset->newByUrl($session,$assetUrl,$session->form->process("revision"))}; if ($@) { $session->errorHandler->warn("Couldn't instantiate asset for url: ".$session->url->getRequestedUrl." Root cause: ".$@); } +$session->errorHandler->warn("d"); if (defined $asset) { my $method = "view"; if ($session->form->process("func")) { @@ -164,10 +166,13 @@ sub page { $method = "view"; } } +$session->errorHandler->warn("e"); $output = tryAssetMethod($session,$asset,$method); +$session->errorHandler->warn("f"); $output = tryAssetMethod($session,$asset,"view") unless ($output || ($method eq "view")); } } +$session->errorHandler->warn("b"); if (defined($output) and $output eq "") { $session->http->setStatus("404","Page Not Found"); my $notFound = WebGUI::Asset->getNotFound($session); @@ -179,6 +184,7 @@ sub page { } $output = "An error was encountered while processing your request." if $output eq ''; } +$session->errorHandler->warn("c"); if ($session->errorHandler->canShowDebug()) { $output .= $session->errorHandler->showDebug(); } diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 46fadb518..1e056b3e2 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -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 = "'getUrl("func=edit;proceed=manageAssets")."\">Edit | '+"; $locked = 'unlocked'; } - my $lockLink = ", 'getUrl("func=manageRevisions")."\">".$locked."'" unless ($self->session->setting->get("autoCommit")); + my $lockLink = ", 'getUrl("func=manageRevisions")."\">".$locked."'"; $output .= "assetManager.AddLine('" .WebGUI::Form::checkbox($self->session,{ name=>'assetId', @@ -1193,7 +1192,7 @@ sub manageAssetsSearch { $edit = "'getUrl("func=edit;proceed=manageAssets")."\">Edit | '+"; $locked = 'unlocked'; } - my $lockLink = ", 'getUrl("func=manageRevisions")."\">".$locked."'" unless ($self->session->setting->get("autoCommit")); + my $lockLink = ", 'getUrl("func=manageRevisions")."\">".$locked."'"; $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; diff --git a/lib/WebGUI/AssetVersioning.pm b/lib/WebGUI/AssetVersioning.pm index cf9406002..0cd827807 100644 --- a/lib/WebGUI/AssetVersioning.pm +++ b/lib/WebGUI/AssetVersioning.pm @@ -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; } diff --git a/lib/WebGUI/Macro/AdminBar.pm b/lib/WebGUI/Macro/AdminBar.pm index 427cd4cb2..ba6942f29 100644 --- a/lib/WebGUI/Macro/AdminBar.pm +++ b/lib/WebGUI/Macro/AdminBar.pm @@ -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) ? '* '.$name.'' : $name, + title=>($id eq $workingId) ? '* '.$name.'' : $name, icon=>$session->config->get("extrasURL").'/spacer.gif' }); } diff --git a/lib/WebGUI/Operation.pm b/lib/WebGUI/Operation.pm index fc5002cf7..1f170fd01 100644 --- a/lib/WebGUI/Operation.pm +++ b/lib/WebGUI/Operation.pm @@ -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', diff --git a/lib/WebGUI/Operation/VersionTag.pm b/lib/WebGUI/Operation/VersionTag.pm index 431ea623c..a121337a1 100644 --- a/lib/WebGUI/Operation/VersionTag.pm +++ b/lib/WebGUI/Operation/VersionTag.pm @@ -249,7 +249,7 @@ sub www_manageVersions { '.$session->datetime->epochToHuman($date).' '.$u->username.' - '.$setTag.' | + '.$setTag.' | '.$commit.''; } $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 = ' - '; - my $p = WebGUI::Paginator->new($session,$session->url->page("op=manageRevisionsInTag;tagId=".$session->form->process("tagId"))); + '; + 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 .= ' + $output .= ' - + '; } $output .= '
'.$i18n->get("title","Asset").''.$i18n->get("type","Asset").''.$i18n->get("revision date","Asset").''.$i18n->get("revised by","Asset").'
'.$i18n->get(99,"Asset").''.$i18n->get("type","Asset").''.$i18n->get("revision date","Asset").''.$i18n->get("revised by","Asset").'
'.$session->icon->delete("func=purgeRevision;proceed=manageRevisionsInTag;tagId=".$session->form->process("tagId").";revisionDate=".$date,$asset->get("url"),$i18n->get("purge revision prompt")).'
' + .$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) + .' '.$asset->getTitle.' '.$asset->getName.''.$asset->getName.''.$session->datetime->epochToHuman($date).''.$session->datetime->epochToHuman($date).' '.$by.'
'.$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"))) { diff --git a/lib/WebGUI/Paginator.pm b/lib/WebGUI/Paginator.pm index 1821931e1..cdc0a5183 100644 --- a/lib/WebGUI/Paginator.pm +++ b/lib/WebGUI/Paginator.pm @@ -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;