%# BEGIN BPS TAGGED BLOCK {{{ %# %# COPYRIGHT: %# %# This software is Copyright (c) 1996-2011 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 %# you are the copyright holder for those contributions and you grant %# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, %# 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 }}} <& /Admin/Elements/Header, Title => $title &> <& /Admin/Elements/CustomFieldTabs, id => $CustomFieldObj->Id , current_tab => $current_tab, Title => $title &> <& /Elements/ListActions, actions => \@results &>
% if ( $CustomFieldObj->Id and $CustomFieldObj->IsSelectionType and RT->Config->Get('CustomFieldValuesSources') and ( scalar(@{RT->Config->Get('CustomFieldValuesSources')}) > 0 ) ) { % } % if ( $CustomFieldObj->Id % and $CustomFieldObj->LookupType =~ /RT::Transaction/ ) { % } % if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) { % }
<&|/l&>Name
<&|/l&>Description
<&|/l&>Type <& /Admin/Elements/SelectCustomFieldType, Name => "TypeComposite", Default => $CustomFieldObj->TypeComposite, &>
<&|/l&>Field values source: <& /Admin/Elements/EditCustomFieldValuesSource, CustomField => $CustomFieldObj &>
<&|/l&>Applies to <& /Admin/Elements/SelectCustomFieldLookupType, Name => "LookupType", Default => $CustomFieldObj->LookupType, &>
<&|/l&>Display with <& /Admin/Elements/EditCustomFieldUILocation, CustomField => $CustomFieldObj &>
<&|/l&>Validation <& /Widgets/ComboBox, Name => 'Pattern', Default => $CustomFieldObj->Pattern, Size => 20, Values => \@CFvalidations, &>
<&|/l&>Link values to
<&|/l&>RT can make this custom field's values into hyperlinks to another service. <&|/l&>Fill in this field with a URL. <&|/l&>RT will replace __id__ and __CustomField__ with the record id and custom field value, respectively
<&|/l&>Include page
<&|/l&>RT can include content from another web service when showing this custom field. <&|/l&>Fill in this field with a URL. <&|/l&>RT will replace __id__ and __CustomField__ with the record id and custom field value, respectively <&|/l&>Some browsers may only load content from the same domain as your RT server.
<&|/l&>Categories are based on <& /Admin/Elements/SelectCustomField, Name => "BasedOn", LookupType => $CustomFieldObj->LookupType, Default => $CustomFieldObj->BasedOnObj, Not => $CustomFieldObj->id, &>
  /> <&|/l&>Required for ticket resolution
  /> <&|/l&>Enabled (Unchecking this box disables this custom field)
% if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) {

<&|/l&>Values

<& /Admin/Elements/EditCustomFieldValues, CustomField => $CustomFieldObj &> <& /Admin/Elements/AddCustomFieldValue, CustomField => $CustomFieldObj &>
% } <& /Elements/Submit, Name => 'Update', Label => $id eq 'new'? loc('Create'): loc('Save Changes') &>
<%INIT> my ($title, @results, $Disabled); my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} ); my $current_tab = 'Admin/CustomFields/Modify.html'; unless ( $id ) { $title = loc("Create a CustomField"); $id = 'new'; $current_tab .= '?Create=1'; } else { if ( $id eq 'new' ) { my ( $val, $msg ) = $CustomFieldObj->Create( Name => $Name, TypeComposite => $TypeComposite, LookupType => $LookupType, Description => $Description, Pattern => $Pattern, LinkValueTo => $LinkValueTo, IncludeContentForValue => $IncludeContentForValue, BasedOn => $BasedOn, ); $m->comp( "/Elements/Error", Why => loc( "Could not create CustomField", $msg ) ) unless $val; push @results, $msg; $title = loc( 'Created CustomField [_1]', $CustomFieldObj->Name ); } else { $CustomFieldObj->Load( $id ) || $m->comp("/Elements/Error", Why => loc('No CustomField') ); $title = loc( 'Editing CustomField [_1]', $CustomFieldObj->Name ); } $current_tab .= "?id=$id"; } if ( $ARGS{'Update'} && $id ne 'new' ) { #we're asking about enabled on the web page but really care about disabled. $ARGS{'Disabled'} = $Disabled = $Enabled? 0 : 1; $ARGS{'Required'} ||= 0; my @attribs = qw(Disabled Required Pattern Name TypeComposite LookupType Description LinkValueTo IncludeContentForValue); push @results, UpdateRecordObject( AttributesRef => \@attribs, Object => $CustomFieldObj, ARGSRef => \%ARGS ); $CustomFieldObj->SetValuesClass( $ValuesClass ); $CustomFieldObj->SetBasedOn( $BasedOn ); $CustomFieldObj->SetUILocation( $UILocation ); my $paramtag = "CustomField-". $CustomFieldObj->Id ."-Value"; # Delete any fields that want to be deleted foreach my $key ( keys %ARGS ) { next unless $key =~ /^Delete-$paramtag-(\d+)$/o; my ($val, $msg) = $CustomFieldObj->DeleteValue( $1 ); push (@results, $msg); } # Clean up values foreach my $param (grep /^$paramtag-/, keys(%ARGS)) { for ($ARGS{$param}) { s/\r+\n/\n/g; s/^\s+//; s/\s+$//; } } # Update any existing values my $values = $CustomFieldObj->ValuesObj; while ( my $value = $values->Next ) { foreach my $attr qw(Name Description SortOrder Category) { my $param = join("-", $paramtag, $value->Id, $attr); next unless exists $ARGS{$param}; $ARGS{$param} =~ s/^\s+//; $ARGS{$param} =~ s/\s+$//; next if ($value->$attr()||'') eq ($ARGS{$param}||''); my $mutator = "Set$attr"; my ($id, $msg) = $value->$mutator( $ARGS{$param} ); push (@results, $msg); } } # Add any new values if ( defined $ARGS{ $paramtag ."-new-Name" } && length $ARGS{ $paramtag ."-new-Name" } ) { my ($id, $msg) = $CustomFieldObj->AddValue( map { $ARGS{$paramtag."-new-$_"} =~ s/^\s+//; $ARGS{$paramtag."-new-$_"} =~ s/\s+$//; $_ => $ARGS{ $paramtag ."-new-$_" } } qw/ Name Description SortOrder Category/ ); push (@results, $msg); } } $id = $CustomFieldObj->id if $CustomFieldObj->id; my $EnabledChecked = qq[checked="checked"]; $EnabledChecked = '' if $CustomFieldObj->Disabled; my $RequiredChecked = ''; $RequiredChecked = qq[checked="checked"] if $CustomFieldObj->Required; my @CFvalidations = ( '(?#Mandatory).', '(?#Digits)^[\d.]+$', '(?#Year)^[12]\d{3}$', ); $m->callback(CallbackName => 'ValidationPatterns', Values => \@CFvalidations); <%ARGS> $id => undef $TypeComposite => undef $LookupType => undef $MaxValues => undef $SortOrder => undef $Description => undef $Pattern => undef $Name => undef $SetEnabled => undef $Enabled => 0 $ValuesClass => 'RT::CustomFieldValues' $LinkValueTo => undef $IncludeContentForValue => undef $BasedOn => undef $UILocation => undef