diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 9d1c616..7cf6f25 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -810,6 +810,18 @@ sub preferences : Local { { eval { @{$$preferences{$$pref{preference}}} = map { s/^([1-9])/+$1/; $_ } @{$$preferences{$$pref{preference}}} }; } + elsif ($$pref{data_type} eq 'enum') { + + my $enum_options; + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_enum_options', + { preference_id => $$pref{id} }, + \$enum_options ); + + $$preferences{$$pref{preference}} = { + selected => $$preferences{$$pref{preference}}, + options => $enum_options, + } if eval { @$enum_options }; + } push @stashprefs, { key => $$pref{preference}, @@ -933,6 +945,11 @@ sub update_preferences : Local { } } elsif($$db_pref{data_type} eq 'boolean') { $$preferences{$$db_pref{preference}} = $c->request->params->{$$db_pref{preference}} ? 1 : undef; + } elsif($$db_pref{data_type} eq 'enum') { + # 'NOTSET' means, user chose to not set this property for that subscriber (hardcoded in database) + $$preferences{$$db_pref{preference}} = ($c->request->params->{$$db_pref{preference}} eq 'NOTSET') + ? undef + : $c->request->params->{$$db_pref{preference}}; } else { # wtf? ignoring invalid preference } diff --git a/root/tt/subscriber_preferences.tt b/root/tt/subscriber_preferences.tt index b1dc11c..acc93f3 100644 --- a/root/tt/subscriber_preferences.tt +++ b/root/tt/subscriber_preferences.tt @@ -103,6 +103,24 @@ [% IF preference.value %]checked="checked"[% END %] /> + [% ELSIF preference.data_type == "enum" %] +
  • +
    [% preference.key %]:
    +
    +
    + +
    +
  • [% ELSE %]
  • [% preference.key %]: