diff --git a/lib/NGCP/Panel/Controller/Customer.pm b/lib/NGCP/Panel/Controller/Customer.pm index 6f4a1d16d5..d00e8d578a 100644 --- a/lib/NGCP/Panel/Controller/Customer.pm +++ b/lib/NGCP/Panel/Controller/Customer.pm @@ -281,19 +281,35 @@ sub base :Chained('list_customer') :PathPart('') :CaptureArgs(1) { desc => $c->loc('Invalid product id for this customer contract.'), ) unless($product); - $c->stash->{pbxgroup_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [ + $c->stash->{subscriber_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [ { name => "id", search => 1, title => $c->loc("#") }, - { name => "name", search => 1, title => $c->loc("Name") }, - { name => "extension", search => 1, title => $c->loc("Extension") }, + { name => "username", search => 1, title => $c->loc("Name") }, + { name => "provisioning_voip_subscriber.pbx_extension", search => 1, title => $c->loc("Extension") }, ]); - my $subs = NGCP::Panel::Utils::Subscriber::get_custom_subscriber_struct( - c => $c, - contract => $contract_rs->first, - show_locked => 1, - ); - $c->stash->{subscribers} = $subs->{subscribers}; - $c->stash->{pbx_groups} = $subs->{pbx_groups}; + $c->stash->{pbxgroup_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [ + { name => "id", search => 1, title => $c->loc("#") }, + { name => "username", search => 1, title => $c->loc("Name") }, + { name => "provisioning_voip_subscriber.pbx_extension", search => 1, title => $c->loc("Extension") }, + { name => "provisioning_voip_subscriber.pbx_hunt_policy", search => 1, title => $c->loc("Hunt Policy") }, + { name => "provisioning_voip_subscriber.pbx_hunt_timeout", search => 1, title => $c->loc("Serial Hunt Timeout") }, + ]); + $c->stash->{subscribers} = $c->model('DB')->resultset('voip_subscribers')->search({ + contract_id => $contract_id, + status => { '!=' => 'terminated' }, + 'provisioning_voip_subscriber.is_pbx_group' => 0, + }, { + join => 'provisioning_voip_subscriber', + }); + if($c->config->{features}->{cloudpbx}) { + $c->stash->{pbx_groups} = $c->model('DB')->resultset('voip_subscribers')->search({ + contract_id => $contract_id, + status => { '!=' => 'terminated' }, + 'provisioning_voip_subscriber.is_pbx_group' => 1, + }, { + join => 'provisioning_voip_subscriber', + }); + } my $field_devs = [ $c->model('DB')->resultset('autoprov_field_devices')->search({ 'contract_id' => $contract_rs->first->id @@ -498,16 +514,15 @@ sub subscriber_create :Chained('base') :PathPart('subscriber/create') :Args(0) { $pbx = 1 if $c->stash->{product}->class eq 'pbxaccount'; my $form; my $posted = ($c->request->method eq 'POST'); - my $admin_subscribers = NGCP::Panel::Utils::Subscriber::get_admin_subscribers( - voip_subscribers => $c->stash->{subscribers}); - $c->stash->{admin_subscriber} = $c->model('DB')->resultset('voip_subscribers')->find( - $admin_subscribers->[0]->{id}, - ); + my $admin_subscribers = $c->stash->{subscribers}->search({ + 'provisioning_voip_subscriber.admin' => 1, + }); + $c->stash->{admin_subscriber} = $admin_subscribers->first; if($c->config->{features}->{cloudpbx} && $pbx) { $c->stash(customer_id => $c->stash->{contract}->id); # we need to create an admin subscriber first - unless(@{ $admin_subscribers }) { + unless($c->stash->{admin_subscriber}) { $pbxadmin = 1; $form = NGCP::Panel::Form::Customer::PbxAdminSubscriber->new(ctx => $c); } else { @@ -549,18 +564,18 @@ sub subscriber_create :Chained('base') :PathPart('subscriber/create') :Args(0) { $schema->txn_do(sub { my $preferences = {}; if($pbx && !$pbxadmin) { - my $admin = $admin_subscribers->[0]; - $form->params->{domain}{id} = $admin->{domain_id}; + my $admin = $c->stash->{admin_subscriber}; + $form->params->{domain}{id} = $admin->domain_id; # TODO: make DT selection multi-select capable $form->params->{pbx_group_id} = $form->params->{group}{id}; delete $form->params->{group}; - my $base_number = $admin->{primary_number}; + my $base_number = $admin->primary_number; if($base_number) { - $preferences->{cloud_pbx_base_cli} = $base_number->{cc} . $base_number->{ac} . $base_number->{sn}; - if($form->params->{extension}) { - $form->params->{e164}{cc} = $base_number->{cc}; - $form->params->{e164}{ac} = $base_number->{ac}; - $form->params->{e164}{sn} = $base_number->{sn} . $form->params->{extension}; + $preferences->{cloud_pbx_base_cli} = $base_number->cc . $base_number->ac . $base_number->sn; + if($form->params->{pbx_extension}) { + $form->params->{e164}{cc} = $base_number->cc; + $form->params->{e164}{ac} = $base_number->ac; + $form->params->{e164}{sn} = $base_number->sn . $form->params->{pbx_extension}; } } } @@ -838,10 +853,26 @@ sub calls_svg :Chained('base') :PathPart('calls/template') :Args { } } +sub subscriber_ajax :Chained('base') :PathPart('subscriber/ajax') :Args(0) { + my ($self, $c) = @_; + my $res = $c->stash->{contract}->voip_subscribers->search({ + 'provisioning_voip_subscriber.is_pbx_group' => 0, + status => { '!=' => 'terminated' }, + + },{ + join => 'provisioning_voip_subscriber', + }); + NGCP::Panel::Utils::Datatables::process($c, $res, $c->stash->{subscriber_dt_columns}); + $c->detach( $c->view("JSON") ); +} + sub pbx_group_ajax :Chained('base') :PathPart('pbx/group/ajax') :Args(0) { my ($self, $c) = @_; - my $res = $c->model('DB')->resultset('voip_pbx_groups')->search({ - contract_id => $c->stash->{contract}->id, + my $res = $c->stash->{contract}->voip_subscribers->search({ + 'provisioning_voip_subscriber.is_pbx_group' => 1, + + },{ + join => 'provisioning_voip_subscriber', }); NGCP::Panel::Utils::Datatables::process($c, $res, $c->stash->{pbxgroup_dt_columns}); $c->detach( $c->view("JSON") ); @@ -866,9 +897,11 @@ sub pbx_group_create :Chained('base') :PathPart('pbx/group/create') :Args(0) { } my $posted = ($c->request->method eq 'POST'); - my $admin_subscribers = NGCP::Panel::Utils::Subscriber::get_admin_subscribers( - voip_subscribers => $c->stash->{subscribers}); - unless(@{ $admin_subscribers }) { + my $admin_subscribers = $c->stash->{subscribers}->search({ + 'provisioning_voip_subscriber.admin' => 1, + }); + $c->stash->{admin_subscriber} = $admin_subscribers->first; + unless($c->stash->{admin_subscriber}) { NGCP::Panel::Utils::Message->error( c => $c, error => 'cannot create pbx group without having an admin subscriber', @@ -896,27 +929,24 @@ sub pbx_group_create :Chained('base') :PathPart('pbx/group/create') :Args(0) { my $schema = $c->model('DB'); $schema->txn_do( sub { my $preferences = {}; - my $admin = $admin_subscribers->[0]; + my $admin = $c->stash->{admin_subscriber}; - my $base_number = $admin->{primary_number}; + my $base_number = $admin->primary_number; if($base_number) { - $preferences->{cloud_pbx_base_cli} = $base_number->{cc} . $base_number->{ac} . $base_number->{sn}; - if($form->params->{extension}) { - $form->params->{e164}{cc} = $base_number->{cc}; - $form->params->{e164}{ac} = $base_number->{ac}; - $form->params->{e164}{sn} = $base_number->{sn} . $form->params->{extension}; + $preferences->{cloud_pbx_base_cli} = $base_number->cc . $base_number->ac . $base_number->sn; + if($form->params->{pbx_extension}) { + $form->params->{e164}{cc} = $base_number->cc; + $form->params->{e164}{ac} = $base_number->ac; + $form->params->{e164}{sn} = $base_number->sn . $form->params->{pbx_extension}; } } - $form->params->{is_pbx_group} = 1; - $form->params->{domain}{id} = $admin->{domain_id}; + $form->params->{domain}{id} = $admin->domain_id; $form->params->{status} = 'active'; - $form->params->{username} = lc $form->params->{name}; - $form->params->{username} =~ s/\s+/_/g; $preferences->{cloud_pbx} = 1; $preferences->{cloud_pbx_hunt_policy} = $form->params->{hunt_policy}; - $preferences->{cloud_pbx_hunt_timeout} = $form->params->{hunt_policy_timeout}; + $preferences->{cloud_pbx_hunt_timeout} = $form->params->{hunt_timeout}; my $billing_subscriber = NGCP::Panel::Utils::Subscriber::create_subscriber( c => $c, schema => $schema, @@ -925,12 +955,7 @@ sub pbx_group_create :Chained('base') :PathPart('pbx/group/create') :Args(0) { admin_default => 0, preferences => $preferences, ); - foreach my $k(qw/is_pbx_group username password e164 pbx_group domain status/) { - delete $form->params->{$k}; - } - $form->params->{subscriber_id} = $billing_subscriber->provisioning_voip_subscriber->id; - my $group = $c->stash->{contract}->voip_pbx_groups->create($form->params); - $c->session->{created_objects}->{group} = { id => $group->id }; + $c->session->{created_objects}->{group} = { id => $billing_subscriber->id }; }); $c->flash(messages => [{type => 'success', text => $c->loc('PBX group successfully created.')}]); @@ -955,7 +980,7 @@ sub pbx_group_create :Chained('base') :PathPart('pbx/group/create') :Args(0) { sub pbx_group_base :Chained('base') :PathPart('pbx/group') :CaptureArgs(1) { my ($self, $c, $group_id) = @_; - my $group = $c->model('DB')->resultset('voip_pbx_groups')->find($group_id); + my $group = $c->stash->{pbx_groups}->find($group_id); unless($group) { NGCP::Panel::Utils::Message->error( c => $c, diff --git a/lib/NGCP/Panel/Field/PbxGroup.pm b/lib/NGCP/Panel/Field/PbxGroup.pm index ee4bf5ea49..bc5795d28b 100644 --- a/lib/NGCP/Panel/Field/PbxGroup.pm +++ b/lib/NGCP/Panel/Field/PbxGroup.pm @@ -12,7 +12,7 @@ has_field 'id' => ( # this is set in the form: #ajax_src => '/', table_titles => ['#', 'Name', 'Extension'], - table_fields => ['id', 'name', 'extension'], + table_fields => ['id', 'username', 'provisioning_voip_subscriber_pbx_extension'], ); has_field 'create' => ( diff --git a/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriber.pm b/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriber.pm index f1e9ce0808..5ace65f8f9 100644 --- a/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriber.pm +++ b/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriber.pm @@ -10,7 +10,7 @@ has_field 'group' => ( validate_when_empty => 1, ); -has_field 'extension' => ( +has_field 'pbx_extension' => ( type => '+NGCP::Panel::Field::PosInteger', element_attr => { rel => ['tooltip'], @@ -23,7 +23,7 @@ has_field 'extension' => ( has_block 'fields' => ( tag => 'div', class => [qw/modal-body/], - render_list => [qw/group extension display_name webusername webpassword username password status external_id profile_set/ ], + render_list => [qw/group pbx_extension display_name webusername webpassword username password status external_id profile/ ], ); sub field_list { @@ -35,6 +35,15 @@ sub field_list { $group->field('id')->ajax_src( $c->uri_for_action('/customer/pbx_group_ajax', [$c->stash->{customer_id}])->as_string ); + + if($c->stash->{admin_subscriber}) { + my $profile_set = $c->stash->{admin_subscriber}->provisioning_voip_subscriber->voip_subscriber_profile_set; + if($profile_set) { + $self->field('profile')->field('id')->ajax_src( + $c->uri_for_action('/subscriberprofile/profile_ajax', [$profile_set->id])->as_string + ); + } + } } diff --git a/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriberEditSubadmin.pm b/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriberEditSubadmin.pm index 02823b4aeb..fa8ab7a7f2 100644 --- a/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriberEditSubadmin.pm +++ b/lib/NGCP/Panel/Form/Customer/PbxExtensionSubscriberEditSubadmin.pm @@ -37,10 +37,8 @@ sub update_fields { $c->uri_for_action('/customer/pbx_group_ajax', [$c->stash->{customer_id}])->as_string ); - print "++++++++++++++++++++++ fetching profile set\n"; my $profile_set = $c->stash->{subscriber}->provisioning_voip_subscriber->voip_subscriber_profile_set; if($profile_set) { - print "++++++++++++++++++++++ got profile set\n"; $self->field('profile')->field('id')->ajax_src( $c->uri_for_action('/subscriberprofile/profile_ajax', [$profile_set->id])->as_string ); diff --git a/lib/NGCP/Panel/Form/Customer/PbxGroup.pm b/lib/NGCP/Panel/Form/Customer/PbxGroup.pm index e899c19ec7..e3c201beec 100644 --- a/lib/NGCP/Panel/Form/Customer/PbxGroup.pm +++ b/lib/NGCP/Panel/Form/Customer/PbxGroup.pm @@ -3,13 +3,13 @@ package NGCP::Panel::Form::Customer::PbxGroup; use HTML::FormHandler::Moose; extends 'NGCP::Panel::Form::Customer::PbxGroupBase'; -has_field 'name' => ( +has_field 'username' => ( type => 'Text', required => 1, label => 'Name', ); -has_field 'extension' => ( +has_field 'pbx_extension' => ( type => 'Text', required => 1, label => 'Extension', @@ -18,14 +18,14 @@ has_field 'extension' => ( has_block 'fields' => ( tag => 'div', class => [qw/modal-body/], - render_list => [qw/name extension hunt_policy hunt_policy_timeout/], + render_list => [qw/username pbx_extension pbx_hunt_policy pbx_hunt_timeout/], ); -sub validate_name { +sub validate_username { my ($self, $field) = @_; - unless($field->value =~ /^[a-zA-Z0-9_\-\s]+$/) { - $field->add_error("Invalid group name, must only contain letters, digits, - and _ and spaces"); + unless($field->value =~ /^[a-zA-Z0-9_\-]+$/) { + $field->add_error("Invalid group name, must only contain letters, digits, - and _"); } } diff --git a/lib/NGCP/Panel/Form/Customer/PbxGroupBase.pm b/lib/NGCP/Panel/Form/Customer/PbxGroupBase.pm index fd875622c9..f09d073746 100644 --- a/lib/NGCP/Panel/Form/Customer/PbxGroupBase.pm +++ b/lib/NGCP/Panel/Form/Customer/PbxGroupBase.pm @@ -12,7 +12,7 @@ has_field 'submitid' => ( type => 'Hidden' ); sub build_render_list {[qw/submitid fields actions/]} sub build_form_element_class {[qw(form-horizontal)]} -has_field 'hunt_policy' => ( +has_field 'pbx_hunt_policy' => ( type => 'Select', required => 1, label => 'Hunting Policy', @@ -23,7 +23,7 @@ has_field 'hunt_policy' => ( default => 'serial', ); -has_field 'hunt_policy_timeout' => ( +has_field 'pbx_hunt_timeout' => ( type => '+NGCP::Panel::Field::PosInteger', required => 1, label => 'Serial Hunting Timeout', @@ -40,7 +40,7 @@ has_field 'save' => ( has_block 'fields' => ( tag => 'div', class => [qw/modal-body/], - render_list => [qw/hunt_policy hunt_policy_timeout/], + render_list => [qw/pbx_hunt_policy pbx_hunt_timeout/], ); has_block 'actions' => ( diff --git a/lib/NGCP/Panel/Utils/Subscriber.pm b/lib/NGCP/Panel/Utils/Subscriber.pm index 1aeb08206d..fa70c14cf9 100644 --- a/lib/NGCP/Panel/Utils/Subscriber.pm +++ b/lib/NGCP/Panel/Utils/Subscriber.pm @@ -115,16 +115,6 @@ sub get_lock_string { return $LOCK{$level}; } -sub get_admin_subscribers { - my %params = @_; - my $subs = $params{voip_subscribers}; - my @subscribers = (); - foreach my $s(@{ $subs }) { - push @subscribers, $s if($s->{admin}); - } - return \@subscribers; -} - sub create_subscriber { my %params = @_; my $c = $params{c}; @@ -214,6 +204,7 @@ sub create_subscriber { domain_id => $prov_domain->id, is_pbx_group => $params->{is_pbx_group} // 0, pbx_group_id => $params->{pbx_group_id}, + pbx_extension => $params->{pbx_extension}, profile_set_id => $profile_set ? $profile_set->id : undef, profile_id => $profile ? $profile->id : undef, create_timestamp => NGCP::Panel::Utils::DateTime::current_local, @@ -275,47 +266,6 @@ sub update_preferences { } } -sub get_custom_subscriber_struct { - my %params = @_; - - my $c = $params{c}; - my $contract = $params{contract}; - - my @subscribers = (); - my @pbx_groups = (); - my $voip_sub_rs = $contract->voip_subscribers; - if($params{show_locked}) { - $voip_sub_rs = $voip_sub_rs->search_rs({ status => { -in => [ 'active', 'locked' ] } }); - } else { - $voip_sub_rs = $voip_sub_rs->search_rs({ status => 'active' }); - } - foreach my $s($voip_sub_rs->all) { - my $sub = { $s->get_columns }; - if($c->config->{features}->{cloudpbx}) { - $sub->{voip_pbx_group} = { $s->provisioning_voip_subscriber->voip_pbx_group->get_columns } - if($s->provisioning_voip_subscriber->voip_pbx_group); - } - $sub->{domain} = $s->domain->domain; - $sub->{admin} = $s->provisioning_voip_subscriber->admin if - $s->provisioning_voip_subscriber; - $sub->{primary_number} = {$s->primary_number->get_columns} if(defined $s->primary_number); - $sub->{locations} = [ map { { $_->get_columns } } $c->model('DB')->resultset('location')-> - search({ - username => $s->username, - ($c->config->{features}->{multidomain}) ? (domain => $s->domain->domain) : (), - })->all ]; - if($c->config->{features}->{cloudpbx} && $s->provisioning_voip_subscriber->is_pbx_group) { - my $grp = $contract->voip_pbx_groups->find({ subscriber_id => $s->provisioning_voip_subscriber->id }); - $sub->{voip_pbx_group} = { $grp->get_columns } if $grp; - push @pbx_groups, $sub; - } else { - push @subscribers, $sub; - } - } - - return { subscribers => \@subscribers, pbx_groups => \@pbx_groups }; -} - sub update_pbx_group_prefs { my %params = @_; @@ -333,7 +283,7 @@ sub update_pbx_group_prefs { my $uri = "sip:$username\@$domain"; if($old_group_id) { - $old_grp_subscriber= $c->model('DB')->resultset('voip_pbx_groups') + $old_grp_subscriber= $c->stash->{pbx_groups} ->find($old_group_id) ->provisioning_voip_subscriber; if($old_grp_subscriber) { @@ -345,7 +295,7 @@ sub update_pbx_group_prefs { } } if($new_group_id) { - $new_grp_subscriber = $c->model('DB')->resultset('voip_pbx_groups') + $new_grp_subscriber = $c->stash->{pbx_groups} ->find($new_group_id) ->provisioning_voip_subscriber; if($new_grp_subscriber) { @@ -477,7 +427,7 @@ sub update_subscriber_numbers { if ( (defined $old_cc && defined $old_sn) && $billing_subs->contract->billing_mappings->first->product->class eq "pbxaccount" - && ! defined $prov_subs->voip_pbx_group + && ! defined $prov_subs->pbx_group_id && $prov_subs->admin ) { my $customer_subscribers_rs = $billing_subs->contract->voip_subscribers; my $my_cc = $primary_number->{cc}; @@ -618,26 +568,23 @@ sub terminate { my $schema = $c->model('DB'); $schema->txn_do(sub { if($subscriber->provisioning_voip_subscriber->is_pbx_group) { - my $pbx_group = $schema->resultset('voip_pbx_groups')->find({ - subscriber_id => $subscriber->provisioning_voip_subscriber->id + my $group = $schema->resultset('provisioning_voip_subscribers')->search({ + pbx_group_id => $subscriber->id + }); + $group->update({ + pbx_group_id => undef, }); - if($pbx_group) { - $pbx_group->provisioning_voip_subscribers->update_all({ - pbx_group_id => undef, - }); - } - $pbx_group->delete; } my $prov_subscriber = $subscriber->provisioning_voip_subscriber; if($prov_subscriber) { update_pbx_group_prefs( c => $c, schema => $schema, - old_group_id => $prov_subscriber->voip_pbx_group->id, + old_group_id => $prov_subscriber->pbx_group_id, new_group_id => undef, username => $prov_subscriber->username, domain => $prov_subscriber->domain->domain, - ) if($prov_subscriber->voip_pbx_group); + ) if($prov_subscriber->pbx_group_id); $prov_subscriber->delete; } if ($c->user->roles eq 'subscriberadmin') { diff --git a/share/templates/customer/details.tt b/share/templates/customer/details.tt index ded41e8c46..c6bfa23e03 100644 --- a/share/templates/customer/details.tt +++ b/share/templates/customer/details.tt @@ -179,57 +179,34 @@ [% c.loc('Create Subscriber') %] [% END -%] -
- - - - - - [% IF c.config.features.cloudpbx && product.class == 'pbxaccount' -%] - - [% END -%] - - - - - - [% FOR subscriber IN subscribers -%] - - - - [% IF c.config.features.cloudpbx && product.class == 'pbxaccount' -%] - - [% END -%] - - - - [% END -%] - -
[% c.loc('SIP URI') %][% c.loc('Primary Number') %][% c.loc('PBX Group') %][% c.loc('Registered Devices') %]
[% subscriber.username %]@[% subscriber.domain %][% subscriber.primary_number.cc %] [% subscriber.primary_number.ac %] [% subscriber.primary_number.sn %] - [% subscriber.voip_pbx_group.name -%] - - [% FOR location IN subscriber.locations -%] - [% location.user_agent %]
- [% END -%] -
-
- - [% c.loc('Details') %] - - - [% c.loc('Preferences') %] - - [% IF (!c.user.readonly && (c.user.role == 'admin' || c.user.role == 'reseller')) || c.user.uuid != subscriber.uuid -%] - - [% c.loc('Terminate') %] - [% END -%] -
-
+ +[% + helper.name = c.loc('Subscribers'); + helper.identifier = 'subscribers'; + helper.dt_columns = subscriber_dt_columns; + helper.ajax_uri = c.uri_for_action('/customer/subscriber_ajax', [ c.req.captures.0 ]); + + UNLESS c.user.read_only; + helper.dt_buttons = [ + { name = c.loc('Terminate'), uri = "/subscriber/'+full.id+'/terminate", class = 'btn-small btn-secondary', icon = 'icon-remove' }, + { name = c.loc('Details'), uri = "/subscriber/'+full.id+'/details", class = 'btn-small btn-primary', icon = 'icon-th-list' }, + { name = c.loc('Preferences'), uri = "/subscriber/'+full.id+'/preferences", class = 'btn-small btn-tertiary', icon = 'icon-list' }, + ]; + ELSE; + helper.dt_buttons = [ + { name = c.loc('Details'), uri = "/subscriber/'+full.id+'/details", class = 'btn-small btn-primary', icon = 'icon-th-list' }, + { name = c.loc('Preferences'), uri = "/subscriber/'+full.id+'/preferences", class = 'btn-small btn-tertiary', icon = 'icon-list' }, + ]; + END; + + PROCESS 'helpers/datatables.tt'; +%] + - [% IF c.config.features.cloudpbx && product.class == 'pbxaccount' && subscribers.size -%] + [% IF c.config.features.cloudpbx && product.class == 'pbxaccount' && subscribers.count -%]
[% c.loc('PBX Groups') %] @@ -251,48 +228,29 @@
[% END -%] -
- - - - - - - - - - - - - [% FOR subscriber IN pbx_groups -%] - - - - - - - - - [% END -%] - -
[% c.loc('Name') %][% c.loc('SIP URI') %][% c.loc('Primary Number') %][% c.loc('Hunting Policy') %][% c.loc('Hunting Timeout') %]
[% subscriber.voip_pbx_group.name %][% subscriber.username %]@[% subscriber.domain %][% subscriber.primary_number.cc %] [% subscriber.primary_number.ac %] [% subscriber.primary_number.sn %][% subscriber.voip_pbx_group.hunt_policy %][% subscriber.voip_pbx_group.hunt_policy_timeout %] - -
+[% + helper.name = c.loc('PBX Groups'); + helper.identifier = 'pbx_groups'; + helper.dt_columns = pbxgroup_dt_columns; + helper.ajax_uri = c.uri_for_action('/customer/pbx_group_ajax', [ c.req.captures.0 ]); + + UNLESS c.user.read_only; + helper.dt_buttons = [ + { name = c.loc('Terminate'), uri = "/subscriber/'+full.id+'/terminate", class = 'btn-small btn-secondary', icon = 'icon-remove' }, + { name = c.loc('Details'), uri = "/subscriber/'+full.id+'/details", class = 'btn-small btn-primary', icon = 'icon-th-list' }, + { name = c.loc('Preferences'), uri = "/subscriber/'+full.id+'/preferences", class = 'btn-small btn-tertiary', icon = 'icon-list' }, + ]; + ELSE; + helper.dt_buttons = [ + { name = c.loc('Details'), uri = "/subscriber/'+full.id+'/details", class = 'btn-small btn-primary', icon = 'icon-th-list' }, + { name = c.loc('Preferences'), uri = "/subscriber/'+full.id+'/preferences", class = 'btn-small btn-tertiary', icon = 'icon-list' }, + ]; + END; + + PROCESS 'helpers/datatables.tt'; +%] + +
diff --git a/share/templates/subscriber/master.tt b/share/templates/subscriber/master.tt index 231d01b012..ae54da0b3d 100644 --- a/share/templates/subscriber/master.tt +++ b/share/templates/subscriber/master.tt @@ -1,4 +1,11 @@ -[% site_config.title = c.loc('Subscriber [_1]@[_2]', subscriber.username, subscriber.domain.domain) -%] +[% + IF subscriber.provisioning_voip_subscriber.is_pbx_group; + site_config.title = c.loc('PBX Group [_1]@[_2]', subscriber.username, subscriber.domain.domain); + ELSE; + site_config.title = c.loc('Subscriber [_1]@[_2]', subscriber.username, subscriber.domain.domain); + END; +-%] +
diff --git a/share/templates/subscriber/preferences.tt b/share/templates/subscriber/preferences.tt index fabd24c432..2ab3cb0802 100644 --- a/share/templates/subscriber/preferences.tt +++ b/share/templates/subscriber/preferences.tt @@ -1,4 +1,10 @@ -[% site_config.title = c.loc('Subscriber Preferences for [_1]@[_2]', subscriber.username, subscriber.domain.domain) -%] +[% + IF subscriber.provisioning_voip_subscriber.is_pbx_group; + site_config.title = c.loc('PBX Group Preferences for [_1]@[_2]', subscriber.username, subscriber.domain.domain); + ELSE; + site_config.title = c.loc('Subscriber Preferences for [_1]@[_2]', subscriber.username, subscriber.domain.domain); + END; +-%] [% helper.name = c.loc('Subscriber');