From 7713c7667b511b0ac01f00c14b1515fc7132a79b Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sat, 12 Sep 2020 07:29:09 +0200 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20=E2=80=94=20Fix=20#209=20?= =?UTF-8?q?=E2=80=94=20Use=20Mojolicious::Plugin::EmailMailer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + cpanfile | 2 +- cpanfile.snapshot | 682 ++++++++++++++++-- lib/Lufi.pm | 9 +- lib/Lufi/Controller/Invitation.pm | 90 ++- lib/Lufi/Controller/Mail.pm | 38 +- lufi.conf.template | 12 +- t/mysql.conf | 1 + t/postgresql.conf | 1 + t/sqlite.conf | 1 + themes/default/lib/Lufi/I18N/en.po | 75 +- themes/default/lib/Lufi/I18N/lufi.pot | 75 +- .../templates/invitations/invite.mail.ep | 2 - .../notification_files_sent.mail.ep | 2 - 14 files changed, 813 insertions(+), 178 deletions(-) diff --git a/.gitignore b/.gitignore index f8d4701..f573f55 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ stop-upload themes/* !themes/default !themes/default/* +themes/default/tailwindcss diff --git a/cpanfile b/cpanfile index ca248b3..44ddd32 100644 --- a/cpanfile +++ b/cpanfile @@ -2,13 +2,13 @@ requires 'inc::Module::Install'; requires 'Mojolicious', '>= 8.05'; requires 'Mojolicious::Plugin::DebugDumperHelper'; requires 'Mojolicious::Plugin::I18N'; -requires 'Mojolicious::Plugin::Mail'; requires 'Mojolicious::Plugin::GzipStatic'; requires 'Mojolicious::Plugin::StaticCache'; requires 'Mojolicious::Plugin::CSPHeader', '>= 0.06'; requires 'Mojolicious::Plugin::FiatTux::Helpers', '== 0.12', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-helpers/-/archive/0.12/mojolicious-plugin-fiattux-helpers-0.12.tar.gz'; requires 'Mojolicious::Plugin::FiatTux::GrantAccess', '== 0.07', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-grantaccess/-/archive/0.07/mojolicious-plugin-fiattux-grantaccess-0.07.tar.gz'; requires 'Mojolicious::Plugin::FiatTux::Themes', '== 0.02', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-themes/-/archive/0.02/mojolicious-plugin-fiattux-themes-0.02.tar.gz'; +requires 'Mojolicious::Plugin::EmailMailer', url => 'https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-emailmailer/-/archive/development/mojolicious-plugin-emailmailer-development.tar.gz'; requires 'Filesys::DiskUsage'; requires 'Switch'; requires 'Locale::Maketext'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 2a082c5..e32f7f6 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -373,6 +373,48 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + Data-OptList-0.110 + pathname: R/RJ/RJBS/Data-OptList-0.110.tar.gz + provides: + Data::OptList 0.110 + requirements: + ExtUtils::MakeMaker 0 + List::Util 0 + Params::Util 0 + Sub::Install 0.921 + strict 0 + warnings 0 + Data-Serializer-0.65 + pathname: N/NE/NEELY/Data-Serializer-0.65.tar.gz + provides: + Data::Serializer 0.65 + Data::Serializer::Bencode 0.03 + Data::Serializer::Config::General 0.02 + Data::Serializer::Convert::Bencode 0.03 + Data::Serializer::Convert::Bencode_XS 0.03 + Data::Serializer::Cookbook 0.05 + Data::Serializer::Data::Denter 0.02 + Data::Serializer::Data::Dumper 0.05 + Data::Serializer::Data::Taxi 0.02 + Data::Serializer::FreezeThaw 0.02 + Data::Serializer::JSON 0.04 + Data::Serializer::JSON::Syck 0.02 + Data::Serializer::PHP::Serialization 0.02 + Data::Serializer::Persistent 0.01 + Data::Serializer::Raw 0.02 + Data::Serializer::Storable 0.03 + Data::Serializer::XML::Dumper 0.02 + Data::Serializer::XML::Simple 0.03 + Data::Serializer::YAML 0.03 + Data::Serializer::YAML::Syck 0.03 + requirements: + AutoLoader 0 + Data::Dumper 2.08 + Digest::SHA 0 + Exporter 0 + File::Spec 0 + IO::File 0 + Test::More 0 Data-Validate-Domain-0.14 pathname: D/DR/DROLSKY/Data-Validate-Domain-0.14.tar.gz provides: @@ -510,6 +552,19 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 FindBin 0 + Devel-StackTrace-2.04 + pathname: D/DR/DROLSKY/Devel-StackTrace-2.04.tar.gz + provides: + Devel::StackTrace 2.04 + Devel::StackTrace::Frame 2.04 + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0 + Scalar::Util 0 + overload 0 + perl 5.006 + strict 0 + warnings 0 Digest-HMAC-1.03 pathname: G/GA/GAAS/Digest-HMAC-1.03.tar.gz provides: @@ -542,6 +597,49 @@ DISTRIBUTIONS Canary::Stability 0 ExtUtils::MakeMaker 6.52 common::sense 0 + Email-Abstract-3.008 + pathname: R/RJ/RJBS/Email-Abstract-3.008.tar.gz + provides: + Email::Abstract 3.008 + Email::Abstract::EmailMIME 3.008 + Email::Abstract::EmailSimple 3.008 + Email::Abstract::MIMEEntity 3.008 + Email::Abstract::MailInternet 3.008 + Email::Abstract::MailMessage 3.008 + Email::Abstract::Plugin 3.008 + requirements: + Carp 0 + Email::Simple 1.998 + ExtUtils::MakeMaker 0 + MRO::Compat 0 + Module::Pluggable 1.5 + Scalar::Util 0 + perl 5.006 + strict 0 + warnings 0 + Email-Address-1.912 + pathname: R/RJ/RJBS/Email-Address-1.912.tar.gz + provides: + Email::Address 1.912 + requirements: + ExtUtils::MakeMaker 0 + overload 0 + strict 0 + warnings 0 + Email-Address-XS-1.04 + pathname: P/PA/PALI/Email-Address-XS-1.04.tar.gz + provides: + Email::Address::XS 1.04 + requirements: + Carp 0 + Exporter 0 + ExtUtils::MakeMaker 0 + XSLoader 0 + base 0 + overload 0 + perl 5.006000 + strict 0 + warnings 0 Email-Date-Format-1.005 pathname: R/RJ/RJBS/Email-Date-Format-1.005.tar.gz provides: @@ -552,6 +650,180 @@ DISTRIBUTIONS Time::Local 0 strict 0 warnings 0 + Email-MIME-1.949 + pathname: R/RJ/RJBS/Email-MIME-1.949.tar.gz + provides: + Email::MIME 1.949 + Email::MIME::Creator 1.949 + Email::MIME::Encode 1.949 + Email::MIME::Header 1.949 + Email::MIME::Header::AddressList 1.949 + Email::MIME::Modifier 1.949 + requirements: + Carp 0 + Email::Address::XS 0 + Email::MIME::ContentType 1.023 + Email::MIME::Encodings 1.314 + Email::MessageID 0 + Email::Simple 2.212 + Email::Simple::Creator 0 + Email::Simple::Header 0 + Encode 1.9801 + ExtUtils::MakeMaker 0 + MIME::Base64 0 + MIME::Types 1.13 + Module::Runtime 0 + Scalar::Util 0 + parent 0 + perl 5.008001 + strict 0 + warnings 0 + Email-MIME-ContentType-1.024 + pathname: R/RJ/RJBS/Email-MIME-ContentType-1.024.tar.gz + provides: + Email::MIME::ContentType 1.024 + requirements: + Carp 0 + Encode 2.87 + Exporter 5.57 + ExtUtils::MakeMaker 0 + Text::Unidecode 0 + strict 0 + warnings 0 + Email-MIME-CreateHTML-1.042 + pathname: V/VA/VANSTYN/Email-MIME-CreateHTML-1.042.tar.gz + provides: + Email::MIME::CreateHTML 1.042 + Email::MIME::CreateHTML::Resolver 1.042 + Email::MIME::CreateHTML::Resolver::Cached 1.042 + Email::MIME::CreateHTML::Resolver::Filesystem 1.042 + Email::MIME::CreateHTML::Resolver::LWP 1.042 + requirements: + Carp 0 + Data::Serializer 0 + Email::MIME 0 + Email::MIME::Creator 0 + Exporter 0 + ExtUtils::MakeMaker 0 + File::Slurp::WithinPolicy 0 + File::Spec 0 + HTML::Tagset 0 + HTML::TokeParser::Simple 3.15 + LWP::UserAgent 0 + Log::Trace 0 + MIME::Types 2.17 + Scalar::Util 0 + Test::Assertions 0 + Test::Assertions::TestScript 0 + URI::Escape 0 + URI::WithBase 0 + URI::file 0 + strict 0 + vars 0 + Email-MIME-Encodings-1.315 + pathname: R/RJ/RJBS/Email-MIME-Encodings-1.315.tar.gz + provides: + Email::MIME::Encodings 1.315 + requirements: + Carp 0 + ExtUtils::MakeMaker 6.30 + MIME::Base64 3.05 + MIME::QuotedPrint 3.05 + strict 0 + warnings 0 + Email-Mailer-1.11 + pathname: G/GR/GRYPHON/Email-Mailer-1.15.tar.gz + provides: + Email::Mailer 1.15 + requirements: + Email::MIME 1.940 + Email::MIME::CreateHTML 0 + Email::Sender::Simple 0 + ExtUtils::MakeMaker 0 + HTML::FormatText 0 + HTML::TreeBuilder 0 + IO::All 0 + perl 5.014 + strict 0 + warnings 0 + Email-MessageID-1.406 + pathname: R/RJ/RJBS/Email-MessageID-1.406.tar.gz + provides: + Email::MessageID 1.406 + requirements: + ExtUtils::MakeMaker 0 + Sys::Hostname 0 + overload 0 + strict 0 + warnings 0 + Email-Sender-1.300034 + pathname: R/RJ/RJBS/Email-Sender-1.300034.tar.gz + provides: + Email::Sender 1.300034 + Email::Sender::Failure 1.300034 + Email::Sender::Failure::Multi 1.300034 + Email::Sender::Failure::Permanent 1.300034 + Email::Sender::Failure::Temporary 1.300034 + Email::Sender::Manual 1.300034 + Email::Sender::Manual::QuickStart 1.300034 + Email::Sender::Role::CommonSending 1.300034 + Email::Sender::Role::HasMessage 1.300034 + Email::Sender::Simple 1.300034 + Email::Sender::Success 1.300034 + Email::Sender::Success::Partial 1.300034 + Email::Sender::Transport 1.300034 + Email::Sender::Transport::DevNull 1.300034 + Email::Sender::Transport::Failable 1.300034 + Email::Sender::Transport::Maildir 1.300034 + Email::Sender::Transport::Mbox 1.300034 + Email::Sender::Transport::Print 1.300034 + Email::Sender::Transport::SMTP 1.300034 + Email::Sender::Transport::SMTP::Persistent 1.300034 + Email::Sender::Transport::Sendmail 1.300034 + Email::Sender::Transport::Test 1.300034 + Email::Sender::Transport::Wrapper 1.300034 + Email::Sender::Util 1.300034 + requirements: + Carp 0 + Email::Abstract 3.006 + Email::Address 0 + Email::Simple 1.998 + ExtUtils::MakeMaker 0 + Fcntl 0 + File::Basename 0 + File::Path 2.06 + File::Spec 0 + IO::File 1.11 + IO::Handle 0 + List::Util 1.45 + Module::Runtime 0 + Moo 2.000000 + Moo::Role 0 + MooX::Types::MooseLike 0.15 + MooX::Types::MooseLike::Base 0 + Net::SMTP 3.07 + Scalar::Util 0 + Sub::Exporter 0 + Sub::Exporter::Util 0 + Sys::Hostname 0 + Throwable::Error 0.200003 + Try::Tiny 0 + strict 0 + utf8 0 + warnings 0 + Email-Simple-2.216 + pathname: R/RJ/RJBS/Email-Simple-2.216.tar.gz + provides: + Email::Simple 2.216 + Email::Simple::Creator 2.216 + Email::Simple::Header 2.216 + requirements: + Carp 0 + Email::Date::Format 0 + ExtUtils::MakeMaker 0 + perl 5.008 + strict 0 + warnings 0 Email-Valid-1.202 pathname: R/RJ/RJBS/Email-Valid-1.202.tar.gz provides: @@ -661,6 +933,18 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 HTTP::Date 6 perl 5.006002 + File-Policy-1.005 + pathname: B/BB/BBC/File-Policy-1.005.tar.gz + provides: + File::Policy 1.005 + File::Policy::Default 1.006 + File::Slurp::WithinPolicy 1.004 + requirements: + ExtUtils::MakeMaker 0 + File::Slurp 0 + File::Spec::Functions 0 + Log::Trace 0 + Test::Assertions 0 File-Remove-1.58 pathname: S/SH/SHLOMIF/File-Remove-1.58.tar.gz provides: @@ -677,6 +961,24 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 + File-Slurp-9999.32 + pathname: C/CA/CAPOEIRAB/File-Slurp-9999.32.tar.gz + provides: + File::Slurp 9999.32 + requirements: + B 0 + Carp 0 + Errno 0 + Exporter 5.57 + ExtUtils::MakeMaker 0 + Fcntl 0 + File::Basename 0 + File::Spec 3.01 + File::Temp 0 + IO::Handle 0 + POSIX 0 + strict 0 + warnings 0 Filesys-DfPortable-0.85 pathname: I/IG/IGUTHRIE/Filesys-DfPortable-0.85.tar.gz provides: @@ -695,6 +997,24 @@ DISTRIBUTIONS Test::More 0 Test::Warn 0 perl 5.006 + Font-AFM-1.20 + pathname: G/GA/GAAS/Font-AFM-1.20.tar.gz + provides: + Font::AFM 1.20 + Font::Metrics::Courier undef + Font::Metrics::CourierBold undef + Font::Metrics::CourierBoldOblique undef + Font::Metrics::CourierOblique undef + Font::Metrics::Helvetica undef + Font::Metrics::HelveticaBold undef + Font::Metrics::HelveticaBoldOblique undef + Font::Metrics::HelveticaOblique undef + Font::Metrics::TimesBold undef + Font::Metrics::TimesBoldItalic undef + Font::Metrics::TimesItalic undef + Font::Metrics::TimesRoman undef + requirements: + ExtUtils::MakeMaker 0 Furl-3.13 pathname: T/TO/TOKUHIROM/Furl-3.13.tar.gz provides: @@ -716,6 +1036,41 @@ DISTRIBUTIONS Socket 0 Time::HiRes 0 perl 5.008001 + HTML-Formatter-2.16 + pathname: N/NI/NIGELM/HTML-Formatter-2.16.tar.gz + provides: + HTML::FormatMarkdown 2.16 + HTML::FormatPS 2.16 + HTML::FormatRTF 2.16 + HTML::FormatText 2.16 + HTML::Formatter 2.16 + requirements: + Carp 0 + Data::Dumper 0 + Encode 0 + ExtUtils::MakeMaker 0 + Font::Metrics::Courier 0 + Font::Metrics::CourierBold 0 + Font::Metrics::CourierBoldOblique 0 + Font::Metrics::CourierOblique 0 + Font::Metrics::Helvetica 0 + Font::Metrics::HelveticaBold 0 + Font::Metrics::HelveticaBoldOblique 0 + Font::Metrics::HelveticaOblique 0 + Font::Metrics::TimesBold 0 + Font::Metrics::TimesBoldItalic 0 + Font::Metrics::TimesItalic 0 + Font::Metrics::TimesRoman 0 + HTML::Element 3.15 + HTML::TreeBuilder 0 + IO::File 0 + base 0 + integer 0 + parent 0 + perl 5.008 + strict 0 + utf8 0 + warnings 0 HTML-Parser-3.72 pathname: G/GA/GAAS/HTML-Parser-3.72.tar.gz provides: @@ -737,6 +1092,47 @@ DISTRIBUTIONS HTML::Tagset 3.20 requirements: ExtUtils::MakeMaker 0 + HTML-TokeParser-Simple-3.16 + pathname: O/OV/OVID/HTML-TokeParser-Simple-3.16.tar.gz + provides: + HTML::TokeParser::Simple 3.16 + HTML::TokeParser::Simple::Token 3.16 + HTML::TokeParser::Simple::Token::Comment 3.16 + HTML::TokeParser::Simple::Token::Declaration 3.15 + HTML::TokeParser::Simple::Token::ProcessInstruction 3.16 + HTML::TokeParser::Simple::Token::Tag 3.16 + HTML::TokeParser::Simple::Token::Tag::End 3.16 + HTML::TokeParser::Simple::Token::Tag::Start 3.16 + HTML::TokeParser::Simple::Token::Text 3.16 + requirements: + HTML::Parser 3.25 + HTML::TokeParser 2.24 + Sub::Override 0 + Test::More 0 + perl 5.006 + HTML-Tree-5.07 + pathname: K/KE/KENTNL/HTML-Tree-5.07.tar.gz + provides: + HTML::AsSubs 5.07 + HTML::Element 5.07 + HTML::Element::traverse 5.07 + HTML::Parse 5.07 + HTML::Tree 5.07 + HTML::TreeBuilder 5.07 + requirements: + Carp 0 + Encode 0 + Exporter 0 + HTML::Entities 0 + HTML::Parser 3.46 + HTML::Tagset 3.02 + Module::Build 0.2808 + Scalar::Util 0 + Test::Fatal 0 + Test::More 0 + base 0 + integer 0 + perl 5.008 HTTP-Cookies-6.08 pathname: O/OA/OALDERS/HTTP-Cookies-6.08.tar.gz provides: @@ -856,6 +1252,27 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.64 Scalar::Util 0 perl 5.008001 + IO-All-0.87 + pathname: F/FR/FREW/IO-All-0.87.tar.gz + provides: + IO::All 0.87 + IO::All::Base undef + IO::All::DBM undef + IO::All::Dir undef + IO::All::File undef + IO::All::Filesys undef + IO::All::Link undef + IO::All::MLDBM undef + IO::All::Pipe undef + IO::All::STDIO undef + IO::All::Socket undef + IO::All::String undef + IO::All::Temp undef + requirements: + Cwd 0 + ExtUtils::MakeMaker 0 + Scalar::Util 0 + perl 5.008001 IO-HTML-1.001 pathname: C/CJ/CJM/IO-HTML-1.001.tar.gz provides: @@ -963,42 +1380,13 @@ DISTRIBUTIONS Module::Build 0.38 Scalar::Util 0 Term::ANSIColor 0 - MIME-Charset-1.012.2 - pathname: N/NE/NEZUMI/MIME-Charset-1.012.2.tar.gz + Log-Trace-1.070 + pathname: B/BB/BBC/Log-Trace-1.070.tar.gz provides: - MIME::Charset v1.12.2 + Log::Trace 1.070 requirements: - CPAN 0 - Encode 1.98 - ExtUtils::MakeMaker 6.42 - Test::More 0 - perl 5.005 - MIME-EncWords-1.014.3 - pathname: N/NE/NEZUMI/MIME-EncWords-1.014.3.tar.gz - provides: - Encode::MIME::EncWords 0.03 - MIME::EncWords 1.014003 - requirements: - Encode 1.98 ExtUtils::MakeMaker 0 - MIME::Base64 2.13 - MIME::Charset v1.10.1 Test::More 0 - MIME-Lite-3.031 - pathname: R/RJ/RJBS/MIME-Lite-3.031.tar.gz - provides: - MIME::Lite 3.031 - MIME::Lite::IO_Handle 3.031 - MIME::Lite::IO_Scalar 3.031 - MIME::Lite::IO_ScalarArray 3.031 - MIME::Lite::SMTP 3.031 - MailTool undef - requirements: - Email::Date::Format 1.000 - ExtUtils::MakeMaker 0 - File::Basename 0 - File::Spec 0 - MIME::Types 1.28 MIME-Types-2.17 pathname: M/MA/MARKOV/MIME-Types-2.17.tar.gz provides: @@ -1011,6 +1399,53 @@ DISTRIBUTIONS File::Spec 0 List::Util 0 Test::More 0.47 + MIME-tools-5.509 + pathname: D/DS/DSKOLL/MIME-tools-5.509.tar.gz + provides: + MIME::Body 5.509 + MIME::Body::File 5.509 + MIME::Body::InCore 5.509 + MIME::Body::Scalar 5.509 + MIME::Decoder 5.509 + MIME::Decoder::Base64 5.509 + MIME::Decoder::BinHex 5.509 + MIME::Decoder::Binary 5.509 + MIME::Decoder::Gzip64 5.509 + MIME::Decoder::NBit 5.509 + MIME::Decoder::QuotedPrint 5.509 + MIME::Decoder::UU 5.509 + MIME::Entity 5.509 + MIME::Field::ConTraEnc 5.509 + MIME::Field::ContDisp 5.509 + MIME::Field::ContType 5.509 + MIME::Field::ParamVal 5.509 + MIME::Head 5.509 + MIME::Parser 5.509 + MIME::Parser::FileInto undef + MIME::Parser::FileUnder undef + MIME::Parser::Filer undef + MIME::Parser::Reader undef + MIME::Parser::Results undef + MIME::Tools 5.509 + MIME::WordDecoder undef + MIME::WordDecoder::ISO_8859 undef + MIME::WordDecoder::US_ASCII undef + MIME::WordDecoder::UTF_8 undef + MIME::Words 5.509 + requirements: + ExtUtils::MakeMaker 6.59 + File::Path 1 + File::Spec 0.6 + File::Temp 0.18 + IO::File 1.13 + IO::Handle 0 + MIME::Base64 2.2 + Mail::Field 1.05 + Mail::Header 1.01 + Mail::Internet 1.0203 + Test::Deep 0 + Test::More 0 + perl 5.008 MRO-Compat-0.13 pathname: H/HA/HAARG/MRO-Compat-0.13.tar.gz provides: @@ -1204,6 +1639,22 @@ DISTRIBUTIONS YAML::Tiny 1.38 autodie 0 perl 5.006 + Module-Pluggable-5.2 + pathname: S/SI/SIMONW/Module-Pluggable-5.2.tar.gz + provides: + Devel::InnerPackage 0.4 + Module::Pluggable 5.2 + Module::Pluggable::Object 5.2 + requirements: + Exporter 5.57 + ExtUtils::MakeMaker 0 + File::Basename 0 + File::Find 0 + File::Spec 3.00 + File::Spec::Functions 0 + if 0 + perl 5.00503 + strict 0 Module-Runtime-0.016 pathname: Z/ZE/ZEFRAM/Module-Runtime-0.016.tar.gz provides: @@ -1285,8 +1736,8 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Mojolicious 8.03 SQL::Abstract 1.86 - Mojolicious-8.40 - pathname: S/SR/SRI/Mojolicious-8.40.tar.gz + Mojolicious-8.58 + pathname: S/SR/SRI/Mojolicious-8.58.tar.gz provides: Mojo undef Mojo::Asset undef @@ -1355,7 +1806,7 @@ DISTRIBUTIONS Mojo::UserAgent::Transactor undef Mojo::Util undef Mojo::WebSocket undef - Mojolicious 8.40 + Mojolicious 8.58 Mojolicious::Command undef Mojolicious::Command::Author::cpanify undef Mojolicious::Command::Author::generate undef @@ -1383,6 +1834,7 @@ DISTRIBUTIONS Mojolicious::Plugin::HeaderCondition undef Mojolicious::Plugin::JSONConfig undef Mojolicious::Plugin::Mount undef + Mojolicious::Plugin::NotYAMLConfig undef Mojolicious::Plugin::TagHelpers undef Mojolicious::Plugins undef Mojolicious::Renderer undef @@ -1400,10 +1852,8 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 IO::Socket::IP 0.37 - JSON::PP 2.27103 - List::Util 1.41 - Time::Local 1.2 - perl 5.010001 + Sub::Util 1.41 + perl 5.016 Mojolicious-Plugin-Authentication-1.33 pathname: J/JJ/JJATRIA/Mojolicious-Plugin-Authentication-1.33.tar.gz provides: @@ -1446,17 +1896,6 @@ DISTRIBUTIONS Mojolicious 5 Test::More 0 perl 5.010001 - Mojolicious-Plugin-Mail-1.5 - pathname: S/SH/SHARIFULN/Mojolicious-Plugin-Mail-1.5.tar.gz - provides: - Mojolicious::Plugin::Mail 1.5 - requirements: - Encode 0 - MIME::EncWords 0 - MIME::Lite 3.027 - Mojolicious 5 - Test::More 0 - perl 5.001001 Mojolicious-Plugin-PgURLHelper-0.03 pathname: L/LD/LDIDRY/Mojolicious-Plugin-PgURLHelper-0.03.tar.gz provides: @@ -1500,6 +1939,14 @@ DISTRIBUTIONS Sub::Defer 2.006006 Sub::Quote 2.006006 perl 5.006 + MooX-Types-MooseLike-0.29 + pathname: M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz + provides: + MooX::Types::MooseLike 0.29 + MooX::Types::MooseLike::Base 0.29 + requirements: + ExtUtils::MakeMaker 0 + Module::Runtime 0.014 Mouse-v2.5.10 pathname: S/SK/SKAJI/Mouse-v2.5.10.tar.gz provides: @@ -1796,6 +2243,17 @@ DISTRIBUTIONS perl 5.006001 strict 0 warnings 0 + Params-Util-1.07 + pathname: A/AD/ADAMK/Params-Util-1.07.tar.gz + provides: + Params::Util 1.07 + requirements: + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 6.52 + File::Spec 0.80 + Scalar::Util 1.18 + Test::More 0.42 + perl 5.00503 Path-Tiny-0.112 pathname: D/DA/DAGOLDEN/Path-Tiny-0.112.tar.gz provides: @@ -1847,12 +2305,44 @@ DISTRIBUTIONS Sub::Quote 2.000001 Text::Balanced 2.00 perl 5.006 + Sub-Exporter-0.987 + pathname: R/RJ/RJBS/Sub-Exporter-0.987.tar.gz + provides: + Sub::Exporter 0.987 + Sub::Exporter::Util 0.987 + requirements: + Carp 0 + Data::OptList 0.100 + ExtUtils::MakeMaker 6.30 + Params::Util 0.14 + Sub::Install 0.92 + strict 0 + warnings 0 Sub-Exporter-Progressive-0.001013 pathname: F/FR/FREW/Sub-Exporter-Progressive-0.001013.tar.gz provides: Sub::Exporter::Progressive 0.001013 requirements: ExtUtils::MakeMaker 0 + Sub-Install-0.928 + pathname: R/RJ/RJBS/Sub-Install-0.928.tar.gz + provides: + Sub::Install 0.928 + requirements: + B 0 + Carp 0 + ExtUtils::MakeMaker 6.30 + Scalar::Util 0 + strict 0 + warnings 0 + Sub-Override-0.09 + pathname: O/OV/OVID/Sub-Override-0.09.tar.gz + provides: + Sub::Override 0.09 + requirements: + ExtUtils::MakeMaker 0 + Test::Fatal 0.010 + Test::More 0.47 Sub-Quote-2.006006 pathname: H/HA/HAARG/Sub-Quote-2.006006.tar.gz provides: @@ -1913,6 +2403,75 @@ DISTRIBUTIONS Term::ReadKey 2.38 requirements: ExtUtils::MakeMaker 6.58 + Test-Assertions-1.054 + pathname: B/BB/BBC/Test-Assertions-1.054.tar.gz + provides: + Test::Assertions 1.054 + Test::Assertions::TestScript 1.018 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + Getopt::Long 0 + Log::Trace 0 + Test-Deep-1.130 + pathname: R/RJ/RJBS/Test-Deep-1.130.tar.gz + provides: + Test::Deep 1.130 + Test::Deep::All undef + Test::Deep::Any undef + Test::Deep::Array undef + Test::Deep::ArrayEach undef + Test::Deep::ArrayElementsOnly undef + Test::Deep::ArrayLength undef + Test::Deep::ArrayLengthOnly undef + Test::Deep::Blessed undef + Test::Deep::Boolean undef + Test::Deep::Cache undef + Test::Deep::Cache::Simple undef + Test::Deep::Class undef + Test::Deep::Cmp undef + Test::Deep::Code undef + Test::Deep::Hash undef + Test::Deep::HashEach undef + Test::Deep::HashElements undef + Test::Deep::HashKeys undef + Test::Deep::HashKeysOnly undef + Test::Deep::Ignore undef + Test::Deep::Isa undef + Test::Deep::ListMethods undef + Test::Deep::MM undef + Test::Deep::Methods undef + Test::Deep::NoTest undef + Test::Deep::None undef + Test::Deep::Number undef + Test::Deep::Obj undef + Test::Deep::Ref undef + Test::Deep::RefType undef + Test::Deep::Regexp undef + Test::Deep::RegexpMatches undef + Test::Deep::RegexpOnly undef + Test::Deep::RegexpRef undef + Test::Deep::RegexpRefOnly undef + Test::Deep::RegexpVersion undef + Test::Deep::ScalarRef undef + Test::Deep::ScalarRefOnly undef + Test::Deep::Set undef + Test::Deep::Shallow undef + Test::Deep::Stack undef + Test::Deep::String undef + Test::Deep::SubHash undef + Test::Deep::SubHashElements undef + Test::Deep::SubHashKeys undef + Test::Deep::SubHashKeysOnly undef + Test::Deep::SuperHash undef + Test::Deep::SuperHashElements undef + Test::Deep::SuperHashKeys undef + Test::Deep::SuperHashKeysOnly undef + requirements: + ExtUtils::MakeMaker 0 + List::Util 1.09 + Scalar::Util 1.09 + Test::Builder 0 Test-Exception-0.43 pathname: E/EX/EXODIST/Test-Exception-0.43.tar.gz provides: @@ -1982,6 +2541,29 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 if 0 + Text-Unidecode-1.30 + pathname: S/SB/SBURKE/Text-Unidecode-1.30.tar.gz + provides: + Text::Unidecode 1.30 + requirements: + ExtUtils::MakeMaker 0 + perl 5.008 + Throwable-0.200013 + pathname: R/RJ/RJBS/Throwable-0.200013.tar.gz + provides: + StackTrace::Auto 0.200013 + Throwable 0.200013 + Throwable::Error 0.200013 + requirements: + Carp 0 + Devel::StackTrace 1.32 + ExtUtils::MakeMaker 0 + Module::Runtime 0.002 + Moo 1.000001 + Moo::Role 0 + Scalar::Util 0 + Sub::Quote 0 + overload 0 Time-Local-1.30 pathname: D/DR/DROLSKY/Time-Local-1.30.tar.gz provides: diff --git a/lib/Lufi.pm b/lib/Lufi.pm index 10f8206..01bb635 100644 --- a/lib/Lufi.pm +++ b/lib/Lufi.pm @@ -33,13 +33,12 @@ sub startup { # Mail config my $mail_config = { - type => 'text/plain', - encoding => 'quoted-printable', + from => $self->config('mail_sender'), how => $self->config('mail')->{'how'} }; $mail_config->{howargs} = $self->config('mail')->{'howargs'} if (defined $self->config('mail')->{'howargs'}); - $self->plugin('Mail' => $mail_config); + $self->plugin('EmailMailer' => $mail_config); # Internationalization my $lib = $self->home->rel_file('themes/'.$config->{theme}.'/lib'); @@ -227,12 +226,12 @@ sub startup { # Get mail page $r->get('/m') - ->to('Mail#render_mail') + ->to('Mail#render_share_mail') ->name('mail'); # Submit mail $r->post('/m') - ->to('Mail#send_mail'); + ->to('Mail#send_share_mail'); # Upload files websocket $r->websocket('/upload') diff --git a/lib/Lufi/Controller/Invitation.pm b/lib/Lufi/Controller/Invitation.pm index fca4cb3..de7e8cc 100644 --- a/lib/Lufi/Controller/Invitation.pm +++ b/lib/Lufi/Controller/Invitation.pm @@ -73,18 +73,24 @@ sub send_invite { my $from = ($c->config('invitations')->{'send_invitation_with_ldap_user_mail'}) ? $invitation->ldap_user_mail : $c->config('mail_sender'); my $url = $c->url_for('guest', token => $invitation->token)->to_abs; - $c->mail( - from => $from, - to => $invitation->guest_mail, - template => 'invitations/invite', - format => 'mail', - ldap_user => ucfirst($invitation->ldap_user), - url => $url, - invitation => $invitation, - expires => $c->get_date_lang()->time2str($c->l('%A %d %B %Y at %T'), $invitation->expire_at) + my $mail_sent = $c->send_mail( + from => $from, + to => $invitation->guest_mail, + subject => $c->l('%1 invites you to send him/her files', ucfirst($invitation->ldap_user)), + text => $c->render_mail( + template => 'invitations/invite', + ldap_user => ucfirst($invitation->ldap_user), + url => $url, + invitation => $invitation, + expires => $c->get_date_lang()->time2str($c->l('%A %d %B %Y at %T'), $invitation->expire_at) + ) ); - push @success, $c->l('Invitation sent to %1.
URL: %2', $invitation->guest_mail, $url); + if ($mail_sent) { + push @success, $c->l('Invitation sent to %1.
URL: %2', $invitation->guest_mail, $url); + } else { + push @fails, $c->l('Something went wrong when sending the mail(s). You should contact the administrator of this instance.'); + } } $c->render( @@ -157,18 +163,24 @@ sub resend_invitations { my $from = ($c->config('invitations')->{'send_invitation_with_ldap_user_mail'}) ? $i->ldap_user_mail : $c->config('mail_sender'); my $url = $c->url_for('guest', token => $i->token)->to_abs; my $expire = $c->get_date_lang()->time2str($c->l('%A %d %B %Y at %T'), $i->expire_at); - $c->mail( - from => $from, - to => $i->guest_mail, - template => 'invitations/invite', - format => 'mail', - ldap_user => ucfirst($i->ldap_user), - url => $url, - invitation => $i, - expires => $expire + my $mail_sent = $c->send_mail( + from => $from, + to => $i->guest_mail, + subject => $c->l('%1 invites you to send him/her files', ucfirst($i->ldap_user)), + text => $c->render_mail( + template => 'invitations/invite', + ldap_user => ucfirst($i->ldap_user), + url => $url, + invitation => $i, + expires => $expire + ) ); - push @success, { msg => $c->l('Invitation resent to %1.
URL: %2', $i->guest_mail, $url), expires => $expire, token => $i->token }; + if ($mail_sent) { + push @success, { msg => $c->l('Invitation resent to %1.
URL: %2', $i->guest_mail, $url), expires => $expire, token => $i->token }; + } else { + push @failures, $c->l('Something went wrong when sending the mail(s). You should contact the administrator of this instance.'); + } } } @@ -260,22 +272,32 @@ sub send_mail_to_ldap_user { $already_notified = 0; } $c->session(expires => $invitation->files_sent_at + 60 * $invitation->expend_expire_at); - $c->mail( - from => $c->config('mail_sender'), - to => $invitation->ldap_user_mail, - template => 'invitations/notification_files_sent', - format => 'mail', - files => c(@files), - invitation => $invitation, - already_notified => $already_notified + my $mail_sent = $c->send_mail( + to => $invitation->ldap_user_mail, + subject => $c->l('%1 sent you files', $invitation->guest_mail), + text => $c->render_mail( + template => 'invitations/notification_files_sent', + files => c(@files), + invitation => $invitation, + already_notified => $already_notified + ) ); - return $c->render( - json => { - success => true, - msg => $c->l('The URLs of your files have been sent by email to %1.', $invitation->ldap_user_mail) - } - ); + if ($mail_sent) { + return $c->render( + json => { + success => true, + msg => $c->l('The URLs of your files have been sent by email to %1.', $invitation->ldap_user_mail) + } + ); + } else { + return $c->render( + json => { + success => false, + msg => $c->l('Something went wrong when sending the mail(s). You should contact the administrator of this instance.') + } + ); + } } else { return $c->render( json => { diff --git a/lib/Lufi/Controller/Mail.pm b/lib/Lufi/Controller/Mail.pm index c7a5508..86a5f12 100644 --- a/lib/Lufi/Controller/Mail.pm +++ b/lib/Lufi/Controller/Mail.pm @@ -6,7 +6,7 @@ use Mojo::URL; use Email::Valid; use URI::Find; -sub render_mail { +sub render_share_mail { my $c = shift; my $links = (defined($c->param('links'))) ? decode_json($c->param('links')) : []; @@ -18,7 +18,7 @@ sub render_mail { ); } -sub send_mail { +sub send_share_mail { my $c = shift; my $validation = $c->validation; @@ -61,6 +61,8 @@ sub send_mail { for my $email (@a) { if (!Email::Valid->address($email)) { push @bad, $email; + } else { + push @good, { to => $email }; } } @@ -85,17 +87,31 @@ sub send_mail { ) } - $c->mail( - from => $c->config('mail_sender'), - bcc => $emails, - subject => $subject, - data => $body + my $success = $c->send_multiple_mail( + mail => { + subject => $subject, + text => $body + }, + send => \@good ); - return $c->render( - template => 'msg', - msg_success => $c->l('The mail has been sent.') - ); + if ($success) { + return $c->render( + template => 'msg', + msg_success => $c->l('The mail has been sent.') + ); + } else { + return $c->render( + template => 'mail', + msg => $c->l('Something went wrong when sending the mail(s). You should contact the administrator of this instance.'), + links => [], + values => { + emails => $emails, + subject => $subject, + body => $body + } + ) + } } 1; diff --git a/lufi.conf.template b/lufi.conf.template index b7fd9fe..9e7f3b2 100644 --- a/lufi.conf.template +++ b/lufi.conf.template @@ -150,12 +150,18 @@ ############### # Mail configuration - # See https://metacpan.org/pod/Mojolicious::Plugin::Mail#EXAMPLES + # See https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-emailmailer/-/blob/master/README.md#configuration # optional, default to sendmail method with no arguments #mail => { - # # Valid values are 'sendmail' and 'smtp' + # # See https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-emailmailer/-/blob/master/README.md#configuration + # # for valid values # how => 'smtp', - # howargs => ['smtp.example.org'] + # howargs => { + # hosts => ['smtp.example.org'], + # ssl => 'starttls', + # sasl_username => 'foo', + # sasl_password => 'bar' + # } #}, # Email sender address diff --git a/t/mysql.conf b/t/mysql.conf index 51a2d80..7cd40ff 100644 --- a/t/mysql.conf +++ b/t/mysql.conf @@ -151,6 +151,7 @@ # how => 'smtp', # howargs => ['smtp.example.org'] #}, + mail => { how => 'Test' }, # Email sender address # optional, default to no-reply@lufi.io diff --git a/t/postgresql.conf b/t/postgresql.conf index 0ac7cfe..ecbd2e8 100644 --- a/t/postgresql.conf +++ b/t/postgresql.conf @@ -147,6 +147,7 @@ # how => 'smtp', # howargs => ['smtp.example.org'] #}, + mail => { how => 'Test' }, # Email sender address # optional, default to no-reply@lufi.io diff --git a/t/sqlite.conf b/t/sqlite.conf index bebca16..d88909e 100644 --- a/t/sqlite.conf +++ b/t/sqlite.conf @@ -151,6 +151,7 @@ # how => 'smtp', # howargs => ['smtp.example.org'] #}, + mail => { how => 'Test' }, # Email sender address # optional, default to no-reply@lufi.io diff --git a/themes/default/lib/Lufi/I18N/en.po b/themes/default/lib/Lufi/I18N/en.po index a43b895..58e6c90 100644 --- a/themes/default/lib/Lufi/I18N/en.po +++ b/themes/default/lib/Lufi/I18N/en.po @@ -21,27 +21,28 @@ msgstr "" msgid "%1 days" msgstr "%1 days" -#. (stash('ldap_user') -#: themes/default/templates/invitations/invite.mail.ep:2 +#. (ucfirst($invitation->ldap_user) +#. (ucfirst($i->ldap_user) +#: lib/Lufi/Controller/Invitation.pm:169 lib/Lufi/Controller/Invitation.pm:79 msgid "%1 invites you to send him/her files" msgstr "%1 invites you to send him/her files" #. (stash('ldap_user') -#: themes/default/templates/invitations/invite.mail.ep:6 +#: themes/default/templates/invitations/invite.mail.ep:4 msgid "%1 invites you to send him/her files through Lufi." msgstr "%1 invites you to send him/her files through Lufi." -#. (stash('invitation') -#: themes/default/templates/invitations/notification_files_sent.mail.ep:4 +#. ($invitation->guest_mail) +#: lib/Lufi/Controller/Invitation.pm:277 msgid "%1 sent you files" msgstr "%1 sent you files" #. (stash('invitation') -#: themes/default/templates/invitations/notification_files_sent.mail.ep:8 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:6 msgid "%1 used your invitation to send you files:" msgstr "%1 used your invitation to send you files:" -#: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 +#: lib/Lufi/Controller/Invitation.pm:165 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:10 msgid "%A %d %B %Y at %T" msgstr "%A %d %B %Y at %T" @@ -110,7 +111,7 @@ msgstr "Bad CSRF token." msgid "Click here to refresh the page and restart the download." msgstr "Click here to refresh the page and restart the download." -#: themes/default/templates/invitations/invite.mail.ep:8 +#: themes/default/templates/invitations/invite.mail.ep:6 msgid "Click on the following URL to upload files on Lufi:" msgstr "Click on the following URL to upload files on Lufi:" @@ -118,7 +119,7 @@ msgstr "Click on the following URL to upload files on Lufi:" msgid "Click to open the file browser" msgstr "Click to open the file browser" -#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 +#: themes/default/templates/delays.html.ep:42 themes/default/templates/invitations/my_invitations.html.ep:80 msgid "Close" msgstr "Close" @@ -178,7 +179,7 @@ msgstr "Delete selected files" msgid "Deletion link" msgstr "Deletion link" -#: themes/default/templates/delays.html.ep:8 +#: themes/default/templates/delays.html.ep:9 msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file." msgstr "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file." @@ -295,11 +296,11 @@ msgid "Guest mail" msgstr "Guest mail" #. (ucfirst(stash('invitation') -#: themes/default/templates/invitations/notification_files_sent.mail.ep:6 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:4 msgid "Hello %1," msgstr "Hello %1," -#: themes/default/templates/invitations/invite.mail.ep:4 +#: themes/default/templates/invitations/invite.mail.ep:2 msgid "Hello," msgstr "Hello," @@ -339,7 +340,7 @@ msgstr "How to install the software on my server?" msgid "How to report an illegal file?" msgstr "How to report an illegal file?" -#: themes/default/templates/delays.html.ep:7 +#: themes/default/templates/delays.html.ep:8 msgid "If you choose a delay, the file will be deleted after that delay." msgstr "If you choose a delay, the file will be deleted after that delay." @@ -364,12 +365,12 @@ msgid "Invert selection" msgstr "Invert selection" #. ($i->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:171 +#: lib/Lufi/Controller/Invitation.pm:180 msgid "Invitation resent to %1.
URL: %2" msgstr "Invitation resent to %1.
URL: %2" #. ($invitation->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:87 +#: lib/Lufi/Controller/Invitation.pm:90 msgid "Invitation sent to %1.
URL: %2" msgstr "Invitation sent to %1.
URL: %2" @@ -427,7 +428,7 @@ msgstr "My files" msgid "My invitations" msgstr "My invitations" -#: themes/default/templates/invitations/notification_files_sent.mail.ep:17 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:15 msgid "NB: this list includes the list of files that have already been sent to you." msgstr "NB: this list includes the list of files that have already been sent to you." @@ -473,11 +474,11 @@ msgstr "Privacy" msgid "Purge expired files from localStorage" msgstr "Purge expired files from localStorage" -#: themes/default/templates/invitations/notification_files_sent.mail.ep:20 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:18 msgid "Regards," msgstr "Regards," -#: themes/default/templates/invitations/invite.mail.ep:15 +#: themes/default/templates/invitations/invite.mail.ep:13 msgid "Regards." msgstr "Regards." @@ -534,7 +535,11 @@ msgstr "Show zip content" msgid "Signin" msgstr "Signin" -#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16 +#: lib/Lufi/Controller/Invitation.pm:182 lib/Lufi/Controller/Invitation.pm:297 lib/Lufi/Controller/Invitation.pm:92 lib/Lufi/Controller/Mail.pm:106 +msgid "Something went wrong when sending the mail(s). You should contact the administrator of this instance." +msgstr "" + +#: lib/Lufi/Controller/Invitation.pm:305 themes/default/templates/invitations/exception.html.ep:16 msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" msgstr "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" @@ -556,7 +561,7 @@ msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 msgstr "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." #. ($invitation->ldap_user_mail) -#: lib/Lufi/Controller/Invitation.pm:276 +#: lib/Lufi/Controller/Invitation.pm:290 msgid "The URLs of your files have been sent by email to %1." msgstr "The URLs of your files have been sent by email to %1." @@ -572,11 +577,11 @@ msgstr "The body of the mail must contain at least one URL pointing to a file ho msgid "The data has been successfully imported." msgstr "The data has been successfully imported." -#: lib/Lufi/Controller/Mail.pm:73 +#: lib/Lufi/Controller/Mail.pm:75 msgid "The email body can't be empty." msgstr "The email body can't be empty." -#: lib/Lufi/Controller/Mail.pm:72 +#: lib/Lufi/Controller/Mail.pm:74 msgid "The email subject can't be empty." msgstr "The email subject can't be empty." @@ -594,7 +599,7 @@ msgid "The files uploaded on a Lufi instance are encrypted before the upload to msgstr "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content." #. (join(', ', @bad) -#: lib/Lufi/Controller/Mail.pm:68 +#: lib/Lufi/Controller/Mail.pm:70 msgid "The following email addresses are not valid: %1" msgstr "The following email addresses are not valid: %1" @@ -604,12 +609,12 @@ msgid "The guest email address (%1) is unvalid." msgstr "The guest email address (%1) is unvalid." #. ($i->token, $i->guest_mail) -#: lib/Lufi/Controller/Invitation.pm:150 +#: lib/Lufi/Controller/Invitation.pm:156 msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." msgstr "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." #. ($i->token) -#: lib/Lufi/Controller/Invitation.pm:130 +#: lib/Lufi/Controller/Invitation.pm:136 msgid "The invitation %1 has been deleted." msgstr "The invitation %1 has been deleted." @@ -628,11 +633,11 @@ msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2) msgstr "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)" #. (stash('ldap_user') -#: themes/default/templates/invitations/invite.mail.ep:11 +#: themes/default/templates/invitations/invite.mail.ep:9 msgid "The links of your file(s) will automatically be sent by mail to %1." msgstr "The link(s) of your file(s) will automatically be sent by mail to %1." -#: lib/Lufi/Controller/Mail.pm:97 +#: lib/Lufi/Controller/Mail.pm:101 msgid "The mail has been sent." msgstr "The mail has been sent." @@ -653,11 +658,11 @@ msgid "This invitation is normally hidden" msgstr "This invitation is normally hidden" #. (stash('expires') -#: themes/default/templates/invitations/invite.mail.ep:13 +#: themes/default/templates/invitations/invite.mail.ep:11 msgid "This invitation is valid until %1." msgstr "This invitation is valid until %1." -#: themes/default/templates/delays.html.ep:10 +#: themes/default/templates/delays.html.ep:13 msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:" msgstr "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:" @@ -756,7 +761,7 @@ msgstr "You have attempted to leave this page. The upload will be canceled. Are msgid "You have been successfully logged out." msgstr "You have been successfully logged out." -#: lib/Lufi/Controller/Mail.pm:71 +#: lib/Lufi/Controller/Mail.pm:73 msgid "You must give email addresses." msgstr "You must give email addresses." @@ -778,12 +783,12 @@ msgid "Zip content:" msgstr "Zip content:" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:20 +#: themes/default/templates/delays.html.ep:24 msgid "between %1 and %2, the file will be kept %3 day(s)." msgstr "between %1 and %2, the file will be kept %3 day(s)." #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:22 +#: themes/default/templates/delays.html.ep:26 msgid "between %1 and %2, the file will be kept forever." msgstr "between %1 and %2, the file will be kept forever." @@ -796,12 +801,12 @@ msgid "expires on XXX" msgstr "expires on XXX" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:26 +#: themes/default/templates/delays.html.ep:30 msgid "for %1 and more, the file will be kept %2 day(s)" msgstr "for %1 and more, the file will be kept %2 day(s)" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:28 +#: themes/default/templates/delays.html.ep:32 msgid "for %1 and more, the file will be kept forever." msgstr "for %1 and more, the file will be kept forever." @@ -814,6 +819,6 @@ msgid "or" msgstr "or" #. ($e->{name}, format_bytes($e->{size}) -#: themes/default/templates/invitations/notification_files_sent.mail.ep:12 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:10 msgid "— %1 (%2), that will expire on %3" msgstr "— %1 (%2), that will expire on %3" diff --git a/themes/default/lib/Lufi/I18N/lufi.pot b/themes/default/lib/Lufi/I18N/lufi.pot index b0dabbd..a60eb14 100644 --- a/themes/default/lib/Lufi/I18N/lufi.pot +++ b/themes/default/lib/Lufi/I18N/lufi.pot @@ -21,27 +21,28 @@ msgstr "" msgid "%1 days" msgstr "" -#. (stash('ldap_user') -#: themes/default/templates/invitations/invite.mail.ep:2 +#. (ucfirst($invitation->ldap_user) +#. (ucfirst($i->ldap_user) +#: lib/Lufi/Controller/Invitation.pm:169 lib/Lufi/Controller/Invitation.pm:79 msgid "%1 invites you to send him/her files" msgstr "" #. (stash('ldap_user') -#: themes/default/templates/invitations/invite.mail.ep:6 +#: themes/default/templates/invitations/invite.mail.ep:4 msgid "%1 invites you to send him/her files through Lufi." msgstr "" -#. (stash('invitation') -#: themes/default/templates/invitations/notification_files_sent.mail.ep:4 +#. ($invitation->guest_mail) +#: lib/Lufi/Controller/Invitation.pm:277 msgid "%1 sent you files" msgstr "" #. (stash('invitation') -#: themes/default/templates/invitations/notification_files_sent.mail.ep:8 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:6 msgid "%1 used your invitation to send you files:" msgstr "" -#: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 +#: lib/Lufi/Controller/Invitation.pm:165 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:10 msgid "%A %d %B %Y at %T" msgstr "" @@ -110,7 +111,7 @@ msgstr "" msgid "Click here to refresh the page and restart the download." msgstr "" -#: themes/default/templates/invitations/invite.mail.ep:8 +#: themes/default/templates/invitations/invite.mail.ep:6 msgid "Click on the following URL to upload files on Lufi:" msgstr "" @@ -118,7 +119,7 @@ msgstr "" msgid "Click to open the file browser" msgstr "" -#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 +#: themes/default/templates/delays.html.ep:42 themes/default/templates/invitations/my_invitations.html.ep:80 msgid "Close" msgstr "" @@ -178,7 +179,7 @@ msgstr "" msgid "Deletion link" msgstr "" -#: themes/default/templates/delays.html.ep:8 +#: themes/default/templates/delays.html.ep:9 msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file." msgstr "" @@ -295,11 +296,11 @@ msgid "Guest mail" msgstr "" #. (ucfirst(stash('invitation') -#: themes/default/templates/invitations/notification_files_sent.mail.ep:6 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:4 msgid "Hello %1," msgstr "" -#: themes/default/templates/invitations/invite.mail.ep:4 +#: themes/default/templates/invitations/invite.mail.ep:2 msgid "Hello," msgstr "" @@ -339,7 +340,7 @@ msgstr "" msgid "How to report an illegal file?" msgstr "" -#: themes/default/templates/delays.html.ep:7 +#: themes/default/templates/delays.html.ep:8 msgid "If you choose a delay, the file will be deleted after that delay." msgstr "" @@ -364,12 +365,12 @@ msgid "Invert selection" msgstr "" #. ($i->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:171 +#: lib/Lufi/Controller/Invitation.pm:180 msgid "Invitation resent to %1.
URL: %2" msgstr "" #. ($invitation->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:87 +#: lib/Lufi/Controller/Invitation.pm:90 msgid "Invitation sent to %1.
URL: %2" msgstr "" @@ -427,7 +428,7 @@ msgstr "" msgid "My invitations" msgstr "" -#: themes/default/templates/invitations/notification_files_sent.mail.ep:17 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:15 msgid "NB: this list includes the list of files that have already been sent to you." msgstr "" @@ -473,11 +474,11 @@ msgstr "" msgid "Purge expired files from localStorage" msgstr "" -#: themes/default/templates/invitations/notification_files_sent.mail.ep:20 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:18 msgid "Regards," msgstr "" -#: themes/default/templates/invitations/invite.mail.ep:15 +#: themes/default/templates/invitations/invite.mail.ep:13 msgid "Regards." msgstr "" @@ -534,7 +535,11 @@ msgstr "" msgid "Signin" msgstr "" -#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16 +#: lib/Lufi/Controller/Invitation.pm:182 lib/Lufi/Controller/Invitation.pm:297 lib/Lufi/Controller/Invitation.pm:92 lib/Lufi/Controller/Mail.pm:106 +msgid "Something went wrong when sending the mail(s). You should contact the administrator of this instance." +msgstr "" + +#: lib/Lufi/Controller/Invitation.pm:305 themes/default/templates/invitations/exception.html.ep:16 msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" msgstr "" @@ -556,7 +561,7 @@ msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 msgstr "" #. ($invitation->ldap_user_mail) -#: lib/Lufi/Controller/Invitation.pm:276 +#: lib/Lufi/Controller/Invitation.pm:290 msgid "The URLs of your files have been sent by email to %1." msgstr "" @@ -572,11 +577,11 @@ msgstr "" msgid "The data has been successfully imported." msgstr "" -#: lib/Lufi/Controller/Mail.pm:73 +#: lib/Lufi/Controller/Mail.pm:75 msgid "The email body can't be empty." msgstr "" -#: lib/Lufi/Controller/Mail.pm:72 +#: lib/Lufi/Controller/Mail.pm:74 msgid "The email subject can't be empty." msgstr "" @@ -594,7 +599,7 @@ msgid "The files uploaded on a Lufi instance are encrypted before the upload to msgstr "" #. (join(', ', @bad) -#: lib/Lufi/Controller/Mail.pm:68 +#: lib/Lufi/Controller/Mail.pm:70 msgid "The following email addresses are not valid: %1" msgstr "" @@ -604,12 +609,12 @@ msgid "The guest email address (%1) is unvalid." msgstr "" #. ($i->token, $i->guest_mail) -#: lib/Lufi/Controller/Invitation.pm:150 +#: lib/Lufi/Controller/Invitation.pm:156 msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." msgstr "" #. ($i->token) -#: lib/Lufi/Controller/Invitation.pm:130 +#: lib/Lufi/Controller/Invitation.pm:136 msgid "The invitation %1 has been deleted." msgstr "" @@ -628,11 +633,11 @@ msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2) msgstr "" #. (stash('ldap_user') -#: themes/default/templates/invitations/invite.mail.ep:11 +#: themes/default/templates/invitations/invite.mail.ep:9 msgid "The links of your file(s) will automatically be sent by mail to %1." msgstr "" -#: lib/Lufi/Controller/Mail.pm:97 +#: lib/Lufi/Controller/Mail.pm:101 msgid "The mail has been sent." msgstr "" @@ -653,11 +658,11 @@ msgid "This invitation is normally hidden" msgstr "" #. (stash('expires') -#: themes/default/templates/invitations/invite.mail.ep:13 +#: themes/default/templates/invitations/invite.mail.ep:11 msgid "This invitation is valid until %1." msgstr "" -#: themes/default/templates/delays.html.ep:10 +#: themes/default/templates/delays.html.ep:13 msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:" msgstr "" @@ -756,7 +761,7 @@ msgstr "" msgid "You have been successfully logged out." msgstr "" -#: lib/Lufi/Controller/Mail.pm:71 +#: lib/Lufi/Controller/Mail.pm:73 msgid "You must give email addresses." msgstr "" @@ -778,12 +783,12 @@ msgid "Zip content:" msgstr "" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:20 +#: themes/default/templates/delays.html.ep:24 msgid "between %1 and %2, the file will be kept %3 day(s)." msgstr "" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:22 +#: themes/default/templates/delays.html.ep:26 msgid "between %1 and %2, the file will be kept forever." msgstr "" @@ -796,12 +801,12 @@ msgid "expires on XXX" msgstr "" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:26 +#: themes/default/templates/delays.html.ep:30 msgid "for %1 and more, the file will be kept %2 day(s)" msgstr "" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:28 +#: themes/default/templates/delays.html.ep:32 msgid "for %1 and more, the file will be kept forever." msgstr "" @@ -814,6 +819,6 @@ msgid "or" msgstr "" #. ($e->{name}, format_bytes($e->{size}) -#: themes/default/templates/invitations/notification_files_sent.mail.ep:12 +#: themes/default/templates/invitations/notification_files_sent.mail.ep:10 msgid "— %1 (%2), that will expire on %3" msgstr "" diff --git a/themes/default/templates/invitations/invite.mail.ep b/themes/default/templates/invitations/invite.mail.ep index 6eb1f4a..9b18f2e 100644 --- a/themes/default/templates/invitations/invite.mail.ep +++ b/themes/default/templates/invitations/invite.mail.ep @@ -1,6 +1,4 @@ % # vim:set sw=4 ts=4 sts=4 ft=mail.epl expandtab: -% stash subject => l('%1 invites you to send him/her files', stash('ldap_user')); - %= l('Hello,') %= l('%1 invites you to send him/her files through Lufi.', stash('ldap_user')) diff --git a/themes/default/templates/invitations/notification_files_sent.mail.ep b/themes/default/templates/invitations/notification_files_sent.mail.ep index acece75..bdb4d7d 100644 --- a/themes/default/templates/invitations/notification_files_sent.mail.ep +++ b/themes/default/templates/invitations/notification_files_sent.mail.ep @@ -1,8 +1,6 @@ % # vim:set sw=4 ts=4 sts=4 ft=mail.epl expandtab: % use Number::Bytes::Human qw(format_bytes); % my $lang = $self->get_date_lang(); -% stash subject => l('%1 sent you files', stash('invitation')->guest_mail); - %= l('Hello %1,', ucfirst(stash('invitation')->ldap_user)) %= l('%1 used your invitation to send you files:', stash('invitation')->guest_mail)