diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm index f002a29af..baa10ec58 100644 --- a/lib/WebGUI/Asset/Post.pm +++ b/lib/WebGUI/Asset/Post.pm @@ -956,6 +956,10 @@ sub www_edit { name=>"func", value=>"edit" }) + .WebGUI::Form::hidden($self->session, { + name=>"revision", + value=>$self->session->form->param("revision") + }) .WebGUI::Form::hidden($self->session, { name=>"ownerUserId", value=>$self->getValue("ownerUserId") diff --git a/lib/WebGUI/Asset/Wobject.pm b/lib/WebGUI/Asset/Wobject.pm index d397b82ce..10afdb93f 100644 --- a/lib/WebGUI/Asset/Wobject.pm +++ b/lib/WebGUI/Asset/Wobject.pm @@ -536,6 +536,14 @@ sub setCollateral { } +#------------------------------------------------------------------- + +=head2 www_edit () + +Returns an edit form for this asset. + +=cut + sub www_edit { my $self = shift; return $self->session->privilege->insufficient() unless $self->canEdit; diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index 2392554f9..a9a3fd7fe 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -926,17 +926,15 @@ sub view { $var{"search.url"} = $self->getSearchUrl; $var{"subscribe.url"} = $self->getSubscribeUrl; $var{"unsubscribe.url"} = $self->getUnsubscribeUrl; - my $constraints = "(assetData.status='approved' or (assetData.ownerUserId=".$self->session->db->quote($self->session->user->userId)." and assetData.ownerUserId<>'1') or assetData.tagId=".$self->session->db->quote($self->session->scratch->get("versionTag")); - if ($var{'user.isModerator'}) { - $constraints .= " or assetData.status='pending'"; - } - $constraints .= ")"; my $sql = "select asset.assetId,asset.className,assetData.revisionDate as revisionDate from Thread left join asset on Thread.assetId=asset.assetId left join Post on Post.assetId=Thread.assetId and Thread.revisionDate = Post.revisionDate left join assetData on assetData.assetId=Thread.assetId and Thread.revisionDate = assetData.revisionDate - where asset.parentId=".$self->session->db->quote($self->getId)." and asset.state='published' and asset.className='WebGUI::Asset::Post::Thread' and assetData.revisionDate=(SELECT max(revisionDate) from assetData where assetData.assetId=asset.assetId) and $constraints + where asset.parentId=".$self->session->db->quote($self->getId)." and asset.state='published' and + asset.className='WebGUI::Asset::Post::Thread' and assetData.revisionDate=(SELECT max(revisionDate) from assetData + where assetData.assetId=asset.assetId) and (assetData.status='approved' + or assetData.tagId=".$self->session->db->quote($self->session->scratch->get("versionTag")).") group by assetData.assetId order by Thread.isSticky desc, ".$sortBy." ".$sortOrder; my $p = WebGUI::Paginator->new($self->session,$self->getUrl,$self->get("threadsPerPage")); $self->appendPostListTemplateVars(\%var, $sql, $p); diff --git a/lib/WebGUI/VersionTag.pm b/lib/WebGUI/VersionTag.pm index 1ca46310b..709138c28 100644 --- a/lib/WebGUI/VersionTag.pm +++ b/lib/WebGUI/VersionTag.pm @@ -142,7 +142,7 @@ Returns a list of asset objects that are part of this version tag. sub getAssets { my $self = shift; my @assets = (); - my $sth = $self->session->db->read("select asset.assetId,asset.className,assetData.revisionDate from assetData left join asset on asset.assetId=assetData.assetId where assetData.tagId=?", [$self->getId]); + my $sth = $self->session->db->read("select asset.assetId,asset.className,assetData.revisionDate from assetData left join asset on asset.assetId=assetData.assetId where assetData.tagId=? order by revisionDate desc", [$self->getId]); while (my ($id,$class,$version) = $sth->array) { push(@assets, WebGUI::Asset->new($self->session,$id,$class,$version)); } diff --git a/lib/WebGUI/Workflow/Activity/NotifyAboutVersionTag.pm b/lib/WebGUI/Workflow/Activity/NotifyAboutVersionTag.pm index 117e058cd..327bffde4 100644 --- a/lib/WebGUI/Workflow/Activity/NotifyAboutVersionTag.pm +++ b/lib/WebGUI/Workflow/Activity/NotifyAboutVersionTag.pm @@ -89,10 +89,16 @@ sub execute { my $self = shift; my $versionTag = shift; my $inbox = WebGUI::Inbox->new($self->session); + my $urlOfSingleAsset = ""; + if ($versionTag->getAssetCount) { + # if there's only one asset in the tag, we might as well give them a direct link to it + my $asset = $versionTag->getAssets->[0]; + $urlOfSingleAsset = "\n\n".$self->session->getSiteURL().$asset->getUrl("func=view;revision=".$asset->get("revisionDate")); + } my $properties = { status=>"completed", subject=>$versionTag->get("name"), - message=>$self->get("message")."\n\n".$versionTag->get("comments"), + message=>$self->get("message")."\n\n".$versionTag->get("comments").$urlOfSingleAsset, }; if ($self->get("who") eq "committer") { $properties->{userId} = $versionTag->get("committedBy");