diff --git a/lib/NGCP/Panel/Controller/Customer.pm b/lib/NGCP/Panel/Controller/Customer.pm index e37af49c8e..d9b7a76aea 100644 --- a/lib/NGCP/Panel/Controller/Customer.pm +++ b/lib/NGCP/Panel/Controller/Customer.pm @@ -2163,9 +2163,7 @@ sub preferences_base :Chained('base') :PathPart('preferences') :CaptureArgs(1) { contract_id => $c->stash->{contract}->id, location_id => $c->stash->{location}{id} || undef, }); - my @values = $c->stash->{preference}->get_column("value")->all; $c->stash->{pref_id} = $pref_id; - $c->stash->{preference_values} = \@values; $c->stash(template => 'customer/preferences.tt'); } diff --git a/lib/NGCP/Panel/Controller/Domain.pm b/lib/NGCP/Panel/Controller/Domain.pm index 739fdafdbb..f73e1b0b9f 100644 --- a/lib/NGCP/Panel/Controller/Domain.pm +++ b/lib/NGCP/Panel/Controller/Domain.pm @@ -324,8 +324,6 @@ sub preferences_base :Chained('base') :PathPart('preferences') :CaptureArgs(1) { attribute_id => $pref_id, domain_id => $provisioning_domain_id, }); - my @values = $c->stash->{preference}->get_column("value")->all; - $c->stash->{preference_values} = \@values; $c->stash(template => 'domain/preferences.tt'); } diff --git a/lib/NGCP/Panel/Controller/Peering.pm b/lib/NGCP/Panel/Controller/Peering.pm index e58495b534..20f6ff549f 100644 --- a/lib/NGCP/Panel/Controller/Peering.pm +++ b/lib/NGCP/Panel/Controller/Peering.pm @@ -522,8 +522,6 @@ sub servers_preferences_base :Chained('servers_preferences_list') :PathPart('') },{ prefetch => 'peer_host', }); - my @values = $c->stash->{preference}->get_column("value")->all; - $c->stash->{preference_values} = \@values; return; } diff --git a/lib/NGCP/Panel/Controller/SubscriberProfile.pm b/lib/NGCP/Panel/Controller/SubscriberProfile.pm index 7359f64759..72a38f520e 100644 --- a/lib/NGCP/Panel/Controller/SubscriberProfile.pm +++ b/lib/NGCP/Panel/Controller/SubscriberProfile.pm @@ -699,8 +699,6 @@ sub preferences_base :Chained('profile_base') :PathPart('preferences') :CaptureA attribute_id => $pref_id, profile_id => $profile->id, }); - my @values = $c->stash->{preference}->get_column("value")->all; - $c->stash->{preference_values} = \@values; $c->stash(template => 'subprofile/preferences.tt'); } diff --git a/lib/NGCP/Panel/Utils/Preferences.pm b/lib/NGCP/Panel/Utils/Preferences.pm index 725f6edc89..dfb40848f1 100644 --- a/lib/NGCP/Panel/Utils/Preferences.pm +++ b/lib/NGCP/Panel/Utils/Preferences.pm @@ -200,10 +200,6 @@ sub create_preference_form { } } - $c->stash->{preference_values} = [ - $c->stash->{preference}->get_column("value")->all - ]; - my $preselected_value = undef; if ($c->stash->{preference_meta}->attribute eq "rewrite_rule_set") { my $rewrite_caller_in_dpid = $pref_rs->search({ @@ -299,18 +295,10 @@ sub create_preference_form { } } } - } elsif($c->stash->{subscriber} && - ($c->stash->{preference_meta}->attribute eq "block_in_list" || $c->stash->{preference_meta}->attribute eq "block_out_list")) { - foreach my $v(@{ $c->stash->{preference_values} }) { - $v =~ s/^\#//; - if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") { - $v = NGCP::Panel::Utils::Subscriber::apply_rewrite( - c => $c, subscriber => $c->stash->{subscriber}, number => $v, direction => 'caller_out' - ); - } - } } elsif ($c->stash->{preference_meta}->max_occur == 1) { - $preselected_value = $c->stash->{preference_values}->[0]; + if ($c->stash->{preference}->first) { + $preselected_value = $c->stash->{preference}->first->value; + } } my $form = NGCP::Panel::Form::Preferences->new({ @@ -520,7 +508,6 @@ sub create_preference_form { $v .= $suffix; } - push @{ $c->stash->{preference_values} }, $v; } try { $pref_rs->create({ @@ -728,11 +715,33 @@ sub create_preference_form { } OUT: - + + my $preference_values = []; + foreach my $p ( $c->stash->{preference}->all ) { + my $v = $p->value; + $v =~ s/^\#//; + if( ($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") && + $c->stash->{subscriber} && + ( $c->stash->{preference_meta}->attribute eq "block_in_list" || + $c->stash->{preference_meta}->attribute eq "block_out_list" ) + ) { + $v = NGCP::Panel::Utils::Subscriber::apply_rewrite( + c => $c, subscriber => $c->stash->{subscriber}, number => $v, direction => 'caller_out', + ); + } + + push @{ $preference_values }, { + id => $p->id, + value => $v, + disabled => !!($p->value =~ m/^\#/), + }; + } + $form->process if ($posted && $form->validated); - $c->stash(form => $form, - aip_grp_rs => $aip_grp_rs, - man_aip_grp_rs => $man_aip_grp_rs); + $c->stash(form => $form, + aip_grp_rs => $aip_grp_rs, + man_aip_grp_rs => $man_aip_grp_rs, + preference_values => $preference_values); return 1; } diff --git a/share/templates/helpers/pref_table.tt b/share/templates/helpers/pref_table.tt index 72771c6850..d69d0cbead 100644 --- a/share/templates/helpers/pref_table.tt +++ b/share/templates/helpers/pref_table.tt @@ -192,23 +192,20 @@ [% ELSIF helper.preference_meta.max_occur != 1 %]