various fixes and enhancements for the asset configuration stuff i checked in earlier

This commit is contained in:
JT Smith 2008-09-29 00:14:49 +00:00
parent 79c5425bcf
commit 72edbfd628
7 changed files with 14 additions and 284 deletions

View file

@ -40,11 +40,7 @@ sub process {
my ($url, $style, $asset, $user, $config) = $session->quick(qw(url style asset user config));
$style->setScript($url->extras('yui/build/utilities/utilities.js'), {type=>'text/javascript'});
$style->setScript($url->extras('accordion/accordion.js'), {type=>'text/javascript'});
# $style->setLink($url->extras('accordion/accordion.css'), {type=>'text/css', rel=>'stylesheet'});
$style->setLink($url->extras('slidePanel/slidePanel.css'), {type=>'text/css', rel=>'stylesheet'});
# $style->setRawHeadTags(<script type="text/javascript">
# /* YAHOO.util.Event.addListener(window, 'load', function () {var myAccordion = new Accordion("myAccordion");} ); */
# </script>);
$style->setLink($url->extras('macro/AdminBar/slidePanel.css'), {type=>'text/css', rel=>'stylesheet'});
my $out = q{<dl class="accordion-menu">};
@ -181,232 +177,12 @@ sub process {
}
$out .= q{</dl>
<script type="text/javascript>
YAHOO.util.Event.on(window, "load", function () {
document.body.style.marginLeft = "160px";
<script type="text/javascript">
YAHOO.util.Event.on(window, "load", function () { document.body.style.marginLeft = "160px"; });
AccordionMenu.openDtById("newContentMenu");
});
</script>};
return $out;
}
#-------------------------------------------------------------------
=head2 getAssetAdderLinks ( [addToUrl, type] )
Returns an arrayref that contains a label (name of the class of Asset) and url (url link to function to add the class).
=head3 addToUrl
Any text to append to the getAssetAdderLinks URL. Usually name/variable pairs to pass in the url. If addToURL is specified, the character ";" and the text in addToUrl is appended to the returned url.
=head3 type
A string indicating which type of adders to return. Defaults to "assets". Choose from "assets", "assetContainers", or "utilityAssets".
=cut
sub getAssetAdderLinks {
my $self = shift;
my $addToUrl = shift;
my $type = shift || "assets";
my %links;
my $classesInType = $self->session->config->get($type);
if (ref $classesInType ne "ARRAY") {
$classesInType = [];
}
foreach my $class (@{$classesInType}) {
next unless $class;
my %properties = (
className=>$class,
dummy=>1
);
my $newAsset = WebGUI::Asset->newByPropertyHashRef($self->session,\%properties);
next unless $newAsset;
my $uiLevel = eval{$newAsset->getUiLevel()};
if ($@) {
$self->session->errorHandler->error("Couldn't get UI level of ".$class.". Root cause: ".$@);
next;
}
next if ($uiLevel > $self->session->user->profileField("uiLevel"));# && !$self->session->user->isAdmin);
my $canAdd = eval{$class->canAdd($self->session)};
if ($@) {
$self->session->errorHandler->error("Couldn't determine if user can add ".$class." because ".$@);
next;
}
next unless ($canAdd);
my $label = eval{$newAsset->getName()};
if ($@) {
$self->session->errorHandler->error("Couldn't get the name of ".$class."because ".$@);
next;
}
my $url = $self->getUrl("func=add;class=".$class);
$url = $self->session->url->append($url,$addToUrl) if ($addToUrl);
$links{$label}{url} = $url;
$links{$label}{icon} = $newAsset->getIcon;
$links{$label}{'icon.small'} = $newAsset->getIcon(1);
}
my $constraint;
if ($type eq "assetContainers") {
$constraint = $self->session->db->quoteAndJoin($self->session->config->get("assetContainers"));
} elsif ($type eq "utilityAssets") {
$constraint = $self->session->db->quoteAndJoin($self->session->config->get("utilityAssets"));
} else {
$constraint = $self->session->db->quoteAndJoin($self->session->config->get("assets"));
}
if ($constraint) {
my $sth = $self->session->db->read("select asset.className,asset.assetId,assetData.revisionDate from asset left join assetData on asset.assetId=assetData.assetId where assetData.isPrototype=1 and asset.state='published' and asset.className in ($constraint) and assetData.revisionDate=(SELECT max(revisionDate) from assetData where assetData.assetId=asset.assetId) group by assetData.assetId");
while (my ($class,$id,$date) = $sth->array) {
my $asset = WebGUI::Asset->new($self->session,$id,$class,$date);
next unless ($asset->canView && $asset->canAdd($self->session) && $asset->getUiLevel <= $self->session->user->profileField("uiLevel"));
my $url = $self->getUrl("func=add;class=".$class.";prototype=".$id);
$url = $self->session->url->append($url,$addToUrl) if ($addToUrl);
$links{$asset->getTitle}{url} = $url;
$links{$asset->getTitle}{icon} = $asset->getIcon;
$links{$asset->getTitle}{'icon.small'} = $asset->getIcon(1);
$links{$asset->getTitle}{'isPrototype'} = 1;
$links{$asset->getTitle}{'asset'} = $asset;
}
$sth->finish;
}
my @sortedLinks;
foreach my $label (sort keys %links) {
push(@sortedLinks,{
label=>$label,
url=>$links{$label}{url},
icon=>$links{$label}{icon},
'icon.small'=>$links{$label}{'icon.small'},
isPrototype=>$links{$label}{isPrototype},
asset=>$links{$label}{asset}
});
}
return \@sortedLinks;
}
#-------------------------------------------------------------------
sub processOld {
my $session = shift;
return "" unless ($session->var->isAdminOn);
$session->style->setScript($session->url->extras('yui/build/yahoo-dom-event/yahoo-dom-event.js'), {type=>"text/javascript"});
$session->style->setScript($session->url->extras('yui/build/animation/animation-min.js'), {type=>"text/javascript"});
my @param = @_;
my $templateId = $param[0] || "PBtmpl0000000000000090";
my $i18n = WebGUI::International->new($session,'Macro_AdminBar');
my @adminbar = ();
my $ac = WebGUI::AdminConsole->new($session);
my @adminConsole = ();
foreach my $item (@{$ac->getAdminFunction}) {
push(@adminConsole, {
title=>$item->{title},
icon=>$item->{'icon.small'},
url=>$item->{url}
}) if ($item->{canUse});
}
push(@adminbar, {
label => $i18n->get("admin console","AdminConsole"),
name => "adminConsole",
items => \@adminConsole
});
if ($session->asset) {
my @clipboard = ();
foreach my $asset (@{$session->asset->getAssetsInClipboard(1)}) {
my $title = $asset->getTitle;
$title =~ s/'//g; # stops it from breaking the javascript menus
push(@clipboard, {
'title'=>$title,
'url'=>$session->asset->getUrl("func=paste;assetId=".$asset->getId),
icon=>$asset->getIcon(1),
});
}
if (scalar(@clipboard)) {
push(@adminbar, {
label => $i18n->get(1082),
name => "clipboard",
items => \@clipboard
});
}
my @packages = ();
foreach my $package (@{$session->asset->getPackageList}) {
my $title = $package->getTitle;
$title =~ s/'//g; # stops it from breaking the javascript menus
push(@packages,{
'url'=>$session->asset->getUrl("func=deployPackage;assetId=".$package->getId),
'title'=>$title,
icon=>$package->getIcon(1),
});
}
if ($session->user->profileField("uiLevel") >= 7 && scalar(@packages)) {
push(@adminbar, {
label => $i18n->get(376),
name => "packages",
items => \@packages
});
}
}
my $working = WebGUI::VersionTag->getWorking($session, 1);
my $workingId = "";
my @tags = ();
if ($working) {
$workingId = $working->getId;
my $commitUrl = "";
if ($session->setting->get("skipCommitComments")) {
$session->url->page("op=commitVersionTagConfirm;tagId=".$workingId);
}
else {
$session->url->page("op=commitVersionTag;tagId=".$workingId);
}
push(@tags, {
url=>$session->url->page("op=commitVersionTag;tagId=".$workingId),
title=>$i18n->get("commit my changes"),
icon=>$session->url->extras('adminConsole/small/versionTags.gif')
});
}
foreach my $tag (@{WebGUI::VersionTag->getOpenTags($session)}) {
next unless $session->user->isInGroup($tag->get("groupToUse"));
push(@tags, {
url=>$session->url->page("op=" . ($tag->getId eq $workingId ? "editVersionTag" : "setWorkingVersionTag") . ";backToSite=1;tagId=".$tag->getId),
title=>($tag->getId eq $workingId) ? '<span style="color: #000080;">* '.$tag->get("name").'</span>' : $tag->get("name"),
icon=>$session->url->extras('spacer.gif')
});
}
if (scalar(@tags)) {
push(@adminbar, {
label => $i18n->get("version tags","VersionTag"),
name => "versions",
items => \@tags
});
}
if ($session->asset) {
my @assets = ();
foreach my $asset (@{$session->asset->getAssetAdderLinks(undef,"assetContainers")}) {
push(@assets, {
title=>$asset->{label},
icon=>$asset->{'icon.small'},
url=>$asset->{url}
});
}
push(@assets, {icon=>$session->url->extras('spacer.gif'),label=>'<hr />'});
foreach my $asset (@{$session->asset->getAssetAdderLinks}) {
push(@assets, {
title=>$asset->{label},
icon=>$asset->{'icon.small'},
url=>$asset->{url}
});
}
push(@adminbar, {
label => $i18n->get(1083),
name => "newContent",
items => \@assets
});
}
return WebGUI::Asset::Template->new($session,$templateId)->process({adminbar_loop=>\@adminbar});
}
1;