X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FElements%2FEditCustomField;h=b9fccc992ea6841f87cb8450bd63abb1f7514c6e;hp=b74c4844e5d55b05cd282398ef31a28d2d5bd527;hb=187086c479a09629b7d180eec513fb7657f4e291;hpb=85e677b86fc37c54e6de2b06340351a28f5a5916 diff --git a/rt/share/html/Elements/EditCustomField b/rt/share/html/Elements/EditCustomField index b74c4844e..b9fccc992 100644 --- a/rt/share/html/Elements/EditCustomField +++ b/rt/share/html/Elements/EditCustomField @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -55,25 +55,39 @@ unless ( $Type ) { } my $Values; -if ( $Object && $Object->id ) { - $NamePrefix ||= join '-', - 'Object', ref($Object), $Object->Id, 'CustomField', ''; +if ( $Object ) { + $Grouping =~ s/\W//g if $Grouping; - $Values = $Object->CustomFieldValues( $CustomField->id ); - $Values->Columns( - qw( id CustomField ObjectType ObjectId Disabled Content - ContentType ContentEncoding SortOrder Creator Created - LastUpdatedBy LastUpdated ) - ); - # Don't take care of $Values if there isn't values inside - undef ( $Values ) unless ( $Values->Count ); + if ( $Object->Id ) { + $Values = $Object->CustomFieldValues( $CustomField->id ); + $Values->Columns( + qw( id CustomField ObjectType ObjectId Disabled Content + ContentType ContentEncoding SortOrder Creator Created + LastUpdatedBy LastUpdated ) + ); + # Don't take care of $Values if there isn't values inside + undef ( $Values ) unless ( $Values->Count ); + } +} + +my $Name; +if ( !$NamePrefix ) { + $Name = GetCustomFieldInputName(Object => $Object, CustomField => $CustomField, Grouping => $Grouping ); } # Always fill $Default with submited values if it's empty if ( ( !defined $Default || !length $Default ) && $DefaultsFromTopArguments ) { - my %TOP = $m->request_args; - $Default = $TOP{ $NamePrefix .$CustomField->Id . '-Values' } - || $TOP{ $NamePrefix .$CustomField->Id . '-Value' }; + my %TOP = %$DECODED_ARGS; + $Default = $TOP{ $Name } if $Name; + # check both -Values and -Value for back compatibility + if ( $NamePrefix ) { + $Default //= $TOP{ $NamePrefix . $CustomField->Id . '-Values' } + // $TOP{ $NamePrefix . $CustomField->Id . '-Value' }; + } + else { + my $prefix = GetCustomFieldInputNamePrefix(Object => $Object, CustomField => $CustomField, Grouping => $Grouping ); + $Default //= $TOP{ $prefix . 'Values' } // $TOP{ $prefix . 'Value' }; + } } my $MaxValues = $CustomField->MaxValues; @@ -85,10 +99,13 @@ if ($MaxValues == 1 && $Values) { } # The "Magic" hidden input causes RT to know that we were trying to edit the field, even if # we don't see a value later, since browsers aren't compelled to submit empty form fields -$m->out("\n".''."\n"); +$m->out("\n".''."\n"); + my $EditComponent = "EditCustomField$Type"; -$m->callback( %ARGS, CallbackName => 'EditComponentName', Name => \$EditComponent, CustomField => $CustomField, Object => $Object ); +$m->callback( %ARGS, CallbackName => 'EditComponentName', Name => \$EditComponent, CustomField => $CustomField, Object => $Object, Rows => \$Rows, Cols => \$Cols); $EditComponent = "EditCustomField$Type" unless $m->comp_exists($EditComponent); return $m->comp( @@ -103,9 +120,12 @@ return $m->comp( Multiple => ($MaxValues != 1), NamePrefix => $NamePrefix, CustomField => $CustomField, + Name => $Name, + $CustomField->BasedOn && $Name ? ( BasedOnName => GetCustomFieldInputName(Object => $Object, CustomField => $CustomField->BasedOnObj, Grouping => $Grouping) ) : (), ); <%ARGS> +$Grouping => undef $Object => undef $CustomField => undef $NamePrefix => undef