Extending the RT UI

Hi,

with the move from RT 3.8.7 to 4.0.6, I have decided (or was forced to
by changes in RT html code) to ditch onload scripts that extended RT
Ticket UI with some functionality (getting abuse contacts by clicking on
ip, etc.). I would, however, still like to have that functionality, but
this time in a saner manner as a server side perl script.

I have browsed the RT source and it seems to me, that the final
processing of ticket attachments to display is done in the
Ticket/Element/ShowMessageStanza component. There is a callback called
that passes a reference to an attachment content, so it seems to me that
providing my callback to alter it would be the best way to do it.

My questions are following:

  • Is this the right approach to extend the UI?
  • If not, what would you suggest?
  • If so, how can I create/hook/use the callback?
    According to the documentation of lib/RT/Interface/Web/Request.pm that
    defines the callback function, all callbacks are in
    /Callbacks/<any_dir>/CallbackPage/CallbackName. Should the /Callbacks
    dir be in main RT directory or could it be somewhere in the
    /rt_dir/local? Also what is the true purpose of <any_dir>? The
    documentation uses MyExtension as an example, but the name 'MyExtension’
    is apparently not used as a discriminator or anything…

Thank you,
Martin

I have browsed the RT source and it seems to me, that the final
processing of ticket attachments to display is done in the
Ticket/Element/ShowMessageStanza component. There is a callback called
that passes a reference to an attachment content, so it seems to me that
providing my callback to alter it would be the best way to do it.

My questions are following:

  • Is this the right approach to extend the UI?
  • If not, what would you suggest?
  • If so, how can I create/hook/use the callback?
    According to the documentation of lib/RT/Interface/Web/Request.pm that
    defines the callback function, all callbacks are in
    /Callbacks/<any_dir>/CallbackPage/CallbackName. Should the /Callbacks
    dir be in main RT directory or could it be somewhere in the
    /rt_dir/local? Also what is the true purpose of <any_dir>? The
    documentation uses MyExtension as an example, but the name ‘MyExtension’
    is apparently not used as a discriminator or anything…

You’re on the right track, you may find this useful:
http://requesttracker.wikia.com/wiki/CustomizingWithCallbacks

In general, if you’re not writing an extension, your callbacks go in
/opt/rt4/local/html/Callbacks/YourUniqueCallbackName/path/to/callback

As you’ve noted, YourUniqueCallbackName isn’t tied to anything, it’s
just there because two extensions can use the same callback, but they
need to be in distinct paths for mason to find them.

-kevin

You’re on the right track, you may find this useful:
http://requesttracker.wikia.com/wiki/CustomizingWithCallbacks

In general, if you’re not writing an extension, your callbacks go in
/opt/rt4/local/html/Callbacks/YourUniqueCallbackName/path/to/callback

As you’ve noted, YourUniqueCallbackName isn’t tied to anything, it’s
just there because two extensions can use the same callback, but they
need to be in distinct paths for mason to find them.

-kevin

Hi Kevin,

thanks a lot. This is definitely what I was looking for.

Martin