[rt-users] adding Ticket links in search result
Raphaël MOUNEYRES
raphael.mouneyres at sagemcom.com
Thu Aug 11 07:42:11 EDT 2011
Hello,
thank you very much for all the code hint, it makes it simpler and easy to
follow.
I'm not very aware of HTML security problems. so far, what i understand
from your explanation is to escape the html code with the \ symbol before
the quoted html text.
the new code is now here, i also added a link at the bottom to create a
new dependson ticket wit a specific queue&owner.
It's one more open road to great RT customisation !
LinksList =>
{
title => 'Liens', # loc
attribute => 'Status',
value => sub {
my $Ticket = shift;
my @result;
my $base_url = RT->Config->Get('WebPath') .
'/Ticket/Display.html?id=';
#tickets with DependsOn relation
my $DepOn = $Ticket->DependsOn;
while( my $copain = $DepOn->Next ) {
my $url = $base_url . $copain->TargetObj->id;
if ($copain->TargetObj->Status =~ /^(?:new|open|stalled)$/
) {
push (@result, (\"<FONT COLOR=\"red\"><LI><a
href=\"$url\">", $copain->TargetObj->Subject, \"</a></LI></FONT>"));}
elsif ($copain->TargetObj->Status =~ /^resolved$/ ) {
push (@result, (\"<SPAN
CLASS=\"ticket-inactive\"><LI><a
href=\"$url\">", $copain->TargetObj->Subject, \"</a></LI></SPAN>"));}
}
#tickets with Child relation
my $members = $Ticket->Members();
while( my $copain = $members->Next ) {
my $url = $base_url . $copain->BaseObj->id;
if ($copain->BaseObj->Status =~ /^(?:new|open|stalled)$/ )
{
push (@result, (\"<FONT COLOR=\"blue\"><LI><a
href=\"$url\">", $copain->BaseObj->Subject, \"</a></LI></FONT>"));}
elsif ($copain->BaseObj->Status =~ /^resolved$/ ) {
push (@result, (\"<SPAN
CLASS=\"ticket-inactive\"><LI><a
href=\"$url\">", $copain->BaseObj->Subject, \"</a></LI></SPAN>"));}
}
if ( @result ) { # found links
@result = (\'<ul>', @result, \'</ul>');
}
$base_url = RT->Config->Get('WebPath') .
'/Ticket/Create.html?CloneTicket=';
push(@result, ( \"<a href=\"", $base_url, $Ticket->id,
\"&DependsOn-new=", $Ticket->id,\"&Queue=1&Owner=6\">", "CREER NOUVELLE
TACHE", \"</a>" ));
return @result;
}
},
Raphaël MOUNEYRES
Ruslan Zakirov <ruz at bestpractical.com>
Envoyé par : ruslan.zakirov at gmail.com
10/08/2011 15:13
A
Raphaël MOUNEYRES <raphael.mouneyres at sagemcom.com>
cc
Objet
Re: [rt-users] adding Ticket links in search result
2011/8/10 Raphaël MOUNEYRES <raphael.mouneyres at sagemcom.com>
Hi,
Ruz : I can see something related to a $LinkCallback, but the perl code is
still too tricky for me. Maybe in a few month ;)
Comments on code below.
So, I managed to have a new ColumnMap definition, working, with a great
usefull color customization (see attached image).
I had it working adding manually the '__LinksList__' in the Advanced tab
of search page, now i have to figure out how to add it to the default
choice list...
a good training !
Look at share/html/Search/Elements/BuildFormatString
Here is the revelant code added to
/opt/rt3/share/html/Elements/RT__Ticket/ColumnMap :
See comments inlined:
LinksList =>
{
title => 'Liens', # loc
attribute => 'Status',
value => sub {
my $Ticket = shift;
my $result = "<UL>";
my $SearchURL;
my $statuscolor;
#tickets avec relation DependsOn
my $DepOn = $Ticket->DependsOn;
if ($DepOn) {
$DepOn is always true, it just can be empty.
while( my $copain = $DepOn->Next ) {
$SearchURL = RT->Config->Get('WebPath') .
'/Ticket/Display.html?id=' . $copain->TargetObj->id;
put repeated part out of the loop, for example:
my $base_url = RT->Config->Get('WebPath') . '/Ticket/Display.html?id=';
inside loop:
my $url = $base_url . $copain->TargetObj->id;
$result .= <UL>;
above line is wrong :) It actually a valid perl code that is equivalent to
`$result .= undef` what is better in your case. You should move `$result
.= '<ul>';` outside of while loop.
if($copain->TargetObj->Status =~
/^(?:new|open|stalled)$/ ) {
$result .= "<FONT
COLOR=\"red\"><LI><a href=\"$SearchURL\">" . $copain->TargetObj->Subject .
"</a></LI></FONT>";}
As you return result as reference to one string scalar then you have to
escape HTML your self. With this code you added a security hole into your
RT. As solution, use array @results. Push parts into this array. If part
is valid and trusted HTML then push a reference, otherwise push scalar. At
the end return whole array. For example:
push @result, \"<FONT COLOR=\"red\"><LI><a
href=\"$SearchURL\">", $copain->TargetObj->Subject, \"html here", "text
here";
...
return @result;
else {
$result .= "<SPAN
CLASS=\"ticket-inactive\"><LI><a href=\"$SearchURL\">" .
$copain->TargetObj->Subject . "</a></LI></SPAN>";}
}
}
else {
$result .= 'Pas de tickets dependants';
This wouldn't work. Instead you can do the following:
...
my @result;
while ( ... ) {
...
}
if ( @result ) { # found links
@result = (\'<ul>', @result, '</ul>');
} else {
@result = ('No links');
}
return @result;
}
$result .= "</UL>";
return \$result;
}
},
Result shown as :
Raphaël MOUNEYRES
Ingénieur Moyens Tests
Avenue Paul Gellos 64990 Mouguerre
Phone: +33 (0)5 59 58 41 51
Ruslan Zakirov <ruz at bestpractical.com>
Envoyé par : ruslan.zakirov at gmail.com
10/08/2011 13:06
A
Raphaël MOUNEYRES <raphael.mouneyres at sagemcom.com>
cc
RT Users Mailing List <rt-users at lists.bestpractical.com>
Objet
Re: [rt-users] adding Ticket links in search result
10.08.2011 12:58 полÑзоваÑÐµÐ»Ñ "Raphaël MOUNEYRES" <
raphael.mouneyres at sagemcom.com> напиÑал:
>
>
> Hello,
>
> thanks for the hint, but it doesn't work as expected.
> In fact, in the advanced page, the fileds used are :
> '__DependsOn__',
> '__Children__'
> each of them is, by default, creating by itself a List of clickable
ticket IDs, and i'd like to add subject and formatting.
>
> Also, in /share/html/Elements/RT__Ticket/ColumnMap, i can see that the
'ExtendedStatus' is doing some query for dependedon tickets, so i can try
to do something similar, but i can't find the same things for 'Children'
or 'DependsOn'
>
> If someone can point me at the sourcecode trigered by the above fields,
i could change it to suit my needs
Code for links in the same file. It's just generated with a loop.
> thank you,
>
> Raphaël MOUNEYRES
>
>
>
>
> Gerard FENELON <gerard at eve-team.com>
> Envoyé par : rt-users-bounces at lists.bestpractical.com
>
> 09/08/2011 12:17
> A
> RT Users Mailing List <rt-users at lists.bestpractical.com>
> cc
> Objet
> Re: [rt-users] adding Ticket links in search result
>
>
>
>
>
> Hi Raphael
>
> keep to the list.
> In particular because I don't have the answer to this further question.
>
> I have never tried anything like what you are trying.
> It is possible that for this you might have to use a ColumnMap
>
> However concerning "display the Ticket subject next to his number"
> I believe that '__id__ __Subject__ ' should work.
>
> Gerard
>
>
> On 2011-08-09 11:28, Raphaël MOUNEYRES wrote:
>
> Hi Gerard,
>
> i've tried some but i'm not sure to be able to do conditional formatting
such as :
> % my $inactive =
$member->QueueObj->IsInactiveStatus($member->Status);
> <span class="<% $inactive ? 'ticket-inactive' : '' %>">
> <%$member->Id%>: (<%$member->OwnerObj->Name%>) <%$member->Subject%>
[<% loc($member->Status) %>]
> </span>
>
> for example, if i do
> ' <b><a
href="__WebPath__/Ticket/Display.html?id=__id__">__id__</a></b>/TITLE:#',
> '<span class="ticket-inactive">__Children__</span>'
> for sure all children tickets are displayed as ticket-inactive, but not
depending on their actual status...
>
> Also i'd like to display the Ticket subject next to his number....
> Well i'm doing more experiments now, but any other hints are welcome.
>
> Raphaël MOUNEYRES
>
>
> Gerard FENELON <gerard at eve-team.com>
> Envoyé par : rt-users-bounces at lists.bestpractical.com
>
> 09/08/2011 11:08
>
> A
> rt-users at lists.bestpractical.com
> cc
> Objet
> Re: [rt-users] adding Ticket links in search result
>
>
>
>
>
> Hello
>
> you can do a lot of things in the advanced tab of the search interface
> such as
>
> '<b><a href="/Ticket/Modify.html?id=__id__">__id__</a></b>/TITLE:#',
> '<span
class="yoyodine-status-__StatusNoLoc__">__ExtendedStatus__</span>',
> '<span
class="yoyodine-severity-__CustomField.{Severity}__">__CustomField.{Severity}__</span>',
> '<span class="yoyodine-priority-__CustomField.{Customer
priority}__">__CustomField.{Customer priority}__</span>',
>
> I would say, use this when you want to tweek the display.
> Use ColumnMap when you have to calculate values
>
> Gerard
>
>
> On 2011-08-09 10:48, Raphaël MOUNEYRES wrote:
> Hello,
>
> i'm trying to build a search wich would have a colum displaying the
tickets links exactly the same way as is TicketDisplay page (with 3.8
install)
> I found two things :
> - this code related to the above page is in
/opt/rt3/share/html/Elements/ShowLinks
> - in ticket search engine, i can display children/DependsOn links, but
the result will only show ticket ids without formatting.
>
> Should i create a new ColumnMap (as recently discussed) pasting some
code from the ShowLinks File, or any simpler way to modify the existing
colums ?
> Could someone help me choose the best way to go ?
>
> After a few month dealing with RT, i've been gaining some perl
programming experience, thanks guys !
>
> Raphaël MOUNEYRES
>
> --------
> 2011 Training: http://bestpractical.com/services/training.html
>
> #
> " Ce courriel et les documents qui lui sont joints peuvent contenir des
> informations confidentielles ou ayant un caractère privé. S'ils ne vous
sont
> pas destinés, nous vous signalons qu'il est strictement interdit de les
> divulguer, de les reproduire ou d'en utiliser de quelque manière que ce
> soit le contenu. Si ce message vous a été transmis par erreur, merci
d'en
> informer l'expéditeur et de supprimer immédiatement de votre système
> informatique ce courriel ainsi que tous les documents qui y sont
attachés."
>
>
> ******
>
> " This e-mail and any attached documents may contain confidential or
> proprietary information. If you are not the intended recipient, you are
> notified that any dissemination, copying of this e-mail and any
attachments
> thereto or use of their contents by any means whatsoever is strictly
> prohibited. If you have received this e-mail in error, please advise the
> sender immediately and delete this e-mail and all attached documents
> from your computer system."
> #
>
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Chicago, IL, USA â September 26 & 27, 2011
> * San Francisco, CA, USA â October 18 & 19, 2011
> * Washington DC, USA â October 31 & November 1, 2011
> * Melbourne VIC, Australia â November 28 & 29, 2011
> * Barcelona, Spain â November 28 & 29, 2011
#
" Ce courriel et les documents qui lui sont joints peuvent contenir des
informations confidentielles ou ayant un caractère privé. S'ils ne vous
sont
pas destinés, nous vous signalons qu'il est strictement interdit de les
divulguer, de les reproduire ou d'en utiliser de quelque manière que ce
soit le contenu. Si ce message vous a été transmis par erreur, merci d'en
informer l'expéditeur et de supprimer immédiatement de votre système
informatique ce courriel ainsi que tous les documents qui y sont
attachés."
******
" This e-mail and any attached documents may contain confidential or
proprietary information. If you are not the intended recipient, you are
notified that any dissemination, copying of this e-mail and any
attachments
thereto or use of their contents by any means whatsoever is strictly
prohibited. If you have received this e-mail in error, please advise the
sender immediately and delete this e-mail and all attached documents
from your computer system."
#
--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Chicago, IL, USA â September 26 & 27, 2011
* San Francisco, CA, USA â October 18 & 19, 2011
* Washington DC, USA â October 31 & November 1, 2011
* Melbourne VIC, Australia â November 28 & 29, 2011
* Barcelona, Spain â November 28 & 29, 2011
--
Best regards, Ruslan.
#
" Ce courriel et les documents qui lui sont joints peuvent contenir des
informations confidentielles ou ayant un caractère privé. S'ils ne vous sont
pas destinés, nous vous signalons qu'il est strictement interdit de les
divulguer, de les reproduire ou d'en utiliser de quelque manière que ce
soit le contenu. Si ce message vous a été transmis par erreur, merci d'en
informer l'expéditeur et de supprimer immédiatement de votre système
informatique ce courriel ainsi que tous les documents qui y sont attachés."
******
" This e-mail and any attached documents may contain confidential or
proprietary information. If you are not the intended recipient, you are
notified that any dissemination, copying of this e-mail and any attachments
thereto or use of their contents by any means whatsoever is strictly
prohibited. If you have received this e-mail in error, please advise the
sender immediately and delete this e-mail and all attached documents
from your computer system."
#
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20110811/43eb85f5/attachment.htm>
More information about the rt-users
mailing list