[Rt-commit] rt branch, 4.4/cf-default-values, created. rt-4.2.3-203-g782b3fd

? sunnavy sunnavy at bestpractical.com
Tue Jun 10 12:08:27 EDT 2014


The branch, 4.4/cf-default-values has been created
        at  782b3fd46ee342f662fc5ce8454127af0bc64ba4 (commit)

- Log -----------------------------------------------------------------
commit 782b3fd46ee342f662fc5ce8454127af0bc64ba4
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Wed Jun 11 00:01:02 2014 +0800

    added cf global default values support

diff --git a/lib/RT/CustomField.pm b/lib/RT/CustomField.pm
index 49e386f..547aa34 100644
--- a/lib/RT/CustomField.pm
+++ b/lib/RT/CustomField.pm
@@ -1884,9 +1884,64 @@ sub BasedOnObj {
 }
 
 
+sub SupportDefaultValues {
+    my $self = shift;
+    return 0 unless $self->id;
+    return $self->Type !~ /^(?:Image|Binary)$/;
+}
+
+sub DefaultValues {
+    my $self = shift;
+    my %args = (
+        Object => RT->System,
+        @_,
+    );
+    my $attr = $args{Object}->FirstAttribute('CustomFieldDefaultValues');
+    return $attr->Content->{$self->id} if $attr && $attr->Content;
+    return undef;
+}
+
+sub SetDefaultValues {
+    my $self = shift;
+    my %args = (
+        Object => RT->System,
+        Values => undef,
+        @_,
+    );
+    my $attr = $args{Object}->FirstAttribute( 'CustomFieldDefaultValues' );
+    my ( $old_content, $old_values );
+    $old_content = $attr->Content if $attr && $attr->Content;
+    $old_values = $old_content->{ $self->id } if $old_content;
+
+    my $ret = $args{Object}->SetAttribute(
+        Name    => 'CustomFieldDefaultValues',
+        Content => {
+            %{ $old_content || {} }, $self->id => $args{Values},
+        },
+    );
 
+    if ( defined $old_values && length $old_values ) {
+        $old_values = join ', ', @$old_values if ref $old_values eq 'ARRAY';
+    }
+    else {
+        $old_values = $self->loc('(no value)');
+    }
 
+    my $new_values = $args{Values};
+    if ( defined $new_values && length $new_values ) {
+        $new_values = join ', ', @$new_values if ref $new_values eq 'ARRAY';
+    }
+    else {
+        $new_values = $self->loc( '(no value)' );
+    }
 
+    if ( $ret ) {
+        return ( $ret, $self->loc( 'Default values changed from [_1] to [_2]', $old_values, $new_values ) );
+    }
+    else {
+        return ( $ret, $self->loc( "Can't change default values from [_1] to [_2]", $old_values, $new_values ) );
+    }
+}
 
 =head2 id
 
diff --git a/share/html/Admin/CustomFields/Modify.html b/share/html/Admin/CustomFields/Modify.html
index eea4532..e4e1428 100644
--- a/share/html/Admin/CustomFields/Modify.html
+++ b/share/html/Admin/CustomFields/Modify.html
@@ -127,6 +127,14 @@ jQuery( function() {
     Values  => \@CFvalidations,
 &></td></tr>
 
+% if ( $CustomFieldObj->SupportDefaultValues ) {
+<tr class="edit_default_values"><td class="label"><&|/l&>Default Value(s)</&></td>
+<td>
+<& /Elements/EditCustomField, NamePrefix => 'Default-', CustomField => $CustomFieldObj, Default => $CustomFieldObj->DefaultValues(Object => RT->System) &>
+</td>
+</tr>
+% }
+
 <tr><td class="label"><&|/l&>Link values to</&></td><td>
 <input size="60" name="LinkValueTo"  value="<% $CustomFieldObj->LinkValueTo || $LinkValueTo || '' %>" />
 <div class="hints">
@@ -267,6 +275,14 @@ if ( $ARGS{'Update'} && $id ne 'new' ) {
         push @results, $msg;
     }
 
+    if ( $CustomFieldObj->SupportDefaultValues ) {
+        my ($ret, $msg) = $CustomFieldObj->SetDefaultValues(
+            Object => RT->System,
+            Values => $ARGS{'Default-' . $CustomFieldObj->id . '-Value'} // $ARGS{'Default-' . $CustomFieldObj->id . '-Values'},
+        );
+        push @results, $msg;
+    }
+
     my $paramtag = "CustomField-". $CustomFieldObj->Id ."-Value";
     # Delete any fields that want to be deleted
     foreach my $key ( keys %ARGS ) {
diff --git a/share/html/Elements/EditCustomField b/share/html/Elements/EditCustomField
index 0b36592..9887217 100644
--- a/share/html/Elements/EditCustomField
+++ b/share/html/Elements/EditCustomField
@@ -90,6 +90,10 @@ if ( ( !defined $Default || !length $Default ) && $DefaultsFromTopArguments ) {
     }
 }
 
+if ( ( !defined $Default || !length $Default ) && $CustomField->SupportDefaultValues ) {
+    $Default = $CustomField->DefaultValues;
+}
+
 my $MaxValues = $CustomField->MaxValues;
 if ($MaxValues == 1 && $Values) {
     # what exactly is this doing?  Without the "unless" it breaks RTFM

-----------------------------------------------------------------------


More information about the rt-commit mailing list