X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FElements%2FRT__Ticket%2FColumnMap;h=0f4d67919c497cdaa5d32224365ea24359cfb780;hp=e848939e105d8ddc6097f252c6b2150fb335612e;hb=de9d037528895f7151a9aead6724ce2df95f9586;hpb=0fb307c305e4bc2c9c27dc25a3308beae3a4d33c diff --git a/rt/share/html/Elements/RT__Ticket/ColumnMap b/rt/share/html/Elements/RT__Ticket/ColumnMap index e848939e1..0f4d67919 100644 --- a/rt/share/html/Elements/RT__Ticket/ColumnMap +++ b/rt/share/html/Elements/RT__Ticket/ColumnMap @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC +%# +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# CONTRIBUTION SUBMISSION POLICY: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,11 +43,12 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} <%ARGS> $Name => undef $Attr => undef +$GenericMap => {} @@ -57,20 +58,36 @@ my $COLUMN_MAP; my $LinkCallback = sub { my $method = shift; - my $mode = $RT::Ticket::LINKTYPEMAP{$method}{Mode}; - my $type = $RT::Ticket::LINKTYPEMAP{$method}{Type}; + my $mode = $RT::Link::TYPEMAP{$method}{Mode}; + my $type = $RT::Link::TYPEMAP{$method}{Type}; my $other_mode = ($mode eq "Target" ? "Base" : "Target"); my $mode_uri = $mode.'URI'; - my $local_type = 'Local'.$mode; return sub { + my $ObjectType = $_[2]||''; map { \'', - ( $_->$mode_uri->IsLocal ? $_->$local_type : $_->$mode ), + ( $_->$mode_uri->AsString ), \'
', - } @{ $_[0]->Links($other_mode,$type)->ItemsArrayRef } + } # if someone says __RefersTo.{Ticket}__ filter for only local links that are tickets + grep { $ObjectType + ? ( $_->$mode_uri->IsLocal + && ( $_->$mode_uri->Object->RecordType eq $ObjectType )) + : 1 + } + @{ $_[0]->Links($other_mode,$type)->ItemsArrayRef } + } +}; + +my $trustSub = sub { + my $user = shift; + my %key = RT::Crypt->GetKeyInfo( Key => $user->EmailAddress ); + if (!defined $key{'info'}) { + return $m->interp->apply_escapes(' ' . loc("(no pubkey!)"), "h"); + } elsif ($key{'info'}{'TrustLevel'} == 0) { + return $m->interp->apply_escapes(' ' . loc("(untrusted!)"), "h"); } }; @@ -118,7 +135,7 @@ $COLUMN_MAP = { my $SearchURL = RT->Config->Get('WebPath') . '/Search/Results.html?' . $m->comp('/Elements/QueryString', Query => $Query); - return \'', loc('(pending [quant,_1,other ticket])',$count), \''; + return \'', loc('(pending [quant,_1,other ticket,other tickets])',$count), \''; } } else { @@ -169,21 +186,6 @@ $COLUMN_MAP = { title => 'Time Estimated', # loc value => sub { return $_[0]->TimeEstimated } }, - Requestors => { - title => 'Requestors', # loc - attribute => 'Requestor.EmailAddress', - value => sub { return $_[0]->Requestors->MemberEmailAddressesAsString } - }, - Cc => { - title => 'Cc', # loc - attribute => 'Cc.EmailAddress', - value => sub { return $_[0]->Cc->MemberEmailAddressesAsString } - }, - AdminCc => { - title => 'AdminCc', # loc - attribute => 'AdminCc.EmailAddress', - value => sub { return $_[0]->AdminCc->MemberEmailAddressesAsString } - }, StartsRelative => { title => 'Starts', # loc attribute => 'Starts', @@ -205,13 +207,18 @@ $COLUMN_MAP = { value => sub { my $date = $_[0]->DueObj; # Highlight the date if it was due in the past, and it's still active - if ( $date && $date->Unix > 0 && $date->Diff < 0 && $_[0]->QueueObj->IsActiveStatus($_[0]->Status)) { + if ( $date && $date->IsSet && $date->Diff < 0 && $_[0]->QueueObj->IsActiveStatus($_[0]->Status)) { return (\'' , $date->AgeAsString , \''); } else { return $date->AgeAsString; } } }, + WillResolveRelative => { + title => 'Will Resolve', + attribute => 'WillResolve', + value => sub { return $_[0]->WillResolveObj->AgeAsString }, + }, ResolvedRelative => { title => 'Resolved', # loc attribute => 'Resolved', @@ -220,27 +227,32 @@ $COLUMN_MAP = { Starts => { title => 'Starts', # loc attribute => 'Starts', - value => sub { return $_[0]->StartsObj->AsString } + value => sub { return $_[0]->StartsObj } }, Started => { title => 'Started', # loc attribute => 'Started', - value => sub { return $_[0]->StartedObj->AsString } + value => sub { return $_[0]->StartedObj }, }, Told => { title => 'Told', # loc attribute => 'Told', - value => sub { return $_[0]->ToldObj->AsString } + value => sub { return $_[0]->ToldObj }, }, Due => { title => 'Due', # loc attribute => 'Due', - value => sub { return $_[0]->DueObj->AsString } + value => sub { return $_[0]->DueObj }, + }, + WillResolve => { + title => 'Will Resolve', + attribute => 'WillResolve', + value => sub { return $_[0]->WillResolveObj }, }, Resolved => { title => 'Resolved', # loc attribute => 'Resolved', - value => sub { return $_[0]->ResolvedObj->AsString } + value => sub { return $_[0]->ResolvedObj } }, UpdateStatus => { title => 'New messages', # loc @@ -254,21 +266,7 @@ $COLUMN_MAP = { KeyRequestors => { title => 'Requestors', # loc attribute => 'Requestor.EmailAddress', - value => sub { - my $t = shift; - my @requestors = $t->Requestors->MemberEmailAddresses; - for my $email (@requestors) - { - my %key = RT::Crypt::GnuPG::GetKeyInfo($email); - if (!defined $key{'info'}) { - $email .= loc(" (no pubkey!)"); - } - elsif ($key{'info'}{'TrustLevel'} == 0) { - $email .= loc(" (untrusted!)"); - } - } - return join ', ', @requestors; - } + value => sub { return \($m->scomp("/Elements/ShowPrincipal", Object => $_[0]->Requestor, PostUser => $trustSub ) ) } }, KeyOwnerName => { title => 'Owner', # loc @@ -276,7 +274,7 @@ $COLUMN_MAP = { value => sub { my $t = shift; my $name = $t->OwnerObj->Name; - my %key = RT::Crypt::GnuPG::GetKeyInfo($t->OwnerObj->EmailAddress); + my %key = RT::Crypt->GetKeyInfo( Key => $t->OwnerObj->EmailAddress ); if (!defined $key{'info'}) { $name .= ' '. loc("(no pubkey!)"); } @@ -287,11 +285,16 @@ $COLUMN_MAP = { return $name; } }, + KeyOwner => { + title => 'Owner', # loc + attribute => 'Owner', + value => sub { return \($m->scomp("/Elements/ShowPrincipal", Object => $_[0]->OwnerObj, PostUser => $trustSub ) ) } + }, # Everything from LINKTYPEMAP (map { $_ => { value => $LinkCallback->( $_ ) } - } keys %RT::Ticket::LINKTYPEMAP), + } keys %RT::Link::TYPEMAP), '_CLASS' => { value => sub { return $_[1] % 2 ? 'oddline' : 'evenline' } @@ -313,40 +316,20 @@ $COLUMN_MAP = { return \$bookmark; }, }, - - Customer => { - title => 'Customer', #loc - attribute => 'Customer', #title/attribute/name... what does it all mean? - value => sub { - my $Ticket = shift; - my @Customers = @{ $Ticket->Customers->ItemsArrayRef }; - my @CustResolvers = map $_->TargetURI->Resolver, @Customers; - my @return = (); - for ( 0 .. $#CustResolvers ) { - my $c = @CustResolvers[$_]; - push @return, \'', $c->AsString, \''; - push @return, \'
' if scalar(@CustResolvers) > 1 - && $_ != $#CustResolvers; - } - @return; - }, - }, - + + #freeside + $m->comp('/Elements/CustomerFields', 'ColumnMap'), + $m->comp('/Elements/ServiceFields', 'ColumnMap'), }; - -# if no GPG support, then KeyOwnerName and KeyRequestors fall back to the regular -# versions -if (RT->Config->Get('GnuPG')->{'Enable'}) { - require RT::Crypt::GnuPG; -} -else { - $COLUMN_MAP->{KeyOwnerName} = $COLUMN_MAP->{OwnerName}; - $COLUMN_MAP->{KeyRequestors} = $COLUMN_MAP->{Requestors}; -} <%init> -$m->callback( COLUMN_MAP => $COLUMN_MAP, CallbackName => 'Once', CallbackOnce => 1 ); -# backward compatibility -$m->callback( COLUMN_MAP => $COLUMN_MAP, CallbackName => 'ColumnMap' ); +# if no encryption support, then KeyOwnerName and KeyRequestors fall back to the regular +# versions +unless (RT->Config->Get('Crypt')->{'Enable'}) { + $COLUMN_MAP->{KeyOwnerName} = $COLUMN_MAP->{OwnerName}; + $COLUMN_MAP->{KeyRequestors} = $GenericMap->{Requestors}; +} + +$m->callback( GenericMap => $GenericMap, COLUMN_MAP => $COLUMN_MAP, CallbackName => 'Once', CallbackOnce => 1 ); return GetColumnMapEntry( Map => $COLUMN_MAP, Name => $Name, Attribute => $Attr );