From 7f92d7f82c716d09c41a8f4b47532476912dae13 Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Mon, 8 Apr 2013 16:28:07 +0200 Subject: [PATCH] Properly display domain preferences in full list. --- lib/NGCP/Panel/Controller/Domain.pm | 35 ++++++++++++++++++++++++--- share/templates/helpers/pref_table.tt | 22 ++++++++++++++++- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/lib/NGCP/Panel/Controller/Domain.pm b/lib/NGCP/Panel/Controller/Domain.pm index 0597ed8ad0..c4ca34fd6a 100644 --- a/lib/NGCP/Panel/Controller/Domain.pm +++ b/lib/NGCP/Panel/Controller/Domain.pm @@ -2,6 +2,7 @@ package NGCP::Panel::Controller::Domain; use Moose; use namespace::autoclean; use Data::Dumper; +use Data::Printer; BEGIN { extends 'Catalyst::Controller'; } @@ -157,10 +158,36 @@ sub ajax :Chained('list') :PathPart('ajax') :Args(0) { sub preferences :Chained('base') :PathPart('preferences') :CaptureArgs(0) { my ($self, $c) = @_; - my $rs = $c->model('provisioning')->resultset('voip_preferences'); - my @pref_rows = $rs->all(); - $c->stash(pref_rows => \@pref_rows); - + my @dom_prefs = $c->model('provisioning') + ->resultset('voip_preferences') + ->search({ dom_pref => 1, internal => 0}) + ->all; + + my $dom_pref_values = $c->model('provisioning') + ->resultset('voip_domains') + ->single({domain => $c->stash->{domain}->{domain}}) + ->voip_dom_preferences; + + foreach my $pref(@dom_prefs) { + # TODO: do we do an unnecessary query again? + my $val = $dom_pref_values->search({attribute_id => $pref->id}); + if($pref->data_type eq "enum") { + $pref->{enums} = []; + push @{ $pref->{enums} }, + $pref->voip_preferences_enums->search({dom_pref => 1})->all; + } + next unless(defined $val); + if($pref->max_occur != 1) { + $pref->{value} = []; + while(my $v = $val->next) { + push @{ $pref->{value} }, $v->value; + } + } else { + $pref->{value} = defined $val->first ? $val->first->value : undef; + } + } + + $c->stash(pref_rows => \@dom_prefs); $c->stash(template => 'domain/preferences.tt'); } diff --git a/share/templates/helpers/pref_table.tt b/share/templates/helpers/pref_table.tt index 337ba33ecf..6921e3e2e6 100644 --- a/share/templates/helpers/pref_table.tt +++ b/share/templates/helpers/pref_table.tt @@ -12,7 +12,27 @@ [% FOREACH r IN helper.rows %] [% r.attribute %] - nothing yet[% %] + + [% IF r.data_type == "boolean" %] + + [% ELSIF r.data_type == "string" || r.data_type == "int" %] + [% IF r.max_occur == 1 %] + [% r.value %] + [% ELSE %] + [% FOR value IN r.value %] + [% r.value %]
+ [% END %] + [% END %] + [% ELSIF r.data_type == "enum" %] + [% USE Dumper %] + + [% END %] + [% r.description %] Edit