allow field overrides in the config file

This commit is contained in:
Luke Robinson 2010-01-27 10:19:37 +00:00 committed by Colin Kuskie
parent ca86f3d84b
commit 017a9a7fc2
3 changed files with 120 additions and 62 deletions

View file

@ -1100,6 +1100,23 @@ sub getEditForm {
return $tabform; 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);
}
#------------------------------------------------------------------- #-------------------------------------------------------------------

View file

@ -154,31 +154,51 @@ Returns the TabForm object that will be used in generating the edit page for thi
sub getEditForm { sub getEditForm {
my $self = shift; my $self = shift;
my $tabform = $self->SUPER::getEditForm(); 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"); my $i18n = WebGUI::International->new($self->session,"Asset_Image");
$tabform->getTab("properties")->integer(
-name=>"thumbnailSize", tie my %extraFields, "Tie::IxHash";
-label=>$i18n->get('thumbnail size'),
-hoverHelp=>$i18n->get('Thumbnail size description'), my $extraFields = {
-value=>$self->getValue("thumbnailSize") thumbnailSize => {
); fieldType=>"integer",
$tabform->getTab("properties")->textarea( -name=>"thumbnailSize",
-name=>"parameters", -label=>$i18n->get('thumbnail size'),
-label=>$i18n->get('parameters'), -hoverHelp=>$i18n->get('Thumbnail size description'),
-hoverHelp=>$i18n->get('Parameters description'), -value=>$self->getValue("thumbnailSize"),
-value=>$self->getValue("parameters") },
); parameters => {
fieldType=>"textarea",
-name=>"parameters",
-label=>$i18n->get('parameters'),
-hoverHelp=>$i18n->get('Parameters description'),
-value=>$self->getValue("parameters")
},
};
if ($self->get("filename") ne "") { if ($self->get("filename") ne "") {
$tabform->getTab("properties")->readOnly( my ($x, $y) = $self->getStorageLocation->getSizeInPixels($self->get("filename"));
-label=>$i18n->get('thumbnail'),
-hoverHelp=>$i18n->get('Thumbnail description'), $extraFields->{thumbnail} = {
-value=>'<a href="'.$self->getFileUrl.'"><img src="'.$self->getThumbnailUrl.'?noCache='.time().'" alt="thumbnail" /></a>' fieldType=>"readOnly",
); -label=>$i18n->get('thumbnail'),
my ($x, $y) = $self->getStorageLocation->getSizeInPixels($self->get("filename")); -hoverHelp=>$i18n->get('Thumbnail description'),
$tabform->getTab("properties")->readOnly( -value=>'<a href="'.$self->getFileUrl.'"><img src="'.$self->getThumbnailUrl.'?noCache='.$self->session->datetime->time().'" alt="thumbnail" /></a>'
-label=>$i18n->get('image size'), };
-value=>$x.' x '.$y $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; return $tabform;
} }

View file

@ -115,27 +115,36 @@ sub getEditForm {
} else { } else {
$templateId = $self->getValue('templateId'); $templateId = $self->getValue('templateId');
} }
$tabform->getTab("display")->template(
-value=>$templateId, tie my %extraFields, "Tie::IxHash";
-label=>$i18n->get('layout template title'), %extraFields = (
-hoverHelp=>$i18n->get('template description'), templateId => {
-namespace=>"Layout" 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') ) { if ( $self->session->setting->get('useMobileStyle') ) {
$tabform->getTab("display")->template( $extraFields{mobileTemplateId} = {
name => 'mobileTemplateId', fieldType => 'template',
value => $self->getValue('mobileTemplateId'), tab => 'display',
label => $i18n->get('mobileTemplateId label'), name => 'mobileTemplateId',
hoverHelp => $i18n->get('mobileTemplateId description'), value => $self->getValue('mobileTemplateId'),
namespace => 'Layout', label => $i18n->get('mobileTemplateId label'),
); hoverHelp => $i18n->get('mobileTemplateId description'),
namespace => 'Layout',
};
} }
else { else {
$tabform->getTab("display")->hidden( $extraFields{mobileTemplateId} = {
name => 'mobileTemplateId', fieldType => 'hidden',
value => $self->getValue('mobileTemplateId'), tab => 'display',
); name => 'mobileTemplateId',
value => $self->getValue('mobileTemplateId'),
};
} }
tie my %assetOrder, "Tie::IxHash"; tie my %assetOrder, "Tie::IxHash";
@ -143,21 +152,25 @@ sub getEditForm {
"asc" =>$i18n->get("asset order asc"), "asc" =>$i18n->get("asset order asc"),
"desc" =>$i18n->get("asset order desc"), "desc" =>$i18n->get("asset order desc"),
); );
$tabform->getTab("display")->selectBox( $extraFields{assetOrder} = {
-name => 'assetOrder', tab => 'display',
-label => $i18n->get('asset order label'), fieldType => 'selectBox',
-hoverHelp => $i18n->get('asset order hoverHelp'), -name => 'assetOrder',
-value => $self->getValue('assetOrder'), -label => $i18n->get('asset order label'),
-options => \%assetOrder -hoverHelp => $i18n->get('asset order hoverHelp'),
); -value => $self->getValue('assetOrder'),
-options => \%assetOrder,
};
if ($self->get("assetId") eq "new") { if ($self->get("assetId") eq "new") {
$tabform->getTab("properties")->whatNext( $extraFields{whatNext} = {
-options=>{ fieldType => 'whatNext',
view=>$i18n->get(823), -options=>{
viewParent=>$i18n->get(847) view=>$i18n->get(823),
}, viewParent=>$i18n->get(847)
-value=>"view" },
); -value=>"view",
};
} else { } else {
my @assetsToHide = split("\n",$self->getValue("assetsToHide")); my @assetsToHide = split("\n",$self->getValue("assetsToHide"));
my $children = $self->getLineage(["children"],{"returnObjects"=>1, excludeClasses=>["WebGUI::Asset::Wobject::Layout"]}); my $children = $self->getLineage(["children"],{"returnObjects"=>1, excludeClasses=>["WebGUI::Asset::Wobject::Layout"]});
@ -165,16 +178,24 @@ sub getEditForm {
foreach my $child (@{$children}) { foreach my $child (@{$children}) {
$childIds{$child->getId} = $child->getTitle; $childIds{$child->getId} = $child->getTitle;
} }
$tabform->getTab("display")->checkList( $extraFields{assetsToHide} = {
-name=>"assetsToHide", fieldType => 'checkList',
-value=>\@assetsToHide, tab => 'display',
-options=>\%childIds, -name=>"assetsToHide",
-label=>$i18n->get('assets to hide'), -value=>\@assetsToHide,
-hoverHelp=>$i18n->get('assets to hide description'), -options=>\%childIds,
-vertical=>1, -label=>$i18n->get('assets to hide'),
-uiLevel=>9 -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; return $tabform;
} }