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;
}
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 {
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=>'<a href="'.$self->getFileUrl.'"><img src="'.$self->getThumbnailUrl.'?noCache='.time().'" alt="thumbnail" /></a>'
);
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=>'<a href="'.$self->getFileUrl.'"><img src="'.$self->getThumbnailUrl.'?noCache='.$self->session->datetime->time().'" alt="thumbnail" /></a>'
};
$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;
}

View file

@ -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;
}