%# BEGIN BPS TAGGED BLOCK {{{ %# %# COPYRIGHT: %# %# This software is Copyright (c) 1996-2006 Best Practical Solutions, LLC %# <jesse@bestpractical.com> %# %# (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., 675 Mass Ave, Cambridge, MA 02139, USA. %# %# %# 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 &>

<&|/l&>Name |
<&|/l&>Description |
<&|/l&>Type | <& /Admin/Elements/SelectCustomFieldType, Name => "TypeComposite", Default => $CustomFieldObj->TypeComposite, &>
<&|/l&>Applies to | <& /Admin/Elements/SelectCustomFieldLookupType, Name => "LookupType", Default => $CustomFieldObj->LookupType, &>
<&|/l&>Validation | <& /Widgets/ComboBox, Name => 'Pattern', Default => $CustomFieldObj->Pattern, Size => 20, Values => [ '(?#Mandatory).', '(?#Digits)^[\d.]+$', '(?#Year)^[12]\d{3}$', ], &>
| /> <&|/l&>Enabled (Unchecking this box disables this custom field)
<&|/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.

% if ($CustomFieldObj->Id && $CustomFieldObj->IsSelectionType) {

## <&|/l&>Values

<& /Admin/Elements/EditCustomFieldValues, CustomField => $CustomFieldObj &> <& /Admin/Elements/AddCustomFieldValue, CustomField => $CustomFieldObj &>
% } <&/Elements/Submit&> <%INIT> my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} ); my ( $title, @results, $EnabledChecked, $Disabled); $EnabledChecked = "CHECKED"; if ( !$id ) { $title = loc("Create a CustomField"); $id = 'new'; } else { if ( $id eq 'new' ) { my ( $val, $msg ) = $CustomFieldObj->Create(Name => $Name, TypeComposite => $TypeComposite, LookupType => $LookupType, Description => $Description, Pattern => $Pattern,); $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() ); my @attribs = qw( Pattern Name TypeComposite LookupType Description LinkValueTo IncludeContentForValue); my @aresults = UpdateRecordObject( AttributesRef => \@attribs, Object => $CustomFieldObj, ARGSRef => \%ARGS ); push @results, @aresults; #we're asking about enabled on the web page but really care about disabled. if ($Enabled == 1) { $Disabled = 0; } else { $Disabled = 1; } if ( ($SetEnabled) and ( $Disabled != $CustomFieldObj->Disabled) ) { my ($code, $msg) = $CustomFieldObj->SetDisabled($Disabled); push @results, loc('Enabled status: [_1]', loc_fuzzy($msg)); } if ($CustomFieldObj->Disabled()) { $EnabledChecked =""; } } $id = $CustomFieldObj->id; } 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+)$/); my ($val, $msg) = $CustomFieldObj->DeleteValue($1); push (@results, $msg); } # Update any existing values my $values = $CustomFieldObj->ValuesObj; while (my $value = $values->Next) { foreach my $attr qw(Name Description SortOrder Category) { my $param = $paramtag.$value->Id."-".$attr; if ( $ARGS{$param} && ($value->$attr() ne $ARGS{$param})) { my $mutator = "Set$attr"; my ($id, $msg) = $value->$mutator($ARGS{$param}); push (@results, $msg); } } } # Add any new values if ($ARGS{$paramtag."new-Name"}) { my ($id, $msg) = $CustomFieldObj->AddValue ( map { $_ => $ARGS{$paramtag."new-$_"} } qw( Name Description SortOrder Category ) ); push (@results, $msg); } my $current_tab; if ($ARGS{'Create'}){ $current_tab = "Admin/CustomFields/Modify.html?Create=1"; } else { $current_tab = "Admin/CustomFields/Modify.html?id=".$id; } <%ARGS> $id => undef $TypeComposite => undef $LookupType => undef $MaxValues => undef $SortOrder => undef $Description => undef $Pattern => undef $Name => undef $SetEnabled => undef $Enabled => undef