Adding Button to Ticket Actions

Dear RT Devel Group,

I am trying to create an additional button to quickly and easily mark something
as Spam in our current infrastructure (a Custom Field). For look and ease of
acccess, I wanted to put this in the header actions along with the following:

* Steal ··· Comment · Reply · Resolve

I would preferrably like to do this as a Callback if possible, but I can’t
figure out where I would add this, or even how the Callbacks work in terms of
which directory tree controls what (local/Callbacks vs local/html/Callbacks vs
local/share/html/Callbacks vs share/html/Callbacks ). Any help with
this would be greatly appreciated.

Matthew Ekstrand-Abueg
Systems Administrator
Network Infrastructure, RSSP-IT
UC Berkeley

Matthew,

We do just what you want.

In file /opt/rt3/Callbacks/myCompany/Ticket/Elements/Tabs/Default :

<%init>
if ($Ticket) {
my $groups = $session{CurrentUser}->UserObj->OwnGroups();
$groups->Limit(FIELD => ‘Name’, VALUE => ‘CanMarkSpam’ );

if ( $groups->Count
    ||  $session{CurrentUser}->HasRight( Right => 'SuperUser',

Object => $RT::System )) {
$actions->{‘zz’} = { title => loc(‘Spam’),
path =>
‘Ticket/Display.html?Action=Spam&id=’.$Ticket->id };
}
}
</%init>
<%args>
$Ticket =>undef
$tabs => undef
$actions => undef
</%args>

And then we customize Display.html:

if (defined $ARGS{'Action'}) {
    if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold|Delete|Spam)$/) {
        my $action = $1;
        my ($res, $msg)=$TicketObj->$action();
        push(@Actions, $msg);
    }
}

And then in Ticket_Local.pm:

sub Spam {

my $self = shift;

$self->Reject();
my $requestors = $self->Requestors->UserMembersObj->ItemsArrayRef();
my ($rv, $msg);
for ( @$requestors ) {
    $_->CurrentUser( $RT::SystemUser );
    ($rv, $msg) = $_->PrincipalObj->SetDisabled(1);
}
$RT::Logger->debug( $self->CurrentUser->UserObj->Name . ' marking

ticket ’ . $self->id . ’ as spam!’ );
return (1, ‘spammer disabled!’) if $rv;
}

-ToddOn 12/3/07, Matthew Ekstrand-Abueg mattea@rescomp.berkeley.edu wrote:

Dear RT Devel Group,

I am trying to create an additional button to quickly and easily mark something
as Spam in our current infrastructure (a Custom Field). For look and ease of
acccess, I wanted to put this in the header actions along with the following:

* Steal ··· Comment · Reply · Resolve

I would preferrably like to do this as a Callback if possible, but I can’t
figure out where I would add this, or even how the Callbacks work in terms of
which directory tree controls what (local/Callbacks vs local/html/Callbacks vs
local/share/html/Callbacks vs share/html/Callbacks ). Any help with
this would be greatly appreciated.


Matthew Ekstrand-Abueg
Systems Administrator
Network Infrastructure, RSSP-IT
UC Berkeley


List info: The rt-devel Archives

SAVE THOUSANDS OF DOLLARS ON RT SUPPORT:

If you sign up for a new RT support contract before December 31, we’ll take
up to 20 percent off the price. This sale won’t last long, so get in touch today.
Email us at sales@bestpractical.com or call us at +1 617 812 0745.