From 2069da5fdb592e54e3d3238cd3911161e2368502 Mon Sep 17 00:00:00 2001 From: Matthew Wilson Date: Wed, 18 Jan 2006 14:41:12 +0000 Subject: [PATCH] tons of bug fixes. --- lib/WebGUI/AdminConsole.pm | 13 ++--- lib/WebGUI/Asset.pm | 89 +++++++++++++++++++--------------- lib/WebGUI/Asset/File/Image.pm | 2 +- lib/WebGUI/Asset/Shortcut.pm | 2 +- lib/WebGUI/Asset/Wobject.pm | 2 +- lib/WebGUI/AssetBranch.pm | 2 +- lib/WebGUI/AssetClipboard.pm | 2 +- lib/WebGUI/AssetLineage.pm | 2 +- lib/WebGUI/AssetTrash.pm | 2 +- lib/WebGUI/Form/Group.pm | 2 +- lib/WebGUI/Form/Template.pm | 2 +- lib/WebGUI/Group.pm | 8 +-- lib/WebGUI/Macro/AdminBar.pm | 3 +- lib/WebGUI/Session/Style.pm | 4 +- lib/WebGUI/TabForm.pm | 2 +- 15 files changed, 76 insertions(+), 61 deletions(-) diff --git a/lib/WebGUI/AdminConsole.pm b/lib/WebGUI/AdminConsole.pm index e0bf14229..612c3216c 100644 --- a/lib/WebGUI/AdminConsole.pm +++ b/lib/WebGUI/AdminConsole.pm @@ -68,7 +68,7 @@ sub _formatFunction { } my $i18n = WebGUI::International->new($self->session); return { - title=>$i18n->($function->{title}{id}, $function->{title}{namespace}), + title=>$i18n->get($function->{title}{id}, $function->{title}{namespace}), icon=>$self->session->config->get("extrasURL")."/adminConsole/".$function->{icon}, 'icon.small'=>$self->session->config->get("extrasURL")."/adminConsole/small/".$function->{icon}, url=>$url, @@ -370,10 +370,11 @@ sub new { my $class = shift; my $session = shift; use WebGUI; WebGUI::dumpSession($session); my $id = shift; - my %self; - $self{_function} = $class->getAdminFunction($id) if ($id); - $self{_session} = $session; - bless \%self, $class; + my $self; + $self->{_session} = $session; + bless $self, $class; + $self->{_function} = $self->getAdminFunction($id) if ($id); + return $self; } #------------------------------------------------------------------- @@ -412,7 +413,7 @@ sub render { $var{"console.icon"} = $acParams->{icon}; $var{"help.url"} = $self->{_helpUrl}; if (defined $self->session->asset) { - my $importNode = $self->getImportNode($self->session); + my $importNode = WebGUI::Asset->getImportNode($self->session); my $importNodeLineage = $importNode->get("lineage"); my $assetLineage = $self->session->asset->get("lineage"); if ($assetLineage =~ /^$importNodeLineage/ || $assetLineage eq "000001") { diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 8c5a074f9..3b2044a21 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -366,36 +366,38 @@ sub getAssetAdderLinks { my $addToUrl = shift; my $type = shift || "assets"; my %links; - return []; foreach my $class (@{$self->session->config->get($type)}) { next unless $class; - my $load = "use ".$class; - eval ($load); + my %properties = ( + className=>$class + ); + my $newAsset = WebGUI::Asset->newByPropertyHashRef($self->session,\%properties); + next unless $newAsset; + #use Data::Dumper; print Dumper($newAsset); + my $uiLevel = eval{$newAsset->getUiLevel()}; if ($@) { - $self->session->errorHandler->error("Couldn't compile ".$class." because ".$@); + $self->session->errorHandler->error("Couldn't get UI level of ".$class."because ".$@); + next; } else { - my $uiLevel = eval{$class->getUiLevel()}; - if ($@) { - $self->session->errorHandler->error("Couldn't get UI level of ".$class." because ".$@); - } else { - next if ($uiLevel > $self->session->user->profileField("uiLevel") && !$self->session->user->isInGroup(3)); - } - my $canAdd = eval{$class->canAdd($self->session)}; - if ($@) { - $self->session->errorHandler->error("Couldn't determine if user can add ".$class." because ".$@); - } else { - next unless ($canAdd); - } - my $label = eval{$class->getName()}; - if ($@) { - $self->session->errorHandler->error("Couldn't get the name of ".$class." because ".$@); - } else { - my $url = $self->getUrl("func=add;class=".$class); - $url = $self->session->url->append($url,$addToUrl) if ($addToUrl); - $links{$label}{url} = $url; - $links{$label}{icon} = $class->getIcon; - $links{$label}{'icon.small'} = $class->getIcon(1); - } + next if ($uiLevel > $self->session->user->profileField("uiLevel") && !$self->session->user->isInGroup(3)); + } + my $canAdd = eval{$class->canAdd($self->session)}; + if ($@) { + $self->session->errorHandler->error("Couldn't determine if user can add ".$class." because ".$@); + next; + } else { + next unless ($canAdd); + } + my $label = eval{$newAsset->getName()}; + if ($@) { + $self->session->errorHandler->error("Couldn't get the name of ".$class."because ".$@); + next; + } else { + 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; @@ -447,7 +449,7 @@ sub getContainer { if (WebGUI::Utility::isIn($self->get("className"), @{$self->session->config->get("assetContainers")})) { return $self; } else { - $self->session->asset = $self->getParent; + $self->session->asset($self->getParent); return $self->getParent; } } @@ -576,7 +578,8 @@ sub getEditForm { } my $clause; if ($self->session->user->isInGroup(3)) { - my $contentManagers = $self->session->group->getUsers(4,1); + my $group = WebGUI::Group->new($self->session,4); + my $contentManagers = $group->getUsers(1); push (@$contentManagers, $self->session->user->userId); $clause = "userId in (".$self->session->db->quoteAndJoin($contentManagers).")"; } else { @@ -920,10 +923,17 @@ Returns the UI Level specified in the asset definition or from the config file i =cut sub getUiLevel { - my $self = shift; - my $definition = $self->definition($self->session); - return $self->session->config->get("assetUiLevel")->{$definition->[0]{className}} || $definition->[0]{uiLevel} || 1; -} + my $self = shift; + my $definition = $self->get("className")->definition($self->session); + my $uilevel = $self->session->config->get("assetUiLevel"); + my $ret; + if ($uilevel && ref $uilevel eq 'HASHREF') { + $ret = $self->session->config->get("assetUiLevel")->{$definition->[0]{className}} || $definition->[0]{uiLevel} || 1 ; + } else { + $ret = $definition->[0]{uiLevel} || 1 ; + } + return $ret; +} #------------------------------------------------------------------- @@ -1118,8 +1128,11 @@ sub newByPropertyHashRef { return undef unless exists $properties->{className}; my $className = $properties->{className}; my $cmd = "use ".$className; - eval ($cmd); - $session->errorHandler->fatal("Couldn't compile asset package: ".$className.". Root cause: ".$@) if ($@); + eval ($cmd); + if ($@) { + $session->errorHandler->warn("Couldn't compile asset package: ".$className.". Root cause: ".$@); + return undef; + } bless {_session=>$session, _properties => $properties}, $className; } @@ -1512,19 +1525,19 @@ sub www_editSave { $object->processPropertiesFromFormPost; $object->updateHistory("edited"); if ($self->session->form->process("proceed") eq "manageAssets") { - $self->session->asset = $object->getParent; + $self->session->asset($object->getParent); return $self->session->asset->www_manageAssets; } if ($self->session->form->process("proceed") eq "viewParent") { - $self->session->asset = $object->getParent; + $self->session->asset($object->getParent); return $self->session->asset->www_view; } if ($self->session->form->process("proceed") ne "") { my $method = "www_".$self->session->form->process("proceed"); - $self->session->asset = $object; + $self->session->asset($object); return $self->session->asset->$method(); } - $self->session->asset = $object->getContainer; + $self->session->asset($object->getContainer); return $self->session->asset->www_view; } diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index 50b249608..c1bf29f8e 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -159,7 +159,7 @@ sub getStorageLocation { my $self = shift; unless (exists $self->{_storageLocation}) { if ($self->get("storageId") eq "") { - $self->{_storageLocation} = WebGUI::Storage::Image->create; + $self->{_storageLocation} = WebGUI::Storage::Image->create($self->session); $self->update({storageId=>$self->{_storageLocation}->getId}); } else { $self->{_storageLocation} = WebGUI::Storage::Image->get($self->session,$self->get("storageId")); diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm index e2f5c504c..4a39959de 100644 --- a/lib/WebGUI/Asset/Shortcut.pm +++ b/lib/WebGUI/Asset/Shortcut.pm @@ -797,7 +797,7 @@ sub www_view { my $self = shift; if ($self->isDashlet) { return $self->session->privilege->noAccess() unless $self->canView; - $self->session->asset = $self->getParent; + $self->session->asset($self->getParent); return $self->session->asset->www_view; } else { return $self->getShortcut->www_view; diff --git a/lib/WebGUI/Asset/Wobject.pm b/lib/WebGUI/Asset/Wobject.pm index 85748b90d..b715f03db 100644 --- a/lib/WebGUI/Asset/Wobject.pm +++ b/lib/WebGUI/Asset/Wobject.pm @@ -249,7 +249,7 @@ Returns the TabForm object that will be used in generating the edit page for thi sub getEditForm { my $self = shift; my $tabform = $self->SUPER::getEditForm(); - foreach my $definition (reverse @{$self->definition}) { + foreach my $definition (reverse @{$self->definition($self->session)}) { my $properties = $definition->{properties}; next unless ($definition->{autoGenerateForms}); foreach my $fieldname (keys %{$properties}) { diff --git a/lib/WebGUI/AssetBranch.pm b/lib/WebGUI/AssetBranch.pm index 6b99e95b5..4ce6048f4 100644 --- a/lib/WebGUI/AssetBranch.pm +++ b/lib/WebGUI/AssetBranch.pm @@ -344,7 +344,7 @@ sub www_editBranchSave { } } delete $self->{_parent}; - $self->session->asset = $self->getParent; + $self->session->asset($self->getParent); return $self->getParent->www_manageAssets; } diff --git a/lib/WebGUI/AssetClipboard.pm b/lib/WebGUI/AssetClipboard.pm index 204c01fa6..0c6e60e63 100644 --- a/lib/WebGUI/AssetClipboard.pm +++ b/lib/WebGUI/AssetClipboard.pm @@ -249,7 +249,7 @@ sub www_cut { my $self = shift; return $self->session->privilege->insufficient() unless $self->canEdit; $self->cut; - $self->session->asset = $self->getParent; + $self->session->asset($self->getParent); return $self->getParent->www_view; } diff --git a/lib/WebGUI/AssetLineage.pm b/lib/WebGUI/AssetLineage.pm index 78933bf7c..f09ef4ba6 100644 --- a/lib/WebGUI/AssetLineage.pm +++ b/lib/WebGUI/AssetLineage.pm @@ -715,7 +715,7 @@ sub www_setRank { return $self->session->privilege->insufficient() unless $self->canEdit; my $newRank = $self->session->form->process("rank"); $self->setRank($newRank) if (defined $newRank); - $self->session->asset = $self->getParent; + $self->session->asset($self->getParent); return $self->getParent->www_manageAssets(); } diff --git a/lib/WebGUI/AssetTrash.pm b/lib/WebGUI/AssetTrash.pm index b287b1024..57e76f2ab 100644 --- a/lib/WebGUI/AssetTrash.pm +++ b/lib/WebGUI/AssetTrash.pm @@ -145,7 +145,7 @@ sub www_delete { return $self->session->privilege->insufficient() unless $self->canEdit; return $self->session->privilege->vitalComponent() if (isIn($self->getId, $self->session->setting->get("defaultPage"), $self->session->setting->get("notFoundPage"))); $self->trash; - $self->session->asset = $self->getParent; + $self->session->asset($self->getParent); return $self->getParent->www_view; } diff --git a/lib/WebGUI/Form/Group.pm b/lib/WebGUI/Form/Group.pm index 9a46196b7..239c5a585 100644 --- a/lib/WebGUI/Form/Group.pm +++ b/lib/WebGUI/Form/Group.pm @@ -141,7 +141,7 @@ sub toHtmlWithWrapper { my $self = shift; if ($self->session->user->isInGroup(3)) { my $subtext = $self->session->icon->manage("op=listGroups"); - $self->get("subtext") = $subtext . $self->get("subtext"); + $self->set("subtext",$subtext . $self->get("subtext")); } return $self->SUPER::toHtmlWithWrapper; } diff --git a/lib/WebGUI/Form/Template.pm b/lib/WebGUI/Form/Template.pm index c8ae8be6e..6f94c6573 100644 --- a/lib/WebGUI/Form/Template.pm +++ b/lib/WebGUI/Form/Template.pm @@ -139,7 +139,7 @@ sub setManageIcons { } my $buttons = $self->session->icon->edit("func=edit".$returnUrl,$template->get("url")); $buttons .= $self->session->icon->manage("func=manageAssets",$template->getParent->get("url")); - $self->get("subtext") = $buttons . $self->get("subtext"); + $self->set("subtext",$buttons . $self->get("subtext")); } } diff --git a/lib/WebGUI/Group.pm b/lib/WebGUI/Group.pm index 9df16b07d..3e15bb79f 100755 --- a/lib/WebGUI/Group.pm +++ b/lib/WebGUI/Group.pm @@ -33,8 +33,8 @@ This package provides an object-oriented way of managing WebGUI groups and group =head1 SYNOPSIS use WebGUI::Group; - $g = WebGUI::Group->new(3); or $g = WebGUI::Group->new("new"); - $g = WebGUI::Group->find("Registered Users"); + $g = WebGUI::Group->new($session,3); or $g = WebGUI::Group->new($session,"new"); + $g = WebGUI::Group->find($session,"Registered Users"); $boolean = $g->autoAdd(1); $boolean = $g->autoDelete(1); @@ -506,7 +506,7 @@ sub getGroupsIn { } my @groupsOfGroups = @$groups; foreach my $group (@$groups) { - my $gog = WebGUI::Group->new($group)->getGroupsIn(1,$loopCount); + my $gog = WebGUI::Group->new($self->session,$group)->getGroupsIn(1,$loopCount); push(@groupsOfGroups, @$gog); } $gotGroupsInGroup->{recursive}{$self->getId} = \@groupsOfGroups; @@ -697,7 +697,7 @@ sub new { tie %group, 'Tie::CPHash'; $class = shift; my $self = {}; - $self->{_session} = shift; + $self->{_session} = shift; use WebGUI; WebGUI::dumpSession($self->{_session}); $self->{_groupId} = shift; bless $self, $class; $self->_create() if ($self->{_groupId} eq "new"); diff --git a/lib/WebGUI/Macro/AdminBar.pm b/lib/WebGUI/Macro/AdminBar.pm index 25c8ff159..acbf3f73f 100644 --- a/lib/WebGUI/Macro/AdminBar.pm +++ b/lib/WebGUI/Macro/AdminBar.pm @@ -80,7 +80,8 @@ sub process { } } #--admin functions - $var{adminConsole_loop} = WebGUI::AdminConsole->getAdminFunction; + my $ac = WebGUI::AdminConsole->new($session); + $var{adminConsole_loop} = $ac->getAdminFunction; return WebGUI::Asset::Template->new($session,$templateId)->process(\%var); # 'http://validator.w3.org/check?uri=referer'=>$i18n->get(399), } diff --git a/lib/WebGUI/Session/Style.pm b/lib/WebGUI/Session/Style.pm index 8ad77bf3d..5d0800ff8 100644 --- a/lib/WebGUI/Session/Style.pm +++ b/lib/WebGUI/Session/Style.pm @@ -213,7 +213,7 @@ if ($self->session->user->isInGroup(2)) { $output = "WebGUI was unable to instantiate your style template.".$var{'body.content'}; } WebGUI::Macro::process($self->session,\$output); - my $macroHeadTags = generateAdditionalHeadTags(); + my $macroHeadTags = $self->generateAdditionalHeadTags(); WebGUI::Macro::process($self->session,\$macroHeadTags); $output =~ s/\<\!-- macro head tags --\>/$macroHeadTags/; if ($self->session->errorHandler->canShowDebug()) { @@ -325,7 +325,7 @@ sub setScript { foreach my $script (@{$self->{_javascript}}) { $found = 1 if ($script->{src} eq $url); } - push(@{$self->{_javascript}},$params) unless ($found); + push(@{$self->{_javascript}},$params) unless $found; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/TabForm.pm b/lib/WebGUI/TabForm.pm index 80027f185..e58ac4074 100644 --- a/lib/WebGUI/TabForm.pm +++ b/lib/WebGUI/TabForm.pm @@ -204,7 +204,7 @@ sub new { $tabs{$key}{label} = $startingTabs->{$key}->{label}; $tabs{$key}{uiLevel} = $startingTabs->{$key}->{uiLevel}; } - my $i18n = WebGU::International->new($session); + my $i18n = WebGUI::International->new($session); my $cancel = WebGUI::Form::button($session,{ value=>$i18n->get('cancel'), extras=>q|onclick="history.go(-1);"|