[rt-users] solved - RTx::EmailCompletion adding name/other fields to pop down display
Giuseppe Sollazzo
gsollazz at sgul.ac.uk
Thu Mar 3 06:26:37 EST 2011
Hi all,
I'm sure there's a more elegant way to do this, but I'm not a Perl
programmer so what I managed to do is the following, in case anyone is
interested:
1) In ./etc/RT_SiteConfig.pm set up EmailCompletionLdapAttrShow as a
list rather than a single value
Set($EmailCompletionLdapAttrShow, [qw/cn mail/]);
2) In
./local/plugins/RTx-EmailCompletion/html/SelfService/Ajax/EmailCompletion comment
out the line that picks only the first value from
$EmailCompletionLdapAttrShow so that the whole array is passed
# $RT::EmailCompletionLdapAttrShow =
$RT::EmailCompletionLdapAttrShow->[0] if
ref($RT::EmailCompletionLdapAttrShow) eq "ARRAY";
3) In
./local/plugins/RTx-EmailCompletion/lib/RTx/EmailCompletion/Ldap.pm
modify the call that gets the attribute value from ldap in order to
obtain multiple values. That is, from:
my @emails = map { $_->get_attribute( $RT::EmailCompletionLdapAttrShow )
} $mesg->entries;
to something like (pardon my horrible Perl :P)
my @atts = map { "$_" } @{ $RT::EmailCompletionLdapAttrShow };
my @emails = ();
foreach $entry ($mesg->entries) {
$outstring='';
foreach $attribute (@atts) {
$outstring= $outstring . " - " .
$entry->get_attribute($attribute)->[0]; #or pass it to a formatting function
}
push(@emails, $outstring);
}
Any comment or questions are welcome!
Best regards,
Giuseppe
On 02/03/11 17:00, Giuseppe Sollazzo wrote:
> Hi Kevin, hi all.
>
> After a couple of tries I've realised that despite maybe not being the
> most elegant way of doing it, this can be done by modifying
> /opt/rt3/local/plugins/RTx-EmailCompletion/lib/RTx/EmailCompletion/Ldap.pm.
> However I seem to have a "strange" issue.
>
>
> One step at a time. Where it does
> my @emails = map { $_->get_attribute(
> $RT::EmailCompletionLdapAttrShow ) } $mesg->entries;
> which of course gives for granted $RT::EmailCompletionLdapAttrShow to
> be constituted of one element only,
>
> replace with something like
> my @emails = ();
> foreach $entry ($mesg->entries) {
> my $outstring = '';
> foreach $attribute ($RT::EmailCompletionLdapAttrShow) {
> $outstring=$outstring . $entry->get_attribute($attribute);
> }
> @emails{$_} = $outstring;
> }
> which basically creates the same output, but after concatenating the
> result of all the attributes. So, for example, rather than having a
> map constituted by only e-mail addresses, it will be e-mail addresses
> + name.
>
> Now, this should work but I have a preliminary problem.
>
> You will remember that the search and show variables are configured in
> RT_SiteConfig.pm. In my case:
> Set($EmailCompletionLdapAttrSearch, [qw/mail cn/]);
> Set($EmailCompletionLdapAttrShow, [qw/mail cn/]);
>
> I've verified that albeit the search being executed over "mail" and
> "cn", the "show" is ignored. As a debug, I've added file logging to
> /opt/rt3/local/plugins/RTx-EmailCompletion/lib/RTx/EmailCompletion.pm.
> To my understanding, this is the primary "hook" in RT for
> EmailCompletion, and it's the one that calls Ldap.pm->search_ldap.
>
> Guess what? If I put a debug print (Dumper) in EmailCompletion.pm to
> show the content of the two variables, I get:
> This is the dump of EmailCompletionLdapAttrShow = 'cn';
>
> This is the dump of EmailCompletionLdapAttrSearch = [
> 'mail',
> 'cn'
> ];
>
> Do you know why does it happen? I'm assuming I've overlooked
> something... but can't tell what.
>
> Thanks,
> Giuseppe
>
> PS: Of course, I've tried different variable names and numbers, and
> it's always the very first in EmailCompletionLdapAttrShow that gets
> picked, which rules out a default value (that would be 'mail', anyway).
>
> On 25/02/11 16:45, Kevin Falcone wrote:
>> On Fri, Feb 25, 2011 at 04:37:32PM +0000, Giuseppe Sollazzo wrote:
>>> On 25/02/11 15:28, Kevin Falcone wrote:
>>>> It shouldn't actually require any JS hacking (or didn't when I last
>>>> overrode this extension to do it).
>>>>
>>> Hi Kevin,
>>> thanks - I'll give it a look.
>>>
>>>> You have to hack search in the .pm to return extra data about the user
>>>> and the EmailCompletion mason template to print it out.
>>>>
>>>> Be aware that RT considers some data to be sensitive (such as phone
>>>> numbers) so it'll refuse to show it unless you mark it as accessible.
>>> Uhm... how do you mean "mark"?
>> Check the methods in User/User_Overlay named *Accessible to get an
>> idea, there should be docs there and in DBIx::SearchBuilder about what
>> is going on. You'll need a LocalAccessible to declare some fields
>> 'non admin'.
>>
>>>> In 4.0, this becomes 'write a custom ShowUser option' which isn't
>>>> as flexible as I'd like it to be, but is a step forward.
>>> I'll check it out - however we'll stay for 3.8 for a while I guess,
>>> but I'll start getting documentation about how to migrate.
>
>
> --
> ____________________________________
>
> Giuseppe Sollazzo
> Senior Systems Analyst
> Computing Services
> Information Services
> St. George's, University Of London
> Cranmer Terrace
> London SW17 0RE
>
> Email:gsollazz at sgul.ac.uk
> Direct Dial: +44 20 8725 5160
> Fax: +44 20 8725 3583
>
--
____________________________________
Giuseppe Sollazzo
Senior Systems Analyst
Computing Services
Information Services
St. George's, University Of London
Cranmer Terrace
London SW17 0RE
Email: gsollazz at sgul.ac.uk
Direct Dial: +44 20 8725 5160
Fax: +44 20 8725 3583
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20110303/d97aebe6/attachment.htm>
More information about the rt-users
mailing list