Ticket/Display.html is just not controllable

Hello,

I am dealing with Ticket/Display.html. What I found out:

  • there is NO change in the page source the when you change the
    Mason-block
  • I cannot get any information of the callback-functions used.

My task was to limit the size of the layers in which you can see the
metadata and the history of the ticket. It is more user-friendly to
scroll them.

Has anybody an idea how it could work anyway? Or is it just impossible?

Thanks in advance,

Wolfram

Hello,

I am dealing with Ticket/Display.html. What I found out:

  • there is NO change in the page source the when you change the
    Mason-block
  • I cannot get any information of the callback-functions used.

My task was to limit the size of the layers in which you can see the
metadata and the history of the ticket. It is more user-friendly to
scroll them.

Has anybody an idea how it could work anyway? Or is it just impossible?

Without knowing what you did, it is impossible to know what is wrong.
However, it sounds like Christian Loos has already implemented a
similar module

-kevin

Kevin Falcone wrote:> On Wed, May 26, 2010 at 09:46:42AM +0200, Wolfram Huettermann wrote:

Hello,

I am dealing with Ticket/Display.html. What I found out:

  • there is NO change in the page source the when you change the
    Mason-block
  • I cannot get any information of the callback-functions used.

My task was to limit the size of the layers in which you can see the
metadata and the history of the ticket. It is more user-friendly to
scroll them.

Has anybody an idea how it could work anyway? Or is it just impossible?

Without knowing what you did, it is impossible to know what is wrong.
However, it sounds like Christian Loos has already implemented a
similar module

http://github.com/cloos/rt-extension-briefhistory

-kevin


Discover RT’s hidden secrets with RT Essentials from O’Reilly Media.
Buy a copy at http://rtbook.bestpractical.com

Hi Kevin,

I wanted to change the module Ticket/Display.html in the HTML-block. But
its appearance and its source code remained the same, even after I
had cut this block. It seems that the <%init%>-block creates the module
and overlays the HTML-code.

I even haven’t got any information of the callback-functions in that
block. Here is the init-block of Ticket/Display.html.
<%INIT>
$m->callback( TicketObj => $TicketObj, ARGSRef => %ARGS, CallbackName
=> ‘Initial’ );
my (@Actions, $Tickets);

unless ($id || $TicketObj) {
Abort(‘No ticket specified’);
}

if ($ARGS{‘id’} eq ‘new’) {
# {{{ Create a new ticket

my $Queue = new RT::Queue( $session{'CurrentUser'} );
$Queue->Load($ARGS{'Queue'});
unless ( $Queue->id ) {
    Abort('Queue not found');
}

unless ( $Queue->CurrentUserHasRight('CreateTicket') ) {
    Abort('You have no permission to create tickets in that queue.');
}

($TicketObj, @Actions) = CreateTicket(
    Attachments => delete $session{'Attachments'},
    %ARGS,
);
unless ( $TicketObj->CurrentUserHasRight('ShowTicket') ) {
    Abort("No permission to view newly created ticket 

#".$TicketObj->id.".");
}
# }}}
} else {
$TicketObj ||= LoadTicket($ARGS{‘id’});

$m->callback( CallbackName => 'BeforeProcessArguments',
    TicketObj => $TicketObj, Tickets => $Tickets,
    ActionsRef => \@Actions, ARGSRef => \%ARGS );
if ( defined $ARGS{'Action'} ) {
    if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) {
        my $action = $1;
        my ($res, $msg) = $TicketObj->$action();
        push(@Actions, $msg);
    }
}

$m->callback(CallbackName => 'ProcessArguments',
        Ticket => $TicketObj,
        ARGSRef => \%ARGS,
        Actions => \@Actions);

$ARGS{UpdateAttachments} = $session{'Attachments'};
push @Actions,
    ProcessUpdateMessage(
    ARGSRef   => \%ARGS,
    Actions   => \@Actions,
    TicketObj => $TicketObj,
    );
delete $session{'Attachments'};

#Process status updates
push @Actions, ProcessTicketWatchers(ARGSRef => \%ARGS, TicketObj => 

$TicketObj );
push @Actions, ProcessTicketBasics( ARGSRef => %ARGS, TicketObj =>
$TicketObj );
push @Actions, ProcessTicketLinks( ARGSRef => %ARGS, TicketObj =>
$TicketObj );
push @Actions, ProcessTicketDates( ARGSRef => %ARGS, TicketObj =>
$TicketObj );
push @Actions, ProcessObjectCustomFieldUpdates(ARGSRef => %ARGS,
TicketObj => $TicketObj );

# XXX: we shouldn't block actions here if user has no right to see 

the ticket,
# but we should allow him to see actions he has done
unless ($TicketObj->CurrentUserHasRight(‘ShowTicket’)) {
Abort(“No permission to view ticket”);
}
if ( $ARGS{‘MarkAsSeen’} ) {
$TicketObj->SetAttribute(
Name => ‘User-’. $TicketObj->CurrentUser->id .’-SeenUpTo’,
Content => $TicketObj->LastUpdated,
);
push @Actions, loc(‘Marked all messages as seen’);
}
}

$m->callback(
CallbackName => ‘BeforeDisplay’,
TicketObj => $TicketObj,
Tickets => $Tickets,
Actions => @Actions,
ARGSRef => %ARGS,
);

This code does automatic redirection if any updates happen.

if (@Actions) {

# We've done something, so we need to clear the decks to avoid
# resubmission on refresh.
# But we need to store Actions somewhere too, so we don't lose them.
my $key = Digest::MD5::md5_hex( rand(1024) );
push @{ $session{"Actions"}->{$key} ||= [] }, @Actions;
$session{'i'}++;
RT::Interface::Web::Redirect( RT->Config->Get('WebURL') . 

“Ticket/Display.html?id=” . $TicketObj->id . “&results=” . $key );

}

my $attachments = $m->comp(‘Elements/FindAttachments’, Ticket =>
$TicketObj, Tickets => $Tickets);
my $attachment_content = $m->comp(‘Elements/LoadTextAttachments’, Ticket
=> $TicketObj);

my %link_rel;
if (defined $session{‘tickets’} and ($ARGS{‘Query’} or
$session{‘CurrentSearchHash’}->{‘Query’})) {
my $item_map = $session{‘tickets’}->ItemMap;
$link_rel{first} = “Ticket/Display.html?id=” .
$item_map->{first} if $item_map->{$TicketObj->Id}{prev};
$link_rel{prev} = “Ticket/Display.html?id=” .
$item_map->{$TicketObj->Id}{prev} if $item_map->{$TicketObj->Id}{prev};
$link_rel{next} = “Ticket/Display.html?id=” .
$item_map->{$TicketObj->Id}{next} if $item_map->{$TicketObj->Id}{next};
$link_rel{last} = “Ticket/Display.html?id=” .
$item_map->{last} if $item_map->{$TicketObj->Id}{next};
}
</%INIT>

Thank you for your advice.

Wolfram

Kevin Falcone wrote:

I am dealing with Ticket/Display.html. What I found out:

  • there is NO change in the page source the when you change the
    Mason-block
  • I cannot get any information of the callback-functions used.

My task was to limit the size of the layers in which you can see the
metadata and the history of the ticket. It is more user-friendly to
scroll them.

Has anybody an idea how it could work anyway? Or is it just impossible?

Without knowing what you did, it is impossible to know what is wrong.
However, it sounds like Christian Loos has already implemented a
similar module

http://github.com/cloos/rt-extension-briefhistory

I wanted to change the module Ticket/Display.html in the HTML-block.
But its appearance and its source code remained the same, even
after I had cut this block. It seems that the <%init%>-block
creates the module and overlays the HTML-code.

I even haven’t got any information of the callback-functions in that
block. Here is the init-block of Ticket/Display.html.

You’ve not actually said what callbacks you created or how you tried
to overlay Display.html by copying it to local/ or explained what you
want to accomplish, so I’m afraid I can’t really guess at what you’re
trying to do. Have you read the documentation on the wiki about
customizing RT?

-kevin

Kevin Falcone wrote:> On Thu, May 27, 2010 at 09:12:55AM +0200, Wolfram Huettermann wrote:

Kevin Falcone wrote:

On Wed, May 26, 2010 at 09:46:42AM +0200, Wolfram Huettermann wrote:

I am dealing with Ticket/Display.html. What I found out:

  • there is NO change in the page source the when you change the
    Mason-block
  • I cannot get any information of the callback-functions used.

My task was to limit the size of the layers in which you can see the
metadata and the history of the ticket. It is more user-friendly to
scroll them.

Has anybody an idea how it could work anyway? Or is it just impossible?

Without knowing what you did, it is impossible to know what is wrong.
However, it sounds like Christian Loos has already implemented a
similar module

http://github.com/cloos/rt-extension-briefhistory

I wanted to change the module Ticket/Display.html in the HTML-block.
But its appearance and its source code remained the same, even
after I had cut this block. It seems that the <%init%>-block
creates the module and overlays the HTML-code.

I even haven’t got any information of the callback-functions in that
block. Here is the init-block of Ticket/Display.html.

You’ve not actually said what callbacks you created or how you tried
to overlay Display.html by copying it to local/ or explained what you
want to accomplish, so I’m afraid I can’t really guess at what you’re
trying to do. Have you read the documentation on the wiki about
customizing RT?

-kevin


Discover RT’s hidden secrets with RT Essentials from O’Reilly Media.
Buy a copy at http://rtbook.bestpractical.com
I know the bug,

plugins are just overlaying the source code. That is very bad :frowning:

Greetings and thanks for your advice,

Wolfram