diff --git a/lib/admin/Controller/Root.pm b/lib/admin/Controller/Root.pm index 8296373..468c106 100644 --- a/lib/admin/Controller/Root.pm +++ b/lib/admin/Controller/Root.pm @@ -87,15 +87,15 @@ sub end : ActionClass('RenderView') { unless($c->response->{status} =~ /^3/) { # only if not a redirect if(exists $c->session->{prov_error}) { $c->stash->{prov_error} = - $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, + $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, $c->session->{prov_error}); delete $c->session->{prov_error}; } if(exists $c->session->{messages}) { - $c->stash->{messages} = $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, + $c->stash->{messages} = $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, $c->session->{messages}); delete $c->session->{messages}; } diff --git a/lib/admin/Controller/login.pm b/lib/admin/Controller/login.pm index 5a83160..c69ced1 100644 --- a/lib/admin/Controller/login.pm +++ b/lib/admin/Controller/login.pm @@ -39,8 +39,7 @@ sub index : Private { } } } else { - $c->session->{prov_error} = 'Client.Syntax.LoginMissingPass' unless length $password; - $c->session->{prov_error} = 'Client.Syntax.LoginMissingUsername' unless length $username; + $c->session->{prov_error} = 'Client.Voip.AuthFailed'; } $c->response->redirect($c->uri_for('/')); diff --git a/lib/admin/Controller/rrd.pm b/lib/admin/Controller/rrd.pm index 7e7b463..e8cb952 100644 --- a/lib/admin/Controller/rrd.pm +++ b/lib/admin/Controller/rrd.pm @@ -58,7 +58,9 @@ sub end : ActionClass('RenderView') { } if(exists $c->session->{messages}) { - $c->stash->{messages} = $c->model('Provisioning')->localize($c, $c->session->{messages}); + $c->stash->{messages} = $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, + $c->session->{messages}); delete $c->session->{messages}; } } diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 0d38493..e3e1940 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -147,8 +147,8 @@ sub detail : Local { eval { $c->session->{subscriber}{aliases} = [ sort @{$c->session->{subscriber}{aliases}} ] }; $c->stash->{subscriber} = $c->session->{subscriber}; $c->stash->{subscriber}{subscriber_id} = $subscriber_id; - $c->stash->{subscriber}{is_locked} = $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, + $c->stash->{subscriber}{is_locked} = $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, 'Web.Subscriber.Lock'.$$preferences{lock}) if $$preferences{lock}; @@ -602,8 +602,8 @@ sub preferences : Local { $c->stash->{subscriber} = $c->session->{subscriber}; $c->stash->{subscriber}{subscriber_id} = $subscriber_id; - $c->stash->{subscriber}{is_locked} = $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, + $c->stash->{subscriber}{is_locked} = $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, 'Web.Subscriber.Lock'.$$preferences{lock}) if $$preferences{lock}; @@ -697,8 +697,8 @@ sub preferences : Local { max_occur => $$pref{max_occur}, description => encode_entities($$pref{description}), error => $c->session->{messages}{$$pref{preference}} - ? $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, + ? $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, $c->session->{messages}{$$pref{preference}}) : undef, }; @@ -1022,8 +1022,8 @@ sub call_data : Local { for(1 .. 12) { push @localized_months, - $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, + $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, sprintf("Web.Months.%02d", $_)); } @@ -1479,9 +1479,9 @@ sub edit_speed_dial_slots : Local { } delete $c->session->{updateslotidtxt}; $updateerrormsg = $c->session->{messages}{updateerr} ? - $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, - $c->session->{messages}{updateerr}) + $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, + $c->session->{messages}{updateerr}) : undef; #delete $c->session->{updateerrmsg}; } diff --git a/lib/admin/Model/Provisioning.pm b/lib/admin/Model/Provisioning.pm index 659e35a..8d23168 100644 --- a/lib/admin/Model/Provisioning.pm +++ b/lib/admin/Model/Provisioning.pm @@ -103,25 +103,24 @@ sub login { } sub localize { - my ($self, $lang, $messages) = @_; + my ($self, $c, $lang, $messages) = @_; return unless defined $messages; + if(! defined $c->session->{admin}) { + if($messages eq 'Client.Voip.AuthFailed') { + return 'Login failed, please verify username and password.'; + } + return; + } if(ref $messages eq 'HASH') { my %translations; foreach my $msgname (keys %$messages) { - $translations{$msgname} = eval { $$self{voip}->get_localized_string({language => $lang, code => $$messages{$msgname}}) }; - unless(defined $translations{$msgname}) { - $translations{$msgname} = eval { $$self{voip}->get_localized_string({language => $lang, code => 'Server.Internal'}) }; - } + $translations{$msgname} = $self->_translate($c, $msgname, $lang); } return \%translations; } elsif(!ref $messages) { - my $translation = eval { $$self{voip}->get_localized_string({language => $lang, code => $messages}) }; - unless(defined $translation) { - $translation = eval { $$self{voip}->get_localized_string({language => $lang, code => 'Server.Internal'}) }; - } - return $translation; + return $self->_translate($c, $messages, $lang); } return; @@ -148,6 +147,28 @@ sub _get_admin { } } +sub _translate { + my ($self, $c, $code, $lang) = @_; + + my $translation; + eval { + $self->call_prov( $c, 'voip', 'get_localized_string', + { language => $lang, code => $code }, + \$translation, + ) + }; + unless(defined $translation) { + eval { + $self->call_prov( $c, 'voip', 'get_localized_string', + { language => $lang, code => 'Server.Internal' }, + \$translation, + ) + }; + } + + return $translation; +} + =head1 BUGS AND LIMITATIONS =over diff --git a/lib/admin/Utils.pm b/lib/admin/Utils.pm index 4794fb5..45fe5a5 100644 --- a/lib/admin/Utils.pm +++ b/lib/admin/Utils.pm @@ -282,8 +282,8 @@ sub prepare_tt_prefs { max_occur => $$pref{max_occur}, description => encode_entities($$pref{description}), error => $c->session->{messages}{$$pref{preference}} - ? $c->model('Provisioning')->localize($c->view($c->config->{view})-> - config->{VARIABLES}{site_config}{language}, + ? $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> + config->{VARIABLES}{site_config}{language}, $c->session->{messages}{$$pref{preference}}) : undef, };