<span id="toggle-ticket-spam-<% $id %>">
% my $url = $RT::WebPath ."/Helpers/Toggle/TicketSpam?id=". $id;
<a align="right" href="<% $url %>" onclick="ahah('<% $url |n %>', 'toggle-ticket-spam-<% $id |n %>'); return false;" >
% if ( $reported ) {
<img src="<% $RT::WebPath %>/NoAuth/images/spam.gif" alt="<% loc('Not Spam') %>" style="border-style: none" />
% } else {
<img src="<% $RT::WebPath %>/NoAuth/images/empty_spam.gif" alt="<% loc('Report Spam') %>" style="border-style: none" />
% }
</a>
</span>
<%ARGS>
$id
$Toggle => 0
</%ARGS>
<%INIT>
my $uid = $session{'CurrentUser'}->id;

my $ticket = RT::Ticket->new( $session{'CurrentUser'} );
$ticket->Load( $id );
return unless $id = $ticket->id;

my $reports = $ticket->FirstAttribute('SpamReports');
$reports = $reports->Content if $reports;
$reports ||= [];

my $reported = grep $_ == $uid, @$reports;

if ( $Toggle ) {
    if ( $reported ) {
        @$reports = grep $_ != $uid, @$reports;
    } else {
        push @$reports, $uid;
    }
    if ( @$reports ) {
        if ( $ticket->CurrentUserHasRight('DeleteTicket') ) {
            my ($status, $msg) = $ticket->SetStatus('deleted');
            $RT::Logger->error("Couldn't delete ticket: $msg")
                unless $status;
        }
        my ($status, $msg) = $ticket->SetAttribute(
            Name    => 'SpamReports',
            Content => $reports,
        );
        $RT::Logger->error("Couldn't set attribute: $msg")
            unless $status;
    } else {
        if ( $ticket->Status eq 'deleted'
            && $ticket->CurrentUserHasRight('ModifyTicket')
        ) {
            my ($status, $msg) = $ticket->SetStatus('open');
            $RT::Logger->error("Couldn't delete ticket: $msg")
                unless $status;
        }
        my ($status, $msg) = $ticket->DeleteAttribute(
            'SpamReports'
        );
        $RT::Logger->error("Couldn't delete attribute: $msg")
            unless $status;
    }
    $reported = !$reported;
}
</%INIT>
