MT#3961 more translations

gjungwirth/test_sleeps
Gerhard Jungwirth 12 years ago
parent 1f37a80b84
commit 9040831ecd

@ -26,7 +26,7 @@ sub list_admin :PathPart('administrator') :Chained('/') :CaptureArgs(0) {
template => 'administrator/list.tt',
);
my $cols = [
{ name => "id", search => 1, title => "#" },
{ name => "id", search => 1, title => $c->loc("#") },
];
if($c->user->is_superuser) {
@{ $cols } = (@{ $cols }, { name => "reseller.name", search => 1, title => $c->loc("Reseller") });

@ -1,7 +1,6 @@
package NGCP::Panel::Controller::Billing;
use Sipwise::Base;
use Text::CSV_XS;
use I18N::Langinfo qw(langinfo DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7);
use DateTime::Format::ISO8601;
BEGIN { extends 'Catalyst::Controller'; }
@ -20,9 +19,6 @@ use NGCP::Panel::Utils::Datatables;
use NGCP::Panel::Utils::Preferences;
use NGCP::Panel::Utils::DateTime;
my @WEEKDAYS = map { langinfo($_) } (DAY_2, DAY_3, DAY_4, DAY_5, DAY_6, DAY_7, DAY_1);
#Monday Tuesday Wednesday Thursday Friday Saturday Sunday
sub auto :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) :AllowedRole(reseller) {
my ($self, $c) = @_;
$c->log->debug(__PACKAGE__ . '::auto');
@ -37,9 +33,9 @@ sub profile_list :Chained('/') :PathPart('billing') :CaptureArgs(0) {
my $profiles_rs = $self->$dispatch_to($c);
$c->stash(profiles_rs => $profiles_rs);
$c->stash->{profile_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => "id", "search" => 1, "title" => "#" },
{ name => "name", "search" => 1, "title" => "Name" },
{ name => "reseller.name", "search" => 1, "title" => "Reseller" },
{ name => "id", "search" => 1, "title" => $c->loc("#") },
{ name => "name", "search" => 1, "title" => $c->loc("Name") },
{ name => "reseller.name", "search" => 1, "title" => $c->loc("Reseller") },
]);
$c->stash(template => 'billing/list.tt');
@ -75,20 +71,20 @@ sub base :Chained('profile_list') :PathPart('') :CaptureArgs(1) {
my ($self, $c, $profile_id) = @_;
unless($profile_id && $profile_id->is_integer) {
$c->flash(messages => [{type => 'error', text => 'Invalid profile id detected!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Invalid profile id detected!')}]);
$c->response->redirect($c->uri_for());
return;
}
$c->stash->{zone_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => 'id', search => 1, title => '#' },
{ name => 'zone', search => 1, title => 'Zone' },
{ name => 'detail', search => 1, title => 'Zone Details' },
{ name => 'id', search => 1, title => $c->loc('#') },
{ name => 'zone', search => 1, title => $c->loc('Zone') },
{ name => 'detail', search => 1, title => $c->loc('Zone Details') },
]);
my $res = $c->stash->{profiles_rs}->find($profile_id);
unless(defined($res)) {
$c->flash(messages => [{type => 'error', text => 'Billing Profile does not exist!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Billing Profile does not exist!')}]);
$c->response->redirect($c->uri_for());
return;
}
@ -182,12 +178,12 @@ sub edit :Chained('base') :PathPart('edit') {
});
delete $c->session->{created_objects}->{reseller};
$c->flash(messages => [{type => 'success', text => 'Billing profile successfully updated'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Billing profile successfully updated')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to update billing profile.",
desc => $c->loc("Failed to update billing profile."),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/billing'));
@ -239,12 +235,12 @@ sub create :Chained('profile_list') :PathPart('create') :Args(0) {
$c->session->{created_objects}->{billing_profile} = { id => $profile->id };
delete $c->session->{created_objects}->{reseller};
$c->flash(messages => [{type => 'success', text => 'Billing profile successfully created'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Billing profile successfully created')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to create billing profile.",
desc => $c->loc("Failed to create billing profile."),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/billing'));
@ -264,11 +260,11 @@ sub create_without_reseller :Chained('profile_list') :PathPart('create/noreselle
sub fees_list :Chained('base') :PathPart('fees') :CaptureArgs(0) {
my ($self, $c) = @_;
$c->stash->{fee_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => 'id', search => 1, title => '#' },
{ name => 'source', search => 1, title => 'Source Pattern' },
{ name => 'destination', search => 1, title => 'Destination Pattern' },
{ name => 'direction', search => 1, title => 'Match Direction' },
{ name => 'billing_zone.detail', search => 1, title => 'Billing Zone' },
{ name => 'id', search => 1, title => $c->loc('#') },
{ name => 'source', search => 1, title => $c->loc('Source Pattern') },
{ name => 'destination', search => 1, title => $c->loc('Destination Pattern') },
{ name => 'direction', search => 1, title => $c->loc('Match Direction') },
{ name => 'billing_zone.detail', search => 1, title => $c->loc('Billing Zone') },
]);
$c->stash(template => 'billing/fees.tt');
}
@ -282,7 +278,7 @@ sub fees_base :Chained('fees_list') :PathPart('') :CaptureArgs(1) {
my ($self, $c, $fee_id) = @_;
unless($fee_id && $fee_id->is_integer) {
$c->flash(messages => [{type => 'error', text => 'Invalid billing fee id detected!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Invalid billing fee id detected!')}]);
$c->response->redirect($c->uri_for($c->stash->{profile}->{id}, 'fees'));
return;
}
@ -291,7 +287,7 @@ sub fees_base :Chained('fees_list') :PathPart('') :CaptureArgs(1) {
->search(undef, {join => 'billing_zone',})
->find($fee_id);
unless(defined($res)) {
$c->flash(messages => [{type => 'error', text => 'Billing Fee does not exist!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Billing Fee does not exist!')}]);
$c->response->redirect($c->uri_for($c->stash->{profile}->{id}, 'fees'));
return;
}
@ -333,7 +329,7 @@ sub fees_create :Chained('fees_list') :PathPart('create') :Args(0) {
->billing_fees->create($form->values);
delete $c->session->{created_objects}->{billing_zone};
$c->flash(messages => [{type => 'success', text => 'Billing Fee successfully created!'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Billing Fee successfully created!')}]);
$c->response->redirect($c->uri_for($c->stash->{profile}->{id}, 'fees'));
return;
}
@ -360,7 +356,7 @@ sub fees_upload :Chained('fees_list') :PathPart('upload') :Args(0) {
# TODO: check by formhandler?
unless($upload) {
$c->flash(messages => [{type => 'error', text => 'No Billing Fee file specified!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('No Billing Fee file specified!')}]);
$c->response->redirect($c->uri_for($c->stash->{profile}->{id}, 'fees'));
return;
}
@ -395,15 +391,15 @@ sub fees_upload :Chained('fees_list') :PathPart('upload') :Args(0) {
->billing_fees->create($row);
}
});
my $text = "Billing Fee successfully uploaded";
my $text = $c->loc('Billing Fee successfully uploaded');
if(@fails) {
$text .= ", but skipped the following line numbers: " . (join ", ", @fails);
$text .= $c->loc(", but skipped the following line numbers: ") . (join ", ", @fails);
}
$c->flash(messages => [{type => 'success', text => $text}]);
} catch($e) {
$c->log->error("failed to upload csv: $e");
$c->flash(messages => [{type => 'error', text => 'Failed to upload Billing Fees'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Failed to upload Billing Fees')}]);
};
$c->response->redirect($c->uri_for($c->stash->{profile}->{id}, 'fees'));
@ -441,7 +437,7 @@ sub fees_edit :Chained('fees_base') :PathPart('edit') :Args(0) {
$c->stash->{'fee_result'}
->update($form->values);
delete $c->session->{created_objects}->{billing_zone};
$c->flash(messages => [{type => 'success', text => 'Billing Profile successfully changed!'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Billing Profile successfully changed!')}]);
$c->response->redirect($c->uri_for($c->stash->{profile}->{id}, 'fees'));
return;
}
@ -454,12 +450,12 @@ sub fees_delete :Chained('fees_base') :PathPart('delete') :Args(0) {
my ($self, $c) = @_;
unless ( defined($c->stash->{'fee_result'}) ) {
$c->flash(messages => [{type => 'error', text => 'Billing fee not found!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Billing fee not found!')}]);
return;
}
$c->stash->{'fee_result'}->delete;
$c->flash(messages => [{type => 'success', text => 'Billing profile successfully deleted!'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Billing profile successfully deleted!')}]);
$c->response->redirect($c->uri_for($c->stash->{profile}->{id}, 'fees'));
}
@ -500,12 +496,12 @@ sub zones_create :Chained('zones_list') :PathPart('create') :Args(0) {
try {
my $zone = $c->stash->{'profile_result'}->billing_zones->create($form->values);
$c->session->{created_objects}->{billing_zone} = { id => $zone->id };
$c->flash(messages => [{type => 'success', text => 'Billing Zone successfully created'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Billing Zone successfully created')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to create billing zone.",
desc => $c->loc('Failed to create billing zone.'),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{zones_root_uri});
@ -522,14 +518,14 @@ sub zones_base :Chained('zones_list') :PathPart('') :CaptureArgs(1) {
my ($self, $c, $zone_id) = @_;
unless($zone_id && $zone_id->is_integer) {
$c->flash(messages => [{type => 'error', text => 'Invalid billing zone id detected'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Invalid billing zone id detected')}]);
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{zones_root_uri});
}
my $res = $c->stash->{'profile_result'}->billing_zones
->find($zone_id);
unless(defined($res)) {
$c->flash(messages => [{type => 'error', text => 'Billing zone does not exist!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Billing zone does not exist!')}]);
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{zones_root_uri});
}
$c->stash(zone_result => $res);
@ -540,12 +536,12 @@ sub zones_delete :Chained('zones_base') :PathPart('delete') :Args(0) {
try {
$c->stash->{zone_result}->delete;
$c->flash(messages => [{type => 'success', text => 'Billing zone successfully deleted'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Billing zone successfully deleted')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to delete billing zone.",
desc => $c->loc('Failed to delete billing zone.'),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{zones_root_uri});
@ -561,9 +557,9 @@ sub peaktimes_list :Chained('base') :PathPart('peaktimes') :CaptureArgs(0) {
$rs = $rs->search(undef, {order_by => 'start'});
$c->stash->{special_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => 'id', search => 1, title => '#' },
{ name => 'start', search => 1, title => 'Start Date' },
{ name => 'end', search => 1, title => 'End Date' },
{ name => 'id', search => 1, title => $c->loc('#') },
{ name => 'start', search => 1, title => $c->loc('Start Date') },
{ name => 'end', search => 1, title => $c->loc('End Date') },
]);
$c->stash(weekdays_result => $rs);
@ -580,7 +576,7 @@ sub peaktime_weekdays_base :Chained('peaktimes_list') :PathPart('weekday') :Capt
unless (defined $weekday_id && $weekday_id >= 0 && $weekday_id <= 6) {
$c->flash(messages => [{
type => 'error',
text => 'This weekday does not exist.'
text => $c->loc('This weekday does not exist.')
}]);
$c->response->redirect($c->uri_for_action(
"/billing/peaktimes", [$c->req->captures->[0]],
@ -612,7 +608,7 @@ sub peaktime_weekdays_edit :Chained('peaktime_weekdays_base') :PathPart('edit')
unless ($rs) {
$c->flash(messages => [{
type => 'error',
text => 'The timerange you wanted to delete does not exist.'
text => $c->loc('The timerange you wanted to delete does not exist.')
}]);
$c->response->redirect($c->uri_for_action(
"/billing/peaktimes", [$c->req->captures->[0]],
@ -634,6 +630,16 @@ sub peaktime_weekdays_edit :Chained('peaktime_weekdays_base') :PathPart('edit')
sub load_weekdays {
my ($self, $c) = @_;
my @WEEKDAYS = (
$c->loc('Monday'),
$c->loc('Tuesday'),
$c->loc('Wednesday'),
$c->loc('Thursday'),
$c->loc('Friday'),
$c->loc('Saturday'),
$c->loc('Sunday')
);
my @weekdays;
for(0 .. 6) {
$weekdays[$_] = {
@ -667,7 +673,7 @@ sub peaktime_specials_base :Chained('peaktimes_list') :PathPart('date') :Capture
my ($self, $c, $special_id) = @_;
unless($special_id && $special_id->is_integer) {
$c->flash(messages => [{type => 'error', text => 'Invalid peaktime date id detected!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Invalid peaktime date id detected!')}]);
$c->response->redirect($c->stash->{peaktimes_root_uri});
return;
}
@ -675,7 +681,7 @@ sub peaktime_specials_base :Chained('peaktimes_list') :PathPart('date') :Capture
my $res = $c->stash->{'profile_result'}->billing_peaktime_specials
->find($special_id);
unless(defined($res)) {
$c->flash(messages => [{type => 'error', text => 'Peaktime date does not exist!'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Peaktime date does not exist!')}]);
$c->response->redirect($c->stash->{peaktimes_root_uri});
return;
}
@ -704,12 +710,12 @@ sub peaktime_specials_edit :Chained('peaktime_specials_base') :PathPart('edit')
if($posted && $form->validated) {
try {
$c->stash->{special_result}->update($form->values);
$c->flash(messages => [{type => 'success', text => 'Special offpeak entry successfully updated'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Special offpeak entry successfully updated')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to update special offpeak entry.",
desc => $c->loc('Failed to update special offpeak entry.'),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{peaktimes_root_uri});
@ -728,7 +734,7 @@ sub peaktime_specials_delete :Chained('peaktime_specials_base') :PathPart('delet
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to delete special offpeak entry.",
desc => $c->loc('Failed to delete special offpeak entry.'),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{peaktimes_root_uri});
@ -756,12 +762,12 @@ sub peaktime_specials_create :Chained('peaktimes_list') :PathPart('date/create')
try {
$c->stash->{'profile_result'}->billing_peaktime_specials
->create($form->values);
$c->flash(messages => [{type => 'success', text => 'Special offpeak entry successfully created'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Special offpeak entry successfully created')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to create special offpeak entry.",
desc => $c->loc('Failed to create special offpeak entry.'),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{peaktimes_root_uri});

@ -27,12 +27,12 @@ sub list_contact :Chained('/') :PathPart('contact') :CaptureArgs(0) {
$c->stash(template => 'contact/list.tt');
$c->stash->{contact_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => "id", search => 1, title => "#" },
{ name => "reseller.name", search => 1, title => "Reseller" },
{ name => "firstname", search => 1, title => "First Name" },
{ name => "lastname", search => 1, title => "Last Name" },
{ name => "company", search => 1, title => "Company" },
{ name => "email", search => 1, title => "Email" },
{ name => "id", search => 1, title => $c->loc("#") },
{ name => "reseller.name", search => 1, title => $c->loc("Reseller") },
{ name => "firstname", search => 1, title => $c->loc("First Name") },
{ name => "lastname", search => 1, title => $c->loc("Last Name") },
{ name => "company", search => 1, title => $c->loc("Company") },
{ name => "email", search => 1, title => $c->loc("Email") },
]);
}
@ -78,12 +78,12 @@ sub create :Chained('list_contact') :PathPart('create') :Args(0) {
my $contact = $c->stash->{contacts}->create($form->values);
delete $c->session->{created_objects}->{reseller};
$c->session->{created_objects}->{contact} = { id => $contact->id };
$c->flash(messages => [{type => 'success', text => 'Contact successfully created'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Contact successfully created')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to create contact.",
desc => $c->loc("Failed to create contact."),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contact'));
@ -103,13 +103,13 @@ sub base :Chained('list_contact') :PathPart('') :CaptureArgs(1) {
my ($self, $c, $contact_id) = @_;
unless($contact_id && $contact_id->is_int) {
$c->flash(messages => [{type => 'error', text => 'Invalid contact id detected'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Invalid contact id detected')}]);
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contact'));
}
my $res = $c->stash->{contacts};
$c->stash(contact => $res->find($contact_id));
unless($c->stash->{contact}) {
$c->flash(messages => [{type => 'error', text => 'Contact not found'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Contact not found')}]);
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contact'));
}
}
@ -153,13 +153,13 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) {
}
delete $form->values->{reseller};
$c->stash->{contact}->update($form->values);
$c->flash(messages => [{type => 'success', text => 'Contact successfully changed'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Contact successfully changed')}]);
delete $c->session->{created_objects}->{reseller};
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to update contact.",
desc => $c->loc('Failed to update contact.'),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contact'));
@ -182,12 +182,12 @@ sub delete :Chained('base') :PathPart('delete') :Args(0) {
try {
$c->stash->{contact}->delete;
$c->flash(messages => [{type => 'success', text => 'Contact successfully deleted'}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Contact successfully deleted')}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to delete contact.",
desc => $c->loc('Failed to delete contact.'),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contact'));

@ -22,12 +22,12 @@ sub contract_list :Chained('/') :PathPart('contract') :CaptureArgs(0) {
my ($self, $c) = @_;
$c->stash->{contract_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => "id", search => 1, title => "#" },
{ name => "external_id", search => 1, title => "External #" },
{ name => "contact.email", search => 1, title => "Contact Email" },
{ name => "billing_mappings.product.name", search => 1, title => "Product" },
{ name => "billing_mappings.billing_profile.name", search => 1, title => "Billing Profile" },
{ name => "status", search => 1, title => "Status" },
{ name => "id", search => 1, title => $c->loc("#") },
{ name => "external_id", search => 1, title => $c->loc("External #") },
{ name => "contact.email", search => 1, title => $c->loc("Contact Email") },
{ name => "billing_mappings.product.name", search => 1, title => $c->loc("Product") },
{ name => "billing_mappings.billing_profile.name", search => 1, title => $c->loc("Billing Profile") },
{ name => "status", search => 1, title => $c->loc("Status") },
]);
my $rs = NGCP::Panel::Utils::Contract::get_contract_rs(
@ -62,7 +62,11 @@ sub base :Chained('contract_list') :PathPart('') :CaptureArgs(1) {
my ($self, $c, $contract_id) = @_;
unless($contract_id && $contract_id->is_integer) {
$c->flash(messages => [{type => 'error', text => 'Invalid contract id detected!'}]);
NGCP::Panel::Utils::Message->error(
c => $c,
log => 'Invalid contract id detected!',
desc => $c->loc('Invalid contract id detected!'),
);
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contract'));
}
@ -74,7 +78,11 @@ sub base :Chained('contract_list') :PathPart('') :CaptureArgs(1) {
->find($contract_id);
unless(defined($res)) {
$c->flash(messages => [{type => 'error', text => 'Contract does not exist'}]);
NGCP::Panel::Utils::Message->error(
c => $c,
log => 'Contract does not exist',
desc => $c->loc('Contract does not exist'),
);
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contract'));
}
@ -165,12 +173,12 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) {
delete $c->session->{created_objects}->{contact};
delete $c->session->{created_objects}->{billing_profile};
});
$c->flash(messages => [{type => 'success', text => "Contract successfully changed!"}]);
$c->flash(messages => [{type => 'success', text => $c->loc("Contract successfully changed!")}]);
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to update contract.",
desc => $c->loc("Failed to update contract."),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contract'));
@ -185,7 +193,7 @@ sub terminate :Chained('base') :PathPart('terminate') :Args(0) {
my $contract = $c->stash->{contract_result};
if ($contract->id == 1) {
$c->flash(messages => [{type => 'error', text => 'Cannot terminate contract with the id 1'}]);
$c->flash(messages => [{type => 'error', text => $c->loc('Cannot terminate contract with the id 1')}]);
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contract'));
}
@ -199,12 +207,12 @@ sub terminate :Chained('base') :PathPart('terminate') :Args(0) {
contract => $contract,
);
}
$c->flash(messages => [{type => 'success', text => "Contract successfully terminated"}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Contract successfully terminated')}]);
} catch ($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to terminate contract.",
desc => $c->loc("Failed to terminate contract."),
);
};
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contract'));
@ -297,13 +305,13 @@ sub peering_create :Chained('peering_list') :PathPart('create') :Args(0) {
delete $c->session->{created_objects}->{contact};
delete $c->session->{created_objects}->{billing_profile};
my $contract_id = $contract->id;
$c->flash(messages => [{type => 'success', text => "Contract #$contract_id successfully created"}]);
$c->flash(messages => [{type => 'success', text => $c->loc("Contract #[_1] successfully created",$contract_id)}]);
});
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to create contract.",
desc => $c->loc("Failed to create contract."),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contract'));
@ -342,7 +350,12 @@ sub reseller_ajax_contract_filter :Chained('reseller_list') :PathPart('ajax/cont
my ($self, $c, $contract_id) = @_;
unless($contract_id && $contract_id->is_int) {
$c->flash(messages => [{type => 'error', text => 'Invalid contract id detected'}]);
$c->flash(messages => [{type => 'error', text => }]);
NGCP::Panel::Utils::Message->error(
c => $c,
log => 'Invalid contract id detected',
desc => $c->loc('Invalid contract id detected'),
);
$c->response->redirect($c->uri_for());
return;
}
@ -353,11 +366,11 @@ sub reseller_ajax_contract_filter :Chained('reseller_list') :PathPart('ajax/cont
'me.id' => $contract_id,
});
my $contract_columns = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => "id", search => 1, title => "#" },
{ name => "external_id", search => 1, title => "External #" },
{ name => "contact.email", search => 1, title => "Contact Email" },
{ name => "billing_mappings.billing_profile.name", search => 1, title => "Billing Profile" },
{ name => "status", search => 1, title => "Status" },
{ name => "id", search => 1, title => $c->loc("#") },
{ name => "external_id", search => 1, title => $c->loc("External #") },
{ name => "contact.email", search => 1, title => $c->loc("Contact Email") },
{ name => "billing_mappings.billing_profile.name", search => 1, title => $c->loc("Billing Profile") },
{ name => "status", search => 1, title => $c->loc("Status") },
]);
NGCP::Panel::Utils::Datatables::process($c, $rs, $contract_columns);
$c->detach( $c->view("JSON") );
@ -417,13 +430,13 @@ sub reseller_create :Chained('reseller_list') :PathPart('create') :Args(0) {
delete $c->session->{created_objects}->{contact};
delete $c->session->{created_objects}->{billing_profile};
my $contract_id = $contract->id;
$c->flash(messages => [{type => 'success', text => "Contract #$contract_id successfully created"}]);
$c->flash(messages => [{type => 'success', text => $c->loc('Contract #[_1] successfully created',$contract_id)}]);
});
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => "Failed to create contract.",
desc => $c->loc("Failed to create contract."),
);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/contract'));

@ -80,7 +80,7 @@ msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:37
msgid "Active"
msgstr ""
msgstr "Aktiv"
#: lib/NGCP/Panel/Utils/DbStrings.pm:22
msgid "Administrative Block List for inbound calls"

@ -19,7 +19,15 @@ msgstr ""
msgid "\"Calling line identification restriction\" - if set to true, the CLI is not displayed on outgoing calls."
msgstr ""
#: lib/NGCP/Panel/Controller/Root.pm:59
#: lib/NGCP/Panel/Controller/Administrator.pm:29 lib/NGCP/Panel/Controller/Billing.pm:211 lib/NGCP/Panel/Controller/Billing.pm:33 lib/NGCP/Panel/Controller/Billing.pm:508 lib/NGCP/Panel/Controller/Billing.pm:77 lib/NGCP/Panel/Controller/Contact.pm:30 lib/NGCP/Panel/Controller/Contract.pm:25 lib/NGCP/Panel/Controller/Contract.pm:369
msgid "#"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:344
msgid ", but skipped the following line numbers: "
msgstr ""
#: lib/NGCP/Panel/Controller/Root.pm:72
msgid "403 - Permission denied"
msgstr ""
@ -47,7 +55,7 @@ msgstr ""
msgid "A username used for authentication against the peer host."
msgstr ""
#: share/templates/administrator/list.tt:20 share/templates/administrator/list.tt:28
#: share/templates/administrator/list.tt:21 share/templates/administrator/list.tt:29
msgid "API key"
msgstr ""
@ -103,6 +111,10 @@ msgstr ""
msgid "Administrator successfully updated"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:22 share/templates/widgets/reseller_topmenu_settings.tt:8
msgid "Administrators"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:143 lib/NGCP/Panel/Utils/DbStrings.pm:145
msgid "Allow access from the given list of IP addresses and/or IP nets."
msgstr ""
@ -135,10 +147,86 @@ msgstr ""
msgid "Area Code"
msgstr ""
#: share/templates/helpers/datatables.tt:163
#: share/templates/billing/peaktimes.tt:5 share/templates/helpers/datatables.tt:163
msgid "Back"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:29 share/templates/widgets/reseller_topmenu_settings.tt:13
msgid "Billing"
msgstr ""
#: share/templates/billing/fees.tt:4
msgid "Billing Fee"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:238
msgid "Billing Fee does not exist!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:280
msgid "Billing Fee successfully created!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:342
msgid "Billing Fee successfully uploaded"
msgstr ""
#: share/templates/billing/fees.tt:1
msgid "Billing Fees"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:29 lib/NGCP/Panel/Controller/Contract.pm:372 share/templates/billing/list.tt:3
msgid "Billing Profile"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:84
msgid "Billing Profile does not exist!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:388
msgid "Billing Profile successfully changed!"
msgstr ""
#: share/templates/billing/list.tt:1
msgid "Billing Profiles"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:215 share/templates/billing/zones.tt:3
msgid "Billing Zone"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:447
msgid "Billing Zone successfully created"
msgstr ""
#: share/templates/billing/zones.tt:1
msgid "Billing Zones"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:401
msgid "Billing fee not found!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:186
msgid "Billing profile successfully created"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:406
msgid "Billing profile successfully deleted!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:129
msgid "Billing profile successfully updated"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:476
msgid "Billing zone does not exist!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:487
msgid "Billing zone successfully deleted"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:12
msgid "Block List for inbound calls"
msgstr ""
@ -163,10 +251,22 @@ msgstr ""
msgid "CLI of CloudPBX Pilot Subscriber"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:9
msgid "Call Distribution"
msgstr ""
#: share/templates/widgets/subscriber_topmenu_settings.tt:8 share/templates/widgets/subscriberadmin_topmenu_settings.tt:8
msgid "Call List"
msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:208
msgid "Cannot delete myself"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:196
msgid "Cannot terminate contract with the id 1"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:163
msgid "Choose the logic for RTP/SRTP transcoding (SAVP profile) for the RTP relay"
msgstr ""
@ -195,6 +295,38 @@ msgstr ""
msgid "CloudPBX Subscriber"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:34
msgid "Company"
msgstr ""
#: share/templates/contact/list.tt:3
msgid "Contact"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:27 lib/NGCP/Panel/Controller/Contract.pm:371
msgid "Contact Email"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:112
msgid "Contact not found"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:156
msgid "Contact successfully changed"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:81
msgid "Contact successfully created"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:185
msgid "Contact successfully deleted"
msgstr ""
#: share/templates/contact/list.tt:1 share/templates/widgets/admin_topmenu_settings.tt:26 share/templates/widgets/reseller_topmenu_settings.tt:10
msgid "Contacts"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:19
msgid "Contains wildcarded SIP usernames (the localpart of the whole SIP URI, eg., \"user\" of SIP URI \"user@example.com\") that are (not) allowed to be called by the subscriber. \"*\", \"?\" and \"x-y\" with \"x\" and \"y\" representing numbers from 0 to 9 may be used as wildcards like in shell patterns."
msgstr ""
@ -203,14 +335,60 @@ msgstr ""
msgid "Contains wildcarded SIP usernames (the localpart of the whole SIP URI, eg., \"user\" of SIP URI \"user@example.com\") that are (not) allowed to call the subscriber. \"*\", \"?\" and \"x-y\" with \"x\" and \"y\" representing numbers from 0 to 9 may be used as wildcards like in shell patterns."
msgstr ""
#. ($contract_id)
#: lib/NGCP/Panel/Controller/Contract.pm:308 lib/NGCP/Panel/Controller/Contract.pm:433
msgid "Contract #%1 successfully created"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:84
msgid "Contract does not exist"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:176
msgid "Contract successfully changed!"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:210
msgid "Contract successfully terminated"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:44
msgid "Country Code"
msgstr ""
#: share/templates/administrator/list.tt:24
#: share/templates/billing/zones.tt:21
msgid "Create"
msgstr ""
#. (m.name)
#: share/templates/helpers/modal.tt:6
msgid "Create %1"
msgstr ""
#: share/templates/administrator/list.tt:25
msgid "Create Administrator"
msgstr ""
#: share/templates/billing/list.tt:22
msgid "Create Billing Profile"
msgstr ""
#: share/templates/contact/list.tt:22
msgid "Create Contact"
msgstr ""
#: share/templates/billing/fees.tt:23
msgid "Create Fee Entry"
msgstr ""
#: share/templates/billing/peaktimes.tt:74
msgid "Create Special Off-Peak Date"
msgstr ""
#: share/templates/widgets/subscriberadmin_topmenu_settings.tt:12
msgid "Customer Settings"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:181
msgid "Customer Sound Set"
msgstr ""
@ -219,26 +397,63 @@ msgstr ""
msgid "Customer specific Sound Set used for PBX auto-attendant prompts, customer-specific announcements etc."
msgstr ""
#: share/layout/body.tt:28
#: share/templates/widgets/admin_topmenu_settings.tt:24 share/templates/widgets/reseller_topmenu_settings.tt:9
msgid "Customers"
msgstr ""
#: share/layout/body.tt:39
msgid "Dashboard"
msgstr ""
#: share/templates/administrator/list.tt:19
#: share/templates/billing/peaktimes.tt:56
msgid "Date Definition"
msgstr ""
#: share/templates/billing/peaktimes.tt:53
msgid "Dates"
msgstr ""
#: share/templates/administrator/list.tt:20 share/templates/billing/fees.tt:20 share/templates/billing/peaktimes.tt:71 share/templates/billing/zones.tt:18 share/templates/contact/list.tt:19
msgid "Delete"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:213
msgid "Destination Pattern"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:36 share/templates/widgets/reseller_topmenu_settings.tt:18
msgid "Device Management"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:148
msgid "Disable NAT SIP pings"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:27 share/templates/widgets/reseller_topmenu_settings.tt:11
msgid "Domains"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:149
msgid "Don't do NAT ping for domain/user. Use with caution: this only makes sense on the access network which does not need pings (e.g. CDMA)"
msgstr ""
#: share/templates/administrator/list.tt:18 share/templates/helpers/pref_table.tt:137
#: share/templates/administrator/list.tt:19 share/templates/billing/fees.tt:19 share/templates/billing/list.tt:17 share/templates/billing/peaktimes.tt:43 share/templates/billing/peaktimes.tt:70 share/templates/contact/list.tt:18 share/templates/helpers/pref_table.tt:137
msgid "Edit"
msgstr ""
#. (m.name)
#: share/templates/helpers/modal.tt:6
msgid "Edit %1"
msgstr ""
#: share/templates/billing/fees.tt:25
msgid "Edit Zones"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:35
msgid "Email"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:110
msgid "Emergency CLI"
msgstr ""
@ -271,6 +486,10 @@ msgstr ""
msgid "Enable Session-Timers"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:510
msgid "End Date"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:177
msgid "Export subscriber to shared XMPP Buddylist"
msgstr ""
@ -279,6 +498,10 @@ msgstr ""
msgid "Export this subscriber into the shared XMPP buddy list for the customer."
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:26 lib/NGCP/Panel/Controller/Contract.pm:370
msgid "External #"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:77
msgid "External Contract #"
msgstr ""
@ -291,18 +514,82 @@ msgstr ""
msgid "Failed to create administrator."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:191
msgid "Failed to create billing profile."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:452
msgid "Failed to create billing zone."
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:86
msgid "Failed to create contact."
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:314 lib/NGCP/Panel/Controller/Contract.pm:439
msgid "Failed to create contract."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:718
msgid "Failed to create special offpeak entry."
msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:218
msgid "Failed to delete administrator."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:492
msgid "Failed to delete billing zone."
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:190
msgid "Failed to delete contact."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:685
msgid "Failed to delete special offpeak entry."
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:215
msgid "Failed to terminate contract."
msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:192
msgid "Failed to update administrator."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:134
msgid "Failed to update billing profile."
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:162
msgid "Failed to update contact."
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:181
msgid "Failed to update contract."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:666
msgid "Failed to update special offpeak entry."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:350
msgid "Failed to upload Billing Fees"
msgstr ""
#: share/templates/billing/list.tt:18
msgid "Fees"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:79
msgid "Find Subscriber by UUID"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:32
msgid "First Name"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:80
msgid "For incoming calls from this peer, find the destination subscriber by a uuid parameter in R-URI which has been sent in Contact at outbound registration."
msgstr ""
@ -323,6 +610,10 @@ msgstr ""
msgid "Force outbound call via socket"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:586
msgid "Friday"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:139 lib/NGCP/Panel/Utils/DbStrings.pm:141
msgid "Group of addresses and/or IP nets allowed access."
msgstr ""
@ -331,7 +622,7 @@ msgstr ""
msgid "Hide own number for outbound calls"
msgstr ""
#: share/layout/body.tt:38
#: share/layout/body.tt:49
msgid "Home"
msgstr ""
@ -423,10 +714,46 @@ msgstr ""
msgid "Invalid administrator id detected"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:229
msgid "Invalid billing fee id detected!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:469
msgid "Invalid billing zone id detected"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:106
msgid "Invalid contact id detected"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:357
msgid "Invalid contract id detected"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:68
msgid "Invalid contract id detected!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:624
msgid "Invalid peaktime date id detected!"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:71
msgid "Invalid profile id detected!"
msgstr ""
#: lib/NGCP/Panel/Controller/Contact.pm:33
msgid "Last Name"
msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:43
msgid "Lawful Intercept"
msgstr ""
#: share/templates/widgets/subscriber_topmenu_settings.tt:11 share/templates/widgets/subscriberadmin_topmenu_settings.tt:11
msgid "Line Settings"
msgstr ""
#: share/templates/helpers/datatables.tt:207
msgid "Loading..."
msgstr ""
@ -435,11 +762,16 @@ msgstr ""
msgid "Lock Level"
msgstr ""
#. (login_name)
#: share/layout/body.tt:18
msgid "Logged in as %1"
msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:35
msgid "Login"
msgstr ""
#: share/layout/body.tt:20
#: share/layout/body.tt:31
msgid "Logout"
msgstr ""
@ -451,6 +783,10 @@ msgstr ""
msgid "Master"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:214
msgid "Match Direction"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:73
msgid "Maximum number of concurrent outgoing sessions (calls) coming from a subscriber or going to a peer."
msgstr ""
@ -471,10 +807,26 @@ msgstr ""
msgid "Mobile Push Expiry Timeout"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:582
msgid "Monday"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:4
msgid "Monitoring & Statistics"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:52
msgid "NCOS Level"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:32 share/templates/widgets/reseller_topmenu_settings.tt:15
msgid "NCOS Levels"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:34
msgid "Name"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:40
msgid "Network-Provided CLI"
msgstr ""
@ -483,6 +835,15 @@ msgstr ""
msgid "Network-Provided Display Name"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:307
msgid "No Billing Fee file specified!"
msgstr ""
#. (profile.name)
#: share/templates/billing/peaktimes.tt:1
msgid "Off-peak-times for %1"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:136
msgid "Outbound Diversion Header"
msgstr ""
@ -511,6 +872,14 @@ msgstr ""
msgid "PIN to bypass outbound Block List"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:632
msgid "Peaktime date does not exist!"
msgstr ""
#: share/templates/billing/list.tt:19
msgid "Peaktimes"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:66
msgid "Peer Authentication Domain"
msgstr ""
@ -523,6 +892,14 @@ msgstr ""
msgid "Peer Authentication User"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:30
msgid "Peerings"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:28
msgid "Product"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:164
msgid "RTCP Feedback Mode"
msgstr ""
@ -535,6 +912,10 @@ msgstr ""
msgid "Read Only"
msgstr ""
#: share/templates/widgets/subscriber_topmenu_settings.tt:10 share/templates/widgets/subscriberadmin_topmenu_settings.tt:10
msgid "Registered Devices"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:108
msgid "Reject Emergency Calls"
msgstr ""
@ -543,18 +924,34 @@ msgstr ""
msgid "Reject emergency calls from this user or domain."
msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:32
#: lib/NGCP/Panel/Controller/Administrator.pm:32 lib/NGCP/Panel/Controller/Billing.pm:35 lib/NGCP/Panel/Controller/Contact.pm:31
msgid "Reseller"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:25
msgid "Reseller and Peering Contracts"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:23
msgid "Resellers"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:81
msgid "Rewrite Rule Set"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:31 share/templates/widgets/reseller_topmenu_settings.tt:14
msgid "Rewrite Rule Sets"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:38
msgid "Ring Timeout for CFT"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:11
msgid "SIP Call Flows"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:99
msgid "SIP Session Timers refresh interval (seconds). Should be always greater than min_timer preference. SBC will make refresh at the half of this interval."
msgstr ""
@ -607,10 +1004,18 @@ msgstr ""
msgid "Same as \"ncos\", but may only be set by administrators and is applied prior to the user setting."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:587
msgid "Saturday"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:129
msgid "Search for partial match of user-provided number (UPN) to subscriber's primary E164 number and aliases. If it mathes, take UPN as valid wihout allowed_clis check and copy UPN to network-provided number (NPN)."
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:34
msgid "Security Bans"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:9
msgid "See \"lock_voip_account_subscriber\" for a list of possible values. A lock value of \"none\" will not be returned to the caller. Read-only setting."
msgstr ""
@ -655,6 +1060,10 @@ msgstr ""
msgid "Sets upper limit on accepted Min-SE value in in SBC."
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:18 share/templates/widgets/reseller_topmenu_settings.tt:4 share/templates/widgets/subscriber_topmenu_settings.tt:4 share/templates/widgets/subscriberadmin_topmenu_settings.tt:4
msgid "Settings"
msgstr ""
#: lib/NGCP/Panel/Controller/Administrator.pm:40
msgid "Show CDRs"
msgstr ""
@ -667,6 +1076,22 @@ msgstr ""
msgid "Sound Set used for system prompts like error announcements etc."
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:33 share/templates/widgets/reseller_topmenu_settings.tt:16
msgid "Sound Sets"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:212
msgid "Source Pattern"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:713
msgid "Special offpeak entry successfully created"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:661
msgid "Special offpeak entry successfully updated"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:39
msgid "Specifies how many seconds the system should wait before redirecting the call if \"cft\" is set."
msgstr ""
@ -695,10 +1120,34 @@ msgstr ""
msgid "Specifies whether registration at the peer host is desired."
msgstr ""
#: share/templates/billing/peaktimes.tt:26
msgid "Start - End"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:509
msgid "Start Date"
msgstr ""
#: lib/NGCP/Panel/Controller/Contract.pm:30 lib/NGCP/Panel/Controller/Contract.pm:373
msgid "Status"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:28 share/templates/widgets/reseller_topmenu_settings.tt:12
msgid "Subscribers"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:588
msgid "Sunday"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:106
msgid "System Sound Set"
msgstr ""
#: share/templates/widgets/admin_topmenu_settings.tt:8
msgid "System Statistics"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:117
msgid "The SIP header field to fetch the network-provided-number from for inbound calls"
msgstr ""
@ -787,6 +1236,18 @@ msgstr ""
msgid "The string to be used as a User-Agent header replacement if ua_header_mode is set to \"replace\"."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:559
msgid "The timerange you wanted to delete does not exist."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:527
msgid "This weekday does not exist."
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:585
msgid "Thursday"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:132
msgid "Total max of outbound calls of Customer"
msgstr ""
@ -803,6 +1264,14 @@ msgstr ""
msgid "Total max of overall concurrent calls"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:583
msgid "Tuesday"
msgstr ""
#: share/templates/billing/fees.tt:24
msgid "Upload Fees as CSV"
msgstr ""
#: lib/NGCP/Panel/Utils/DbStrings.pm:87
msgid "Use Number instead of Contact first for outbound calls"
msgstr ""
@ -819,7 +1288,31 @@ msgstr ""
msgid "User-Provided Number"
msgstr ""
#: share/layout/body.tt:68
#: share/templates/widgets/subscriber_topmenu_settings.tt:9 share/templates/widgets/subscriberadmin_topmenu_settings.tt:9
msgid "Voicebox Messages"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:584
msgid "Wednesday"
msgstr ""
#: share/templates/billing/peaktimes.tt:25
msgid "Weekday"
msgstr ""
#: share/templates/billing/peaktimes.tt:20
msgid "Weekdays"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:78
msgid "Zone"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:79
msgid "Zone Details"
msgstr ""
#: share/layout/body.tt:79
msgid "all rights reserved"
msgstr ""

@ -10,12 +10,12 @@
<div id="top-nav">
<ul class="pull-right">
<li>
<i class="icon-user"></i> Logged in as
[% IF c.user.roles == 'admin' || c.user.roles == 'reseller' -%]
[% c.user.login %]
[% ELSE -%]
[% c.user.webusername %]@[% c.user.domain.domain %]
[% END -%]
[%- IF c.user.roles == 'admin' || c.user.roles == 'reseller' -%]
[% login_name = c.user.login %]
[%- ELSE -%]
[% login_name = c.user.webusername %]@[% c.user.domain.domain %]
[%- END -%]
<i class="icon-user"></i> [% c.loc("Logged in as [_1]", login_name) %]
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">

@ -0,0 +1,24 @@
{
"sEmptyTable": "Keine Daten verfügbar",
"sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
"sInfoEmpty": "0 bis 0 von 0 Einträgen",
"sInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "_MENU_ Einträge anzeigen",
"sLoadingRecords": "Loading...",
"sProcessing": "Bitte warten...",
"sSearch": "Suchen:",
"sZeroRecords": "Keine Einträge vorhanden.",
"oPaginate": {
"sFirst": "Erster",
"sLast": "Letzter",
"sNext": "Nächster",
"sPrevious": "Zurück"
},
"oAria": {
"sSortAscending": ": activate to sort column ascending",
"sSortDescending": ": activate to sort column descending"
}
}

@ -1,4 +1,4 @@
[% META title = 'Administrators' -%]
[% site_config.title = c.loc('Administrators') -%]
[%
helper.name = c.loc('Administrator');
helper.show_create_button = 1;

@ -1,7 +1,7 @@
[% META title = 'Billing Fees' -%]
[% site_config.title = c.loc('Billing Fees') -%]
[%
helper.name = 'Billing Fees';
helper.name = c.loc('Billing Fee');
helper.messages = messages;
helper.dt_columns = fee_dt_columns;
helper.length_change = 1;
@ -15,13 +15,13 @@
helper.tmpuri = c.uri_for( profile.id, 'fees');
UNLESS c.user.read_only;
helper.dt_buttons = [
{ name = 'Edit', uri = helper.tmpuri _ "/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = 'Delete', uri = helper.tmpuri _ "/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
{ name = c.loc('Edit'), uri = helper.tmpuri _ "/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = c.loc('Delete'), uri = helper.tmpuri _ "/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
];
helper.top_buttons = [
{ name = 'Create Fee Entry', uri = c.uri_for( profile.id, 'fees') _ "/create", icon = 'icon-star' },
{ name = 'Upload Fees as CSV', uri = c.uri_for_action('/billing/fees_upload',[c.req.captures.0]), icon = 'icon-star' },
{ name = 'Edit Zones', uri = c.uri_for_action('/billing/zones',[c.req.captures.0]), icon = 'icon-star' },
{ name = c.loc('Create Fee Entry'), uri = c.uri_for( profile.id, 'fees') _ "/create", icon = 'icon-star' },
{ name = c.loc('Upload Fees as CSV'), uri = c.uri_for_action('/billing/fees_upload',[c.req.captures.0]), icon = 'icon-star' },
{ name = c.loc('Edit Zones'), uri = c.uri_for_action('/billing/zones',[c.req.captures.0]), icon = 'icon-star' },
];
END;

@ -1,6 +1,6 @@
[% META title = 'Billing Profiles' -%]
[% site_config.title = c.loc('Billing Profiles') -%]
[%
helper.name = 'Billing Profiles';
helper.name = c.loc('Billing Profile');
helper.messages = messages;
helper.dt_columns = profile_dt_columns;
helper.length_change = 1;
@ -13,12 +13,12 @@
UNLESS c.user.read_only;
helper.dt_buttons = [
{ name = 'Edit', uri = "/billing/'+full[\"id\"]+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = 'Fees', uri = "/billing/'+full[\"id\"]+'/fees", class = 'btn-small btn-tertiary', icon = 'icon-shopping-cart' },
{ name = 'Peaktimes', uri = "/billing/'+full[\"id\"]+'/peaktimes", class = 'btn-small btn-tertiary', icon = 'icon-time' },
{ name = c.loc('Edit'), uri = "/billing/'+full[\"id\"]+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = c.loc('Fees'), uri = "/billing/'+full[\"id\"]+'/fees", class = 'btn-small btn-tertiary', icon = 'icon-shopping-cart' },
{ name = c.loc('Peaktimes'), uri = "/billing/'+full[\"id\"]+'/peaktimes", class = 'btn-small btn-tertiary', icon = 'icon-time' },
];
helper.top_buttons = [
{ name = 'Create Billing Profile', uri = c.uri_for('/billing/create'), icon = 'icon-star' },
{ name = c.loc('Create Billing Profile'), uri = c.uri_for('/billing/create'), icon = 'icon-star' },
];
END;

@ -1,8 +1,8 @@
[% site_config.title = 'Off-peak-times for ' _ profile.name -%]
[% site_config.title = c.loc('Off-peak-times for [_1]', profile.name) -%]
<div class="row">
<span>
<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('/back') %]"><i class="icon-arrow-left"></i>[% c.loc('Back') %]</a>
</span>
</div>
[% back_created = 1 -%]
@ -17,13 +17,13 @@
<div class="ngcp-separator"></div>
<h3>Weekdays</h3>
<h3>[% c.loc('Weekdays') %]</h3>
<table class="table table-bordered table-striped table-highlight table-hover">
<thead>
<tr>
<th>Weekday</th>
<th>Start - End</th>
<th>[% c.loc('Weekday') %]</th>
<th>[% c.loc('Start - End') %]</th>
<th class="ngcp-actions-column"></th>[% #Actions %]
</tr>
</thead>
@ -40,7 +40,7 @@
[% IF w.edit_link %]
<div class="sw_actions pull-right">
<a class="btn btn-small btn-primary" href="[% w.edit_link %]">
<i class="icon-edit"></i> Edit
<i class="icon-edit"></i> [% c.loc('Edit') %]
</a>
</div>
[% END %]
@ -50,10 +50,10 @@
</tbody>
</table>
<h3>Dates</h3>
<h3>[% c.loc('Dates') %]</h3>
[%
helper.name = 'Date Definitions';
helper.name = c.loc('Date Definition');
helper.dt_columns = special_dt_columns;
helper.create_flag = peaktimes_special_createflag;
@ -66,11 +66,11 @@
UNLESS c.user.read_only;
helper.dt_buttons = [
{ name = 'Edit', uri = helper.tmpuri _ "/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = 'Delete', uri = helper.tmpuri _ "/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
{ name = c.loc('Edit'), uri = helper.tmpuri _ "/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = c.loc('Delete'), uri = helper.tmpuri _ "/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
];
helper.top_buttons = [
{ name = 'Create Special Off-Peak Date', uri = helper.tmpuri _ "/create", icon = 'icon-star' },
{ name = c.loc('Create Special Off-Peak Date'), uri = helper.tmpuri _ "/create", icon = 'icon-star' },
];
END;

@ -1,6 +1,6 @@
[% META title = 'Billing Zones' -%]
[% site_config.title = c.loc('Billing Zones') -%]
[%
helper.name = 'Billing Zones';
helper.name = c.loc('Billing Zone');
helper.messages = messages;
helper.dt_columns = zone_dt_columns;
helper.length_change = 1;
@ -14,10 +14,10 @@
helper.tmpuri = c.uri_for( profile.id, 'zones');
UNLESS c.user.read_only;
helper.dt_buttons = [
{ name = 'Delete', uri = helper.tmpuri _ "/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
{ name = c.loc('Delete'), uri = helper.tmpuri _ "/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
];
helper.top_buttons = [
{ name = 'Create', uri = c.uri_for(profile.id, 'zones', 'create'), icon = 'icon-star' },
{ name = c.loc('Create'), uri = c.uri_for(profile.id, 'zones', 'create'), icon = 'icon-star' },
];
END;

@ -1,6 +1,6 @@
[% META title = 'Contacts' -%]
[% site_config.title = c.loc('Contacts') -%]
[%
helper.name = 'Contact';
helper.name = c.loc('Contact');
helper.data = contacts;
helper.messages = messages;
helper.dt_columns = contact_dt_columns;
@ -14,11 +14,11 @@
UNLESS c.user.read_only;
helper.dt_buttons = [
{ name = 'Edit', uri = "/contact/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = 'Delete', uri = "/contact/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' condition = 'full.deletable' },
{ name = c.loc('Edit'), uri = "/contact/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = c.loc('Delete'), uri = "/contact/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' condition = 'full.deletable' },
];
helper.top_buttons = [
{ name = 'Create Contact', uri = c.uri_for('/contact/create'), icon = 'icon-star' },
{ name = c.loc('Create Contact'), uri = c.uri_for('/contact/create'), icon = 'icon-star' },
];
END;

@ -69,7 +69,7 @@ $(document).ready(function() {
],
[% END -%]
"oLanguage": {
"sUrl": "js/i18n/[% c.loc('dataTables.default.js') %]"
"sUrl": "/js/i18n/[% c.loc('dataTables.default.js') %]"
},
"aoColumns": [
[% FOREACH f IN helper.column_fields -%]

@ -3,7 +3,7 @@
<div id="mod_edit" class="modal hide ngcp-modal">
<div class="modal-header">
<button id="mod_close" type="button" class="close mod_close">×</button>
<h3>[% m.create_flag == 1 ? 'Create' : 'Edit' %] [% m.name %]</h3>
<h3>[% m.create_flag == 1 ? c.loc('Create [_1]',m.name) : c.loc('Edit [_1]',m.name) %]</h3>
</div>
[% END -%]

@ -1,39 +1,39 @@
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">
<i class="icon-signal"></i>
<span>Monitoring &amp; Statistics</span>
<span>[% c.loc('Monitoring & Statistics') | html %]</span>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="[% c.uri_for('/statistics') %]">System Statistics</a></li>
<li><a href="[% c.uri_for('/calls') %]">Call Distribution</a></li>
<li><a href="[% c.uri_for('/statistics') %]">[% c.loc('System Statistics') %]</a></li>
<li><a href="[% c.uri_for('/calls') %]">[% c.loc('Call Distribution') %]</a></li>
[% IF c.config.features.callflow -%]
<li><a href="[% c.uri_for('/callflow') %]">SIP Call Flows</a></li>
<li><a href="[% c.uri_for('/callflow') %]">[% c.loc('SIP Call Flows') %]</a></li>
[% END -%]
</ul>
</li>
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">
<i class="icon-th"></i>
<span>Settings</span>
<span>[% c.loc('Settings') %]</span>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="[% c.uri_for('/administrator') %]">Administrators</a></li>
<li><a href="[% c.uri_for('/reseller') %]">Resellers</a></li>
<li><a href="[% c.uri_for('/customer') %]">Customers</a></li>
<li><a href="[% c.uri_for('/contract') %]">Reseller and Peering Contracts</a></li>
<li><a href="[% c.uri_for('/contact') %]">Contacts</a></li>
<li><a href="[% c.uri_for('/domain') %]">Domains</a></li>
<li><a href="[% c.uri_for('/subscriber') %]">Subscribers</a></li>
<li><a href="[% c.uri_for('/billing') %]">Billing</a></li>
<li><a href="[% c.uri_for('/peering') %]">Peerings</a></li>
<li><a href="[% c.uri_for('/rewrite') %]">Rewrite Rule Sets</a></li>
<li><a href="[% c.uri_for('/ncos') %]">NCOS Levels</a></li>
<li><a href="[% c.uri_for('/sound') %]">Sound Sets</a></li>
<li><a href="[% c.uri_for('/security') %]">Security Bans</a></li>
<li><a href="[% c.uri_for('/administrator') %]">[% c.loc('Administrators') %]</a></li>
<li><a href="[% c.uri_for('/reseller') %]">[% c.loc('Resellers') %]</a></li>
<li><a href="[% c.uri_for('/customer') %]">[% c.loc('Customers') %]</a></li>
<li><a href="[% c.uri_for('/contract') %]">[% c.loc('Reseller and Peering Contracts') %]</a></li>
<li><a href="[% c.uri_for('/contact') %]">[% c.loc('Contacts') %]</a></li>
<li><a href="[% c.uri_for('/domain') %]">[% c.loc('Domains') %]</a></li>
<li><a href="[% c.uri_for('/subscriber') %]">[% c.loc('Subscribers') %]</a></li>
<li><a href="[% c.uri_for('/billing') %]">[% c.loc('Billing') %]</a></li>
<li><a href="[% c.uri_for('/peering') %]">[% c.loc('Peerings') %]</a></li>
<li><a href="[% c.uri_for('/rewrite') %]">[% c.loc('Rewrite Rule Sets') %]</a></li>
<li><a href="[% c.uri_for('/ncos') %]">[% c.loc('NCOS Levels') %]</a></li>
<li><a href="[% c.uri_for('/sound') %]">[% c.loc('Sound Sets') %]</a></li>
<li><a href="[% c.uri_for('/security') %]">[% c.loc('Security Bans') %]</a></li>
[% IF c.config.features.cloudpbx -%]
<li><a href="[% c.uri_for('/device') %]">Device Management</a></li>
<li><a href="[% c.uri_for('/device') %]">[% c.loc('Device Management') %]</a></li>
[% END -%]
</ul>
</li>

@ -1,21 +1,21 @@
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">
<i class="icon-th"></i>
<span>Settings</span>
<span>[% c.loc('Settings') %]</span>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="[% c.uri_for('/administrator') %]">Administrators</a></li>
<li><a href="[% c.uri_for('/customer') %]">Customers</a></li>
<li><a href="[% c.uri_for('/contact') %]">Contacts</a></li>
<li><a href="[% c.uri_for('/domain') %]">Domains</a></li>
<li><a href="[% c.uri_for('/subscriber') %]">Subscribers</a></li>
<li><a href="[% c.uri_for('/billing') %]">Billing</a></li>
<li><a href="[% c.uri_for('/rewrite') %]">Rewrite Rule Sets</a></li>
<li><a href="[% c.uri_for('/ncos') %]">NCOS Levels</a></li>
<li><a href="[% c.uri_for('/sound') %]">Sound Sets</a></li>
<li><a href="[% c.uri_for('/administrator') %]">[% c.loc('Administrators') %]</a></li>
<li><a href="[% c.uri_for('/customer') %]">[% c.loc('Customers') %]</a></li>
<li><a href="[% c.uri_for('/contact') %]">[% c.loc('Contacts') %]</a></li>
<li><a href="[% c.uri_for('/domain') %]">[% c.loc('Domains') %]</a></li>
<li><a href="[% c.uri_for('/subscriber') %]">[% c.loc('Subscribers') %]</a></li>
<li><a href="[% c.uri_for('/billing') %]">[% c.loc('Billing') %]</a></li>
<li><a href="[% c.uri_for('/rewrite') %]">[% c.loc('Rewrite Rule Sets') %]</a></li>
<li><a href="[% c.uri_for('/ncos') %]">[% c.loc('NCOS Levels') %]</a></li>
<li><a href="[% c.uri_for('/sound') %]">[% c.loc('Sound Sets') %]</a></li>
[% IF c.config.features.cloudpbx -%]
<li><a href="[% c.uri_for('/device') %]">Device Management</a></li>
<li><a href="[% c.uri_for('/device') %]">[% c.loc('Device Management') %]</a></li>
[% END -%]
</ul>
</li>

@ -1,14 +1,14 @@
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">
<i class="icon-th"></i>
<span>Settings</span>
<span>[% c.loc('Settings') %]</span>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="[% c.uri_for_action('/subscriber/calllist', [subscriber.id]) %]">Call List</a></li>
<li><a href="[% c.uri_for_action('/subscriber/voicemails', [subscriber.id]) %]">Voicebox Messages</a></li>
<li><a href="[% c.uri_for_action('/subscriber/reglist', [subscriber.id]) %]">Registered Devices</a></li>
<li><a href="[% c.uri_for_action('/subscriber/preferences', [subscriber.id]) %]">Line Settings</a></li>
<li><a href="[% c.uri_for_action('/subscriber/calllist', [subscriber.id]) %]">[% c.loc('Call List') %]</a></li>
<li><a href="[% c.uri_for_action('/subscriber/voicemails', [subscriber.id]) %]">[% c.loc('Voicebox Messages') %]</a></li>
<li><a href="[% c.uri_for_action('/subscriber/reglist', [subscriber.id]) %]">[% c.loc('Registered Devices') %]</a></li>
<li><a href="[% c.uri_for_action('/subscriber/preferences', [subscriber.id]) %]">[% c.loc('Line Settings') %]</a></li>
</ul>
</li>
[% # vim: set tabstop=4 syntax=html expandtab: -%]

@ -1,15 +1,15 @@
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">
<i class="icon-th"></i>
<span>Settings</span>
<span>[% c.loc('Settings') %]</span>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="[% c.uri_for_action('/subscriber/calllist', [subscriber.id]) %]">Call List</a></li>
<li><a href="[% c.uri_for_action('/subscriber/voicemails', [subscriber.id]) %]">Voicebox Messages</a></li>
<li><a href="[% c.uri_for_action('/subscriber/reglist', [subscriber.id]) %]">Registered Devices</a></li>
<li><a href="[% c.uri_for_action('/subscriber/preferences', [subscriber.id]) %]">Line Settings</a></li>
<li><a href="[% c.uri_for_action('/customer/details', [c.user.account_id]) %]">Customer Settings</a></li>
<li><a href="[% c.uri_for_action('/subscriber/calllist', [subscriber.id]) %]">[% c.loc('Call List') %]</a></li>
<li><a href="[% c.uri_for_action('/subscriber/voicemails', [subscriber.id]) %]">[% c.loc('Voicebox Messages') %]</a></li>
<li><a href="[% c.uri_for_action('/subscriber/reglist', [subscriber.id]) %]">[% c.loc('Registered Devices') %]</a></li>
<li><a href="[% c.uri_for_action('/subscriber/preferences', [subscriber.id]) %]">[% c.loc('Line Settings') %]</a></li>
<li><a href="[% c.uri_for_action('/customer/details', [c.user.account_id]) %]">[% c.loc('Customer Settings') %]</a></li>
</ul>
</li>
[% # vim: set tabstop=4 syntax=html expandtab: -%]

Loading…
Cancel
Save