X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FElements%2FEditCustomField;h=b9fccc992ea6841f87cb8450bd63abb1f7514c6e;hp=d1bb0c2950188074c0b24e9fd2a95881bba7fd4d;hb=187086c479a09629b7d180eec513fb7657f4e291;hpb=b4b0c7e72d7eaee2fbfc7022022c9698323203dd diff --git a/rt/share/html/Elements/EditCustomField b/rt/share/html/Elements/EditCustomField index d1bb0c295..b9fccc992 100644 --- a/rt/share/html/Elements/EditCustomField +++ b/rt/share/html/Elements/EditCustomField @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC +%# +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# CONTRIBUTION SUBMISSION POLICY: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,7 +43,7 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} <%INIT> @@ -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