You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
10 KiB
245 lines
10 KiB
[% site_config.title = 'Subscriber ' _ subscriber.username _ '@' _ subscriber.domain.domain -%]
|
|
|
|
<div class="row">
|
|
<span class="pull-left" style="margin:0 5px 0 5px;">
|
|
<a class="btn btn-primary btn-large" href="[% c.uri_for('/back') %]"><i class="icon-arrow-left"></i> Back</a>
|
|
<a class="btn btn-primary btn-large" href="[% c.uri_for_action('/subscriber/preferences', [ subscriber.id ]) %]"><i class="icon-list"></i> Preferences</a>
|
|
<a class="btn btn-primary btn-large" href="[% c.uri_for_action('/customer/details', [ subscriber.contract_id ]) %]"><i class="icon-user"></i> Customer</a>
|
|
</span>
|
|
</div>
|
|
[% back_created = 1 -%]
|
|
|
|
<div class="row">
|
|
[% FOREACH m IN messages -%]
|
|
<div class="alert alert-[% m.type %]">[% m.text %]</div>
|
|
[% END -%]
|
|
[% IF subscriber && subscriber.status != "active" -%]
|
|
<div class="alert">Subscriber status is <b>[% subscriber.status %]</b></div>
|
|
[% END -%]
|
|
[% IF prov_lock_string && prov_lock_string != "none" -%]
|
|
<div class="alert">Subscriber is locked for <b>[% prov_lock_string %]</b></div>
|
|
[% END -%]
|
|
</div>
|
|
|
|
<div class="ngcp-separator"></div>
|
|
|
|
<div class="accordion" id="subscriber_data">
|
|
[% IF c.user.roles == 'admin' || c.user.roles == 'reseller'
|
|
|| c.user.roles == 'subscriberadmin' -%]
|
|
<div class="accordion-group">
|
|
<div class="accordion-heading">
|
|
<a class="accordion-toggle" data-toggle="collapse" data-parent="#subscriber_data" href="#collapse_master">Master Data</a>
|
|
</div>
|
|
<div class="accordion-body collapse" id="collapse_master">
|
|
<div class="accordion-inner">
|
|
|
|
[% IF (c.user.roles == "admin" || c.user.roles == "reseller") && c.user.read_only != 1 -%]
|
|
<a class="btn btn-tertiary btn-large" href="[% c.uri_for_action('/subscriber/edit_master', [ subscriber.id ]) %]"><i class="icon-edit"></i> Edit</a>
|
|
[% END -%]
|
|
<div class="ngcp-separator"></div>
|
|
|
|
<table class="table table-bordered table-striped table-highlight table-hover" id="subscribers_table">
|
|
<thead>
|
|
<tr>
|
|
<th>Setting</th>
|
|
<th>Values</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% IF c.user.roles == "admin" || c.user.roles == "reseller" -%]
|
|
<tr class="sw_action_row">
|
|
<td>Customer #</td>
|
|
<td>[% subscriber.contract.id %]</td>
|
|
</tr>
|
|
[% END -%]
|
|
[%
|
|
elements = [];
|
|
|
|
elements.push({ value = subscriber.status, desc = 'Status'});
|
|
elements.push({ value = subscriber.provisioning_voip_subscriber.webusername, desc = 'Web Username'});
|
|
IF (c.user.roles == "admin" || c.user.roles == "reseller") && c.user.show_passwords;
|
|
elements.push({ value = subscriber.provisioning_voip_subscriber.webpassword, desc = 'Web Password'});
|
|
END;
|
|
elements.push({ value = subscriber.username _ '@' _ subscriber.domain.domain, desc = 'SIP URI'});
|
|
IF (c.user.roles == "admin" || c.user.roles == "reseller") && c.user.show_passwords;
|
|
elements.push({ value = subscriber.provisioning_voip_subscriber.webpassword, desc = 'SIP Password'});
|
|
END;
|
|
IF subscriber.provisioning_voip_subscriber.voip_pbx_group.defined;
|
|
elements.push({ value = subscriber.provisioning_voip_subscriber.voip_pbx_group.name, desc = 'PBX Group' });
|
|
END;
|
|
IF c.user.roles == "admin" || c.user.roles == "reseller";
|
|
elements.push({ value = subscriber.provisioning_voip_subscriber.admin ? 'yes' : 'no', desc = 'Administrative'});
|
|
elements.push({ value = subscriber.external_id, desc = 'External #'});
|
|
elements.push({ value = subscriber.uuid, desc = 'UUID'});
|
|
END;
|
|
elements.push({ value = subscriber.primary_number.cc _ ' ' _ subscriber.primary_number.ac _ ' ' _ subscriber.primary_number.sn, desc = 'Primary Number'});
|
|
|
|
-%]
|
|
[% FOR elem IN elements -%]
|
|
<tr>
|
|
<td>[% elem.desc %]</td>
|
|
<td>[% elem.value %]</td>
|
|
</tr>
|
|
[% END -%]
|
|
<tr>
|
|
<td>Alias Numbers</td>
|
|
<td>
|
|
[% FOR num IN subscriber.voip_numbers.all -%]
|
|
[% NEXT IF num.id == subscriber.primary_number.id -%]
|
|
[% num.cc %] [% num.ac %] [% num.sn %]<br/>
|
|
[% END -%]
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
[% END -%]
|
|
|
|
[% IF
|
|
((c.user.roles == 'admin' || c.user.roles == 'reseller') && c.user.call_data) ||
|
|
c.user.roles == 'subscriberadmin'
|
|
-%]
|
|
<div class="accordion-group">
|
|
<div class="accordion-heading">
|
|
<a class="accordion-toggle" data-toggle="collapse" data-parent="#subscriber_data" href="#collapse_calls">Call History</a>
|
|
</div>
|
|
<div class="accordion-body collapse" id="collapse_calls">
|
|
<div class="accordion-inner">
|
|
|
|
[%
|
|
helper.name = 'Calls';
|
|
helper.dt_columns = calls_dt_columns;
|
|
helper.column_sort = 'start_time';
|
|
helper.form_object = form;
|
|
helper.ajax_uri = c.uri_for_action('/subscriber/ajax_calls', [c.req.captures.0]);
|
|
|
|
PROCESS 'helpers/datatables.tt';
|
|
%]
|
|
</div>
|
|
</div>
|
|
</div>
|
|
[% END -%]
|
|
|
|
|
|
<div class="accordion-group">
|
|
<div class="accordion-heading">
|
|
<a class="accordion-toggle" data-toggle="collapse" data-parent="#subscriber_data" href="#collapse_voicemail">Voice Mails</a>
|
|
</div>
|
|
<div class="accordion-body collapse" id="collapse_voicemail">
|
|
<div class="accordion-inner">
|
|
[%
|
|
helper.name = 'Voicemails';
|
|
helper.column_sort = 'origtime';
|
|
helper.dt_columns = vm_dt_columns;
|
|
|
|
helper.form_object = form;
|
|
helper.ajax_uri = c.uri_for_action('/subscriber/ajax_voicemails', [c.req.captures.0]);
|
|
|
|
|
|
IF (c.user.roles == "admin" || c.user.roles == "reseller") && c.user.read_only != 1;
|
|
helper.dt_buttons = [
|
|
{ name = 'Play', uri = "details/voicemail/'+full.id+'/play", class = 'btn-small btn-tertiary', icon = 'icon-play' },
|
|
];
|
|
ELSE;
|
|
helper.dt_buttons = [
|
|
{ name = 'Play', uri = "details/voicemail/'+full.id+'/play", class = 'btn-small btn-tertiary', icon = 'icon-play' },
|
|
{ name = 'Delete', uri = "details/voicemail/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
|
|
];
|
|
END;
|
|
|
|
|
|
PROCESS 'helpers/datatables.tt';
|
|
%]
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="accordion-group">
|
|
<div class="accordion-heading">
|
|
<a class="accordion-toggle" data-toggle="collapse" data-parent="#subscriber_data" href="#collapse_regdev">Registered Devices</a>
|
|
</div>
|
|
<div class="accordion-body collapse" id="collapse_regdev">
|
|
<div class="accordion-inner">
|
|
|
|
[% IF (c.user.roles == "admin" || c.user.roles == "reseller") && c.user.read_only != 1 -%]
|
|
<a class="btn btn-tertiary btn-large" href="[% c.uri_for_action('/subscriber/create_registered', [c.req.captures.0]) %]"><i class="icon-star"></i> Create Permanent Registration</a>
|
|
[% END -%]
|
|
[%
|
|
helper.name = 'Registered Devices';
|
|
#helper.column_sort = 'origtime';
|
|
helper.dt_columns = reg_dt_columns;
|
|
|
|
helper.close_target = close_target;
|
|
helper.create_flag = reg_create_flag;
|
|
helper.edit_flag = reg_edit_flag;
|
|
helper.form_object = form;
|
|
helper.ajax_uri = c.uri_for_action('/subscriber/ajax_registered', [c.req.captures.0]);
|
|
|
|
IF (c.user.roles == "admin" || c.user.roles == "reseller") && c.user.read_only != 1;
|
|
helper.dt_buttons = [
|
|
{ name = 'Delete', uri = "details/registered/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
|
|
];
|
|
END;
|
|
|
|
|
|
PROCESS 'helpers/datatables.tt';
|
|
%]
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
[% IF c.config.features.callflow && c.user.call_data -%]
|
|
<div class="accordion-group">
|
|
<div class="accordion-heading">
|
|
<a class="accordion-toggle" data-toggle="collapse" data-parent="#subscriber_data" href="#collapse_cap">Captured Dialogs</a>
|
|
</div>
|
|
<div class="accordion-body collapse" id="collapse_cap">
|
|
<div class="accordion-inner">
|
|
|
|
[%
|
|
helper.name = 'Captured Dialogs';
|
|
#helper.column_sort = 'origtime';
|
|
helper.dt_columns = capture_dt_columns;
|
|
|
|
helper.close_target = close_target;
|
|
helper.create_flag = 0;
|
|
helper.edit_flag = 0;
|
|
helper.form_object = form;
|
|
helper.ajax_uri = c.uri_for_action('/subscriber/ajax_captured_calls', [c.req.captures.0]);
|
|
|
|
helper.dt_buttons = [
|
|
{ name = 'Call Flow', uri = "callflow/'+encodeURIComponent(full.call_id)+'/callmap", class = 'btn-small btn-primary', icon = 'icon-random' },
|
|
];
|
|
|
|
|
|
PROCESS 'helpers/datatables.tt';
|
|
%]
|
|
</div>
|
|
</div>
|
|
</div>
|
|
[% END -%]
|
|
|
|
|
|
</div>
|
|
|
|
[% IF edit_flag == 1 -%]
|
|
<!-- edit master data -->
|
|
[%
|
|
IF form.has_for_js;
|
|
form.render_repeatable_js;
|
|
END;
|
|
PROCESS "helpers/modal.tt";
|
|
modal_header(m.create_flag=0,
|
|
m.name = description);
|
|
form.render;
|
|
modal_footer();
|
|
modal_script(m.close_target = close_target);
|
|
-%]
|
|
[% END -%]
|
|
|
|
|
|
[% # vim: set tabstop=4 syntax=html expandtab: -%]
|