From 953142d4f0056aab173340f7118cb471a34c54e4 Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Mon, 4 Aug 2014 22:03:38 +0200 Subject: [PATCH] MT#8279 Deflate numbers in call list. --- lib/NGCP/Panel/Controller/Subscriber.pm | 40 +++++++++++++++---- lib/NGCP/Panel/Utils/Datatables.pm | 23 ++--------- .../Widget/Plugin/SubscriberCallsOverview.pm | 15 +++++-- .../widgets/subscriber_calls_overview.tt | 4 +- 4 files changed, 51 insertions(+), 31 deletions(-) diff --git a/lib/NGCP/Panel/Controller/Subscriber.pm b/lib/NGCP/Panel/Controller/Subscriber.pm index c6706ece6f..2e742ee03d 100644 --- a/lib/NGCP/Panel/Controller/Subscriber.pm +++ b/lib/NGCP/Panel/Controller/Subscriber.pm @@ -2861,10 +2861,21 @@ sub ajax_calls :Chained('master') :PathPart('calls/ajax') :Args(0) { $c, $rs, $c->stash->{calls_dt_columns}, sub { my ($result) = @_; - my %data = (source_user => uri_unescape($result->source_user), - destination_user => uri_unescape($result->destination_user)); - return %data - }, + my %data = (); + if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") { + $data{duration} = POSIX::ceil($result->duration); + $data{source_user} = uri_unescape(NGCP::Panel::Utils::Subscriber::apply_rewrite( + c => $c, subscriber => $c->stash->{subscriber}, number => $result->source_user, direction => 'caller_out' + )); + $data{destination_user} = uri_unescape(NGCP::Panel::Utils::Subscriber::apply_rewrite( + c => $c, subscriber => $c->stash->{subscriber}, number => $result->destination_user, direction => 'caller_out' + )); + } else { + $data{source_user} = uri_unescape($result->source_user); + $data{destination_user} = uri_unescape($result->destination_user); + } + return %data; + } ); $c->detach( $c->view("JSON") ); @@ -3223,9 +3234,24 @@ sub ajax_speeddial :Chained('base') :PathPart('preferences/speeddial/ajax') :Arg my $prov_subscriber = $c->stash->{subscriber}->provisioning_voip_subscriber; my $sd_rs = $prov_subscriber->voip_speed_dials; - NGCP::Panel::Utils::Datatables::process($c, $sd_rs, $c->stash->{sd_dt_columns}, undef, - { - denormalize_uri => ($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") ? "destination" : undef, + NGCP::Panel::Utils::Datatables::process($c, $sd_rs, $c->stash->{sd_dt_columns}, + sub { + my ($result) = @_; + my %data = (); + my $sub = $c->stash->{subscriber}; + if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") { + my ($user, $domain) = split(/\@/, $result->destination); + $user =~ s/^sips?://; + $user = uri_unescape(NGCP::Panel::Utils::Subscriber::apply_rewrite( + c => $c, subscriber => $sub, number => $user, direction => 'caller_out' + )); + if($domain eq $sub->domain->domain) { + $data{destination} = $user; + } else { + $data{destination} = $user . '@' . $domain; + } + } + return %data; } ); diff --git a/lib/NGCP/Panel/Utils/Datatables.pm b/lib/NGCP/Panel/Utils/Datatables.pm index 0a05d049ae..af2ffbb373 100644 --- a/lib/NGCP/Panel/Utils/Datatables.pm +++ b/lib/NGCP/Panel/Utils/Datatables.pm @@ -8,8 +8,7 @@ use Scalar::Util qw/blessed/; use DateTime::Format::Strptime; sub process { - my ($c, $rs, $cols, $row_func, $opts) = @_; - $opts->{c} = $c; + my ($c, $rs, $cols, $row_func) = @_; my $use_rs_cb = ('CODE' eq (ref $rs)); my $aaData = []; @@ -94,7 +93,7 @@ sub process { my $topId = $c->request->params->{iIdOnTop}; if(defined $topId) { if(defined(my $row = $rs->find($topId))) { - push @{ $aaData }, _prune_row($opts, $cols, $row->get_inflated_columns); + push @{ $aaData }, _prune_row($cols, $row->get_inflated_columns); if (defined $row_func) { $aaData->[-1]->put($row_func->($row)); } @@ -148,7 +147,7 @@ sub process { } for my $row ($rs->all) { - push @{ $aaData }, _prune_row($opts, $cols, $row->get_inflated_columns); + push @{ $aaData }, _prune_row($cols, $row->get_inflated_columns); if (defined $row_func) { $aaData->[-1]->put($row_func->($row)); } @@ -175,26 +174,12 @@ sub set_columns { } sub _prune_row { - my ($opts, $columns, %row) = @_; - my $c = $opts->{c}; + my ($columns, %row) = @_; while (my ($k,$v) = each %row) { unless (first { $_->{accessor} eq $k && $_->{title} } @{ $columns }) { delete $row{$k}; next; } - if(defined $opts->{denormalize_uri} && $k eq $opts->{denormalize_uri} && defined $c->stash->{subscriber}) { - my $sub = $c->stash->{subscriber}; - $row{$k} =~ s/^sips?://; - my ($user, $domain) = split(/\@/, $row{$k}); - $user = NGCP::Panel::Utils::Subscriber::apply_rewrite( - c => $c, subscriber => $sub, number => $user, direction => 'caller_out' - ); - if($domain eq $sub->domain->domain) { - $row{$k} = $user; - } else { - $row{$k} = $user . '@' . $domain; - } - } if(blessed($v) && $v->isa('DateTime')) { $row{$k} = $v->ymd('-') . ' ' . $v->hms(':'); $row{$k} .= '.'.$v->millisecond if $v->millisecond > 0.0; diff --git a/lib/NGCP/Panel/Widget/Plugin/SubscriberCallsOverview.pm b/lib/NGCP/Panel/Widget/Plugin/SubscriberCallsOverview.pm index 645a6749a7..cf9a0dd4a2 100644 --- a/lib/NGCP/Panel/Widget/Plugin/SubscriberCallsOverview.pm +++ b/lib/NGCP/Panel/Widget/Plugin/SubscriberCallsOverview.pm @@ -32,9 +32,18 @@ around handle => sub { order_by => { -desc => 'me.start_time' }, })->slice(0, 4); - $c->stash( - calls => $calls_rs, - ); + my $sub = $c->user->voip_subscriber; + my $calls = [ map { + my $call = { $_->get_inflated_columns }; + $call->{destination_user_in} = NGCP::Panel::Utils::Subscriber::apply_rewrite( + c => $c, subscriber => $sub, number => $call->{destination_user_in}, direction => 'caller_out' + ); + $call->{source_cli} = NGCP::Panel::Utils::Subscriber::apply_rewrite( + c => $c, subscriber => $sub, number => $call->{source_cli}, direction => 'caller_out' + ); + $call; + } $calls_rs->all ]; + $c->stash(calls => $calls); return; }; diff --git a/share/templates/widgets/subscriber_calls_overview.tt b/share/templates/widgets/subscriber_calls_overview.tt index 73a38d16bf..c4bd26acc1 100644 --- a/share/templates/widgets/subscriber_calls_overview.tt +++ b/share/templates/widgets/subscriber_calls_overview.tt @@ -10,10 +10,10 @@