[Rt-commit] rt branch, 5.0/group-default-values, repushed

Craig Kaiser craig at bestpractical.com
Mon Jan 4 14:48:48 EST 2021


The branch 5.0/group-default-values was deleted and repushed:
       was c860b028045b690aab67414ff35687f04a1176ac
       now 593c3adf0140b4164f5f9691daf601a594295b65

1: 05a7e93a34 < -:  ------- ShowCustomFieldCustomGroupings accept arg for inline edit form action URL
2: 73c0b4fa7d < -:  ------- Add page for setting groups default values
-:  ------- > 1: 5b078d5d52 Add default values for groups
3: c860b02804 ! 2: 593c3adf01 Add page for setting groups default values
    @@ -1,122 +1,29 @@
     Author: craig kaiser <craig at bestpractical.com>
     
    -    Add default values for groups
    +    Add page for setting groups default values
     
    -diff --git a/lib/RT/CustomField.pm b/lib/RT/CustomField.pm
    ---- a/lib/RT/CustomField.pm
    -+++ b/lib/RT/CustomField.pm
    -@@
    - sub SupportDefaultValues {
    -     my $self = shift;
    -     return 0 unless $self->id;
    --    return 0 unless $self->LookupType =~ /RT::(?:Ticket|Transaction|Asset)$/;
    -+    return 0 unless $self->LookupType =~ /RT::(?:Ticket|Transaction|Asset|Group)$/;
    -     return $self->Type !~ /^(?:Image|Binary)$/;
    - }
    - 
    -@@
    -         Object => RT->System,
    -         @_,
    -     );
    --    my $attr = $args{Object}->FirstAttribute('CustomFieldDefaultValues');
    -+
    -+    my $attr;
    -+    if ( ref $args{'Object'} eq 'RT::Group' ) {
    -+        $attr = $self->FirstAttribute('GroupsDefaultValue');
    -+    }
    -+    else {
    -+        $attr = $args{Object}->FirstAttribute('CustomFieldDefaultValues');
    -+    }
    -+
    -     my $values;
    -     $values = $attr->Content->{$self->id} if $attr && $attr->Content;
    -     return $values if defined $values;
    -
    -diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
    ---- a/lib/RT/Group.pm
    -+++ b/lib/RT/Group.pm
    +diff --git a/lib/RT/Interface/Web/MenuBuilder.pm b/lib/RT/Interface/Web/MenuBuilder.pm
    +--- a/lib/RT/Interface/Web/MenuBuilder.pm
    ++++ b/lib/RT/Interface/Web/MenuBuilder.pm
     @@
          );
    - }
    +     $groups->child( select => title => loc('Select'), path => "/Admin/Groups/" );
    +     $groups->child( create => title => loc('Create'), path => "/Admin/Groups/Modify.html?Create=1" );
    ++    $groups->child( 'default-values' => title => loc('Default Values'), path => "/Admin/Groups/DefaultValues.html" );
      
    -+sub DefaultValue {
    -+    my $self  = shift;
    -+    my $field = shift;
    +     my $queues = $admin->child( queues =>
    +         title       => loc('Queues'),
    +@@
    + 
    +         $section->child( select => title => loc('Select'), path => "/Admin/$type/" );
    +         $section->child( create => title => loc('Create'), path => "/Admin/$type/Modify.html?Create=1" );
     +
    -+    my $attr = $field->FirstAttribute( 'GroupsDefaultValue' );
    -+
    -+    return undef unless $attr && $attr->Content;
    -+    return $attr->Content->{$field};
    -+}
    -+
    -+sub SetDefaultValue {
    -+    my $self = shift;
    -+    my %args = (
    -+        Value => undef,
    -+        Field => undef,
    -+        @_
    -+    );
    -+    my $attr = $args{'Field'}->FirstAttribute( 'GroupsDefaultValue' );
    -+
    -+    my ($old_value, $old_content, $new_value);
    -+    if ( $attr && $attr->Content ) {
    -+        $old_content = $attr->Content;
    -+        $old_value   = $old_content->{ $args{'Field'}->id };
    -+    }
    -+
    -+    unless ( defined $old_value && length $old_value ) {
    -+        $old_value = $self->loc('(no value)');
    -+    }
    -+
    -+    $new_value = $args{Value};
    -+    unless ( defined $new_value && length $new_value ) {
    -+        $new_value = $self->loc( '(no value)' );
    -+    }
    -+
    -+    return 1 if $new_value eq $old_value;
    -+
    -+    my ($ret, $msg);
    -+    if ( $attr) {
    -+        ($ret, $msg) = $args{'Field'}->SetAttribute(
    -+            Name       => 'GroupsDefaultValue',
    -+            Content    => { %{ $old_content || {} }, $args{'Field'}->Id => $args{Value} },
    -+            Object     => $args{'Field'},
    -+       );
    -+    }
    -+    else {
    -+      $attr = RT::Attribute->new( $self->CurrentUser );
    -+      ($ret, $msg) = $attr->Create(
    -+          Name       => 'GroupsDefaultValue',
    -+          Content    => { %{ $old_content || {} }, $args{'Field'}->Id => $args{Value} },
    -+          Object     => $args{'Field'},
    -+          ObjectType => 'RT::Group'
    -+      );
    -+    }
    -+
    -+    if ( $ret ) {
    -+        return ( $ret, $self->loc( 'Default value of [_1] changed from [_2] to [_3]', $args{'Field'}->Name, $old_value, $new_value ) );
    -+    }
    -+    else {
    -+        return ( $ret, $self->loc( "Can't change default value of [_1] from [_2] to [_3]: [_4]", $args{'Field'}->Name, $old_value, $new_value, $msg ) );
    -+    }
    -+}
    -+
    -+sub GroupCustomFields {
    -+    my $self = shift;
    -+
    -+    my $cfs = RT::CustomFields->new( $self->CurrentUser );
    -+    if ( $self->CurrentUserHasRight('SeeGroup') ) {
    -+        $cfs->SetContextObject( $self );
    -+        $cfs->LimitToGlobalOrObjectId( $self->Id );
    -+        $cfs->LimitToLookupType( 'RT::Group' );
    -+        $cfs->ApplySortOrder;
    -+    }
    -+    return ($cfs);
    -+}
    -+
    - # If this group represents the members of a custom role, then return
    - # the RT::CustomRole object. Otherwise, return undef
    - sub _CustomRoleObj {
    ++        if ( $type eq 'Groups' ) {
    ++            $section->child( 'default-values' => title => loc('Default Values'), path => "/Admin/Groups/DefaultValues.html" );
    ++        }
    +     }
    + 
    +     if ( $request_path =~ m{^/Admin/Queues} ) {
     
     diff --git a/share/html/Admin/Groups/DefaultValues.html b/share/html/Admin/Groups/DefaultValues.html
     new file mode 100644
    @@ -215,7 +122,7 @@
     +</div>
     +<div class="form-row">
     +  <div class="col-12">
    -+    <& /Elements/Submit, Name => 'Reset', Label => loc('Reset Custom Field Values to Default') &>
    ++    <& /Elements/Submit, Name => 'Reset', Label => loc('Reset Group Values to Default') &>
     +  </div>
     +</div>
     +</form>
    @@ -223,21 +130,21 @@
     +<%INIT>
     +my $GroupObject = RT::Group->new( $session{'CurrentUser'} );
     +
    -+my $title = loc( 'Default Values for groups' );
    ++my $title = loc( 'Default Values For Groups' );
     +my @groupings = ( RT::CustomField->CustomGroupings( 'RT::Group' ), '' );
     +
     +$m->callback( CallbackName => 'Init', ARGSRef => \%ARGS, Title => \$title, Groupings => \@groupings );
     +
     +my @results;
     +if ( $ARGS{Reset} ) {
    -+    my $cfs = RT::Group->GroupCustomFields->LimitToDefaultValuesSupportedTypes;
    ++    my $cfs = $GroupObject->GroupCustomFields->LimitToDefaultValuesSupportedTypes;
     +    while ( my $cf = $cfs->Next ) {
    -+      my ($ret, $msg) = $cf->SetDefaultValues(
    -+            Object => $GroupObject,
    -+            Values => undef,
    ++      my ($ret, $msg) = $GroupObject->SetDefaultValue(
    ++            Field  => $cf,
    ++            Value  => undef,
     +        );
     +    }
    -+    push @results, "Custom Field default values are reset";
    ++    push @results, "Group default values are reset";
     +}
     +elsif ( $ARGS{Update} ) {
     +    my $cfs = _ParseObjectCustomFieldArgs( \%ARGS )->{'RT::Group'}{0};



More information about the rt-commit mailing list