diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 1fc97d29e..de48e1e76 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1100,6 +1100,23 @@ sub getEditForm { return $tabform; } +sub setupFormField { + my ($self, $tabform, $fieldName, $extraFields, $overrides) = @_; + my %params = %{$extraFields->{$fieldName}}; + my $tab = delete $params{tab}; + + if (exists $overrides->{fields}{$fieldName}) { + my %overrideParams = %{$overrides->{fields}{$fieldName}}; + my $overrideTab = delete $overrideParams{tab}; + $tab = $overrideTab if defined $overrideTab; + foreach my $key (keys %overrideParams) { + $params{"-$key"} = $overrideParams{$key}; + } + } + + $tab ||= 'properties'; + return $tabform->getTab($tab)->dynamicField(%params); +} #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index 9cabef927..2a8a2f987 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -154,31 +154,51 @@ 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(); + +# Add the fields defined locally and apply any overrides from the config file my $i18n = WebGUI::International->new($self->session,"Asset_Image"); - $tabform->getTab("properties")->integer( - -name=>"thumbnailSize", - -label=>$i18n->get('thumbnail size'), - -hoverHelp=>$i18n->get('Thumbnail size description'), - -value=>$self->getValue("thumbnailSize") - ); - $tabform->getTab("properties")->textarea( - -name=>"parameters", - -label=>$i18n->get('parameters'), - -hoverHelp=>$i18n->get('Parameters description'), - -value=>$self->getValue("parameters") - ); + + tie my %extraFields, "Tie::IxHash"; + + my $extraFields = { + thumbnailSize => { + fieldType=>"integer", + -name=>"thumbnailSize", + -label=>$i18n->get('thumbnail size'), + -hoverHelp=>$i18n->get('Thumbnail size description'), + -value=>$self->getValue("thumbnailSize"), + }, + parameters => { + fieldType=>"textarea", + -name=>"parameters", + -label=>$i18n->get('parameters'), + -hoverHelp=>$i18n->get('Parameters description'), + -value=>$self->getValue("parameters") + }, + }; + if ($self->get("filename") ne "") { - $tabform->getTab("properties")->readOnly( - -label=>$i18n->get('thumbnail'), - -hoverHelp=>$i18n->get('Thumbnail description'), - -value=>'thumbnail' - ); - my ($x, $y) = $self->getStorageLocation->getSizeInPixels($self->get("filename")); - $tabform->getTab("properties")->readOnly( - -label=>$i18n->get('image size'), - -value=>$x.' x '.$y - ); + my ($x, $y) = $self->getStorageLocation->getSizeInPixels($self->get("filename")); + + $extraFields->{thumbnail} = { + fieldType=>"readOnly", + -label=>$i18n->get('thumbnail'), + -hoverHelp=>$i18n->get('Thumbnail description'), + -value=>'thumbnail' + }; + $extraFields->{imageSize} = { + fieldType=>"readOnly", + -label=>$i18n->get('image size'), + -value=>$x.' x '.$y, + }; } + + my $overrides = $self->session->config->get("assets/".$self->get("className")); + + foreach my $fieldName (keys %{$extraFields}) { + $self->setupFormField($tabform, $fieldName, $extraFields, $overrides); + } + return $tabform; } diff --git a/lib/WebGUI/Asset/Wobject/Layout.pm b/lib/WebGUI/Asset/Wobject/Layout.pm index f93bc1c09..d1a709944 100644 --- a/lib/WebGUI/Asset/Wobject/Layout.pm +++ b/lib/WebGUI/Asset/Wobject/Layout.pm @@ -115,27 +115,36 @@ sub getEditForm { } else { $templateId = $self->getValue('templateId'); } - $tabform->getTab("display")->template( - -value=>$templateId, - -label=>$i18n->get('layout template title'), - -hoverHelp=>$i18n->get('template description'), - -namespace=>"Layout" - ); + + tie my %extraFields, "Tie::IxHash"; + %extraFields = ( + templateId => { + fieldType => 'template', + tab => 'display', + -value=>$templateId, + -label=>$i18n->get('layout template title'), + -hoverHelp=>$i18n->get('template description'), + -namespace=>"Layout", + }); if ( $self->session->setting->get('useMobileStyle') ) { - $tabform->getTab("display")->template( - name => 'mobileTemplateId', - value => $self->getValue('mobileTemplateId'), - label => $i18n->get('mobileTemplateId label'), - hoverHelp => $i18n->get('mobileTemplateId description'), - namespace => 'Layout', - ); + $extraFields{mobileTemplateId} = { + fieldType => 'template', + tab => 'display', + name => 'mobileTemplateId', + value => $self->getValue('mobileTemplateId'), + label => $i18n->get('mobileTemplateId label'), + hoverHelp => $i18n->get('mobileTemplateId description'), + namespace => 'Layout', + }; } else { - $tabform->getTab("display")->hidden( - name => 'mobileTemplateId', - value => $self->getValue('mobileTemplateId'), - ); + $extraFields{mobileTemplateId} = { + fieldType => 'hidden', + tab => 'display', + name => 'mobileTemplateId', + value => $self->getValue('mobileTemplateId'), + }; } tie my %assetOrder, "Tie::IxHash"; @@ -143,21 +152,25 @@ sub getEditForm { "asc" =>$i18n->get("asset order asc"), "desc" =>$i18n->get("asset order desc"), ); - $tabform->getTab("display")->selectBox( - -name => 'assetOrder', - -label => $i18n->get('asset order label'), - -hoverHelp => $i18n->get('asset order hoverHelp'), - -value => $self->getValue('assetOrder'), - -options => \%assetOrder - ); + $extraFields{assetOrder} = { + tab => 'display', + fieldType => 'selectBox', + -name => 'assetOrder', + -label => $i18n->get('asset order label'), + -hoverHelp => $i18n->get('asset order hoverHelp'), + -value => $self->getValue('assetOrder'), + -options => \%assetOrder, + }; + if ($self->get("assetId") eq "new") { - $tabform->getTab("properties")->whatNext( - -options=>{ - view=>$i18n->get(823), - viewParent=>$i18n->get(847) - }, - -value=>"view" - ); + $extraFields{whatNext} = { + fieldType => 'whatNext', + -options=>{ + view=>$i18n->get(823), + viewParent=>$i18n->get(847) + }, + -value=>"view", + }; } else { my @assetsToHide = split("\n",$self->getValue("assetsToHide")); my $children = $self->getLineage(["children"],{"returnObjects"=>1, excludeClasses=>["WebGUI::Asset::Wobject::Layout"]}); @@ -165,16 +178,24 @@ sub getEditForm { foreach my $child (@{$children}) { $childIds{$child->getId} = $child->getTitle; } - $tabform->getTab("display")->checkList( - -name=>"assetsToHide", - -value=>\@assetsToHide, - -options=>\%childIds, - -label=>$i18n->get('assets to hide'), - -hoverHelp=>$i18n->get('assets to hide description'), - -vertical=>1, - -uiLevel=>9 - ); + $extraFields{assetsToHide} = { + fieldType => 'checkList', + tab => 'display', + -name=>"assetsToHide", + -value=>\@assetsToHide, + -options=>\%childIds, + -label=>$i18n->get('assets to hide'), + -hoverHelp=>$i18n->get('assets to hide description'), + -vertical=>1, + -uiLevel=>9, + }; } + + my $overrides = $self->session->config->get("assets/".$self->get("className")); + foreach my $fieldName (keys %extraFields) { + $self->setupFormField($tabform, $fieldName, \%extraFields, $overrides); + } + return $tabform; }