diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm index f8da5441d..18bba4caf 100644 --- a/lib/WebGUI/Asset/Shortcut.pm +++ b/lib/WebGUI/Asset/Shortcut.pm @@ -11,9 +11,62 @@ package WebGUI::Asset::Shortcut; #------------------------------------------------------------------- use strict; -use Carp; +use Carp qw/croak/; use Tie::IxHash; -use WebGUI::Asset; +use WebGUI::Definition::Asset; +extends 'WebGUI::Asset'; + +attribute assetName => ['assetName', 'Asset_Shortcut']; +attribute icon => 'shortcut.gif'; +attribute tableName => 'Shortcut'; + +property shortcutToAssetId => ( + noFormPost => 1, + fieldType => "hidden", + default => undef, + noFormPost => 1, + ); +property shortcutByCriteria => ( + fieldType => "yesNo", + default => 0, + noFormPost => 1, + ); +property disableContentLock => ( + fieldType => "yesNo", + default => 0, + noFormPost => 1, + ); +property resolveMultiples => ( + fieldType => "selectBox", + default => "mostRecent", + noFormPost => 1, + ); +property shortcutCriteria => ( + fieldType => "textarea", + default => "", + noFormPost => 1, + ); +property templateId => ( + fieldType => "template", + default => "PBtmpl0000000000000140", + noFormPost => 1, + ); +property prefFieldsToShow => ( + fieldType => "checkList", + default => undef, + noFormPost => 1, + ); +property prefFieldsToImport => ( + fieldType => "checkList", + default => undef, + noFormPost => 1, + ); +property showReloadIcon => ( + fieldType => "yesNo", + default => 1, + noFormPost => 1, + ); + use WebGUI::International; use WebGUI::Operation::Profile; use WebGUI::ProfileField; @@ -22,8 +75,6 @@ use WebGUI::Macro; use HTML::Entities qw(encode_entities); use Data::Dumper; -our @ISA = qw(WebGUI::Asset); - #------------------------------------------------------------------- sub _drawQueryBuilder { my $self = shift; @@ -174,48 +225,7 @@ sub definition { my $definition = shift; my $i18n = WebGUI::International->new($session,"Asset_Shortcut"); push(@{$definition}, { - assetName=>$i18n->get('assetName'), - icon=>'shortcut.gif', - tableName=>'Shortcut', - className=>'WebGUI::Asset::Shortcut', properties=>{ - shortcutToAssetId=>{ - noFormPost=>1, - fieldType=>"hidden", - defaultValue=>undef - }, - shortcutByCriteria=>{ - fieldType=>"yesNo", - defaultValue=>0, - }, - disableContentLock=>{ - fieldType=>"yesNo", - defaultValue=>0 - }, - resolveMultiples=>{ - fieldType=>"selectBox", - defaultValue=>"mostRecent", - }, - shortcutCriteria=>{ - fieldType=>"textarea", - defaultValue=>"", - }, - templateId=>{ - fieldType=>"template", - defaultValue=>"PBtmpl0000000000000140" - }, - prefFieldsToShow=>{ - fieldType=>"checkList", - defaultValue=>undef - }, - prefFieldsToImport=>{ - fieldType=>"checkList", - defaultValue=>undef - }, - showReloadIcon=>{ - fieldType=>"yesNo", - defaultValue=>1 - } } }); return $class->SUPER::definition($session,$definition); @@ -836,7 +846,7 @@ sub setOverride { my $self = shift; my $override = shift; - croak "Shortcut->setOverride - first argument must be hash reference" + Carp::croak "Shortcut->setOverride - first argument must be hash reference" unless $override && ref $override eq "HASH"; for my $key ( %$override ) { @@ -1271,11 +1281,11 @@ sub getShortcutsForAssetId { my $assetId = shift; my $properties = shift || {}; - croak "First argument to getShortcutsForAssetId must be WebGUI::Session" + Carp::croak "First argument to getShortcutsForAssetId must be WebGUI::Session" unless $session && $session->isa("WebGUI::Session"); - croak "Second argument to getShortcutsForAssetId must be assetId" + Carp::croak "Second argument to getShortcutsForAssetId must be assetId" unless $assetId; - croak "Third argument to getShortcutsForAssetId must be hash reference" + Carp::croak "Third argument to getShortcutsForAssetId must be hash reference" if $properties && !ref $properties eq "HASH"; my $db = $session->db; diff --git a/lib/WebGUI/AssetLineage.pm b/lib/WebGUI/AssetLineage.pm index 59795fc4f..aab261961 100644 --- a/lib/WebGUI/AssetLineage.pm +++ b/lib/WebGUI/AssetLineage.pm @@ -617,7 +617,7 @@ sub getLineageSql { if ( ! eval { require $module; 1 }) { $self->session->errorHandler->fatal("Couldn't compile asset package: ".$className.". Root cause: ".$@) if ($@); } - foreach my $table ($self->meta->get_tables) { + foreach my $table ($className->meta->get_tables) { unless ($table eq "asset" || $table eq "assetData") { $tables .= " left join $table on assetData.assetId=".$table.".assetId and assetData.revisionDate=".$table.".revisionDate"; } diff --git a/t/Asset.t b/t/Asset.t index 32360f4a3..f7d35286e 100644 --- a/t/Asset.t +++ b/t/Asset.t @@ -20,7 +20,7 @@ use Test::More; use Test::Deep; use Test::Exception; -plan tests => 49; +plan tests => 50; my $session = WebGUI::Test->session; @@ -251,3 +251,14 @@ my $session = WebGUI::Test->session; $session->db->write("delete from asset where assetId like 'wg8TestAsset00000%'"); $session->db->write("delete from assetData where assetId like 'wg8TestAsset00000%'"); } + +{ + note "get_tables, with inheritance"; + use WebGUI::Asset::Snippet; + my @tables = WebGUI::Asset::Snippet->meta->get_tables; + cmp_deeply( + \@tables, + [qw/assetData snippet/], + 'get_tables works on inherited classes' + ); +}