diff --git a/lib/NGCP/Panel/Controller/Domain.pm b/lib/NGCP/Panel/Controller/Domain.pm
index ff1efea6e0..454ef807ba 100644
--- a/lib/NGCP/Panel/Controller/Domain.pm
+++ b/lib/NGCP/Panel/Controller/Domain.pm
@@ -199,9 +199,7 @@ sub preferences_base :Chained('base') :PathPart('preferences') :CaptureArgs(1) {
->resultset('voip_preferences')
->single({id => $pref_id});
my $domain_name = $c->stash->{domain}->{domain};
- my $provisioning_domain_id = $c->model('DB')
- ->resultset('voip_domains')
- ->single({domain => $domain_name})->id;
+ my $provisioning_domain_id = $c->stash->{provisioning_domain_result}->id;
$c->stash->{preference} = $c->model('DB')
->resultset('voip_dom_preferences')
@@ -227,7 +225,7 @@ sub preferences_edit :Chained('preferences_base') :PathPart('edit') :Args(0) {
my $pref_rs = $c->model('DB')
->resultset('voip_dom_preferences')
->search({
- domain_id => $c->stash->{provisioning_domain_id}
+ domain_id => $c->stash->{provisioning_domain_result}->id,
});
NGCP::Panel::Utils::create_preference_form( c => $c,
@@ -267,6 +265,11 @@ sub load_preference_list :Private {
$c->stash(ncos_levels_rs => $ncos_levels_rs,
ncos_levels => [$ncos_levels_rs->all]);
+ my $sound_sets_rs = $c->model('DB')
+ ->resultset('voip_sound_sets');
+ $c->stash(sound_sets_rs => $sound_sets_rs,
+ sound_sets => [$sound_sets_rs->all]);
+
NGCP::Panel::Utils::load_preference_list( c => $c,
pref_values => \%pref_values,
dom_pref => 1,
diff --git a/lib/NGCP/Panel/Controller/Subscriber.pm b/lib/NGCP/Panel/Controller/Subscriber.pm
index c5f8afbdf6..1b7ede5993 100644
--- a/lib/NGCP/Panel/Controller/Subscriber.pm
+++ b/lib/NGCP/Panel/Controller/Subscriber.pm
@@ -302,6 +302,11 @@ sub load_preference_list :Private {
$c->stash(ncos_levels_rs => $ncos_levels_rs,
ncos_levels => [$ncos_levels_rs->all]);
+ my $sound_sets_rs = $c->model('DB')
+ ->resultset('voip_sound_sets');
+ $c->stash(sound_sets_rs => $sound_sets_rs,
+ sound_sets => [$sound_sets_rs->all]);
+
NGCP::Panel::Utils::load_preference_list( c => $c,
pref_values => \%pref_values,
usr_pref => 1,
diff --git a/lib/NGCP/Panel/Form/Preferences.pm b/lib/NGCP/Panel/Form/Preferences.pm
index 504eb8dded..9d6b0ba908 100644
--- a/lib/NGCP/Panel/Form/Preferences.pm
+++ b/lib/NGCP/Panel/Form/Preferences.pm
@@ -33,6 +33,7 @@ sub field_list {
my $enums = $row->{enums};
my $rwrs_rs = $row->{rwrs_rs};
my $ncos_rs = $row->{ncos_rs};
+ my $sound_rs = $row->{sound_rs};
my $field;
if($meta->attribute eq "rewrite_rule_set") {
my @options = map {{label => $_->name, value => $_->id}}
@@ -52,6 +53,15 @@ sub field_list {
type => 'Select',
options => \@options,
};
+ } elsif ($meta->attribute eq "sound_set") {
+ my @options = map {{label => $_->name, value => $_->id}}
+ defined $sound_rs ? $sound_rs->all : ();
+ unshift @options, {label => '', value => ''};
+ $field = {
+ name => $meta->attribute,
+ type => 'Select',
+ options => \@options,
+ };
} elsif($meta->data_type eq "enum") {
my @options = map {{label => $_->label, value => $_->value}} @{ $enums };
$field = {
diff --git a/lib/NGCP/Panel/Utils.pm b/lib/NGCP/Panel/Utils.pm
index 5fc4ddefe4..6a96c7ccee 100644
--- a/lib/NGCP/Panel/Utils.pm
+++ b/lib/NGCP/Panel/Utils.pm
@@ -181,6 +181,7 @@ sub create_preference_form {
enums => $enums,
rwrs_rs => $c->stash->{rwr_sets_rs},
ncos_rs => $c->stash->{ncos_levels_rs},
+ sound_rs => $c->stash->{sound_sets_rs},
}],
});
$form->create_structure([$c->stash->{preference_meta}->attribute]);
@@ -228,6 +229,24 @@ sub create_preference_form {
$preference->create({ value => $selected_level->id });
}
+ $c->flash(messages => [{type => 'success', text => "Preference $attribute successfully updated."}]);
+ $c->response->redirect($base_uri);
+ return;
+ } elsif ($attribute eq "sound_set") {
+ my $selected_set = $c->stash->{sound_sets_rs}->find(
+ $form->field($attribute)->value
+ );
+
+ my $preference = $pref_rs->search({
+ attribute_id => $c->stash->{preference_meta}->id });
+ if(!defined $selected_set) {
+ $preference->first->delete if $preference->first;
+ } elsif($preference->first) {
+ $preference->first->update({ value => $selected_set->id });
+ } else {
+ $preference->create({ value => $selected_set->id });
+ }
+
$c->flash(messages => [{type => 'success', text => "Preference $attribute successfully updated."}]);
$c->response->redirect($base_uri);
return;
@@ -384,6 +403,14 @@ be set.
The updated preferences are called ncos_id and adm_ncos_id.
+=head3 Special case sound_set
+
+This is also similar to rewrite_rule_set and ncos. The stashed variables are
+sound_sets_rs and sound_sets. In the template helper.sound_sets needs to
+be set.
+
+The preference with the attribute sound_set will contain the id of a sound_set.
+
=head2 _set_rewrite_preferences
See "Special case rewrite_rule_set".
diff --git a/share/templates/domain/preferences.tt b/share/templates/domain/preferences.tt
index d1f2f55c49..446a0164b4 100644
--- a/share/templates/domain/preferences.tt
+++ b/share/templates/domain/preferences.tt
@@ -12,6 +12,7 @@
helper.base_uri = c.uri_for(domain.id,'preferences');
helper.rewrite_rule_sets = rwr_sets;
helper.ncos_levels = ncos_levels;
+ helper.sound_sets = sound_sets;
helper.top_buttons = [
{ name = 'Back', uri = c.uri_for(), icon = 'icon-arrow-left' },
diff --git a/share/templates/helpers/pref_table.tt b/share/templates/helpers/pref_table.tt
index 9abd18d5b0..39da7ae6a0 100644
--- a/share/templates/helpers/pref_table.tt
+++ b/share/templates/helpers/pref_table.tt
@@ -75,6 +75,13 @@
[% END -%]
+ [% ELSIF r.attribute == "sound_set" -%]
+
[% ELSIF r.data_type == "boolean" %]