[Rt-commit] r16247 - in rt/branches/3.999-DANGEROUS: lib/RT/Action

sunnavy at bestpractical.com sunnavy at bestpractical.com
Wed Oct 8 18:05:45 EDT 2008


Author: sunnavy
Date: Wed Oct  8 18:05:45 2008
New Revision: 16247

Added:
   rt/branches/3.999-DANGEROUS/lib/RT/Action/DeleteTicketLinks.pm
Modified:
   rt/branches/3.999-DANGEROUS/   (props changed)

Log:
 r17064 at sunnavys-mb:  sunnavy | 2008-10-09 05:54:13 +0800
 added DeleteTicketLinks action


Added: rt/branches/3.999-DANGEROUS/lib/RT/Action/DeleteTicketLinks.pm
==============================================================================
--- (empty file)
+++ rt/branches/3.999-DANGEROUS/lib/RT/Action/DeleteTicketLinks.pm	Wed Oct  8 18:05:45 2008
@@ -0,0 +1,51 @@
+package RT::Action::DeleteTicketLinks;
+use Jifty::Param::Schema;
+use Jifty::Action schema {};
+
+use Text::Naming::Convention qw/renaming/;
+use constant report_detailed_messages => 1;
+
+sub take_action {
+    my $self = shift;
+
+    $self->result->content->{'detailed_messages'} ||= {};
+    my %map = (
+        depends_on => 'depended_on_by',
+        member_of  => 'has_member',
+        refers_to  => 'referred_to_by',
+    );
+
+    if ( $self->argument_value('id') ) {
+        my $ticket =
+          RT::Model::Ticket->new( current_user => Jifty->web->current_user );
+        my $id = $self->argument_value('id');
+        $ticket->load($id);
+
+        for my $field ( keys %map ) {
+            my $type = renaming( $field, { convention => 'UpperCamelCase' } );
+            if ( my $v = $self->argument_value($field) ) {
+                for my $value ( ref $v eq 'ARRAY' ? @$v : $v ) {
+                    my ( $val, $msg ) = $ticket->delete_link(
+                        target => $value,
+                        type   => $type,
+                    );
+                    $self->result->content('detailed_messages')->{$field} .=
+                      $msg;
+                }
+            }
+            if ( my $v = $self->argument_value( $map{$field} ) ) {
+                for my $value ( ref $v eq 'ARRAY' ? @$v : $v ) {
+                    my ( $val, $msg ) = $ticket->delete_link(
+                        base => $value,
+                        type => $type,
+                    );
+                    $self->result->content('detailed_messages')->{ $map{field} } .= "$msg.";
+                }
+            }
+        }
+    }
+
+    return 1;
+}
+
+1;


More information about the Rt-commit mailing list