X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FAdmin%2FCustomFields%2FModify.html;h=4b1d8d8a6362a5b72051c08aa38e53fa9588cc21;hp=358dcfd7092dbcdf0879bde358b8f02fe09ef543;hb=187086c479a09629b7d180eec513fb7657f4e291;hpb=576d11eecd4aac143ac5d103b056060e2baaf4ed diff --git a/rt/share/html/Admin/CustomFields/Modify.html b/rt/share/html/Admin/CustomFields/Modify.html index 358dcfd70..4b1d8d8a6 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-2012 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -45,7 +45,12 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} -<& /Admin/Elements/Header, Title => $title &> +<& /Admin/Elements/Header, + Title => $title, + Focus => (($added_cfv or $ARGS{FocusAddValue}) + ? "input[name=CustomField-$id-Value-new-Name]" + : undef), + &> <& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &> @@ -125,7 +130,7 @@ <&|/l&>Some browsers may only load content from the same domain as your RT server. -% if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) { +% if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType ) { <&|/l&>Categories are based on <& /Admin/Elements/SelectCustomField, Name => "BasedOn", @@ -150,8 +155,8 @@   - /> -<&|/l&>Enabled (Unchecking this box disables this custom field) + /> + % $m->callback(CallbackName => 'EndOfTable', CustomField => $CustomFieldObj, CFvalidations => \@CFvalidations); @@ -169,12 +174,13 @@ <& /Elements/Submit, Name => 'Update', Label => $id eq 'new'? loc('Create'): loc('Save Changes') &> +% $m->callback(%ARGS, CallbackName => 'EndOfPage', CustomFieldObj => $CustomFieldObj); <%INIT> -my ($title, @results); +my ($title, @results, $added_cfv); my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} ); -$m->callback(CallbackName => 'Initial', Pattern => \$Pattern, ARGSRef => \%ARGS); +$m->callback(CallbackName => 'Initial', Pattern => \$Pattern, Results => \@results, ARGSRef => \%ARGS); unless ( $id ) { $title = loc("Create a CustomField"); @@ -191,7 +197,7 @@ else { LinkValueTo => $LinkValueTo, IncludeContentForValue => $IncludeContentForValue, BasedOn => $BasedOn, - Disabled => !$Enabled, + Disabled => ($Enabled ? 0 : 1), NoClone => !$YesClone, ); if (!$val) { @@ -224,7 +230,15 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { Object => $CustomFieldObj, ARGSRef => \%ARGS ); - $CustomFieldObj->SetValuesClass( $ValuesClass ); + if ( ($ValuesClass||'RT::CustomFieldValues') ne $CustomFieldObj->ValuesClass ) { + my $original = $CustomFieldObj->ValuesClass; + my ($good, $msg) = $CustomFieldObj->SetValuesClass( $ValuesClass ); + if ( $good ) { + $msg = loc("[_1] changed from '[_2]' to '[_3]'", + loc("Field values source"), $original, $ValuesClass ); + } + push @results, $msg; + } # Set the render type if we have it, but unset it if the new type doesn't # support render types @@ -258,7 +272,7 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { 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; + next unless $key =~ /^Delete-$paramtag-(\d+)$/; my ($val, $msg) = $CustomFieldObj->DeleteValue( $1 ); push (@results, $msg); } @@ -298,6 +312,7 @@ if ( $ARGS{'Update'} && $id ne 'new' ) { $_ => $ARGS{ $paramtag ."-new-$_" } } qw/ Name Description SortOrder Category/ ); push (@results, $msg); + $added_cfv = 1 if $id; my $cfv = RT::CustomFieldValue->new( $session{CurrentUser} ); $cfv->Load($id); @@ -306,12 +321,27 @@ CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $cfv, ARGSRef => \%ARG } } +if ( $CustomFieldObj->id && $CustomFieldObj->IsOnlyGlobal ) { + my ( $ret, $msg ); + my $object = $CustomFieldObj->RecordClassFromLookupType->new( $session{'CurrentUser'} ); + + if ( $CustomFieldObj->Disabled && $CustomFieldObj->IsGlobal ) { + ( $ret, $msg ) = $CustomFieldObj->RemoveFromObject($object); + } + elsif ( !$CustomFieldObj->Disabled && !$CustomFieldObj->IsGlobal ) { + ( $ret, $msg ) = $CustomFieldObj->AddToObject($object); + } + + # successful msg("object created" or "object deleted ) is useless here + push @results, $msg unless $ret; +} + $id = $CustomFieldObj->id if $CustomFieldObj->id; # This code does automatic redirection if any updates happen. MaybeRedirectForResults( Actions => \@results, - Arguments => { id => $id }, + Arguments => { id => $id, FocusAddValue => ($added_cfv ? 1 : 0) }, ) if $CustomFieldObj->id; @@ -337,7 +367,7 @@ $m->callback(CallbackName => 'ValidationPatterns', Values => \@CFvalidations); <%ARGS> $id => undef $TypeComposite => undef -$LookupType => undef +$LookupType => RT::Ticket->CustomFieldLookupType $MaxValues => undef $SortOrder => undef $Description => undef