[freeside-commits] branch master updated. 576d11eecd4aac143ac5d103b056060e2baaf4ed

Mark Wells mark at 420.am
Fri Jan 18 17:42:25 PST 2013


The branch, master has been updated
       via  576d11eecd4aac143ac5d103b056060e2baaf4ed (commit)
      from  1fbe9c841ebb293b516dfa4d2611a5cd1a1cf5c5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 576d11eecd4aac143ac5d103b056060e2baaf4ed
Author: Mark Wells <mark at freeside.biz>
Date:   Fri Jan 18 17:42:01 2013 -0800

    avoid cloning TimeWorked and related fields on linked tickets, #20543

diff --git a/rt/FREESIDE_MODIFIED b/rt/FREESIDE_MODIFIED
index 315d6b2..ace0d49 100644
--- a/rt/FREESIDE_MODIFIED
+++ b/rt/FREESIDE_MODIFIED
@@ -160,3 +160,8 @@ share/html/Ticket/Elements/ShowDates
 share/html/Elements/CustomerFields
 share/html/Search/Elements/ConditionRow # bugfix for select options list
 share/html/Search/Elements/PickBasics
+
+#avoid cloning TimeWorked and related fields
+lib/RT/CustomField.pm
+share/html/Admin/CustomFields/Modify.html
+share/html/Ticket/Create.html
diff --git a/rt/lib/RT/CustomField.pm b/rt/lib/RT/CustomField.pm
index 7ba24b8..8d16c1f 100644
--- a/rt/lib/RT/CustomField.pm
+++ b/rt/lib/RT/CustomField.pm
@@ -410,6 +410,10 @@ sub Create {
             $self->SetUILocation( $args{'UILocation'} );
         }
 
+        if ( exists $args{'NoClone'} ) {
+            $self->SetNoClone( $args{'NoClone'} );
+        }
+
         return ($rv, $msg) unless exists $args{'Queue'};
 
         # Compat code -- create a new ObjectCustomField mapping
@@ -1822,9 +1826,20 @@ sub SetUILocation {
     }
 }
 
+sub NoClone {
+    my $self = shift;
+    $self->FirstAttribute('NoClone') ? 1 : '';
+}
 
-
-
+sub SetNoClone {
+    my $self = shift;
+    my $value = shift;
+    if ( $value ) {
+        return $self->SetAttribute( Name => 'NoClone', Content => 1 );
+    } else {
+        return $self->DeleteAttribute('NoClone');
+    }
+}
 
 
 =head2 id
diff --git a/rt/share/html/Admin/CustomFields/Modify.html b/rt/share/html/Admin/CustomFields/Modify.html
index 4ed86b6..358dcfd 100644
--- a/rt/share/html/Admin/CustomFields/Modify.html
+++ b/rt/share/html/Admin/CustomFields/Modify.html
@@ -144,6 +144,11 @@
 </td></tr>
 
 <tr><td class="label"> </td><td>
+<input type="checkbox" class="checkbox" name="YesClone" value="1" <% $YesCloneChecked |n%> />
+<&|/l&>Copy this field to new tickets</&>
+</td></tr>
+
+<tr><td class="label"> </td><td>
 <input type="hidden" class="hidden" name="SetEnabled" value="1" />
 <input type="checkbox" class="checkbox" name="Enabled" value="1" <% $EnabledChecked |n%> />
 <&|/l&>Enabled (Unchecking this box disables this custom field)</&>
@@ -187,6 +192,7 @@ else {
             IncludeContentForValue => $IncludeContentForValue,
             BasedOn       => $BasedOn,
             Disabled      => !$Enabled,
+            NoClone       => !$YesClone,
         );
         if (!$val) {
             push @results, loc("Could not create CustomField: [_1]", $msg);
@@ -207,10 +213,12 @@ else {
 if ( $ARGS{'Update'} && $id ne 'new' ) {
     #we're asking about enabled on the web page but really care about disabled.
     $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,
@@ -313,6 +321,10 @@ $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.]+$',
@@ -339,4 +351,5 @@ $LinkValueTo => undef
 $IncludeContentForValue => undef
 $BasedOn => undef
 $UILocation => undef
+$YesClone => undef
 </%ARGS>
diff --git a/rt/share/html/Ticket/Create.html b/rt/share/html/Ticket/Create.html
index 0419126..8c6a58a 100755
--- a/rt/share/html/Ticket/Create.html
+++ b/rt/share/html/Ticket/Create.html
@@ -293,8 +293,8 @@ if ($CloneTicket) {
     };
 
     $clone->{$_} = $CloneTicketObj->$_()
-        for qw/Owner Subject FinalPriority TimeEstimated TimeWorked
-        Status TimeLeft/;
+        for qw/Owner Subject FinalPriority Status/;
+        # not TimeWorked, TimeEstimated, or TimeLeft
 
     $clone->{$_} = $CloneTicketObj->$_->AsString
         for grep { $CloneTicketObj->$_->Unix }
@@ -330,6 +330,7 @@ if ($CloneTicket) {
 
     my $cfs = $CloneTicketObj->QueueObj->TicketCustomFields();
     while ( my $cf = $cfs->Next ) {
+        next if $cf->FirstAttribute('NoClone');
         my $cf_id     = $cf->id;
         my $cf_values = $CloneTicketObj->CustomFieldValues( $cf->id );
         my @cf_values;

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

Summary of changes:
 rt/FREESIDE_MODIFIED                         |    5 +++++
 rt/lib/RT/CustomField.pm                     |   19 +++++++++++++++++--
 rt/share/html/Admin/CustomFields/Modify.html |   15 ++++++++++++++-
 rt/share/html/Ticket/Create.html             |    5 +++--
 4 files changed, 39 insertions(+), 5 deletions(-)




More information about the freeside-commits mailing list