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=>'
'
- );
- 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=>'
'
+ };
+ $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;
}