Commit 0da705e3 authored by IKEDA Soji's avatar IKEDA Soji
Browse files

Merge sympa-6.2 into ldidry/fix-672

parents f1069503 39e3006a
......@@ -7,21 +7,15 @@
- . ~/bashrc
- coverage-install
- coverage-setup
- cpanm --quiet --notest --installdeps . --with-develop
- cpanm --quiet --notest --installdeps --with-develop --with-feature=Data::Password --with-feature=ldap --with-feature=safe-unicode --with-feature=smime --with-feature=soap --with-feature=sqlite .
- autoreconf -i
- ./configure
- cd src; make; cd ..
- make check-local TEST_FILES='xt/perltidy.t' || true
- make check-local TEST_FILES='t/compile_executables.t t/compile_modules.t t/Language.t t/compile_scenarios.t t/parse_templates.t t/pod-syntax.t'
- make check-local
- coverage-report
- make clean
"5.10":
<<: *job
"5.12":
<<: *job
"5.14":
<<: *job
"5.16":
<<: *job
variables:
......@@ -38,3 +32,5 @@
<<: *job
"5.28":
<<: *job
"5.30":
<<: *job
......@@ -11,9 +11,6 @@ perl:
- "5.20"
- "5.18"
- "5.16"
- "5.14"
- "5.12"
- "5.10"
matrix:
include:
......@@ -28,8 +25,7 @@ before_install:
install:
- cpan-install --coverage
- cpanm --installdeps --notest --with-develop --with-feature=soap --with-feature=ldap .
- cpanm --notest --quiet Unicode::CaseFold
- cpanm --installdeps --notest --with-develop --with-feature=Data::Password --with-feature=ldap --with-feature=safe-unicode --with-feature=smime --with-feature=soap --with-feature=sqlite .
before_script:
- coverage-setup
......@@ -39,7 +35,7 @@ script:
- ./configure
- cd src; make; cd ..
- make check-local TEST_FILES='xt/perltidy.t' || true
- make check-local TEST_FILES='t/compile_executables.t t/compile_modules.t t/Language.t t/compile_scenarios.t t/parse_templates.t t/pod-syntax.t'
- make check-local
after_success:
- coverage-report
......
# Authors
The development of Sympa is a collaborative effort from the users community. However, the following institutions and persons were continuously providing a development effort.
The development of Sympa is a collaborative effort from the users community. However, the following institutions and persons have been providing a development effort.
## RENATER
## Legacy...
The [RENATER](http://www.renater.fr) team was in charge of maintaining the Sympa project, contribute to the code and merge contributions from developpers all over the world.
Serge Aumont and Christophe Wolfhugel are, along with Olivier Salaün, the original authors of Sympa. Even though they no longer work on Sympa, they are the people who made Sympa real and are still giving us precious advices about the development orientations.
Authors of Sympa from RENATER are Étienne Méléard, Olivier Salaün and David Verdin.
## RENATER and INRIA
## INRIA
The [RENATER](http://www.renater.fr) team was in charge of maintaining the Sympa project, contribute to the code and merge contributions from developers all over the world.
Authors of Sympa from RENATER are Étienne Méléard, Olivier Salaün and David Verdin.
[INRIA](http://www.inria.fr/) is the main French public organization for research in the fields of Computer sciences. INRIA contributed on a regular basis on the evolution of Sympa code.
The Sympa author from INRIA is Guillaume Rousse.
## Legacy...
## The Sympa Community
Serge Aumont and Christophe Wolfhugel are, along with Olivier Salaün, the original authors of Sympa. Even though they no longer work on Sympa, they are the people who made Sympa real and are still giving us precious advices about the development orientations.
Recently, Sympa was forked and handed to the community on GitHub to revitalize development. In 2017, the first version by [The Sympa Community](https://github.com/sympa-community) was released.
# Credits
......
......@@ -27,24 +27,34 @@ SUBDIRS = src default doc po www
check_SCRIPTS = \
t/01_Conf.t \
t/02_Sympa_DatabaseManager.t \
t/Config_XML.t \
t/DataSource_LDAP2.t \
t/DatabaseManager.t \
t/Database_LDAP.t \
t/Language.t \
t/LockedFile.t \
t/Message_smime.t \
t/Message_urlize.t \
t/Regexps.t \
t/compile_modules.t \
t/compile_executables.t \
t/compile_scenarios.t \
t/Config_XML.t \
t/Database_LDAP.t \
t/parse_templates.t \
t/pod-syntax.t \
t/tools_data.t \
t/tools_file.t \
t/Scenario.t \
t/Tools_Data.t \
t/Tools_File.t \
t/Tools_Password.t \
t/Tools_SMIME.t \
t/Tools_Text.t \
t/tools_time.t
t/Tools_Time.t \
t/WWW_Tools.t \
t/compile_executables.t \
t/compile_modules.t \
t/compile_scenarios.t \
t/parse_templates.t \
t/pod-syntax.t
check_DATA = \
src/lib/Sympa/Test/MockLDAP.pm \
t/data/list_data/test/config \
t/data/sympa.conf \
t/data/sympa.sqlite \
t/data/etc/auth.conf \
t/locale/cs/LC_MESSAGES/sympa.mo \
t/locale/cs/LC_MESSAGES/web_help.mo \
t/locale/zh_TW/LC_MESSAGES/sympa.mo \
......@@ -55,10 +65,17 @@ check_DATA = \
t/pki/key/ca.pem \
t/pki/key/rousse_nopassword.pem \
t/pki/key/rousse_password.pem \
t/samples/urlize-deep-nested-mixed.eml \
t/samples/urlize-encoding.eml \
t/samples/urlize-nested-alternative-and-related.eml \
t/samples/urlize-nested-alternative.eml \
t/samples/urlize-nested-mixed.eml \
t/samples/urlize-nested-mutiple-attachments.eml \
t/samples/urlize-simple-mutiple-attachments.eml \
t/samples/urlize-simple.eml \
t/samples/signed.eml \
t/samples/unsigned.eml \
t/stub/Sympa/Constants.pm \
t/data/sympa.conf \
t/data/sympa.sqlite \
t/data/etc/auth.conf \
xt/perlcriticrc
noinst_SCRIPTS = \
xt/critic.t \
......
This diff is collapsed.
......@@ -7,8 +7,8 @@
# Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
# 2006, 2007, 2008, 2009, 2010, 2011 Comite Reseau des Universites
# Copyright (c) 2011, 2012, 2013, 2014, 2015, 2016, 2017 GIP RENATER
# Copyright 2017, 2018, 2019 The Sympa Community. See the AUTHORS.md file at
# the top-level directory of this distribution and at
# Copyright 2017, 2018, 2019, 2020, 2021 The Sympa Community. See the
# AUTHORS.md file at the top-level directory of this distribution and at
# <https://github.com/sympa-community/sympa.git>.
#
# This program is free software; you can redistribute it and/or modify
......@@ -25,7 +25,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ(2.60)
AC_INIT(sympa, 6.2.49b.3, sympa-developpers@listes.renater.fr)
AC_INIT(sympa, 6.2.62, sympa-developpers@listes.renater.fr)
AM_INIT_AUTOMAKE([foreign -Wall -Werror 1.9 tar-pax])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AM_PO_SUBDIRS
......@@ -608,6 +608,53 @@ AC_ARG_WITH(
)
AC_SUBST(POSTMAP_ARG)
AC_MSG_CHECKING([whether we install/enable setuid wrappers])
AC_ARG_ENABLE(
setuid,
AS_HELP_STRING(
[--disable-setuid],
[do not install nor enable any setuid wrappers]
), ,
[enable_setuid="yes"],
)
AC_MSG_RESULT([$enable_setuid])
AC_MSG_CHECKING([whether we install setuid wrappers for web interface])
AC_ARG_ENABLE(
setuid_fcgi,
AS_HELP_STRING(
[--disable-setuid_fcgi],
[do not install setuid wrappers for web interface]
), ,
[enable_setuid_fcgi="$enable_setuid"],
)
AC_MSG_RESULT([$enable_setuid_fcgi])
AM_CONDITIONAL(SETUID_FCGI, [test "x$enable_setuid_fcgi" = "xyes"])
AC_MSG_CHECKING([whether we install setuid wrapper for alias maintenance])
AC_ARG_ENABLE(
setuid_newaliases,
AS_HELP_STRING(
[--disable-setuid_newaliases],
[do not install setuid wrappers for web interface]
), ,
[enable_setuid_newaliases="$enable_setuid"],
)
AC_MSG_RESULT([$enable_setuid_newaliases])
AM_CONDITIONAL(SETUID_NEWALIASES, [test "x$enable_setuid_newaliases" = "xyes"])
AC_MSG_CHECKING([whether we set setuid bit of queue programs])
AC_ARG_ENABLE(
setuid_queue,
AS_HELP_STRING(
[--disable-setuid_queue],
[do not set setuid bit of queue programs]
), ,
[enable_setuid_queue="$enable_setuid"],
)
AC_MSG_RESULT([$enable_setuid_queue])
AM_CONDITIONAL(SETUID_QUEUE, [test "x$enable_setuid_queue" = "xyes"])
AC_CONFIG_FILES([
Makefile
sympa.conf
......
......@@ -3,7 +3,7 @@
# Minimum version of Perl required.
# Notation suggested on https://metacpan.org/pod/Carton#PERL-VERSIONS
requires 'perl', '5.10.1';
requires 'perl', '5.16.0';
# This module provides zip/unzip for archive and shared document download/upload
requires 'Archive::Zip', '>= 1.05';
......@@ -96,7 +96,7 @@ requires 'List::Util::XS', '>= 1.20';
requires 'Locale::Messages', '>= 1.20';
# MHonArc is used to build Sympa web archives
requires 'MHonArc::UTF8';
requires 'MHonArc::UTF8', '>= 2.6.24';
# Required to compute digest for password and emails
requires 'MIME::Base64', '>= 3.03';
......@@ -179,9 +179,11 @@ recommends 'Net::SMTP';
# Normalizes file names represented by Unicode
# Note: Perl 5.8.1 bundles version 0.23.
# Note: Perl 5.10.1 bundles this version (per Unicode 5.1.0).
# Note: Perl 5.10.1 bundles 1.03 (per Unicode 5.1.0).
recommends 'Unicode::Normalize', '>= 1.03';
recommends 'Unicode::UTF8', '>= 0.58';
### Features
##
......@@ -296,10 +298,11 @@ feature 'soap', 'Required if you want to run the Sympa SOAP server that provides
requires 'SOAP::Lite', '>= 0.712';
};
feature 'Unicode::Normalize', 'Normalizes file names represented by Unicode.' => sub {
feature 'safe-unicode', 'Sanitises inputs with Unicode text.' => sub {
# Note: Perl 5.8.1 bundles version 0.23.
# Note: Perl 5.10.1 bundles this version (per Unicode 5.1.0).
# Note: Perl 5.10.1 bundles 1.03 (per Unicode 5.1.0).
requires 'Unicode::Normalize', '>= 1.03';
requires 'Unicode::UTF8', '>= 0.58';
};
on 'test' => sub {
......@@ -314,4 +317,5 @@ on 'develop' => sub {
requires 'Test::PerlTidy', '== 20130104';
requires 'Perl::Tidy', '== 20180220';
requires 'Code::TidyAll';
requires 'Test::Net::LDAP', '>= 0.06';
};
......@@ -32,7 +32,7 @@ nobase_default_DATA = \
create_list.conf \
edit_list.conf \
ldap_alias_entry.tt2 \
mhonarc-ressources.tt2 \
mhonarc_rc.tt2 \
mime.types \
nrcpt_by_domain.conf \
sympa.wsdl \
......@@ -86,6 +86,8 @@ nobase_default_DATA = \
scenari/d_read.private \
scenari/d_read.private-https \
scenari/d_read.public \
scenari/family_signoff.auth \
scenari/family_signoff.closed \
scenari/global_remind.listmaster \
scenari/info.open \
scenari/info.private \
......@@ -185,7 +187,7 @@ nobase_default_DATA = \
web_tt2/arcsearch.tt2 \
web_tt2/arc.tt2 \
web_tt2/aside_menu.tt2 \
web_tt2/blacklist.tt2 \
web_tt2/blocklist.tt2 \
web_tt2/button_footer.tt2 \
web_tt2/button_header.tt2 \
web_tt2/ca.tt2 \
......@@ -216,8 +218,6 @@ nobase_default_DATA = \
web_tt2/editsubscriber.tt2 \
web_tt2/edit_template.tt2 \
web_tt2/error.tt2 \
web_tt2/family_signoff.tt2 \
web_tt2/family_signoff_request.tt2 \
web_tt2/footer.tt2 \
web_tt2/get_closed_lists.tt2 \
web_tt2/get_inactive_lists.tt2 \
......@@ -383,6 +383,7 @@ nobase_default_DATA = \
mail_tt2/request_auth.tt2 \
mail_tt2/report.tt2 \
mail_tt2/review.tt2 \
mail_tt2/shared_moderate.tt2 \
mail_tt2/send_auth.tt2 \
mail_tt2/sendpasswd.tt2 \
mail_tt2/sendssopasswd.tt2 \
......
......@@ -156,6 +156,8 @@ max_list_members editor hidden
message_hook owner hidden
message_hook privileged_owner read
personalization owner,privileged_owner read
default privileged_owner write
default owner write
default editor read
......
......@@ -11,7 +11,7 @@ Subject: [%"List unknown"|loc|qencode%]
Subject: [%"List unknown"|loc|qencode%]
[% ELSIF status == '5.2.3' -%]
Subject: [%"Too large message"|loc|qencode%]
[% ELSIF status == '5.3.0' -%]
[% ELSIF status == '5.2.4' || status == '5.3.0' -%]
Subject: [%"Message distribution: Internal server error"|loc|qencode%]
[% ELSIF status == '5.3.5' -%]
Subject: [%"Message distribution: User error"|loc|qencode%]
......@@ -59,12 +59,13 @@ Content-Description: Notification
Note: Because binary files have to be encoded in less-efficient ASCII format before being sent over email, the final size of an attachment is often significantly larger that the original file.[%END%]
[% ELSIF status == '5.3.0' -%]
[% IF entry == 'forward' -%]
[% ELSIF status == '5.2.4' -%]
[%|loc(list.name,function)%]Impossible to forward your message to '%1-%2' because of an internal server error.[%END%]
[% ELSE -%]
[%|loc(list.name,domain)%]For further information, please contact %1-request@%2[%END -%]
[% ELSIF status == '5.3.0' -%]
[%|loc(list.name)%]Impossible to distribute your message for list '%1' because of an internal server error.[%END%]
[% END -%]
[%|loc(list.name,domain)%]For further information, please contact %1-request@%2[%END -%]
......
......@@ -26,7 +26,7 @@ Subject: [%"User guide"|loc|qencode%]
[%|loc%]SET <list>|* NOMAIL * To suspend the message reception for <list>[%END%]
[%|loc%]SET <list>|* DIGEST * Message reception in compilation mode[%END%]
[%|loc%]SET <list|*> DIGESTPLAIN * Message reception in compilation mode, sent as a plain text email with all attachments[%END%]
[%|loc%]SET <list>|* DIGESTPLAIN * Message reception in compilation mode, sent as a plain text email with all attachments[%END%]
[%|loc%]SET <list>|* SUMMARY * Receiving the message index only[%END%]
[%|loc%]SET <list>|* NOTICE * Receiving message subject only[%END%]
[%|loc%]SET <list>|* MAIL * <list> reception in normal mode[%END%]
......
[%# listeditor_notification.tt2 ~%]
To: [% to %]
[%# As of 6.2.57b, this template will no longer be used. It is left for
compatibility. ~%]
[% IF type == 'shared_moderated' -%]
Subject: [%"Shared document to be approved for %1"|loc(list.name)|qencode%]
[% IF many_files -%]
[%|loc(list.name,filename,who)%]There are new shared documents in list %1:
%2
from %3
To moderate these documents: [%END%]
[% PROCESS shared_moderate.tt2 %]
[%- ELSE -%]
[%|loc(list.name,filename,who)%]There is a new shared document in list %1:
%2
from %3
To moderate this document: [%END%]
[%- END %]
[% 'docindex' | url_abs([list.name]) %]
[% ELSE -%]
From: [% fromlist %]
To: [%"Moderator"|loc|mailbox("${list.name}-editor@${domain}",list.name)%]
Subject: [%"Moderators List %1 / %2"|loc(list.name,type)|qencode%]
[% param0 %]
[% END %]
[%- END %]
......@@ -10,7 +10,7 @@ Subject: [%"List \"%1@%2\" creation request from %3"|loc(list.name,domain,email)
[% 'info' | url_abs([list.name]) %]
[%|loc%]To activate/delete this mailing list:[%END%]
[% 'ticket' | url_abs([one_time_ticket]) %]
[% 'get_pending_lists' | url_abs %]
[%- ELSIF type == 'list_created' -%]
[% PROCESS 'list_created.tt2' -%]
......@@ -30,7 +30,7 @@ Subject: [%"List \"%1\" renaming"|loc(list.name)|qencode%]
[% END %]
[%|loc%]To activate/delete this mailing list:[%END%]
[% 'ticket' | url_abs([one_time_ticket]) %]
[% 'get_pending_lists' | url_abs %]
[% ELSIF type == 'no_db' -%]
Subject: [%"No database"|loc|qencode%]
......
......@@ -32,7 +32,7 @@ Subject: [%"FYI: %1 List \"%2\" from %3 %4"|loc(type,list.name,who,gecos)|qencod
[%|loc(who,gecos,list.name)%]WARNING: %1 %2 failed to unsubscribe from %3 because their address was not found in the list.
You may help this person looking for similar email in subscriber list using the following link :[%END%]
[% 'ticket' | url_abs([one_time_ticket]) %]
[% 'search' | url_abs([list.name,who]) %]
[% ELSIF type == 'erase_customizing' -%]
Subject: [%"List \"%1\" customizations have been removed"|loc(list.name)|qencode%]
......
......@@ -15,7 +15,7 @@ Content-Disposition: inline
[% IF method == 'md5' -%]
[%|loc(mod_spool_size)%]%1 messages are awaiting moderation.[%END%]
[%|loc%]To view the messages, please click on the following URL:[%END%] <[% 'ticket' | url_abs([one_time_ticket]) %]>
[%|loc%]To view the messages, please click on the following URL:[%END%] <[% 'modindex' | url_abs([list.name]) %]>
[% IF request_topic -%][%|loc()%]This mailing list is configured to require topics; that's probably why this message went through the moderation process.[%END%]
......
......@@ -242,10 +242,10 @@
[%~ ELSIF report_entry == 'unable_to_load_create_list_templates' ~%]
[%|loc%]Unable to load create_list templates.[%END%]
[%~ ELSIF report_entry == 'sync_include_failed' ~%]
[%~ ELSIF report_entry == 'sync_include_failed' # No longer used ~%]
[%|loc%]Failed to include members[%END%]
[%~ ELSIF report_entry == 'sync_include_admin_failed' ~%]
[%~ ELSIF report_entry == 'sync_include_admin_failed' # No longer used ~%]
[%|loc%]Failed to include list admins[%END%]
[%~ ELSIF report_entry == 'no_owner_defined' ~%]
......@@ -357,7 +357,43 @@
[%~ ELSIF report_entry == 'no_message_to_moderate' ~%]
[%|loc(report_param.listname)%]There is no message to moderate for list '%1'.[%END%]
[%~ ELSIF report_entry == 'time_limit_for_include' ~%]
[%~ ELSIF report_entry == 'include_skip' ~%]
[% IF report_param.role == 'owner' ~%]
[%|loc(report_param.listname)%]Including list owners into list %1 was skipped.[%END%]
[%~ ELSIF report_param.role == 'editor' ~%]
[%|loc(report_param.listname)%]Including moderators into list %1 was skipped.[%END%]
[%~ ELSE ~%]
[%|loc(report_param.listname)%]Including subscribers into list %1 was skipped.[%END%]
[%~ END %]
[%~ ELSIF report_entry == 'include' ~%]
[% IF report_param.role == 'owner' ~%]
[%|loc(report_param.name,report_param.listname)%]List owners were included from data source "%1" into list %2.[%END%]
[%~ ELSIF report_param.role == 'editor' ~%]
[%|loc(report_param.name,report_param.listname)%]Moderators were included from data source "%1" into list %2.[%END%]
[%~ ELSE ~%]
[%|loc(report_param.name,report_param.listname)%]Subscribers were included from data source "%1" into list %2.[%END%]
[%~ END %]
[%~ ELSIF report_entry == 'include_failed' ~%]
[% IF report_param.role == 'owner' ~%]
[%|loc(report_param.name,report_param.listname)%]Including list owners from data source "%1" into list %2 failed.[%END%]
[%~ ELSIF report_param.role == 'editor' ~%]
[%|loc(report_param.name,report_param.listname)%]Including moderators from data source "%1" into list %2 failed.[%END%]
[%~ ELSE ~%]
[%|loc(report_param.name,report_param.listname)%]Including subscribers from data source "%1" into list %2 failed.[%END%]
[%~ END %]
[%~ ELSIF report_entry == 'include_incomplete' ~%]
[%|loc(report_param.result.added,report_param.result.held,report_param.result.updated)%]Inclusion entirely failed (%1 added, %2 held, %3 updated).[%END%]
[%~ ELSIF report_entry == 'include_partial' ~%]
[%|loc(report_param.result.added,report_param.result.held,report_param.result.updated)%]Inclusion partially failed (%1 added, %2 held, %3 updated).[%END%]
[%~ ELSIF report_entry == 'include_performed' ~%]
[%|loc(report_param.result.added,report_param.result.deleted,report_param.result.updated)%]Inclusion succeeded (%1 added, %2 deleted, %3 updated).[%END%]
[%~ ELSIF report_entry == 'time_limit_for_include' # Maybe no longer used ~%]
[%|loc()%]You're not allowed to make sync, time limit in action[%END%]
[%~ ELSIF report_entry == 'del_performed' ~%]
......@@ -408,12 +444,27 @@
[%~ ELSIF report_entry == 'no_msg_document' ~%]
[%|loc(report_param.list)%]No message and no document to moderate for list %1[%END%]
[%~ ELSIF report_entry == 'subscribers_updated' ~%]
[%|loc%]The list of list members have been built/updated.[%END%]
[%~ ELSIF report_entry == 'member_updated' # No longer used ~%]
[%|loc%]The list of list subscribers has been built/updated.[%END%]
[%~ ELSIF report_entry == 'owner_updated' # No longer used ~%]
[%|loc%]The list of list owners has been built/updated.[%END%]
[%~ ELSIF report_entry == 'subscribers_updated_soon' ~%]
[%~ ELSIF report_entry == 'editor_updated' # No longer used ~%]
[%|loc%]The list of list moderators has been built/updated.[%END%]
[%~ ELSIF report_entry == 'subscribers_updated_soon' # No longer used ~%]
[%|loc%]The list of list members will be built/updated soon (a few minutes).[%END%]
[%~ ELSIF report_entry == 'member_updated_soon' ~%]
[%|loc%]The list of list subscribers will be built/updated soon (in an hour). If you wish immediate update, click "Synchronize members with data sources".[%END%]
[%~ ELSIF report_entry == 'owner_updated_soon' ~%]
[%|loc%]The list of list owners will be built/updated soon (in an hour). If you wish immediate update, click "Synchronize owners with data sources".[%END%]
[%~ ELSIF report_entry == 'editor_updated_soon' ~%]
[%|loc%]The list of moderators will be built/updated soon (in an hour). If you wish immediate update, click "Synchronize moderators with data sources".[%END%]
[%~ ELSIF report_entry == 'subscribers_noticed_deleted_topics' ~%]
[%|loc%]Concerned subscribers have been notified about deleted topics.[%END%]
......@@ -603,8 +654,8 @@ Warning: this message may already have been sent by one of the list's moderators
[%~ ELSIF report_entry == 'incorrect_email' ~%]
[%|loc(report_param.email || report_param.value)%]Address "%1" is incorrect[%END%]
[%~ ELSIF report_entry == 'blacklisted_domain' ~%]
[%|loc(report_param.email || report_param.value)%]Address "%1" belongs to a blacklisted domain[%END%]
[%~ ELSIF report_entry == 'blocklisted_domain' ~%]
[%|loc(report_param.email || report_param.value)%]Address "%1" belongs to a blocklisted domain[%END%]
[%~ ELSIF report_entry == 'incorrect_passwd' ~%]
[%|loc%]Provided password is incorrect[%END%]
......
[%# request_auth.tt2 ~%]
To: [% to %]
[% IF conf.wwsympa_url && type == 'signoff' -%]
[% IF conf.wwsympa_url && type == 'family_signoff' -%]
Subject: [%"%1 / unsubscribing from family %2"|loc(conf.title,family.name)|qencode%]
[%- ELSIF conf.wwsympa_url && type == 'signoff' -%]
Subject: [%"%1 / unsubscribing from %2"|loc(conf.title,list.name)|qencode%]
[%- ELSIF conf.wwsympa_url && type == 'subscribe' -%]
Subject: [%"%1 / subscribing to %2"|loc(conf.title,list.name)|qencode%]
......@@ -8,7 +10,10 @@ Subject: [%"%1 / subscribing to %2"|loc(conf.title,list.name)|qencode%]
Subject: [%"AUTH ${keyauth} ${cmd}"|qencode%]
[%- END %]
[% IF type == 'signoff' -%]
[% IF type == 'family_signoff' -%]
[%|loc(family.name)-%]You requested that your e-mail address be removed from family '%1'.[%- END -%]
[%- ELSIF type == 'signoff' -%]
[%|loc(list.name)-%]You requested that your e-mail address be removed from list '%1'.[%- END -%]
[%- ELSIF type == 'subscribe' -%]
......
[%# shared_moderate.tt2 ~%]
From: [% fromlist %]
To: [%"Moderator"|loc|mailbox("${list.name}-editor@${domain}",list.name)%]
Subject: [%"Shared document to be approved for %1"|loc(list.name)|qencode%]
[%|loc(list.name,filename,who)%]There is a new shared document in list %1:
%2
from %3
To moderate this document: [%END%]
[% 'docindex' | url_abs([list.name]) %]
......@@ -36,17 +36,6 @@ Subject: [%"Management of list %1"|loc(list.name)|qencode%]
[%|loc%]Owner and moderator guide:[%END%] [% 'help' | url_abs(['admin.html']) %]
[% END -%]
[% ELSIF type == 'ticket_to_family_signoff' -%]
Subject: [%"Unsubscribing from family %1"|loc(family)|qencode%]
[% IF context == 'family_signoff'%]
[%|loc(family,ip)%]Somebody (probably you) requested to unsubscribe you from family %1. This query was issued from the IP address %2.
To confirm and be removed from all the lists of this family, please click the link below: [%END%]
[% ELSE %]
[%|loc(family)%]You have requested to be removed from family %1. To confirm and be removed from all the lists of this family, please click the link below: [%END%]
[% END %]
[% 'ticket' | url_abs([one_time_ticket]) %]
[% ELSIF type == 'hundred_percent_error' -%]
Subject: [%"No valid recipient in list %1"|loc(list.name)|qencode%]
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment