diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm
index 8a3926c7a..6c03093a7 100644
--- a/lib/WebGUI.pm
+++ b/lib/WebGUI.pm
@@ -106,7 +106,9 @@ sub page {
}
}
} else {
- $output = WebGUI::Asset->getNotFound->www_view;
+ my $notFound = WebGUI::Asset->getNotFound;
+ $session{asset} = $notFound;
+ $output = $notFound->www_view;
}
}
WebGUI::Affiliate::grabReferral(); # process affilliate tracking request
diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm
index 3437bc54c..9b5ba8626 100644
--- a/lib/WebGUI/Asset.pm
+++ b/lib/WebGUI/Asset.pm
@@ -792,9 +792,11 @@ Returns a toolbar with a set of icons that hyperlink to functions that delete, e
sub getToolbar {
my $self = shift;
- my $toolbar = deleteIcon('func=delete',$self->get("url"),WebGUI::International::get(43,"Asset"))
- .editIcon('func=edit',$self->get("url"))
- .cutIcon('func=cut',$self->get("url"))
+ my $toolbar = deleteIcon('func=delete',$self->get("url"),WebGUI::International::get(43,"Asset"));
+ if (!$self->isLocked || $self->get("isLockedBy") eq $session{user}{userId}) {
+ $toolbar .= editIcon('func=edit',$self->get("url"));
+ }
+ $toolbar .= cutIcon('func=cut',$self->get("url"))
.copyIcon('func=copy',$self->get("url"));
$toolbar .= shortcutIcon('func=createShortcut',$self->get("url")) unless ($self->get("className") =~ /Shortcut/);
WebGUI::Style::setLink($session{config}{extrasURL}.'/contextMenu/contextMenu.css', {rel=>"stylesheet",type=>"text/css"});
@@ -927,7 +929,8 @@ sub new {
my $revisionDate = shift;
unless ($revisionDate) {
($revisionDate) = WebGUI::SQL->quickArray("select max(revisionDate) from assetData where assetId="
- .quote($assetId)." group by assetData.assetId order by assetData.revisionDate");
+ .quote($assetId)." and status='approved' or tagId=".quote($session{scratch}{versionTag}."
+ group by assetData.assetId order by assetData.revisionDate");
}
return undef unless ($revisionDate);
if ($className) {
@@ -1250,7 +1253,6 @@ Hash reference of properties and values to set.
sub update {
my $self = shift;
my $properties = shift;
- $self->setVersionLock;
foreach my $definition (@{$self->definition}) {
my @setPairs;
foreach my $property (keys %{$definition->{properties}}) {
@@ -1367,6 +1369,7 @@ sub www_editSave {
$object = $self->addChild({className=>$session{form}{class}});
$object->{_parent} = $self;
} else {
+ return $self->getContainer->www_view if ($self->isLocked && $self->get("isLockedBy") ne $session{user}{userId});
$object = $self->addRevision;
}
$object->processPropertiesFromFormPost;
@@ -1417,29 +1420,39 @@ sub www_manageAssets {
assetManager.AddColumn('".$i18n->get("type")."','','left','');
assetManager.AddColumn('".$i18n->get("last updated")."','','center','');
assetManager.AddColumn('".$i18n->get("size")."','','right','');
- assetManager.AddColumn('Locked','','center','');\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").'");
contextMenu.addLink("'.$child->getUrl("func=createShortcut&proceed=manageAssets").'","'.$i18n->get("create shortcut").'");
contextMenu.addLink("'.$child->getUrl("func=promote").'","'.$i18n->get("promote").'");
contextMenu.addLink("'.$child->getUrl("func=demote").'","'.$i18n->get("demote").'");
+ contextMenu.addLink("'.$child->getUrl("func=manageRevisions").'","'.$i18n->get("revisions").'");
contextMenu.addLink("'.$child->getUrl.'","'.$i18n->get("view").'"); '."\n";
my $title = $child->getTitle;
$title =~ s/\'/\\\'/g;
+ my $locked;
+ my $edit;
+ if ($child->isLocked) {
+ $locked = WebGUI::International::get("138");
+ $edit = "'getUrl("func=edit&proceed=manageAssets")."\">Edit | '+" if ($child->get("isLockedBy") eq $session{user}{userId});
+ } else {
+ $edit = "'getUrl("func=edit&proceed=manageAssets")."\">Edit | '+";
+ $locked = WebGUI::International::get("139");
+ }
$output .= "assetManager.AddLine('"
.WebGUI::Form::checkbox({
name=>'assetId',
value=>$child->getId
})
- ."','getUrl("func=edit&proceed=manageAssets")."\">Edit | '+contextMenu.draw(),"
+ ."',".$edit."contextMenu.draw(),"
.$child->getRank
.",'getUrl("func=manageAssets")."\">".$title
."','
getIcon(1)."\" border=\"0\" alt=\"".$child->getName."\" /> ".$child->getName
."','".WebGUI::DateTime::epochToHuman($child->get("revisionDate"))
- ."','".formatBytes($child->get("assetSize"))."','');\n";
+ ."','".formatBytes($child->get("assetSize"))."','getUrl("func=manageRevisions")."\">".$locked."');\n";
$output .= "assetManager.AddLineSortData('','','','".$title."','".$child->getName
- ."','".$child->get("revisionDate")."','".$child->get("assetSize")."','');
+ ."','".$child->get("revisionDate")."','".$child->get("assetSize")."','".$locked."');
assetManager.addAssetMetaData('".$child->getUrl."', '".$child->getRank."', '".$child->getTitle."');\n";
}
$output .= '
diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm
index 54a967a24..c49a6aad2 100644
--- a/lib/WebGUI/Asset/Wobject/Navigation.pm
+++ b/lib/WebGUI/Asset/Wobject/Navigation.pm
@@ -283,7 +283,10 @@ sub getToolbar {
if (exists $session{asset}) {
$returnUrl = "&proceed=goBackToPage&returnUrl=".WebGUI::URL::escape($session{asset}->getUrl);
}
- my $toolbar = editIcon('func=edit'.$returnUrl,$self->get("url"));
+ my $toolbar;
+ if (!$self->isLocked || $self->get("isLockedBy") eq $session{user}{userId}) {
+ $toolbar = editIcon('func=edit'.$returnUrl,$self->get("url"));
+ }
my $i18n = WebGUI::International->new("Asset");
return '