[Rt-commit] rt branch, 4.4/cf-default-values, updated. rt-4.2.3-207-g734aa9e

? sunnavy sunnavy at bestpractical.com
Thu Jun 12 07:16:50 EDT 2014


The branch, 4.4/cf-default-values has been updated
       via  734aa9eb50ce5872ad09eecdcdc18c88a46a0cc2 (commit)
      from  4f67026e92003a0b3475fcec26444dd1e6f45512 (commit)

Summary of changes:
 lib/RT/Queue.pm                            | 50 ++++++++++++++++++++++++++++++
 share/html/Admin/Queues/DefaultValues.html | 20 ++++++++++++
 share/html/Ticket/Create.html              |  6 ++--
 3 files changed, 73 insertions(+), 3 deletions(-)

- Log -----------------------------------------------------------------
commit 734aa9eb50ce5872ad09eecdcdc18c88a46a0cc2
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Jun 12 19:15:43 2014 +0800

    queue-level default values for priority/starts/due

diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index 6ca78c4..fd961e1 100644
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -1155,6 +1155,56 @@ sub PreInflate {
     return 1;
 }
 
+sub DefaultValue {
+    my $self = shift;
+    my $field = shift;
+    return undef unless $field =~ /Priority|Due|Starts/;
+    my $attr = $self->FirstAttribute('DefaultValues');
+    return undef unless $attr && $attr->Content;
+    return $attr->Content->{$field};
+}
+
+sub SetDefaultValue {
+    my $self = shift;
+    my %args = (
+        Name  => undef,
+        Value => undef,
+        @_
+    );
+    my $field = shift;
+    my $attr = $self->FirstAttribute('DefaultValues');
+
+    my ($old_value, $old_content, $new_value);
+    if ( $attr && $attr->Content ) {
+        $old_content = $attr->Content;
+        $old_value = $old_content->{$args{Name}};
+    }
+
+    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 = $self->SetAttribute(
+        Name    => 'DefaultValues',
+        Content => {
+            %{ $old_content || {} }, $args{Name} => $args{Value},
+        },
+    );
+
+    if ( $ret ) {
+        return ( $ret, $self->loc( 'Default value of [_1] changed from [_2] to [_3]', $args{Name}, $old_value, $new_value ) );
+    }
+    else {
+        return ( $ret, $self->loc( "Can't change default value of [_1] from [_2] to [_3]", $args{Name}, $old_value, $new_value ) );
+    }
+}
 
 
 RT::Base->_ImportOverlays();
diff --git a/share/html/Admin/Queues/DefaultValues.html b/share/html/Admin/Queues/DefaultValues.html
index 456575c..1f99c76 100644
--- a/share/html/Admin/Queues/DefaultValues.html
+++ b/share/html/Admin/Queues/DefaultValues.html
@@ -51,6 +51,18 @@
 
 <form method="post" action="DefaultValues.html" name="ModifyDefaultValues" id="ModifyDefaultValues">
 <input type="hidden" name="id" value="<% $queue->id %>" />
+
+<h2><&|/l&>Core Fields</&></h2>
+<table border="0">
+<tr><td class="label"><&|/l&>Priority</&>:</td>
+<td><& /Elements/SelectPriority,
+    Name => "Priority",
+    Default => $queue->DefaultValue('Priority'),
+&></td></tr>
+<tr><td class="label"><&|/l&>Starts</&>:</td><td><& /Elements/SelectDate, Name => "Starts", Default => $queue->DefaultValue('Starts') || '' &></td></tr>
+<tr><td class="label"><&|/l&>Due</&>:</td><td><& /Elements/SelectDate, Name => "Due", Default => $queue->DefaultValue('Due') || '' &></td></tr>
+</table>
+
 <h2><&|/l&>Ticket Custom Fields</&></h2>
 <& /Elements/EditCustomFields, CustomFields => $ticket_cfs, NamePrefix => 'Default-', Object => RT::Ticket->new($session{CurrentUser}), QueueObj => $queue &>
 
@@ -70,6 +82,14 @@ my $txn_cfs = $queue->TicketTransactionCustomFields;
 
 my @results;
 if ( $ARGS{Update} ) {
+    for my $field ( qw/Priority Starts Due/ ) {
+        my ($ret, $msg) = $queue->SetDefaultValue(
+            Name => $field,
+            Value => $ARGS{$field},
+        );
+        push @results, $msg;
+    }
+
     for my $cf_id ( map { /^Default-(\d+)-/ ? $1 : ()  } keys %ARGS ) {
         my $cf = RT::CustomField->new($session{CurrentUser});
         $cf->Load($cf_id);
diff --git a/share/html/Ticket/Create.html b/share/html/Ticket/Create.html
index ede62bd..8426965 100644
--- a/share/html/Ticket/Create.html
+++ b/share/html/Ticket/Create.html
@@ -228,7 +228,7 @@
 <tr><td class="label"><&|/l&>Priority</&>:</td>
 <td><& /Elements/SelectPriority,
     Name => "InitialPriority",
-    Default => $ARGS{InitialPriority} ? $ARGS{InitialPriority} : $QueueObj->InitialPriority,
+    Default => $ARGS{InitialPriority} ? $ARGS{InitialPriority} : $QueueObj->InitialPriority || $QueueObj->DefaultValue('Priority'),
 &></td></tr>
 <tr><td class="label"><&|/l&>Final Priority</&>:</td>
 <td><& /Elements/SelectPriority,
@@ -258,8 +258,8 @@
   color => "#663366" &>
 
 <table>
-<tr><td class="label"><&|/l&>Starts</&>:</td><td><& /Elements/SelectDate, Name => "Starts", Default => $ARGS{Starts} || '' &></td></tr>
-<tr><td class="label"><&|/l&>Due</&>:</td><td><& /Elements/SelectDate, Name => "Due", Default => $ARGS{Due} || '' &></td></tr>
+<tr><td class="label"><&|/l&>Starts</&>:</td><td><& /Elements/SelectDate, Name => "Starts", Default => $ARGS{Starts} || $QueueObj->DefaultValue('Starts') || '' &></td></tr>
+<tr><td class="label"><&|/l&>Due</&>:</td><td><& /Elements/SelectDate, Name => "Due", Default => $ARGS{Due} || $QueueObj->DefaultValue('Due') || '' &></td></tr>
 <& /Elements/EditCustomFields,
     %ARGS,
     Object => $ticket,

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


More information about the rt-commit mailing list