From 84d3ca2b89b2cbcf325cb2e0281c8cc9da1606a0 Mon Sep 17 00:00:00 2001 From: Maxime Besson Date: Mon, 11 Jul 2022 17:09:33 +0200 Subject: [PATCH] Use skin translation files when sending mail (#2772) --- .../lib/Lemonldap/NG/Portal/Lib/SMTP.pm | 5 +- .../lib/Lemonldap/NG/Portal/Main/Run.pm | 47 ++++++++++++------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm index a4463586b..c6935dd67 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Lib/SMTP.pm @@ -73,8 +73,9 @@ sub translate { . " ($self->{conf}->{templateDir}/$lang_code.json or $self->{conf}->{templateDir}/common/mail/en.json)"; $json = join '', ; close F; - my $lang = from_json( $json, { allow_nonref => 1 } ); - my $langOver = from_json( $self->p->trOver, { allow_nonref => 1 } ); + my $lang = from_json( $json, { allow_nonref => 1 } ); + my $langOver = + from_json( $self->p->getTrOver($req), { allow_nonref => 1 } ); if ($langOver) { for my $k ( keys %{ $langOver->{all} || {} } ) { diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm index 3f77b406a..224f8ddd5 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm @@ -872,26 +872,17 @@ sub _dump { return; } -sub sendHtml { - my ( $self, $req, $template, %args ) = @_; +# Warning: this function returns a JSON string +sub getTrOver { + my ( $self, $req, $templateDir ) = @_; - my $templateDir = $self->conf->{templateDir} . '/' . $self->getSkin($req); - $self->templateDir( [ $templateDir, @{ $self->templateDir } ] ); - - # Check template - $args{templateDir} = $templateDir; - my $tmpl = $args{templateDir} . "/$template.tpl"; - unless ( -f $tmpl ) { - $self->logger->debug("Template $tmpl not found"); - $args{templateDir} = $self->conf->{templateDir} . '/bootstrap'; - $tmpl = $args{templateDir} . "/$template.tpl"; - $self->logger->debug("-> Trying to load $tmpl"); - } - - # Override messages - my $trOverMessages = JSON::from_json( $self->trOver ); + my $templateDir //= $self->conf->{templateDir} . '/' . $self->getSkin($req); unless ( $self->trOverCache->{$templateDir} ) { + + # Override messages + my $trOverMessages = JSON::from_json( $self->trOver ); + opendir( DIR, $templateDir ); my @langfiles = grep( /\.json$/, readdir(DIR) ); close(DIR); @@ -910,7 +901,27 @@ sub sendHtml { $self->trOverCache->{$templateDir} = JSON::to_json($trOverMessages); } - $args{params}->{TROVER} = $self->trOverCache->{$templateDir}; + + return $self->trOverCache->{$templateDir}; +} + +sub sendHtml { + my ( $self, $req, $template, %args ) = @_; + + my $templateDir = $self->conf->{templateDir} . '/' . $self->getSkin($req); + $self->templateDir( [ $templateDir, @{ $self->templateDir } ] ); + + # Check template + $args{templateDir} = $templateDir; + my $tmpl = $args{templateDir} . "/$template.tpl"; + unless ( -f $tmpl ) { + $self->logger->debug("Template $tmpl not found"); + $args{templateDir} = $self->conf->{templateDir} . '/bootstrap'; + $tmpl = $args{templateDir} . "/$template.tpl"; + $self->logger->debug("-> Trying to load $tmpl"); + } + + $args{params}->{TROVER} = $self->getTrOver( $req, $templateDir ); my $res = $self->SUPER::sendHtml( $req, $template, %args ); push @{ $res->[1] },