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

@ -791,10 +791,7 @@ sub getEditForm {
my $self = shift;
my $i18n = WebGUI::International->new($self->session, "Asset");
my $ago = $i18n->get("ago");
my $rs = $self->session->db->read("select revisionDate from assetData where assetId=? order by revisionDate desc limit 5", [$self->getId]);
my $uiLevelOverride = $self->get("className");
$uiLevelOverride =~ s/\:\:/_/g;
my $tabform = WebGUI::TabForm->new($self->session,undef,undef,$self->getUrl(),$uiLevelOverride);
my $tabform = WebGUI::TabForm->new($self->session,undef,undef,$self->getUrl());
my $overrides = $self->session->config->get("assets/".$self->get("className"));
# Set the appropriate URL
@ -824,8 +821,10 @@ sub getEditForm {
});
}
else {
# revision history
my $ac = $self->getAdminConsole;
$ac->addSubmenuItem($self->getUrl("func=manageRevisions"),$i18n->get("revisions").":");
my $rs = $self->session->db->read("select revisionDate from assetData where assetId=? order by revisionDate desc limit 5", [$self->getId]);
while (my ($version) = $rs->array) {
my ($interval, $units) = $self->session->datetime->secondsToInterval(time() - $version);
$ac->addSubmenuItem($self->getUrl("func=edit;revision=".$version), $interval." ".$units." ".$ago);
@ -2390,7 +2389,7 @@ sub www_add {
assetId=>"new",
url=>$self->session->form->param("url")
);
$properties{isHidden} = 1 unless (WebGUI::Utility::isIn($class, @{$self->session->config->get("assetContainers")}));
$properties{isHidden} = 1 unless $self->session->config->get("assets/".$class."/isContainer");
my $newAsset = WebGUI::Asset->newByPropertyHashRef($self->session,\%properties);
$newAsset->{_parent} = $self;
return $newAsset->www_edit();

View file

@ -415,7 +415,7 @@ sub www_manage {
YAHOO.util.Event.onDOMReady( WebGUI.AssetManager.initManager );
</script>
ENDHTML
my $output = '<div class="yui-skin-sam" id="assetManager">' . getHeader( $session );
my $output = WebGUI::Macro::AdminBar::process($session).'<div class="yui-skin-sam" id="assetManager">' . getHeader( $session );
### Crumbtrail
my $crumb_markup = '<li><a href="%s">%s</a> &gt;</li>';
@ -459,30 +459,6 @@ ENDHTML
### Clearing div
$output .= q{<div style="clear: both;">&nbsp;</div>};
### New Content
$output .= q{<div class="functionPane"><fieldset><legend>} . $i18n->get( '1083' ) . '</legend>';
foreach my $link (@{$currentAsset->getAssetAdderLinks("proceed=manageAssets","assetContainers")}) {
$output .= '<p style="display:inline;vertical-align:middle;"><img src="'.$link->{'icon.small'}.'" alt="'.$link->{label}.'" style="border: 0px;vertical-align:middle;" /></p>
<a href="'.$link->{url}.'">'.$link->{label}.'</a> ';
$output .= $session->icon->edit("func=edit;proceed=manageAssets",$link->{asset}->get("url")) if ($link->{isPrototype});
$output .= '<br />';
}
$output .= '<hr />';
foreach my $link (@{$currentAsset->getAssetAdderLinks("proceed=manageAssets")}) {
$output .= '<p style="display:inline;vertical-align:middle;"><img src="'.$link->{'icon.small'}.'" alt="'.$link->{label}.'" style="border: 0px;vertical-align:middle;" /></p>
<a href="'.$link->{url}.'">'.$link->{label}.'</a> ';
$output .= $session->icon->edit("func=edit;proceed=manageAssets",$link->{asset}->get("url")) if ($link->{isPrototype});
$output .= '<br />';
}
$output .= '<hr />';
foreach my $link (@{$currentAsset->getAssetAdderLinks("proceed=manageAssets","utilityAssets")}) {
$output .= '<p style="display:inline;vertical-align:middle;"><img src="'.$link->{'icon.small'}.'" alt="'.$link->{label}.'" style="border: 0px;vertical-align:middle;" /></p>
<a href="'.$link->{url}.'">'.$link->{label}.'</a> ';
$output .= $session->icon->edit("func=edit;proceed=manageAssets",$link->{asset}->get("url")) if ($link->{isPrototype});
$output .= '<br />';
}
$output .= '</fieldset></div>';
tie my %options, 'Tie::IxHash';
my $hasClips = 0;
foreach my $asset (@{$currentAsset->getAssetsInClipboard(1)}) {

View file

@ -127,12 +127,6 @@ If specified, this will be prepended to the id (whether autogenerated or not) to
The UI Level that the user must meet or exceed if this field should be displayed with toHtmlWithWrapper() is called.
=head4 uiLevelOverride
An identifier that will be grabbed from the config file to determine the uiLevel. If the uiLevelOverride is "Article" and the name is "title" then the entry in the config file would look like:
Article_uiLevel = title => 5
=head4 subtext
A text string that will be appended after the field when toHtmlWithWrapper() is called.
@ -181,9 +175,6 @@ sub definition {
uiLevel=>{
defaultValue=>1
},
uiLevelOverride=>{
defaultValue=>undef
},
labelClass=>{
defaultValue=>"formDescription"
},
@ -576,19 +567,11 @@ Renders the form field to HTML as a table row complete with labels, subtext, hov
sub passUiLevelCheck {
my $self = shift;
my $passUiLevelCheck = 0;
my $override = $self->session->config->get($self->get("uiLevelOverride")."_uiLevel");
if (defined $override && $override->{$self->get("name")}) { # use override if it exists
$passUiLevelCheck = ($override->{$self->get("name")} <= $self->session->user->profileField("uiLevel"));
} else { # use programmed default
$passUiLevelCheck = ($self->get("uiLevel") <= $self->session->user->profileField("uiLevel"));
}
$passUiLevelCheck = $self->session->user->isAdmin unless ($passUiLevelCheck); # override if in admins group
return $passUiLevelCheck;
my $user = $self->session->user;
return $self->get("uiLevel") <= $user->profileField("uiLevel") || $user->isAdmin;
}
#-------------------------------------------------------------------
=head2 prepareWrapper ( )

View file

@ -83,7 +83,6 @@ sub AUTOLOAD {
my $self = shift;
my $name = ucfirst((split /::/, $AUTOLOAD)[-1]);
my %params = @_;
$params{uiLevelOverride} ||= $self->{_uiLevelOverride};
$params{rowClass} ||= $self->{_class};
my $control = eval { WebGUI::Pluggable::instanciate("WebGUI::Form::".$name, "new", [ $self->session, %params ]) };
if ($@) {
@ -269,7 +268,7 @@ sub new {
$header .= "\n<table ".$param{tableExtras}.' style="width: 100%;"><tbody>';
$footer = "</tbody></table>\n" ;
$footer .= WebGUI::Form::formFooter($session);
bless {_session=>$session, _tableExtras=>$param{tableExtras}, _uiLevelOverride=>$param{uiLevelOverride}, _header => $header, _footer => $footer, _data => ''}, $class;
bless {_session=>$session, _tableExtras=>$param{tableExtras}, _header => $header, _footer => $footer, _data => ''}, $class;
}
#-------------------------------------------------------------------

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;

View file

@ -96,7 +96,7 @@ sub addTab {
my $name = shift;
my $label = shift;
my $uiLevel = shift || 0;
$self->{_tab}{$name}{form} = WebGUI::HTMLForm->new($self->session,uiLevelOverride=>$self->{_uiLevelOverride});
$self->{_tab}{$name}{form} = WebGUI::HTMLForm->new($self->session);
$self->{_tab}{$name}{label} = $label;
$self->{_tab}{$name}{uiLevel} = $uiLevel;
return $self->{_tab}{$name}{form};
@ -198,11 +198,10 @@ sub new {
my $startingTabs = shift;
my $css = shift || $session->url->extras('tabs/tabs.css');
my $cancelUrl = shift || $session->url->page();
my $uiLevelOverride = shift;
my %tabs;
tie %tabs, 'Tie::IxHash';
foreach my $key (keys %{$startingTabs}) {
$tabs{$key}{form} = WebGUI::HTMLForm->new($session,uiLevelOverride=>$uiLevelOverride);
$tabs{$key}{form} = WebGUI::HTMLForm->new($session);
$tabs{$key}{label} = $startingTabs->{$key}->{label};
$tabs{$key}{uiLevel} = $startingTabs->{$key}->{uiLevel};
}
@ -211,8 +210,7 @@ sub new {
value=>$i18n->get('cancel'),
extras=>q|onclick="history.go(-1);" class="backwardButton"|
});
bless { _session=>$session, _uiLevelOverride=>$uiLevelOverride, _cancel=>$cancel,
_submit=>WebGUI::Form::submit($session),
bless { _session=>$session, _cancel=>$cancel, _submit=>WebGUI::Form::submit($session),
_form=>WebGUI::Form::formHeader($session), _hidden=>"", _tab=>\%tabs, _css=>$css }, $class;
}