X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FAdmin%2FCustomFields%2FModify.html;h=358dcfd7092dbcdf0879bde358b8f02fe09ef543;hb=54a357b171aa44f9399b4c146acd2afd3b686075;hp=5ef32127b768990186acdfce94961f169386fb00;hpb=90edd8a914fd484e649fb0aa051dce7927bd6881;p=freeside.git diff --git a/rt/share/html/Admin/CustomFields/Modify.html b/rt/share/html/Admin/CustomFields/Modify.html index 5ef32127b..358dcfd70 100644 --- a/rt/share/html/Admin/CustomFields/Modify.html +++ b/rt/share/html/Admin/CustomFields/Modify.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -46,23 +46,20 @@ %# %# END BPS TAGGED BLOCK }}} <& /Admin/Elements/Header, Title => $title &> -<& /Admin/Elements/CustomFieldTabs, - id => $CustomFieldObj->Id , - current_tab => $current_tab, - Title => $title &> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &> -
+ - + - + +% if ( $CustomFieldObj->Id and $CustomFieldObj->HasRenderTypes ) { + + + + +% } + % if ( $CustomFieldObj->Id and $CustomFieldObj->IsSelectionType and RT->Config->Get('CustomFieldValuesSources') and ( scalar(@{RT->Config->Get('CustomFieldValuesSources')}) > 0 ) ) { % if ( $CustomFieldObj->Id @@ -90,53 +100,62 @@ % } - + % if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) { - % } +% $m->callback(CallbackName => 'BeforeEnabled', CustomField => $CustomFieldObj, CFvalidations => \@CFvalidations); + + + +% $m->callback(CallbackName => 'EndOfTable', CustomField => $CustomFieldObj, CFvalidations => \@CFvalidations); +
<&|/l&>Name
<&|/l&>Description
<&|/l&>Type <& /Admin/Elements/SelectCustomFieldType, @@ -70,6 +67,19 @@ Default => $CustomFieldObj->TypeComposite, &>
<&|/l&>Render Type + <& /Admin/Elements/SelectCustomFieldRenderType, + Name => "RenderType", + TypeComposite => $CustomFieldObj->TypeComposite, + Default => $CustomFieldObj->RenderType, + BasedOn => $CustomFieldObj->BasedOnObj->id, &> +
<&|/l&>Field values source: <& /Admin/Elements/EditCustomFieldValuesSource, CustomField => $CustomFieldObj &> @@ -79,7 +89,7 @@
<&|/l&>Applies to <& /Admin/Elements/SelectCustomFieldLookupType, Name => "LookupType", - Default => $CustomFieldObj->LookupType, &> + Default => $CustomFieldObj->LookupType || $LookupType, &>
<&|/l&>Validation
<&|/l&>Validation <& /Widgets/ComboBox, Name => 'Pattern', - Default => $CustomFieldObj->Pattern, + Default => $CustomFieldObj->Pattern || $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_unsafe, '__id__', '__CustomField__' &>RT will replace [_1] and [_2] with the record's id and the custom field's 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_unsafe, '__id__', '__CustomField__' &>RT will replace [_1] and [_2] with the record's id and the custom field's value, respectively. <&|/l&>Some browsers may only load content from the same domain as your RT server.
<&|/l&>Categories are based on +
<&|/l&>Categories are based on <& /Admin/Elements/SelectCustomField, Name => "BasedOn", LookupType => $CustomFieldObj->LookupType, - Default => $CustomFieldObj->BasedOnObj, + Default => $CustomFieldObj->BasedOnObj || $BasedOn, Not => $CustomFieldObj->id, &>
  /> <&|/l&>Required for ticket resolution
  + /> +<&|/l&>Copy this field to new tickets +
  /> <&|/l&>Enabled (Unchecking this box disables this custom field)
% if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) { @@ -151,15 +170,15 @@
<%INIT> -my ($title, @results, $Disabled); +my ($title, @results); my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} ); -my $current_tab = 'Admin/CustomFields/Modify.html'; + +$m->callback(CallbackName => 'Initial', Pattern => \$Pattern, ARGSRef => \%ARGS); unless ( $id ) { $title = loc("Create a CustomField"); $id = 'new'; - $current_tab .= '?Create=1'; } else { if ( $id eq 'new' ) { @@ -172,24 +191,34 @@ else { LinkValueTo => $LinkValueTo, IncludeContentForValue => $IncludeContentForValue, BasedOn => $BasedOn, + Disabled => !$Enabled, + NoClone => !$YesClone, ); - $m->comp( "/Elements/Error", Why => loc( "Could not create CustomField", $msg ) ) unless $val; - push @results, $msg; - $title = loc( 'Created CustomField [_1]', $CustomFieldObj->Name ); + if (!$val) { + push @results, loc("Could not create CustomField: [_1]", $msg); + $title = loc( 'Create a CustomField'); + } + else { + push @results, loc("Object created"); + $title = loc( 'Created CustomField [_1]', $CustomFieldObj->Name ); + } } else { - $CustomFieldObj->Load( $id ) || $m->comp("/Elements/Error", Why => loc('No CustomField') ); + push @results, loc('No CustomField') + unless $CustomFieldObj->Load( $id ); + $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{'Disabled'} = $Enabled? 0 : 1; + # likewise + $ARGS{'NoClone'} = $YesClone ? 0 : 1; $ARGS{'Required'} ||= 0; - my @attribs = qw(Disabled Required Pattern Name TypeComposite LookupType Description LinkValueTo IncludeContentForValue); + my @attribs = qw(Disabled Required Pattern Name TypeComposite LookupType Description LinkValueTo IncludeContentForValue NoClone); push @results, UpdateRecordObject( AttributesRef => \@attribs, Object => $CustomFieldObj, @@ -197,7 +226,32 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { ); $CustomFieldObj->SetValuesClass( $ValuesClass ); - $CustomFieldObj->SetBasedOn( $BasedOn ); + # Set the render type if we have it, but unset it if the new type doesn't + # support render types + if ( $CustomFieldObj->HasRenderTypes($TypeComposite) ) { + my $original = $CustomFieldObj->RenderType; + + if ( defined $RenderType and $RenderType ne $original ) { + # It's changed! Let's update it. + my ($good, $msg) = $CustomFieldObj->SetRenderType( $RenderType ); + + if ( $good ) { + $msg = loc("[_1] changed from '[_2]' to '[_3]'", + loc("Render Type"), $original, $RenderType ); + } + + push @results, $msg; + } + } + else { + # Delete it if we no longer support render types + $CustomFieldObj->SetRenderType( undef ); + } + + if (($CustomFieldObj->BasedOn||'') ne ($BasedOn||'')) { + my ($good, $msg) = $CustomFieldObj->SetBasedOn( $BasedOn ); + push @results, $msg; + } $CustomFieldObj->SetUILocation( $UILocation ); @@ -221,16 +275,18 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { # Update any existing values my $values = $CustomFieldObj->ValuesObj; while ( my $value = $values->Next ) { - foreach my $attr qw(Name Description SortOrder Category) { + 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); } + $m->callback(CallbackName => 'AfterUpdateCustomFieldValue', CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $value, ARGSRef => \%ARGS ); } # Add any new values @@ -242,17 +298,33 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { $_ => $ARGS{ $paramtag ."-new-$_" } } qw/ Name Description SortOrder Category/ ); push (@results, $msg); + + my $cfv = RT::CustomFieldValue->new( $session{CurrentUser} ); + $cfv->Load($id); + $m->callback(CallbackName => 'AfterCreateCustomFieldValue', +CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $cfv, ARGSRef => \%ARGS ); } } $id = $CustomFieldObj->id if $CustomFieldObj->id; +# This code does automatic redirection if any updates happen. +MaybeRedirectForResults( + Actions => \@results, + Arguments => { id => $id }, +) if $CustomFieldObj->id; + + my $EnabledChecked = qq[checked="checked"]; $EnabledChecked = '' if $CustomFieldObj->Disabled; my $RequiredChecked = ''; $RequiredChecked = qq[checked="checked"] if $CustomFieldObj->Required; +my $YesCloneChecked = qq[checked="checked"]; +$YesCloneChecked = '' if $CustomFieldObj->NoClone; + + my @CFvalidations = ( '(?#Mandatory).', '(?#Digits)^[\d.]+$', @@ -274,8 +346,10 @@ $Name => undef $SetEnabled => undef $Enabled => 0 $ValuesClass => 'RT::CustomFieldValues' +$RenderType => undef $LinkValueTo => undef $IncludeContentForValue => undef $BasedOn => undef $UILocation => undef +$YesClone => undef