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" %]